評價指標是評判數據表現的衡量標準,它是數據分析中非常重要的部分,也是產品經理必須掌握的重點內容。不同的數分任務採用不同的評價指標,對於同一種任務在不同場景下也會採用不同的評價指標。
例如在檢測垃圾郵件這個場景中,這是一個典型的二分類問題,所以可以用精確率和AUC曲線這兩個指標判斷模型的效果;在人臉識別場景中,使用誤識率、拒識率和ROC曲線這三個指標評判模型的效果。
不同指標的著重點不一樣,一個指標在不同場景下適用性可能不一樣,產品經理需要學習不同指標的特性,在項目中根據實際需要選擇不同的評價指標。下文中我們重點講解一些產品經理常用的評價指標。
01 混淆矩陣
混淆矩陣(Confusion Matrix)是評價模型精度的一種標準格式,用一個N行N列的矩陣形式來表示。矩陣每一列代表預測值,每一行代表實際值。
從混淆矩陣的名字不難看出來,它的作用是表明多個類別之間是否有混淆,也就是模型到底判斷對了多少個結果,有多少個結果判斷錯了。同時混淆矩陣能夠幫助我們理解準確率、精確率和召回率的區別。
面對一個二分類問題時,通常我們會將結果表示為正類與負類,兩者可以隨意指定。在上述區分貓狗圖片的例子中,我們假定貓為正類、狗為負類。那麼在實際進行預測的時候就會出現四種情況,如下圖所示:
混淆矩陣
如果這張圖片是貓,機器預測出來的結果也是貓,這種情況稱為真正類(True Positive,以下簡稱TP);
如果這張圖片是狗,機器預測出來的結果也是狗,這種情況稱為真負類(True Negative,以下簡稱TN);
如果這張圖片是貓,機器預測出來的結果是狗,這種情況稱為假負類(False Negative,以下簡稱FN);
如果這張圖片是狗,機器預測的結果是貓,則為假正類(False Positive,以下簡稱FP)。
02 準確率
準確率(Accuracy)是指預測正確的樣本佔總樣本的比例,即模型找到的真正類與真負類與整體預測樣本的比例。用公式表示為:
Accuracy=(TP+TN)/(TP+TN+FP+FN)準確率的取值範圍為[0,1],一般情況下取值越大,代表模型預測能力越好。
假設上述貓狗圖片分類的例子中,貓狗圖片各有500張。最後模型預測的結果中真正類有318個,真負類有415個,假正類有75個,假負類有182個。根據準確率的定義可以算出來目前模型的準確率為:(318+415)/(1000)=0.73。
準確率是評價模型效果最通用的指標之一,描述模型找到「真」類別的能力。也就是說模型準確識別出貓和狗的概率為0.73。但是在使用的時候有兩點需要我們注意。首先是準確率沒有針對不同類別進行區分,最後求得的準確率對每個類別而言是平等對待的,這種評價方式在很多場景下是有欠缺的。
在本例中,雖然可以看到模型的整體準確率是73.30%,但是從結果中明顯可以看出來,模型對於貓的識別效果遠不如對狗的識別效果。如果我們模型的目的是為了把貓的圖片挑出來,那麼這個準確率就有些虛高。
在實際的病患診斷中,計算機診斷出某患者患有癌症,實際上卻未患癌症與計算機診斷出某患者未患有癌症,而實際上卻患有癌症這兩種情況的重要性不一樣,不能一概而論。我們需要明確後續是降低誤診率還是提高確診率,才能讓後續模型優化更有針對性。
另外在正負樣本極不平衡的情況下,準確率這個指標存在很大的缺陷。例如在銀行的全量客戶中,要尋找適合推薦信託產品的超高淨值客戶是非常難的。因為這部分人群要求存款較多、收入較高,比較稀少,往往只有萬分之一的概率。
如果一個預測客戶適不適合信託產品的模型用準確率去評判,哪怕模型把全部客戶預測成負類,即全部都是不適合的情況,那麼這個模型的精度也有 99% 以上。
但這個指標就失去了原有的意義,因為無法找到任何高淨值的人群。所以我們一再強調,沒有萬能的指標,根據場景選擇合適的指標非常重要。
03 精確率與召回率
精確率(Precision)和召回率(Recall)是一對好兄弟,雖然是兩個不同的評價指標,但它們互相影響,通常一起出現。在很多書上又把精確率稱為查準率,把召回率稱為查全率。
召回率是針對原始樣本而言的指標,它表示原始樣本中的正例有多少被預測正確。
原始樣本中的正例有兩種情況,一種是把原來的正類預測成正類(TP),另一種就是把原來的正類預測為負類(FN),這兩種情況組成了原始樣本所有的正例。計算公式為:
Recall=TP/(TP+FN) 上述模型中識別貓類圖片的召回率為:
318/(318+182)=0.63從這個角度可以看出來總共500張貓的圖片,模型只找對了318張,相比準確率而言,召回率更真實地反應了模型的效果。
而精確率是針對預測結果而言的指標,它表示預測為正類的樣本中有多少是對的。預測結果為正例有兩種情況,一種就是把正類預測為正類(TP),另一種就是把負類預測為正類(FP)。所以精確率的計算公式為:
Precision=TP/(TP+FP)即上述模型中識別貓類圖片的精確率為:
318/(318+75)=0.81從這個指標可以看出來模型總共把393張圖片預測為貓,其中只有318張圖片預測正確。所以模型可能存在欠擬合的情況,將部分狗的照片判斷成貓,判斷為正類的條件太寬鬆。下一步優化的時候可以選擇適當降低條件以此提高模型效果。如下圖所示可以看出精確率與召回率的區別:
精確率與召回率
在理想情況下,我們希望精確率和召回率兩者都越高越好。
然而事實上這兩者在很多情況下是互相矛盾的。當召回率變高時意味著需要儘可能找到原始樣本的正例,因此模型覆蓋的數量會變多,模型就更高的機率犯錯,將原本不屬於該分類的樣本也加進來,這就導致精確率下降。
如果我們希望模型儘可能多得找出貓的圖片,我們會想辦法提高召回率;如果我們希望模型找到的圖片少一點但找出來的都是貓的圖片,我們會想辦法提高精確率。
有兩個很典型的場景可以說明這兩個指標實際運用的區別,一個是對於地震的預測,我們希望儘可能預測到所有的地震,哪怕這些預測到的地震中只有少數真正發生了地震,在這個時候我們就可以犧牲精確率。
寧願發出100次警報,但是把10次真實的地震都預測對了,也不希望預測了10次但是只有8次真實的地震被預測出來了,因為只要有1次地震沒被發現都會造成巨大的損失。因此這是一個「寧可抓錯,不可放過」的場景。
還有一種是垃圾郵件分類的場景,我們希望模型能夠儘可能找到所有垃圾郵件,但是我們更不希望把自己正常的郵件被分到垃圾郵件中,哪怕是一封正常的郵件,這會對用戶造成很嚴重的後果。對於少數沒有被識別出來的垃圾郵件,其實用戶是可以容忍的。
這時候我們寧可少分類成垃圾郵件,但必須確保分的都是對的,這就是一個「寧可放過,不可抓錯」的場景。因此在不同的場合中,需要產品經理根據實際情況,自己判斷希望是精確率比較高或是召回率比較高。
另外精確率和準確率是比較容易混淆的兩個評估指標,兩者的核心區別在於:精確率是一個二分類指標,只適用於二分類任務,而準確率能應用於多分類任務。
04 ROC曲線
在邏輯回歸的分類模型裡,對於正負例的界定,通常會設一個閾值。大於閾值的樣本判定為正類,小於閾值的樣本為負類。如果我們減小這個閾值,會讓更多的樣本被識別為正類,從而提高了正類的識別率,但同時也會使得更多的負類被錯誤識別為正類。
直接調整閾值可以提升或降低模型的精確率和召回率,也就是說使用精確率和召回率這對指標進行評價時會使得模型多了「閾值」這樣一個超參數,並且這個超參數會直接影響模型的泛化能力。在數學上正好存在ROC曲線能夠幫助我們形象化地展示這個變化過程。
ROC曲線是一個畫在二維平面上的曲線,平面的橫坐標是假正類率(FalsePositive Rate,簡稱FPR),計算公式為:
FPR=FP/(FP+TN)縱坐標是真正類率(True Positive Rate,簡稱TPR),計算公式為:
TPR=TP/(TP+FN)對於一個分類器而言,每一個閾值下都會有一個FPR和TPR,這個分類器就可以映射成ROC平面上的一個點。當我們調整這個分類器分類時使用的閾值,就可以得到一個經過(0,0),(1, 1)的曲線,這條曲線就是這個分類器的ROC曲線,如下圖所示。
ROC曲線
從圖中可以看到,所有算法的ROC曲線都在y=x這條線的上方,因為y=x表示了隨機的猜測的概率。所有二分類問題隨便猜正確或不正確都是50%的準確率。
一般情況下不存在比隨機猜測的準確率更糟糕的算法,因為我們總是可以將錯誤率轉換為正確率。如果一個分類器的準確率是40%,那麼將兩類的標籤互換,準確率就變為了60%。
從圖中可以看出來,最理想的分類器是到達(0,1)點的折線,代表模型的準確率達到100%,但是這種情況在現實中是不存在的。如果我們說一個分類器A比分類器B好,實際上我們指的是A的ROC曲線能夠完全覆蓋B的ROC曲線。如果有交點,只能說明A在某個場合優於B,如下圖所示。
分類器A與分類器B的ROC曲線
ROC曲線通常搭配著它對應的比率圖一起使用,我們繼續用貓狗圖片分類的例子說明這兩個圖怎麼看。原本我們貓狗的圖片各有500張,如所示圖形的X軸代表預測的概率值,Y軸代表觀察的數量。
假設我們用一個新的分類器對圖片進行分類,分類結果用黑色線代表狗圖片的分布,用灰色代表貓圖片的分布。模型給出的分值越高代表模型判斷這張圖片是貓的把握越大,反之模型的給出的分值越低代表模型判斷這張圖片不是貓的把握越大,也就是說這張圖片更有可能是狗。
從下圖中可以看出來這個分類器的分類效果還是挺好的,基本上基本把兩個物群的分布分開,ROC曲線也非常靠近(0,1)這個點。
某分類器下的ROC曲線
如上圖所示,如果將閾值設為0.3,左邊劃線部分的面積代表模型判斷為狗的圖片數量有300張左右,並且從圖中可以看出來這300張圖片全部分類正確。
如果將閾值設為0.5,則左邊劃線部分的面積代表模型判斷為狗的圖片有530張左右,從圖中重疊部分可以看出來大約有40個分類結果是包含錯誤分類的,這些錯誤分類包括實際是狗的圖片被分成貓的情況以及實際是貓的圖片被分類成狗的情況。
0.3閾值與0.5閾值下的分類結果
這時候我們用另外一個分類器再進行分類,結果如圖3-16所示。可以看到整個分類結果向右偏移,同時模型的效果變差,因為兩個分類結果重疊的部分變大,無論我們把閾值設在哪裡都會比上一個分類器產生更多的錯誤分類。
假如這時我們採用「寧可抓錯,不可放過」的原則把閾值設置為0.8,則右邊劃線部分只有200個左右不會被分類為狗的圖片,其餘800個結果全部會被判定為狗的圖片,儘管這裡面有350個分類結果是錯誤的結果。
新的分類器下的ROC曲線
從上述例子中看出來,ROC曲線可以幫助我們從圖像的角度分辨兩個分類結果的分布情況以及選擇模型合適的閾值。因此也是很多產品經理比較喜愛的指標之一。
這時很多讀者可能會有疑問,既然已經有那麼多評價標準,為什麼還要使用ROC呢?
原因在於ROC曲線有個很好的特性:當測試集中的正負樣本的分布變換的時候,ROC曲線能夠保持不變。在實際的數據集中經常會出現樣本類不平衡,即正負樣本比例差距較大,而且測試數據中的正負樣本也可能隨著時間變化,使用ROC曲線不管是數據集怎麼變換,都有直觀的展示效果。
05 AUC值
ROC曲線一定程度上可以反映分類器的分類效果,但始終是以圖像的形式,不能告訴我們直接的結果。我們希望有一個指標,這個指標越大代表模型的效果越好,越小代表模型的效果越差。於是引入了AUC值(Area Under Curve)的概念。
AUC是數據分析中最常用的模型評價指標之一,實際上AUC代表的含義就是ROC曲線下的面積,如下圖所示,它直觀地反映了ROC曲線表達的分類能力。AUC值通常大於0.5小於1,AUC(面積)越大的分類器,性能越好。
AUC值的圖形展示
AUC值的定義是:從所有正類樣本中隨機選取一個樣本,再從所有負類樣本中隨機選取一個樣本,然後分類器對這兩個隨機樣本進行預測,把正類樣本預測為正類的概率為p1,把負類樣本預測為正類的概率為p0,p1>p0的概率就等於AUC值。
即AUC值是指隨機給定一個正樣本和一個負樣本,分類器輸出該正樣本為正的概率值比分類器輸出該負樣本為正的那個概率值要大的可能性,AUC值越高代表模型的排序能力越強。理論上,如果模型把所有正樣本排在負樣本之前,此時AUC的取值為1,代表模型完全分類正確,但這種情況在實際中不可能出現。
總結AUC值的四種取值結果有:
AUC=1時,代表採用這個預測模型,不管設定什麼閾值都能得出完美預測,模型能夠將所有的正樣本都排在負樣本前面。但是在現實中不存在完美的分類器。
0.5<AUC<1時,代表模型的效果比隨機猜測的準確率高,也就是說模型能夠將大部分的正樣本排在負樣本前面,模型有一定的預測價值。
AUC=0.5時,代表模型的預測效果與隨機猜測一樣,只有50%的準確率。也就是說模型完全不能區分哪些是正樣本哪些是負樣本,沒有預測價值。
AUC<0.5時,代表模型的預測效果比隨機猜測還差;但只要將樣本正負例互換,結果就能優於隨機猜測。
作者:阿翹 《100個案例搞懂人工智慧》作者,平安科技資深產品經理。主要研究產品策劃、人工智慧與網際網路商業。