機器學習系列16:機器學習系統設計

  • 2019 年 10 月 7 日
  • 筆記

偏斜分類的誤差評估

舉個例子,我們想訓練一個模型去診斷患者是否患有癌症。在人群中,患有癌症是一個極小概率發生的事情,比如 1000 個人中患有癌症的只有 5 人。那麼在這個樣本中,患有癌症的人的概率為 0.5%,正常人的概率為 99.5%,這是一個偏斜類,正結果(設為 1 )佔總樣本數極小。

如果我們訓練的機器學習模型的正確率為 99%,看似這個正確率非常高,模型表現的很好,可是考慮下面這個模型(這都算不上一個模型):令所有的結果全部輸出為 0(也就是認為所有人都是沒有癌症的),它的正確率會達到 99.5%,比我們用機器學習訓練的模型正確率還要高,那麼這麼模型就是好的嗎?肯定不是,這個模型什麼事情都沒有做!我們被它欺騙了。

為了防止被結果欺騙,我們要用到偏斜分類的誤差評估這種方法。其中用到了評估度量值:查准率(precision)召回率(recall)。如下圖:

我們將演算法預測的結果分為 4 中情況:

1.正確肯定(True Positive): 預測為真,結果為真

2.正確否定(True Negative): 預測為假,結果為假

3.錯誤肯定(False Positive): 預測為真,結果為假

4.錯誤否定(False Negative):預測為假,結果為真

查准率和召回率的定義已經在上圖中列出來了。可以知道,查准率是在所有我們預測結果為真的情況下,預測成功的概率;召回率是在所有實際結果為真的情況下,我們預測成功的概率。那麼回到剛才的問題,查准率是在所有我們預測為癌症的患者中,實際患有癌症的概率;召回率是在全部實際患有癌症的患者中,我們預測成功的概率。對於認為所有人都沒有患癌症的演算法,召回率為 0,那麼這種演算法就表現的很差,我們就不會被演算法表面的結果所欺騙。

權衡查准率和召回率

回顧邏輯回歸演算法:

當我們把臨界值 0.5 增大,查准率就會增大而召回率就會減小,當我們把臨界值 0.5 減小,查准率就會減小而召回率就會增大。

評估一個演算法的好壞我們要用到評估度量值,評估度量值是一個實數,能夠評估這個演算法的好壞,但是現在有兩個值,我們就沒辦法確定究竟怎麼選擇。這時候首先想到用平均值,但是會發現,Algorithm 3 的平均值最大但是這個演算法表現的是最差的,因此取查准率和召回率的平均值這種做法是不可取的。

我們需要要用到 F1 值去計算評估度量值。根據 F1 值的定義,當查准率和召回率其中有一個為 0 時,F1 值就為 0,因此 F1 值可以作為評估度量值。