code

2017年9月20日 星期三

Applied Machine Learning in Python 12 - 評估binary classifier: ROC curves

Decision function return value

scikitlearn提供一個decision_function function來對已經learn好的model提出input sample的分數,提供classification thresholding參考,例如一個classifier透過decision_function對某個positive sample通常會有大的正值,對negative sample會有大的負值:


上圖中每個tuple是(true label, decision_function output)。

所以根據這個decision_function的output來調整classification threshold的話,會影響precision和recall,例如以下把threshold設定在-20:


或是把threshold設定在-10:


經過一些threshold的選擇,我們可以計算出每個precision/recall組合,並且可以plot成一個precision-recall curve:




ROC curve for binary classifier

另一個針對classifier的visualization graph稱為ROC curve:


當然最好的情況就是左上角這個點,此時FPR最小,TPR最大。
中間虛線部分就是random guess,此時猜中(TPR)和猜錯(FPR)機率均等,所以這可以看做是一個baseline,比較好的classifier的ROC curve應該要在baseline上方。

不過利用ROC curve 來判斷classifier好壞主要是看面積(AUC, area under curve),curve下方面積越大代表有較好的curve,這是顯而易見的。

沒有留言:

張貼留言