2015年6月23日 星期二

準確率(Precision)與召回率(Recall)


enter image description here

在評估預測模型好壞時,常用的到指標包括Precision, Recall, ROC Curve, AUC等等.但是先前唸書的時候,都只是傻傻背定義,對指標的實際意義沒有太多感觸,直到最近真正跑了幾個模型,開始認真的想要預測結果時,才更深入了解這幾個指標含義及精神.

從指標定義開始談,可能又會回到教科書的老路,我個人認為從情境下手會比較好理解:
我想將廣告投遞給那些有可能點擊廣告的人,於是透過分析模型選了一批人(假設有一百個人)作為投遞的對象,請問:
1. 我選的這批人裡面,真正會點擊的有多少比例?
2. 這些會點擊的人中,佔了真正點擊的人的比例(有些不在選取名單中的人也會點擊廣告)?
在這情境中,第一個問題的答案是Precision(準確率),第二個答案是recall(召回率)個人覺得召回率這個翻譯真的是誤導學子...
這兩者的關係其實用Confusion Matrix就能簡單看出來(數字是亂舉例的):
實際點擊 實際沒有點擊
預測點擊 600 100000
預測不點擊 1200 200000
在這個例子中:
  • Precision = 600/ 600 + 100000 = 0.006
  • Recall = 600 / 600 + 1200 = 0.33
翻成白話的意思就是說:我挑選出來的目標對象,有0.006的機會選到真正會點擊廣告的人,而這群人佔了最後點擊廣告人的0.33
這件事情在現實中的情境就是我可能花很大的成本才能接觸到的一小票人,為的就是接觸到那三成會點擊廣告的人.Precision和Recall之間會有一個反向的關係,
enter image description here
圖片來源:http://www.searchtechnologies.com/precision-recall

Precision越高的時候,Recall越低,反之亦然.這在現實的情況為,當我想要不接觸更多可能點擊的人(提高Recall),就可能得花費越多成本來接觸更多人(Precision降低).反之,如果我今天求的是精準度(Precision提高,千人成本降低),相對也只能找到比較少的目標對象(Recall減少).


1 則留言:

  1. 建議可以在計算式子上加括弧~
    EX: 600/ (600 + 100000)

    蠻清楚的例子!

    回覆刪除