在機器學習算法中,在模型訓練出來之后,總會去尋找衡量模型性能的指標。評價指標是針對將相同的數據,使用不同的算法模型,或者輸入不同參數的同一種算法模型,而給出這個算法或者參數好壞的定量指標。在模型評估過程中,往往需要使用多種不同的指標協作評估一個模型的好壞,因為眾多的評價指標中,大部分指標只能片面的反應模型的一部分特點,那么對模型的評估就會比較片面,在算法落地后也會出現很多問題。根據評估指標的反饋進行模型調整,這些都是機器學習在模型評估階段的關鍵問題,也是一名合格的算法工程師應當具備的基本功[文獻1]。
本文參考文獻1, 2,詳細介紹機器學習分類任務的常用評價指標:準確率(Accuracy)、精確率(Precision)、召回率(Recall)、P-R曲線(Precision-Recall Curve)、F1 Score、混淆矩陣(Confuse Matrix)、ROC、AUC。
1 準確率(Accuracy)
準確率定義如下:
也就是被正確分類的樣本個數與總樣本的個數之比,對于二分類來說可以這樣看:
其中(正、負樣本代表兩個不同類別):
真正例(True Positive, TP):標注的數據為正樣本,被模型預測為正的正樣本;
假正例(False Positive, FP):標注的數據為負樣本,被模型預測為正的負樣本;
假負例(False Negative, FN):標注的數據為負樣本,被模型預測為負的正樣本;
真負例(True Negative, TN):標注的數據為正樣本,被模型預測為負的負樣本;
準確率是分類問題中最簡單也是最直觀的評價指標,但存在明顯的缺陷,就是在數據的類別不均衡,特別是一種類別數據特別多另一種類別數據特別少的情況下,準確率就不能客觀評價算法的優劣了。舉個例子:當負樣本占99%時,分類器把所有樣本都預測為負樣本,那么對于這個模型來說可以獲得99%的準確率,所以在樣本數據極度不均衡的時候,選用這種方式去評價一個模型是不可取的。
2 精確率(Precision)
精準率又叫查準率,容易與準確率弄混,請記住這個“精”字,「它是針對一個類別預測結果而言的」,含義是在所有被預測為正的樣本中實際為正的樣本的概率,在預測為正樣本的結果中,有多少把握可以預測正確,因為其他類別的數據也可能被預測成為該類別。以二分類(以下不特殊說明,都以二分類為例介紹)來說其公式如下:
精準率代表對正樣本「結果」中的預測準確程度,而準確率則代表整體的預測準確程度,既包括正樣本,也包括負樣本。
3 召回率(Recall)
召回率又叫查全率,「它是針對原樣本而言的」,即在實際為正的樣本中被預測為正樣本的概率,其公式如下:
精確率和召回率又是一對歡喜冤家(一個查準率,一個查全率)。引用wiki上的圖,來理解一下:
實際中該如何選擇這兩個指標呢?因為精確率和召回率有不同的側重點,并且精確率和召回率是一對此消彼長的度量,精確率高可能原因是原始樣本中正樣本預測為正樣本比較少,負樣本預測為正樣本也比較多,那么這個時候召回率就低了,因為召回率是正樣本預測為正樣本的比率。例如,在預測股票的時候,更關心精準率,假如你買的股票現在有漲有跌,預測這些股票漲的多,那么這就是對我們有用的,因為所預測漲的股票都是你投錢的。而在預測病患的場景下,則更關注召回率,即真的患病的那些人中預測對了情況應該越多越好,即召回率越高越好。
因為兩種精準率和召回率是此消彼長的參數,而在實際情況中,例如推薦系統中有這樣的情形。在給用戶推薦的N個數據中,我們都認為是預測為正的值,那么其中有用戶喜歡的就是預測正樣本預測為正樣本的情形,即TP,其中用戶不喜歡的就是預測負樣本為正樣本的情形,即FP。當準確率比較高的時候,那么類別就比較多,而用戶實際喜歡的并沒有那么多,而當召回率比較高,那么推送的類別少,用戶可能想看更多的類別,推送的又沒有。所以,在實際工程中,往往需要結合兩個指標的結果,去尋找一個平衡點,使綜合性能最大化。
4 P-R曲線
P-R曲線(Precision Recall Curve)是描述精確率/召回率變化的曲線,如下圖所示,橫軸為召回率,縱軸為精確率:
對于一個模型來說,其P-R曲線上的一個點代表著:在某一閾值下,模型將大于該閾值的結果判定為正樣本,小于該閾值的結果判定為負樣本,此時就可以計算出對應的召回率和精確率。改變這個閾值就可以得到一條P-R曲線。那么如何去看一個P-R曲線呢?若一個學習器A的P-R曲線被另一個學習器B的P-R曲線完全包住,則稱:B的性能優于A。若A和B的曲線發生了交叉,則誰的曲線下的面積大,誰的性能更優。但一般來說,曲線下的面積是很難進行估算的,所以衍生出了“平衡點”(Break-Event Point,簡稱BEP),即當P=R時的取值,平衡點的取值越高,性能更優。
5 F1-Score
除了使用P-R曲線去兼顧精準率和召回率一個模型之外,最常見的方法就是F-Measure,又稱F-Score。F-Measure是P和R的加權調和平均,使用最多也就是F1值了,即:
當F1較高時,模型的性能越好。
6 ROC曲線
介紹了這么多指標為什么還要介紹ROC(Receiver Operating Characteristic Curve,又稱接受者操作特征曲線)曲線呢,因為ROC曲線有很多優點,經常作為評估二值分類器最重要的指標之一。如:「當測試集中的正負樣本的分布變化的時候,ROC曲線能夠保持不變」。在輸出為概率分布的分類模型中,如果僅使用準確率、精確率、召回率作為評價指標進行模型對比時,都必須是基于某一個給定閾值的,對于不同的閾值,各模型的Metrics結果也會有所不同,這樣就很難得出一個很置信的結果。需要注意的是P-R曲線是不依賴閾值的,但是在繪制P-R曲線的時候需要閾值。
ROC曲線的橫坐標為假陽性率(False Positive Rate,FPR);縱坐標為真陽性率(True Positive Rate,TPR)。FPR和TPR的計算方法分別為:
其中,FP是所有負樣本中預測為正樣本那些負樣本數目,N是真實負樣本數目。
其中,TP是所有正樣本中預測為正樣本那些正樣本數目,P是真是正樣本數目。
上面定義有點繞,舉個例子:假設有10位疑似癌癥患者,其中有3位很不幸確實患了癌癥(P=3),另外7位不是癌癥患者(N=7)。醫院對這10位疑似患者做了診斷,診斷出3位癌癥患者,其中有2位確實是真正的患者(TP=2)。那么真陽性率TPR=TP/P=2/3。對于7位非癌癥患者來說,有一位很不幸被誤診為癌癥患者(FP=1),那么假陽性率FPR=FP/N=1/7。對于“該醫院”這個分類器來說,這組分類結果就對應ROC曲線上的一個點(1/7,2/3)。(還是有點繞?那就沉下心理一下)。下面就有一個ROC曲線,來欣賞一下。
「那么為什么ROC曲線衡量效果可以不用在意數據的分布呢?」舉個例子:假設總樣本中,90%是正樣本,10%是負樣本。因為TPR只關注90%正樣本中有多少是被預測正確的,而與那10%負樣本毫無關系,同理,FPR只關注10%負樣本中有多少是被預測錯誤的,也與那90%正樣本毫無關系。這樣就避免了樣本不平衡的問題。那么兩者協作起來就能夠很好地衡量一個模型了。
「那么如何繪制ROC曲線呢?」這里也需要我們通過閾值來繪制(「與之前一樣,遍歷所有閾值來繪制整條曲線的」)。當改變閾值時,那么預測出正樣本和負樣本的數目也隨之變化,如下圖:
「知道了如何繪制ROC曲線了,那么怎么去看ROC曲線呢,也就是說如何根據ROC曲線確定一個模型的好壞?即如何根據ROC曲線判斷模型性能?」 FPR(假陽率)表示模型對于負樣本誤判的程度,而TPR(真陽率)表示模型對正樣本召回的程度。可想而知:負樣本誤判的越少越好,正樣本召回的越多越好。所以總結一下就是TPR越高,同時FPR越低(即ROC曲線越陡),那么模型的性能就越好。可參考如下動態圖進行理解:
也就是說:在進行模型的性能比較時,若一個模型A的ROC曲線被另一個模型B的ROC曲線完全包住,則稱B的性能優于A。若A和B的曲線發生了交叉,則誰的曲線下的面積大,誰的性能更優。下面再次借用文獻2中的圖片演示ROC曲線不隨樣本數目的變化而變化的動圖,如下:
當然,我們也不可能總是通過看圖去比較幾個模型的性能,那么問題就來了,如何將圖形進行量化呢?
7 AUC值
AUC(Area Under Curve)指的是ROC曲線下的面積大小,該值能夠量化地反映基于ROC曲線衡量出的模型性能。計算AUC值只需要沿著ROC橫軸做積分就可以了。由于ROC曲線一般都處于y=x這條直線的上方(如果不是的話,只要把模型預測的概率反轉成1?p就可以得到一個更好的分類器),所以AUC的取值一般在0.5~1之間。AUC越大,說明分類器越可能把真正的正樣本排在前面,分類性能越好。具體計算方法可參考文獻[3]。
8 混淆矩陣
混淆矩陣(Confusion Matrix)也稱錯誤矩陣,通過它可以直觀地觀察到算法的效果。它的每一列是樣本的預測分類,每一行是樣本的真實分類(反過來也可以),顧名思義,它反映了分類結果的混淆程度。混淆矩陣i行j列的原始是原本是類別i卻被分為類別j的樣本個數,計算完之后還可以對之進行可視化,可看看文獻[2]中的混淆矩陣圖片演示:
9 多分類
最基本的內容是二分類,多分類也可以拆分為多個二分類進行。在了解二分類的基礎上,我們來看看如何衡量一個多分類模型的性能了,畢竟實際的問題屬于多分類的概率是比較大的。
估算模型全局性能的方法有兩種:宏平均(macro-average)和微平均(micro-average)。綜合來看宏平均會比微平均更可靠一些,因為微平均受稀有類別影響更大。宏平均平等對待每一個類別,所以它的值主要受到稀有類別的影響,而微平均平等考慮數據集中的每一個樣本,所以它的值受到常見類別的影響比較大。
簡單來說,宏平均就是先算出每個混淆矩陣的P值和R值,然后取得平均P值macro-P和平均R值macro-R,再算出F1值。微平均則是計算出混淆矩陣的平均TP、FP、TN、FN,接著進行計算P、R,進而求出F1值。同理可以使用這兩種方式計算出其他的衡量指標。這兩種計算公式如下:
原文標題:機器學習分類器性能標準(Accuracy、Precision、Recall、P-R曲線、F1等)你是否真的懂了?
文章出處:【微信公眾號:自然語言處理愛好者】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
數據
+關注
關注
8文章
6892瀏覽量
88828 -
機器學習
+關注
關注
66文章
8377瀏覽量
132409
原文標題:機器學習分類器性能標準(Accuracy、Precision、Recall、P-R曲線、F1等)你是否真的懂了?
文章出處:【微信號:NLP_lover,微信公眾號:自然語言處理愛好者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論