天天看點

精确率與召回率,RoC曲線與PR曲線

    在機器學習的算法評估中,尤其是分類算法評估中,我們經常聽到精确率(precision)與召回率(recall),RoC曲線與PR曲線這些概念,那這些概念到底有什麼用處呢?

    首先,我們需要搞清楚幾個拗口的概念:

1. TP, FP, TN, FN

    1.   True Positives,TP:預測為正樣本,實際也為正樣本的特征數
    2.   False Positives,FP:預測為正樣本,實際為負樣本的特征數
    3.   True Negatives,TN:預測為負樣本,實際也為負樣本的特征數
    4.   False Negatives,FN:預測為負樣本,實際為正樣本的特征數

    聽起來還是很費勁,不過我們用一張圖就很容易了解了。圖如下所示,裡面綠色的半圓就是TP(True Positives), 紅色的半圓就是FP(False Positives), 左邊的灰色長方形(不包括綠色半圓),就是FN(False Negatives)。右邊的 淺灰色長方形(不包括紅色半圓),就是TN(True Negatives)。這個綠色和紅色組成的圓内代表我們分類得到模型結果認為是正值的樣本。

精确率與召回率,RoC曲線與PR曲線

2. 精确率(precision),召回率(Recall)與特異性(specificity)

    精确率(Precision)的定義在上圖可以看出,是綠色半圓除以紅色綠色組成的圓。嚴格的數學定義如下:

    \(P = \frac{TP}{TP + FP }\) 

    召回率(Recall)的定義也在圖上能看出,是綠色半圓除以左邊的長方形。嚴格的數學定義如下:

    \(R = \frac{TP}{TP + FN }\) 

    特異性(specificity)的定義圖上沒有直接寫明,這裡給出,是右邊長方形去掉紅色半圓部分後除以右邊的長方形。嚴格的數學定義如下:

    \(S = \frac{TN}{FP + TN }\) 

    有時也用一個F1值來綜合評估精确率和召回率,它是精确率和召回率的調和均值。當精确率和召回率都高時,F1值也會高。嚴格的數學定義如下:

    \(\frac{2}{F_1} = \frac{1}{P} + \frac{1}{R}\) 

    有時候我們對精确率和召回率并不是一視同仁,比如有時候我們更加重視精确率。我們用一個參數\(\beta\)來度量兩者之間的關系。如果\(\beta>1\), 召回率有更大影響,如果\(\beta<1\),精确率有更大影響。自然,當\(\beta=1\)的時候,精确率和召回率影響力相同,和F1形式一樣。含有度量參數\(\beta\)的F1我們記為\(F_\beta\), 嚴格的數學定義如下:

    \(F_\beta = \frac{(1+\beta^2)*P*R}{\beta^2*P + R}\) 

    此外還有靈敏度(true positive rate ,TPR),它是所有實際正例中,正确識别的正例比例,它和召回率的表達式沒有差別。嚴格的數學定義如下:

    \(TPR = \frac{TP}{TP + FN }\) 

    另一個是1-特異度(false positive rate, FPR),它是實際負例中,錯誤得識别為正例的負例比例。嚴格的數學定義如下:

    \(FPR = \frac{FP}{FP + TN }\) 

    我們熟悉了精确率, 召回率和特異性,以及TPR和FPR,後面的RoC曲線和PR曲線就好了解了。

3. RoC曲線和PR曲線

    有了上面精确率, 召回率和特異性的基礎,了解RoC曲線和PR曲線就小菜一碟了。

    以TPR為y軸,以FPR為x軸,我們就直接得到了RoC曲線。從FPR和TPR的定義可以了解,TPR越高,FPR越小,我們的模型和算法就越高效。也就是畫出來的RoC曲線越靠近左上越好。如下圖左圖所示。從幾何的角度講,RoC曲線下方的面積越大越大,則模型越優。是以有時候我們用RoC曲線下的面積,即AUC(Area Under Curve)值來作為算法和模型好壞的标準。

精确率與召回率,RoC曲線與PR曲線

    以精确率為y軸,以召回率為x軸,我們就得到了PR曲線。仍然從精确率和召回率的定義可以了解,精确率越高,召回率越高,我們的模型和算法就越高效。也就是畫出來的PR曲線越靠近右上越好。如上圖右圖所示。

    使用RoC曲線和PR曲線,我們就能很友善的評估我們的模型的分類能力的優劣了。

(歡迎轉載,轉載請注明出處。歡迎溝通交流: [email protected]) 

繼續閱讀