評價指標是針對一樣的數據,輸入不一樣的算法,或者輸入相同的算法但參數不一樣而給出這個算法或者參數好壞的定量指標。算法
如下爲了方便講解,都以二分類問題爲前提進行介紹,其實多分類問題下這些概念均可以獲得推廣。機器學習
準確率是最好理解的評價指標,它是一個比值:性能
可是使用準確率評價算法有一個問題,就是在數據的類別不均衡,特別是有極偏的數據存在的狀況下,準確率這個評價指標是不能客觀評價算法的優劣的。例以下面這個例子:學習
咱們檢測對 1000 我的是否患有癌症進行檢測,其實癌症是一個發病率很低的疾病,咱們就假定這 1000 我的裏面只有 3 我的真正患病。網站
此時,咱們能夠「無腦地」設計一個算法,就預測這 1000 我的所有健康。根據準確率的定義,除了那 3 個真正患病的病人咱們預測錯了,其他健康的 997 人咱們的算法都預測正確了,此時設計
事實上,這樣的算法沒有任何的預測能力,真的用於醫療是極其不負責的,因而咱們就應該考慮是否是評價指標出了問題。這個時候就須要別的評價指標了。圖片
要解釋清楚精準率和召回率,得先解釋混淆矩陣,二分類問題的混淆矩陣由 4 個數構成。首先咱們將二分類問題中,咱們關心的,少數的那一部分數據,咱們稱之爲正例(positive),就如同預測癌症,癌症患者就定義爲正例。那麼剩下的就定義爲負例(negative)。
因而,咱們定義:
TN:算法預測爲負例(N),實際上也是負例(N)的個數,即算法預測對了(True);
FP:算法預測爲正例(P),其實是負例(N)的個數,即算法預測錯了(False);
FN:算法預測爲負例(N),其實是正例(P)的個數,即算法預測錯了(False);
TP:算法預測爲正例(P),實際上也是正例(P)的個數,即算法預測對了(True)。
這 4 個定義由兩個字母組成,第 1 個字母表示算法預測正確或者錯誤,第 2 個字母表示算法預測的結果。
ci
混淆矩陣定義以下:
get
預測值 0 | 預測值 1 | |
---|---|---|
真實值 0 | TN | FP |
真實值 1 | FN | TP |
記憶方法:真實值更重要,因此真實值處在第一個維度,就是行。
精準率(precision)的定義:
it
因此,精準率就是「預測爲正例的那些數據裏預測正確的數據個數」。
召回率(recall)的定義:
因此,召回率就是「真實爲正例的那些數據裏預測正確的數據個數」。
在不一樣的應用場景下,咱們的關注點不一樣,例如,在預測股票的時候,咱們更關心精準率,即咱們預測升的那些股票裏,真的升了有多少,由於那些咱們預測升的股票都是咱們投錢的。而在預測病患的場景下,咱們更關注召回率,即真的患病的那些人裏咱們預測錯了狀況應該越少越好,由於真的患病若是沒有檢測出來,結果實際上是很嚴重的,以前那個無腦的算法,召回率就是 0。
精準率和召回率是此消彼長的,即精準率高了,召回率就降低,在一些場景下要兼顧精準率和召回率,就有 F1 score。
F1 score 是精準率和召回率的兼顧指標,定義以下:
整理一下:
其實 F1 score 是精準率和召回率的調和平均數,調和平均數的性質就是,只有當精準率和召回率兩者都很是高的時候,它們的調和平均纔會高。若是其中之一很低,調和平均就會被拉得接近於那個很低的數。
AUC 是另外一種評價二分類算法的指標,被定義爲 ROC 曲線下的面積,顯然這個面積的數值不會大於 1。我我的以爲和 F1 score 差很少,都是綜合評價精準率和召回率的指標,只不過繪製 ROC 曲線使用了另外兩個此消彼長的指標 。
橫座標:假正率(False positive rate, FPR),預測爲正但實際爲負的樣本佔全部負例樣本的比例;
縱座標:真正率(True positive rate, TPR),這個其實就是召回率,預測爲正且實際爲正的樣本佔全部正例樣本的比例。
諸如邏輯迴歸這樣的分類算法而言,一般預測的都是一個機率值,咱們會認爲設置一個閾值,超過這個閾值,就預測爲其中一類,不超過這個閾值,定義爲另一類。因而,不一樣的閾值就對應了不一樣的假正率和真正率,因而經過不一樣的閾值就造成了假正率和真正率序列,它們就能夠在直角座標系上經過描點成爲光滑曲線。這個曲線就是 ROC 曲線,ROC 曲線下的面積就是 AUC。
AUC 高的算法一般認爲更好。
那麼爲何不用精準率和召回率畫曲線求面積呢,實際上是徹底能夠的。
精準率-召回率曲線也叫 pr 曲線,畫出來是這樣的。
而 roc 曲線畫出來是這樣的:
pr 曲線從左到右是降低的,roc 曲線從左到右是上升的,我我的以爲兩者都行,只不過最終人們都採用 roc 曲線(上面兩張圖片都來自 scikit-learn 官方網站)。
參考資料:
機器學習之分類性能度量指標 : ROC曲線、AUC值、正確率、召回率
https://zhwhong.cn/2017/04/14/ROC-AUC-Precision-Recall-analysis/