1. 程式人生 > 其它 >模型評價指標【AUC原理、roc曲線等】

模型評價指標【AUC原理、roc曲線等】

分類模型評估:

指標 描述 Scikit-learn函式
Precision AUC from sklearn.metrics import precision_score
Recall 召回率 from sklearn.metrics import recall_score
F1 F1值 from sklearn.metrics import f1_score
Confusion Matrix 混淆矩陣 from sklearn.metrics import confusion_matrix
ROC ROC曲線 from sklearn.metrics import confusion_matrix
AUC ROC曲線下的面積 from sklearn.metrics import auc

迴歸模型評估:

指標 描述 Scikit-learn函式
Mean Square Error (MSE, RMSE) 平均方差 from sklearn.metrics import mean_squared_error
Absolute Error (MAE, RAE) 絕對誤差 from sklearn.metrics import mean_absolute_error, median_absolute_error
R-Squared R平方值 from sklearn.metrics import r2_score

混淆矩陣

對於一個二分類的模型,其模型的混淆矩陣是一個2×2的矩陣。如下圖所示:

Predicted condition Predicted condition
positive negative
True condition positive True Positive False Negative
True condition negative False Positive True Negative

混淆矩陣比模型的精度的評價指標更能夠詳細地反映出模型的”好壞”。模型的精度指標,在正負樣本數量不均衡的情況下,會出現容易誤導的結果

  • True Positive:真正(TP),樣本是正的正樣本,預測也是正的正樣本。
  • False Negative:假負(FN),樣本是正的正樣本,預測為負的正樣本。
  • False Positive:假正(FP),樣本是正的負樣本,預測為正的負樣本。
  • True Negative:真負類(TN),樣本是正的負樣本,預測為負的負樣本。
真正率(TruePositive Rate,TPR):TPR=TP/(TP+FN),即被預測為正的正樣本數 /正樣本實際數 假正率(False Positive Rate,FPR) :FPR=FP/(FP+TN),即被預測為正的負樣本數 /負樣本實際數 假負率(False Negative Rate,FNR) :FNR=FN/(TP+FN),即被預測為負的正樣本數 /正樣本實際數 真負率(TrueNegative Rate,TNR) :TNR=TN/(TN+FP),即被預測為負的負樣本數 /負樣本實際數

Accuracy(準確率):

正確預測的正反例數 / 樣本的總數。

準確率是預測正確的結果佔總樣本的百分比,但很多專案場景不適用!最主要原因是樣本不平衡。舉個簡單例子,一個總樣本中,正樣本佔90%,負樣本佔10%,樣本嚴重不平衡。這時候如果將全部正樣本預測為正樣本,即可達到90%的準確率。所以樣本不均衡,準確率會失效。

Precision(精確率):Percision = TP/(TP+FP)

正確預測的正例數 / 預測正例總數。可理解為查準率。在預測為正的記錄中,有多少實際為正?

召回率:Recall = TP / (TP+FN)

正確預測的正例數 / 實際正例總數。可理解為查全率。在實際為正的記錄中,有多少預測為正?

Recall越高,說明有更多的正類樣本被模型預測正確,模型的效果越好。

F1 score:2/F1 = 1/Precision + 1/Recall

精確率和召回率的調和值。由於Precision和Recall是一對不可調和的矛盾,很難同時提高二者,故提出F1來試圖綜合二者,F1是P和R的調和平均。F1更接近於兩個數較小的那個,所以精確率和召回率接近時值最大。很多推薦系統會用的評測指標。

對ROC曲線、AUC的理解

True Positive Rate(真陽率)、False Positive(偽陽率):

TPRate的意義是所有真實類別為1的樣本中,預測類別為1的比例;FPRate的意義是所有真實類別為0的樣本中,預測類別為1的比例。

按照定義,AUC即ROC曲線下的面積,而ROC曲線的橫軸是FPRate,縱軸是TPRate,當二者相等時,即y=x,如下圖:

參考:

https://www.cnblogs.com/keye/p/9367347.html

https://www.zhihu.com/question/39840928