機器學習之模型評估與選擇

當我們訓練好了一個模型后,如何去評價這個模型的優劣呢?最直接的辦法當然是拿著這個模型去做實際的判斷,比如人臉識別的人工智能,我們將有各種圖片(含有人臉的與不含人臉的)輸入給模型,讓它判斷是否有人臉,然后看看有多少比例是正確的,多少比例是錯誤的。這就是錯誤率概念和精度概念的來源,是最直接的一種評估方式。
錯誤率和精度的定義如下:
分類錯誤的樣本數占樣本總數的比例稱為錯誤率(error rate),精度正好是(1-錯誤率)
但是有一點需要清楚,就是往往我們的樣本空間趨近于無窮大,那么如何計算這個錯誤率呢?所以最后我們仍然是選擇一個有限的樣本集,然后根據實際的測試結果來計算這個有限樣本集的錯誤率和精度,我們認為這個錯誤率是趨近于實際的錯誤率的。當然實際計算的時候選擇樣本集以及如何計算又會有許多不同的方法,但總體思路都是如此。

通常我們把訓練集上的誤差稱為訓練誤差(traning error),把新樣本上的誤差稱為泛化誤差(generalization error)。通常我們的目標就是要得到泛化誤差小的模型,泛化誤差越小越好。

但有時候我們在訓練集上的誤差很小,實際用于新樣本時反而可能更差,原因就在于我們的訓練樣本有限,我們的模型會把訓練集特有的特征認為是所有樣本空間中樣本都應具有的特征,導致泛化能力下降,這種現象就叫做過擬合(overfitting),與過擬合相對的就是欠擬合(underfitting),即會欠缺某些通用特征,導致不符合分類標準的樣本也分到相應的類中。我們還以人臉識別為例,如果我們的訓練集中絕大部分都是成年人,那么當我們將含有兒童頭像的照片給模型時,可能它會認為不是人臉(因為不具有成年人的臉部特征),這時我們就會說過擬合了。而如果它不僅識別了兒童人臉,還將小狗的圖片也識別為人臉,這個時候我們就說是欠擬合了。

通過上面的描述,我們知道了通常我們是無法得到泛化誤差的,而訓練誤差又存在過擬合現象,那么實際又是如何評價模型的優劣呢?

要評價一個模型的優劣,需要兩樣東西,一是合適的樣本集,二是用什么指標來評價。
選擇合適的樣本集來評價模型的泛化能力通常有以下幾種方法:
1,留出法
留出法很直接,即將已有的樣本集分成兩部分,一部分用作訓練,另一部分用來做評估。實際使用時會有很多變形,比如隨機抽取n個樣本作為測試集,剩余樣本作為訓練集,可以這樣隨機抽取100次,然后將每次訓練集的訓練結果加總算出平均值,作為最后的評估結果。

2,交叉驗證法
交叉驗證是將數據分為k個大小相似的互斥子集,每個子集盡可能保持分布的一致性,然后每次選出一個子集作為測試集,剩余子集作為訓練集,這樣可以得出一個評估結果,同樣的方法,最后這k個子集分別作為測試集會得出k個評估結果,然后用這k個評估結果就可以算出一個平均值作為最后的結果。
我們通常把這種交叉驗證叫做K折交叉驗證,而最常用的是10折交叉驗證,即分成十個子集分別評估。

3,自助法
前兩種方法由于在測試時使用的是全部數據集的一個子集,這樣就有可能引入偏差,而自主法就是一個比較好的解決方案,它以自助采樣法為基礎。自助采樣法是說從有m個樣本的數據集D中,隨機抽取一個樣本放入D'中,然后再將該樣本放回D中,然后再次隨機抽取,如此重復m次就有了一個新的數據集D',D'就是自助采樣結果。通常當樣本數較少時采用這個方法會有比較好的效果。

現在有了測試樣本集和訓練樣本集了,那么用什么指標來評價呢?
實際上不同的任務,評價的方法是不同的。
回歸任務:通常采用“均方誤差”(mean squared error)

pic1.png

聚類任務:通常通過Jaccad系數,FM指數,以及Rand指數來評價
分類任務:有以下幾種指標

1,文章開頭提到的錯誤率和精度,這是最常用最直接的指標
2,有時候我們需要看看,在針對某一個分類選出來的數據中正確的有多少,或者某個分類的全部樣本中有多少被正確選擇了出來,前者我們可以用“查準率”(precision,有時翻譯成“精確率”)來判斷,后者我們可以通過“查全率”(recall,有時翻譯成“召回率”)來判斷。這里需要先搞清楚幾個概念:
真正例(True positive),使用TP來表示真正例的樣本數
假正例(false positive),使用FP來表示假正例的樣本數
真反例(true negtive),使用TN來表示真反例的樣本數
假反例(false negative),使用FN來表示假反例的樣本數

我們用一個例子來解釋這些概念,假設我們有200個樣本,其中100個樣本其真實的標記為好瓜,另外100個標記為壞瓜。我們通過模型來分析后,判斷出其中有90個好瓜被歸為好瓜,還有5個壞瓜被判斷為好瓜,剩下的都判斷為壞瓜,這時
TP = 90,FP = 5, TN = 95,FN = 10

  • 查準率是說在所有判斷為好瓜的瓜中,有多大比例是真正的好瓜,也就是準確度如何,其公式如下:
pic2.png

在我們的例子當中,最后的查準率約為94.7%

  • 查全率是說在所有為好瓜的樣本中有多大比例的好瓜被挑了出來,其公式如下:
pic3.png

在我們的例子中,查全率為90%

這兩對指標是矛盾的,往往查準率高時,查全率就會低(也就是更嚴格的挑選),查全率如果高的話,查準率就會低(更寬松的挑選),在實際使用場景當中,必須結合具體的情況來選擇我們的模型評估指標,即有些情況對查準率較高,比如推薦商品時,有的對查全率要求較高,比如比對犯罪嫌疑人頭像。
通常我們需要繪制一個以查全率為橫坐標,以查準率為縱坐標的曲線圖,稱為“P-R曲線”圖,通過這個圖來直觀的比較模型的優劣

pic4.png

以上圖為例,B曲線完全包住了C曲線,所以B模型要優于C模型,而A和B的優劣就不好判斷了,因為要根據具體的使用場合來選擇,如果一定要說出綜合的優劣的話,可以看哪個模型包住的面積大,或者看誰的平衡點更高。這里平衡點是查準率和查全率相等時的數值,這里A的平衡點大于B的平衡點,我們就說A比B更好。

3,ROC和AUC
ROC曲線是說以真正例率TPR為縱軸,假正例率FPR為橫軸畫出的曲線。AUC(Area Under ROC Curve)是ROC包住的面積

pic5.png
pic6.png

這種方法跟P-R曲線大同小異,這里不再詳解
4,代價敏感錯誤率與代價曲線
之前我們說不同場景下,可能對查全率,查準率要求不同,有時我們需要更嚴格的篩選,有時需要更加寬松的篩選。而有時我們針對不同場景,對假正例和假反例兩種錯誤的代價是不同的,例如在醫療診斷的時候,對于假正例,把健康的人診斷為病人和假反例,把病人診斷為健康人,其后果代價是不同的,前者代價較小,最多就是麻煩下再多做些檢查,而后者可能會導致患者錯過診療時機,甚至付出生命代價。所以可以為不同錯誤類型賦予不同的權重,這就是代價敏感錯誤率的由來。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容