機器學習之模型評估指標學習筆記

前段時間工作中發現自己對模型評估指標中的AUC有點忘了,因此打算重新看一下然後寫個博客記錄一下。

混淆矩陣和查全率,查準率

首先簡單介紹一下混淆矩陣,查全率(也叫做召回率,recall)和查準率(也叫做精確率,precesion)。
在進行模型評估的時候,單單使用準確率accuracy(預測正確樣本數/總樣本數)有時候並不能很好的對模型進行評估。比如,在對日活或月活用戶預測其購買商品概率並將比較有可能購買的用戶找出來給銷售打電話的時候,由於在實際樣本集合中,可能購買的用戶(即正樣本)的人數會比較少,比如100個日活用戶中只有5個用戶會購買,這時候如果僅僅是追求準確率的話,那麼簡單粗暴的把閾值設的很高,使所有用戶都預測爲負樣本(即不購買的用戶),此時的準確率爲95%,但是這種結果卻不是我們想要的。此時召回率或精確率可能是比較好的評估指標。
在介紹召回率和精確率之前,首先了解一下混淆矩陣。
在二分類問題中,我們可以將樣本根據實際類別和模型預測類別的組合劃分爲真正例(true positive),假正例(false position),真反例(true negative)以及假反例(false negative),其個數分別即爲TP,FP,TN,FN。於是就可以寫出如下混淆矩陣:

預測爲正例 預測爲反例
實際爲正例 TP FN
實際爲反例 FP TN

由上述混淆矩陣就可以得出召回率和精確率recall=TPTP+FN召回率(recall)=\frac{TP}{TP+FN}precision=TPTP+FP精確率(precision)=\frac{TP}{TP+FP}在上述例子中,如果簡單粗暴的將所有例子都判定爲反例,那麼其準確率或許可以達到95%,但是召回率和精確率就都是0%了。但是,當我們把閾值設的很低,將所有樣本都預測爲正樣本的時候,此時召回率達到100%,但是精確率卻只有5%,當我們僅僅取最有把握的預測樣本最爲正例的時候,此時精確率高了,但召回率有不理想了。
因此,在模型得出預測結果之後,閾值怎麼設對模型最終的評估結果很有影響。那麼,是否有這樣一種模型的評估指標,不論閾值怎麼設都跟指標的最終結果無關呢?AUC就是這樣的評估指標。

ROC曲線和AUC

在上述的例子中,實際上只要在模型的預測結果中,所有的正樣本的預測結果都大於負樣本的預測結果,那麼我們總是能夠找到一個閾值,使得不論是準確率,召回率還是精確率都是100%。此時也就是要求預測結果的排序質量很好,即所有的正樣本都排在前面,所有的負樣本都排在後面。 AUC,正是考慮樣本預測的排序質量。
在介紹AUC之前,首先了解一下ROC曲線。
當我們用一個模型對所有樣本做出預測之後,將所有樣本按照預測概率進行排序。首先我們將閾值設置爲最大,即將所有的樣本均預測爲反例,計算真正例率(TPR)和假正例率(FPR)TPR=TPTP+FNTPR=\frac{TP}{TP+FN}FPR=FPTN+FPFPR=\frac{FP}{TN+FP}於是得到(TPR1,FPR1)(TPR_{1}, FPR_{1})。然後將閾值從大到小依次設置爲每一個樣本的預測值,並計算(TPRi,FPRi)(TPR_{i}, FPR_{i})。最終得到一組數對(TPRI,FPRI)(TPR_{I}, FPR_{I})。然後,將得到的這一系列數對繪製在以真正例率爲縱軸,假正例率爲橫軸的座標系中,得到
在這裏插入圖片描述
當ROC這條曲線下所包含的面積越大,就表示模型預測出來的結果排序質量越高,而ROC這條曲線下所包含的面積,就是AUC值。因此,我們可以使用AUC值來刻畫模型預測的排序質量。
除了上述案例之外,推薦場景也是比較看重AUC指標。比如,當我們拿到一個用戶的用戶畫像之後,推測出用戶喜好什麼,更願意買什麼,在我們的倉庫中可能有1000個商品都可以推薦給這個用戶,但是我們有不能把1000個商品都推薦給用戶,這樣用戶眼睛都看花掉。因此我們需要挑選排序中用戶最優可能購買的10件商品推薦給用戶,如果這10件不行,那就換下一個10件。在這種場景下,對預測結果的排序質量就比較高了,因此對AUC值也就比較看重。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章