- 文章從模型評估的基本概念開始,分别介紹了常見的分類模型的評估名額和回歸模型的評估名額以及這些名額的局限性。部分知識點舉例加以闡述,以便加深了解。思維導圖如下:
1 基本概念
- 模型評估用來評測模型的好壞。
- 模型在訓練集上的誤差通常稱為 訓練誤差 或 經驗誤差,而在新樣本上的誤差稱為 泛化誤差。顯然,機器學習的目的是得到泛化誤差小的學習器。然而,在實際應用中,新樣本是未知的,是以隻能使訓練誤差盡量小。
- 是以,為了得到泛化誤差小的模型,在建構機器模型時,通常将資料集拆分為互相獨立的訓練資料集、驗證資料集和測試資料集等,而在訓練過程中使用驗證資料集來評估模型并據此更新超參數,訓練結束後使用測試資料集評估訓練好的最終模型的性能。
- 模型的比較:
- 一次訓練過程中的模型比較。
- 多次訓練模型比較。
- 不同算法的模型比較。
2 評估名額的局限性
- 在模型評估過程中,分類問題、排序問題、回歸問題往往需要使用不同的名額進行評估。在諸多的評估名額中,大部分名額隻能片面地反映模型的一部分性能。如果不能合理地運用評估名額,不僅不能發現模型本身的問題,而且會得出錯誤的結論。
3 分類模型的評估名額
- 正樣本:需要判定機率為1的類型的樣本叫做正樣本。
- 負樣本:需要判定機率為0的類型的樣本叫做負樣本。
3.1 混淆矩陣(Confusion Matrix)
-
|誤差矩陣|預測正值|預測負值|
|---|---|---|
|真實正值|TP|FN|
|真實負值|FP|TN|
- True Positive(真正, TP):将正類預測為正類數。
- True Negative(真負 , TN):将負類預測為負類數。
- False Positive(假正, FP):将負類預測為正類數。--> 誤報(Type I error):假的正樣本(實際是負樣本)。
- False Negative(假負 , FN):将正類預測為負類數。--> 漏報(Type II error):假的負樣本(實際是正樣本)。
3.2 準确率(Accuracy)
- 準确率是指分類正确的樣本占總樣本個數的比例。
-
\[ACC = \frac{TP+TN}{TP+TN+FP+FN}
\]
- 準确率是分類問題中最簡單也是最直覺的評價名額,但存在明顯的缺陷。比如,當負樣本占99%時,分類器把所有樣本都預測為負樣本也可以獲得99%的準确率。是以,當不同類别的樣本占比十分不平衡時,占比較大的樣本對準确率影響較大。
3.3 精确率(Precision)
- 精确率是指分類正确的正樣本個數占分類器判定為正樣本的樣本個數的比例,又叫查準率。
- \[P = \frac{TP}{TP+FP}
- TP+FP代表無論真與假,報出來資料都是正樣本。
3.4 召回率(Recall)
- 召回率是指分類正确的正樣本個數占真正的正樣本個數的比例,又叫查全率。
- \[R = \frac{TP}{TP+FN}
3.5 precision與recall小例子
- 金融詐騙分類中,正樣本P代表是金融詐騙;負樣本N代表不是金融詐騙。假設正樣本P有100個,負樣本N有100個。取threshold=0.5得TP=80,FP=20,問precision和recall分别是多少?如果取threshold=0.9,precision和recall将有什麼變化?
- \(Precision = TP/(TP+FP)=0.8\);也可算誤報率0.2,1-0.2 =0.8;
- \(Recall = TP/(TP+FN) = 0.8\);也可計算漏報率0.2,1-0.2=0.8;
- 若threshold=0.9,則TP減小,TP+FP減小,precision不确定;極端情況下FP為0,precision會上升。TP+FN不變,是以recall會減小。
- 通過上面的例子我們發現:實際上precision和recall沒什麼關系。
3.6 P-R(Precision-Recall)曲線
- 這裡簡單介紹一下P-R曲線的繪制方法。P-R曲線的橫軸是召回率,縱軸是精确率。對于一個排序模型來說,其P-R曲線上的一個點代表着,在某一門檻值下,模型将大于該門檻值的結果判定為正樣本,小于該門檻值的結果判定為負樣本,此時傳回結果對應的召回率和精确率。
- PR曲線越靠近右上越好。
3.7 F1 score
- F1 score和ROC曲線也能綜合地反映一個排序模型的性能。
- 是精準率和召回率的調和平均值,它定義為\(F1=\frac{2 \times Precision \times Recall}{Precision + Recall}\)。
- \[\frac{2}{F_1} = \frac{1}{P} + \frac{1}{R}
- \[F_1 = \frac{2TP}{2TP+FP+FN}
3.8 ROC曲線
- ROC曲線的縱坐标為真陽性率(True Positive Rate,TPR);橫坐标為假陽性率(False Positive Rate,FPR)。TPR和FPR的計算方法分别為:
\[TPR = \frac{TP}{TP+FN}
\[FPR = \frac{FP}{FP+TN}
上式中,P是真實的正樣本的數量,N是真實的負樣本的數量,TP是P個正樣本中被分類器預測為正樣本的個數,FP是N個負樣本中被分類器預測為正樣本的個數。
- 實際上,TPR就是召回率,FPR是負樣本角度的召回率,即誤召率。
- AUC指的是ROC曲線下的面積大小,該值能夠量化地反映基于ROC曲線衡量出的模型性能。計算AUC值隻需要沿着ROC橫軸做積分就可以了。由于ROC曲線一般都處于y=x這條直線的上方(如果不是的話,隻要把模型預測的機率反轉成1−p就可以得到一個更好的分類器),是以AUC的取值一般在0.5~1之間。AUC越大,說明分類器越可能把真正的正樣本排在前面,分類性能越好。
- ROC曲線越靠近左上越好。
3.9 Roc曲線與P-R曲線有何不同?
- 相比P-R曲線,ROC曲線有一個特點,當正負樣本的分布發生變化時,ROC曲線的形狀能夠基本保持不變(穩定),而P-R曲線的形狀一般會發生較劇烈的變化(敏感)。
- 選擇P-R曲線還是ROC曲線是因實際問題而異的,如果研究者希望更多地看到模型在特定資料集上的表現,P-R曲線則能夠更直覺地反映其性能。
3.10 分類模型評估名額小結
名額 | 描述 | Scikit-learn函數 |
---|---|---|
Confusion Matrix | 混淆矩陣 | from sklearn.metrics import confusion_matrix |
Precision | 精确率 | from sklearn.metrics import precision_score |
Recall | 召回率 | from sklearn.metrics import recall_score |
F1 | F1值 | from sklearn.metrics import f1_score |
ROC | ROC曲線 | from sklearn.metrics import roc |
AUC | ROC曲線下的面積 | from sklearn.metrics import auc |
4 回歸模型的評估名額
4.1 均方誤差(MSE)
- 公式:\(\frac{1}{m} \sum_{i=1}^{m}(\hat{y_i} - y_i)^2\)
- 真實值-預測值,平方和求平均。
- 這不就是線性回歸的損失函數嘛!對,線上性回歸的時候我們的目的就是讓這個損失函數最小。那麼模型做出來了,我們把損失函數丢到測試集上去看看損失值不就好了嘛。簡單直覺暴力!
- 最常用的回歸模型的評估名額。
4.2 均方根誤差(RMSE)
- 公式:\(\sqrt{\frac{1}{m} \sum_{i=1}^{m}(\hat{y_i} - y_i)^2}\)
- MSE開個根号。資料太大可以開根号。
- RMSE能夠很好地反映回歸模型預測值與真實值的偏離程度。但在實際問題中,如果存在個别偏離程度非常大的離群點(Outlier)時,即使離群點數量非常少,也會讓RMSE名額變得很差。
-
模型在95%的時間區間内的預測誤差都小于1%,取得了相當不錯的預測結果。那麼,造成RMSE名額居高不下的最可能的原因是什麼?--離群點。
解決辦法?可以從三個角度來思考。
- 第一,如果我們認定這些離群點是“噪聲點”的話,就需要在資料預處理的階段把這些噪聲點過濾掉。
- 第二,如果不認為這些離群點是“噪聲點”的話,就需要進一步提高模型的預測能力,将離群點産生的機制模組化進去(這是一個宏大的話題,這裡就不展開讨論了)。
- 第三,可以找一個更合适的名額來評估該模型。關于評估名額,其實是存在比RMSE的魯棒性更好的名額,比如平均絕對百分比誤差(Mean Absolute Percent Error,MAPE),它定義為\(MAPE = \sum_{i=1}^{n}|\frac{y_i - \bar{y_i}}{y_i}| \times \frac{100}{n}\).MAPE相當于把每個點的誤差進行了歸一化,降低了個别離群點帶來的絕對誤差的影響。
4.3 平均絕對誤差(MAE)
- Mean Absolute Error ,是絕對誤差的平均值,能更好地反映預測值誤差的實際情況.
- \(\frac{1}{m} \sum_{i=1}^{m}|\hat{y_i} - y_i|\)
4.4 可決系數(R-Squared)
- \(R^2 = 1 - \frac{\sum_{i=1}(\hat{y_i}-y_i)^2}{\sum_{i=1}(\bar{y_i}-y_i)^2}\)
- 其中,\(\hat{y_i}\)是預測值,\(\bar{y_i}\)是預測值的平均值。\(R^2<=1\)且越大越好。
4.5 回歸模型的評估名額小結
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 |
作者:ZingpLiu
出處:http://www.cnblogs.com/zingp/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接。