Machine Learning學習日記 — Coursera篇 (Week 6.4):Error Metrics for Skewed Data, Trading off Precision and Recall

Pandora123
5 min readJun 30, 2016

--

Handling Skewed Data

大綱

  1. Error Metrics for Skewed Data
  2. Handling Skewed Data

1. Error Metrics for Skewed Data

假設今天有著一組演算法,其預測病人是否得到腫瘤的誤差率是1%(99%的準確率)。

今日得知一組資料其只有0.5%的病患是得到腫瘤的,因此我們將演算法直接改成:無論在甚麼情況下都直接預測病患是沒有得到腫瘤的,這樣總結下來的誤差率就降為0.5%,比原先的演算法的誤差率低了將近一半。

但這真的能稱之為改善嗎?總覺得好像忽略了什麼很重要的東西。

這就是Precision以及Recall存在的原因。

因為預測的值以及實際狀況值的不同,會有四種殊異的情況:

  1. True positive:預測為1,實際也為1
  2. False positive:預測為1,實際為0
  3. False negative:預測為0,實際為1
  4. True negative:預測為0,實際也為0

Precision即為在所有預測為1的狀況下,實際的值為1的比率

Recall則為在實際的值為1下,預測為1的比率為多少

隨堂練習

Ans:

Precision=80(預測為1,實際也為1)/80+20(預測為一的所有狀況) = 0.8

2. Handling Skewed Data

上面我們提到了Precision跟Recall,那麼這兩者實際代表的意義又是什麼呢?

一般來說,若我們使用Logistic Regression來預測病患是否有著腫瘤,我們會通常會設定門檻值為0.5,代表當今天輸入一大串資料進入函式後,我們會得到一個機率,當這個機率大於0.5時,我們將會預測病患擁有腫瘤。

但若是我們希望只有當非常確定的時候才告訴病患他罹有腫瘤呢?(可能病患被騙的話會腦羞然後告你),這時候我們便會將門檻值上調至0.7之類的數字。

Precision很高,Recall很低

相反地若是寧願錯殺也不願錯放的話,門檻值便會下調。

avoid:避免

Recall很高,Precision很低

好了,現在有了新的問題:若是我們發展出三種不同用來預測腫瘤可能性的函式,而這些函式擁有著不同的Precision跟Recall值時,我們要怎麼用這兩個值判斷哪個好哪個壞呢?

可能會試著用平均值來判斷,但是這並不是一個好做法:如果不管輸入資料,全部輸出為1的狀況,我們會得到一個0.5的值,打敗大部分真正有在預測的函式,而這並不是我們所樂見的

因此會使用一個值F1作為標的來判斷:

F1 = (Precision+Recall) / (Precision*Recall)

這樣子當Precision或是Recall很低的時候(ex:0)或是兩者都很高時,我們就可以得到一個相對合理很多的比較標準。

隨堂練習

classifier:分類器 / plan to:規劃... / threshold:門檻 / parameter:參數 / reasonable:合理的 / maximize:最大化

Ans:

為什麼是Cross-validation set而不是Test set呢?參考前面的文章

--

--