機器學習模型評估指標-混淆矩陣-精度-召回率-F1分數

最近在覆盤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的情況,具體公式如下:

 

 β 可以根據具體業務情況來選擇β的值,進而對模型進行評估

從上面圖中可以看出 β 值越大,得分就越靠近召回率,β越小得分越靠近精度,

如果是一個要求高召回率的模型就選擇β較大的得分作爲評估標準

如果是一個要求高精度的模型就選擇β較小的得分作爲評估標準。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章