在機器學習的算法評估中,尤爲是分類算法評估中,咱們常常聽到精確率(precision)與召回率(recall),RoC曲線與PR曲線這些概念,那這些概念到底有什麼用處呢?算法
首先,咱們須要搞清楚幾個拗口的概念:微信
聽起來仍是很費勁,不過咱們用一張圖就很容易理解了。圖以下所示,裏面綠色的半圓就是TP(True Positives), 紅色的半圓就是FP(False Positives), 左邊的灰色長方形(不包括綠色半圓),就是FN(False Negatives)。右邊的 淺灰色長方形(不包括紅色半圓),就是TN(True Negatives)。這個綠色和紅色組成的圓內表明咱們分類獲得模型結果認爲是正值的樣本。機器學習
精確率(Precision)的定義在上圖能夠看出,是綠色半圓除以紅色綠色組成的圓。嚴格的數學定義以下:學習
\(P = \frac{TP}{TP + FP }\) spa
召回率(Recall)的定義也在圖上能看出,是綠色半圓除以左邊的長方形。嚴格的數學定義以下:
\(R = \frac{TP}{TP + FN }\) blog
特異性(specificity)的定義圖上沒有直接寫明,這裏給出,是右邊長方形去掉紅色半圓部分後除以右邊的長方形。嚴格的數學定義以下:ci
\(S = \frac{TN}{FP + TN }\) 數學
有時也用一個F1值來綜合評估精確率和召回率,它是精確率和召回率的調和均值。當精確率和召回率都高時,F1值也會高。嚴格的數學定義以下:it
\(\frac{2}{F_1} = \frac{1}{P} + \frac{1}{R}\) io
有時候咱們對精確率和召回率並非一視同仁,好比有時候咱們更加劇視精確率。咱們用一個參數\(\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曲線就行了解了。
有了上面精確率, 召回率和特異性的基礎,理解RoC曲線和PR曲線就小菜一碟了。
以TPR爲y軸,以FPR爲x軸,咱們就直接獲得了RoC曲線。從FPR和TPR的定義能夠理解,TPR越高,FPR越小,咱們的模型和算法就越高效。也就是畫出來的RoC曲線越靠近左上越好。以下圖左圖所示。從幾何的角度講,RoC曲線下方的面積越大越大,則模型越優。因此有時候咱們用RoC曲線下的面積,即AUC(Area Under Curve)值來做爲算法和模型好壞的標準。
以精確率爲y軸,以召回率爲x軸,咱們就獲得了PR曲線。仍然從精確率和召回率的定義能夠理解,精確率越高,召回率越高,咱們的模型和算法就越高效。也就是畫出來的PR曲線越靠近右上越好。如上圖右圖所示。
使用RoC曲線和PR曲線,咱們就能很方便的評估咱們的模型的分類能力的優劣了。
(歡迎轉載,轉載請註明出處。歡迎溝通交流: 微信:nickchen121)