最近在覆盤udacity 的機器學習的課程,現在來整理一下關於機器學習模型的評估指標的相關知識。
不同數據集採用不同的模型進行訓練,會得到完全不同的效果,那麼如何衡量一個模型是否適合該數據集呢?在數據集訓練後可以對一些指標進行運算,觀察實際的效果,進行調整參數或者更換模型等等。
學習模型的評估指標常用的有幾種:F-β得分(F1得分,F2得分等等,根據不同的業務實際需求來指定適合的β值),ROC 曲線,迴歸指標包含:平均絕對誤差,均方誤差,R2分數等等
1 混淆矩陣
上圖爲檢測特定疾病的例子,如果一個人檢測出生病,那麼成爲陽性,如果檢測結果是未生病則爲陰性,陽性分爲真陽性和假陽性,陰性分爲真陰性和假陰性.
如果一個病人檢測出生病,則爲真陽性 (True Positive ,TP)
如果一個病人檢測爲健康,則爲假陰性(False Negative,FN);
如果一個健康人檢測出生病,稱爲假陽性 (False Positive,FP);
如果一個健康人檢測爲健康,稱爲真陰性(True Negative,TN)
由上面四種狀態構成的矩陣稱之爲混淆矩陣。
再看一個檢測垃圾郵件的例子:
上圖是對應的混淆矩陣,假設一封郵件檢測出是垃圾郵件時候稱爲陽性,那麼
當一封垃圾郵件被檢測出是垃圾郵件的時候稱爲真陽性(True Positive ,TP);
當一封垃圾郵件被檢測出是正常郵件時候稱爲假陰性(False Negative,FN);
當一封正常的郵件被檢測出是垃圾郵件時候稱爲假陽性(False Positive,FP);
當一封正常的郵件被檢測出是正常郵件時候,稱爲真陰性(True Negative,TN);
2 準確率
準確率 = 所有檢測正確的點/所有的點
從上面的圖中可以看到,所有檢測正確的點(病人被檢測出生病的人數+健康人被檢測出健康的人數),(真陽性+真陰性)/所有。
但是不是所有正確率高的模型就是符合要求的,下面來看一個檢測信用卡欺詐行爲的例子
從上面的圖中看出,左側是信用卡的良好記錄:284335條,右側是欺詐行爲記錄 472條,那麼如果一個模型預測所有的記錄都是良好記錄,那麼這種情況下,該模型的準確率是 284335/(284335+472),達到99.83%,可以看出該模型的準確率很高,但並不滿足我們的需求,因爲絲毫沒有檢測出欺詐行爲,因此,引入了精度和召回率的概念。
3 精度
精度的定義是 在所有檢測爲陽性的點中,有多少是真的陽性,在醫療檢測模型中即在所有檢測爲生病的數據中,有多少是真的生病了
垃圾郵件的檢測例子中,精度表示在檢測出是垃圾郵件的所有郵件中有多少真的是垃圾郵件
在上面兩個例子中,想一下哪些情況是必須避免的,不能容忍的:
在醫療模型中,如果一個病人被檢測出健康這種情況是不允許發生的
在垃圾郵件檢測模型中,如果一封正式郵件被檢測爲垃圾郵件而被放入垃圾箱中,這種情況是不能允許的
從精度的定義來看,垃圾郵件檢測是對精度有要求的,而醫療模型對精度是沒有要求的。
4 召回率
召回率的定義爲在所有陽性的數據中有多少被檢測出是陽性,在醫療模型中,召回率表示在所有生病的人羣中有多少人被檢出出生病
在垃圾郵件檢測模型中,召回率表示在所有垃圾郵件中有多少是被檢測出來是垃圾郵件
由此看出 醫療模型是要求召回率高的模型,而垃圾郵件檢測是高精度的模型
5 F1得分
對於一個模型評估指標是兩個(精度和召回率),評估起來會比較麻煩,因此將精度和召回率合成一個指標F1分數(即爲精度和召回率的調和平均數)
6 F-β得分
F-β得分 是比F1 得分更廣泛的一種評估指標,F1 是 F-β ,β=1的情況,具體公式如下:
β 可以根據具體業務情況來選擇β的值,進而對模型進行評估
從上面圖中可以看出 β 值越大,得分就越靠近召回率,β越小得分越靠近精度,
如果是一個要求高召回率的模型就選擇β較大的得分作爲評估標準
如果是一個要求高精度的模型就選擇β較小的得分作爲評估標準。