算法的評價標準:ROC,假陽性,mape

1,ROC曲線

去醫院做檢查化驗單或報告單會出現(+)跟(-),其分別表型陽性和陰性。比如你去檢查是不是得了某種病,陽性(+)就說明得了,陰性(-)就說明沒事。
科研人員在設計這種檢驗方法的時候希望知道,如果這個人確實得了病,那麼這個方法能檢查出來的概率是多少呢(真陽率)?如果這個人沒有得病,那麼這個方法誤診其有病的概率是多少呢(假陽率)?
如下表1所示:
這裏寫圖片描述

金標準就是實際中的病人陽性和陰性的情況,某篩選方法就是我們預測陽、陰性所採用的方法。
真陽率(True Positive Rate, TPR)就是:

=aa+c

表示在所有的陽性病人中被正確預測爲陽性的概率。
假陽率(False Positive Rate, FPR)就是:
=bb+d

表示在所有的陰性病人中被預測爲陽性的概率。

這裏寫圖片描述
ROC曲線,就是把假陽率當x軸,真陽率當y軸畫一個二維平面直角座標系。通過不斷調整檢測方法(或機器學習中的分類器)的閾值,即最終得分高於某個值就是陽性,反之就是陰性,得到不同的真陽率和假陽率數值,然後描點。就可以得到一條ROC曲線。
對於ROC曲線做如下說明:
(1)ROC曲線上的每一個點對應於一個threshold,大於這個值的實例劃歸爲正類,小於這個值則劃到負類中.
Threshold最大時,把每個實例都預測爲負類, TPR=0,FPR=0,對應於原點;
Threshold最小時,,把每個實例都預測爲正類,TPR=1,FPR=1,對應於右上角的點(1,1)
可以根據對靈敏度和特異度的特定要求,確定ROC曲線一適當的工作點,確定最好的決策閾值。
(2)理想情況下,TPR應該接近1,FPR應該接近0。
一個好的分類模型應該儘可能靠近圖形的左上角,
而一個隨機猜測模型應位於連接點(TPR=0,FPR=0)和(TPR=1,FPR=1)的主對角線上。
(3) ROC曲線下方的面積(AUC)提供了評價模型平均性能的另一種方法。如果模型是完美的,那麼它的AUG = 1,如果模型是個簡單的隨機猜測模型,那麼它的AUG = 0.5,如果一個模型好於另一個,則它的曲線下方面積相對較大。
ROC曲線可以全面評分類器的性能。
注意:認真的讀者也許會感慨左上角的說法有些含糊,所謂「曲線左上角」至少有3種判斷方式:a,曲線與斜率爲1的切點;b,曲線經過(0,1)和(1,0)兩點直線的交點;c,曲線上與(0,1)點絕對距離最近的點。從數學上講,由於ROC曲線並非規則曲線,這3點未必永遠合一。

AUC(Area Under Curve)顧名思義,就是這條ROC曲線下方的面積了。越接近1表示分類器越好。
所以對於多種預測方法的優劣判斷可以在一個座標下畫他們的ROC曲線,然後通過計算他們的AUC來進行判斷。

2,F1評分
還是依表1爲依據,準確度(Precision)爲:

Pre=aa+b

表示預測爲陽性的樣本中真正爲陽性的概率。
而真陽率(True Positive Rate, TPR)又成爲召回率(Recall):
Rec=aa+c

F1是將準確率和召回率結合在一起,如下所示:
F1=2PreRecPre+Rec

對於算法的評估來說當然希望檢索結果Precision越高越好,同時Recall也越高越好,但事實上這兩者在某些情況下有矛盾的。比如極端情況下,我們只搜索出了一個結果,且是準確的,那麼Precision就是100%,但是Recall就很低;而如果我們把所有結果都返回,那麼比如Recall是100%,但是Precision就會很低。因此在不同的場合中需要自己判斷希望Precision比較高或是Recall比較高。

3,rmse、mape平均絕對百分誤差

RMSE=1nt=1n(ytpret)2

yt 表示樣本t的真實值, pret 表示樣本t的預測值。
rmse均方根誤差,就是誤差的平方和再開根號,意義上很好理解。不過有些情況用均方根誤差就有些不合情理,比如有兩種情況:
a,將價格爲100萬的房子價格預測爲120萬;
b,將價格爲600萬的房子價格預測爲620萬;
雖然a,b中價格的預測的差值都是20但是可以看出b明顯要比a預測的要準一些的。爲了改變這種情況就有了mape,公式如下:
MAPE=t=1n|ytpretyt|100n

求取每個樣本的誤差併除以該樣本的真實值,最後除以樣本總量做個歸一。
以上面a,b爲例計算其mape:
Mapea=0.2
Mapeb=0.034

4,例子:
現在有100個病人其中90個是陽性10個是陰性,現在有兩個預測方案:
a,100個全部都是陽性;
b,90個陽性中有81個是陽性,剩餘的全部爲陰性。
分析:
真陽性:
TPRa=90/90=1
TPRb=81/90=0.9
假陽性:
FPRa=10/10=1
FPRb=0/10=0
精確度:
PREa=90/100=0.9
PREb=81/90=0.9
F1:
F1a=2TPRaPREa/(TPRa+PREa)=0.947
F1b=2TPRbPREb/(TPRb+PREb)=0.9