在機器學習的算法評估中,尤其是分類算法評估中,我們經常聽到精確率(precision)與召回率(recall),RoC曲線與PR曲線這些概念,那這些概念到底有什么用處呢?
首先,我們需要搞清楚幾個拗口的概念:
1. TP, FP, TN, FN
-
- True Positives,TP:預測為正樣本,實際也為正樣本的特征數
- False Positives,FP:預測為正樣本,實際為負樣本的特征數
- True Negatives,TN:預測為負樣本,實際也為負樣本的特征數
- False Negatives,FN:預測為負樣本,實際為正樣本的特征數
聽起來還是很費勁,不過我們用一張圖就很容易理解了。圖如下所示,里面綠色的半圓就是TP(True Positives), 紅色的半圓就是FP(False Positives), 左邊的灰色長方形(不包括綠色半圓),就是FN(False Negatives)。右邊的 淺灰色長方形(不包括紅色半圓),就是TN(True Negatives)。這個綠色和紅色組成的圓內代表我們分類得到模型結果認為是正值的樣本。

2. 精確率(precision),召回率(Recall)與特異性(specificity)
精確率(Precision)的定義在上圖可以看出,是綠色半圓除以紅色綠色組成的圓。嚴格的數學定義如下:
P=TPTP+FPP=TPTP+FP
召回率(Recall)的定義也在圖上能看出,是綠色半圓除以左邊的長方形。嚴格的數學定義如下:
R=TPTP+FNR=TPTP+FN
特異性(specificity)的定義圖上沒有直接寫明,這里給出,是紅色半圓除以右邊的長方形。嚴格的數學定義如下:
S=FPFP+TNS=FPFP+TN
有時也用一個F1值來綜合評估精確率和召回率,它是精確率和召回率的調和均值。當精確率和召回率都高時,F1值也會高。嚴格的數學定義如下:
2F1=1P+1R2F1=1P+1R
有時候我們對精確率和召回率並不是一視同仁,比如有時候我們更加重視精確率。我們用一個參數ββ來度量兩者之間的關系。如果β>1β>1, 召回率有更大影響,如果β<1β<1,精確率有更大影響。自然,當β=1β=1的時候,精確率和召回率影響力相同,和F1形式一樣。含有度量參數ββ的F1我們記為FβFβ, 嚴格的數學定義如下:
Fβ=(1+β2)∗P∗Rβ2∗P+RFβ=(1+β2)∗P∗Rβ2∗P+R
我們熟悉了精確率, 召回率和特異性,后面的RoC曲線和PR曲線就好了解了。
3. RoC曲線和PR曲線
有了上面精確率, 召回率和特異性的基礎,理解RoC曲線和PR曲線就小菜一碟了。
以召回率為y軸,以特異性為x軸,我們就直接得到了RoC曲線。從召回率和特異性的定義可以理解,召回率越高,特異性越小,我們的模型和算法就越高效。也就是畫出來的RoC曲線越靠近左上越好。如下圖左圖所示。從幾何的角度講,RoC曲線下方的面積越大越大,則模型越優。所以有時候我們用RoC曲線下的面積,即AUC(Area Under Curve)值來作為算法和模型好壞的標准。

以精確率為y軸,以召回率為x軸,我們就得到了PR曲線。仍然從精確率和召回率的定義可以理解,精確率越高,召回率越高,我們的模型和算法就越高效。也就是畫出來的PR曲線越靠近右上越好。如上圖右圖所示。
使用RoC曲線和PR曲線,我們就能很方便的評估我們的模型的分類能力的優劣了。
