1. 程式人生 > >CS229 7.2 應用機器學習方法的技巧,準確率,召回率與 F值

CS229 7.2 應用機器學習方法的技巧,準確率,召回率與 F值

建立模型

當使用機器學習的方法來解決問題時,比如垃圾郵件分類等,一般的步驟是這樣的:

1)從一個簡單的演算法入手這樣可以很快的實現這個演算法,並且可以在交叉驗證集上進行測試;

2)畫學習曲線以決定是否更多的資料,更多的特徵或者其他方式會有所幫助;

3)人工檢查那些演算法預測錯誤的例子(在交叉驗證集上),看看能否找到一些產生錯誤的原因。

評估模型

首先,引入一個概念,非對稱性分類。考慮癌症預測問題,y=1 代表癌症,y=0 代表沒有癌症,對於一個數據集,我們建立logistic 迴歸模型,經過以上建模的步驟,得到一個優化的模型,錯誤率僅為1%,這貌似是一個很好的結果,但考慮資料集若僅有0.05%的正例(y=1),那麼我們直接預測所有y=0,我們得到的模型的錯誤率僅為0.5%,這便是非對稱分類的問題,這樣的問題僅考慮錯誤率是有風險的。

下面引入一種標準的衡量方法:Precision/Recall(精確度和召回率),這種度量最早出現在資訊檢索問題中的,如下:

 

在機器學習的模型中,也可以用這種評估方法,具體如下:

其中:

True Positive (真正例, TP)被模型預測為正的正樣本;可以稱作判斷為真的正確率
True Negative(真負例 , TN)被模型預測為負的負樣本 ;可以稱作判斷為假的正確率
False Positive (假正例, FP)被模型預測為正的負樣本;可以稱作誤報率
False Negative(假負例 , FN)被模型預測為負的正樣本;可以稱作漏報率

現在需要考慮權衡Precision/Recall:

以logistic 迴歸為例:

假設我們非常有把握時才預測病人得癌症(y=1), 這個時候,我們常常將閾值設定的很高,FP變小,FN增大,這會導致高精確度,低召回率(Higher precision, lower recall);

假設我們不希望將太多的癌症例子錯分(避免假負例,本身得了癌症,確被分類為沒有得癌症), 這個時候,閾值就可以設定的低一些,FP變大,FN變小,這又會導致高召回率,低精確度(Higher recall, lower precision);

以上的描述可以用如下的PR曲線來描述,一般準確率提高,召回率會下降:

關於如何權衡準確率與召回率:

如果是做搜尋,那就是保證召回的情況下提升準確率;如果做疾病監測、反垃圾,則是保準確率的條件下,提升召回。

在兩者都要求高的情況下,可以用F1來衡量。