logloss vs gini/auc
我已經訓練了兩個模型(使用 h2o AutoML 的二元分類器),我想選擇一個來使用。我有以下結果:
model_id auc logloss logloss_train logloss_valid gini_train gini_valid DL_grid_1 0.542694 0.287469 0.092717 0.211956 0.872932 0.312975 DL_grid_2 0.543685 0.251431 0.082616 0.186196 0.900955 0.312662
和
auc
列logloss
是交叉驗證指標(交叉驗證只使用訓練數據)。..._train
和..._valid
指標是通過分別通過模型運行訓練和驗證指標來找到的。我想使用logloss_valid
或gini_valid
來選擇最佳模型。模型 1 具有更好的 gini(即更好的 AUC),但模型 2 具有更好的 logloss。我的問題是選擇哪一個,我認為這是一個問題,使用 gini (AUC) 或 logloss 作為決策指標的優點/缺點是什麼。
雖然 AUC 是針對具有不同決策閾值的二元分類計算的,但 logloss 實際上考慮了分類的“確定性”。
因此,據我了解,logloss 在概念上超出了 AUC,並且在數據不平衡或錯誤成本分佈不均的情況下(例如檢測致命疾病)尤其相關。
除了這個非常基本的答案之外,您可能還想看看在二元分類問題中優化 auc 與 logloss
一個簡單的 logloss 計算示例和基本概念在這個最近的問題中討論 Log Loss function in scikit-learn return different values
必須了解 AUC ROC 與準確度/精度等“逐點”指標之間的關鍵區別。ROC 是閾值的函數。給定一個輸出屬於每個類的概率的模型(分類器),我們通常將元素分類到支持度最高的類。但是,有時我們可以通過更改此規則並要求一個支持比另一個大 2 倍才能實際歸類為給定類來獲得更好的分數。對於不平衡的數據集,這通常是正確的。通過這種方式,您實際上是在修改類的學習先驗以更好地擬合您的數據。ROC 著眼於“如果我將這個閾值更改為所有可能的值會發生什麼”,然後 AUC ROC 計算這樣一條曲線的積分。