本文是吳恩達《機器學習》視頻筆記第68篇,對應第6周第10個視頻。
“Machine Learning System Design:——Error metrics for skewed classes”
前面兩個小節講了怎樣快速用簡單算法将流程跑通,給出了基本的誤差分析方法。這一節講偏斜類問題。
偏斜類所謂的偏斜類(Skewed Class)的問題,對于二元分類來說,其實就是一種分類的數據量遠遠大于另外一種分類。
以是否惡性腫瘤(癌症)的分類為例,我們希望能根據病人的一些特征判斷病人是否患有癌症(y=1表示有癌症,y=0表示沒有癌症)。
我們用邏輯回歸算法來解決問題,發現在測試集有99%的正确率,這個結果看上去很完美。但是,你要知道患有癌症的畢竟是少數,可能在我們的測試集中隻有0.5%的人真的患有癌症。
這樣的話,你就知道我們的算法有多離譜了。因為,如果我們不管三七二十一全部給預測為y=0(沒有癌症),那也隻有0.5%的錯誤。
像上面這種某一種分類占比特别大的情況,被稱為偏斜類。很明顯,對于偏斜類的誤差度量需要優化。
偏斜類的誤差度量前面癌症判斷那個例子中,假如我們采用了一些辦法将算法從99.2%的準确率提升到99.5%的準确率,那我們對算法的這些改進是否有效呢?這是比較難判斷的。
當我們遇到偏斜類時,經常使用查準率(Precision)和召回率(recall)的概念。這兩個概念适用于二分類問題。
對于一個二分類問題,預測結果和實際結果有四種組合。
- 實際為1,預測為1;True positive, TP
- 實際為0,預測為1;False positive, FP
- 實際為1,預測為0;False negative, FN
- 實際為0,預測為0;True negative, TN
T開頭表示預測正确(本來為真、預測為真TP;本來為假、預測為假TN),F開頭表示預測錯誤(本來為假,預測為真FP,本例為真,預測為假FN)。
查準率Precision的意思是,TP/(TP FP)。就是你所有預測為真那些樣本中,預測正确的樣本的占比。癌症那個例子就是,算法認為的所有癌症患者中真正的癌症患者占比是多少。查準率越高越好。
召回率Recall的意思是,TP/(TP FN)。這個意思是,你預測為真并且正确的數量在實際為真的數量中的占比。癌症的那個例子就是,實際患有癌症的患者被算法成功篩查出來的比例。召回率當然是越高越好。
回到前面的例子再來看看,如果我們不管三七二十一,都認為患者沒有癌症,準确率99.5%。那這樣做的召回率就是0,當然這個算法就毫無意義了。
這樣,如果一個算法同時有較好的查準率和召回率,那這個算法就還是不錯的。注意:使用查準率和召回率的時候,我們讓那個出現比較少的情況為1(y=1出現較少)。
,