舉個例子,咱們想訓練一個模型去診斷患者是否患有癌症。在人羣中,患有癌症是一個極小機率發生的事情,好比 1000 我的中患有癌症的只有 5 人。那麼在這個樣本中,患有癌症的人的機率爲 0.5%,正常人的機率爲 99.5%,這是一個偏斜類,正結果(設爲 1 )佔總樣本數極小。算法
若是咱們訓練的機器學習模型的正確率爲 99%,看似這個正確率很是高,模型表現的很好,但是考慮下面這個模型(這都算不上一個模型):令全部的結果所有輸出爲 0(也就是認爲全部人都是沒有癌症的),它的正確率會達到 99.5%,比咱們用機器學習訓練的模型正確率還要高,那麼這麼模型就是好的嗎?確定不是,這個模型什麼事情都沒有作!咱們被它欺騙了。微信
爲了防止被結果欺騙,咱們要用到偏斜分類的偏差評估這種方法。其中用到了評估度量值:查準率(precision)和召回率(recall)。以下圖:機器學習
咱們將算法預測的結果分爲 4 中狀況:編輯器
1.正確確定(True Positive): 預測爲真,結果爲真學習
2.正確否認(True Negative): 預測爲假,結果爲假flex
3.錯誤確定(False Positive): 預測爲真,結果爲假spa
4.錯誤否認(False Negative):預測爲假,結果爲真3d
查準率和召回率的定義已經在上圖中列出來了。能夠知道,查準率是在全部咱們預測結果爲真的狀況下,預測成功的機率;召回率是在全部實際結果爲真的狀況下,咱們預測成功的機率。那麼回到剛纔的問題,查準率是在全部咱們預測爲癌症的患者中,實際患有癌症的機率;召回率是在所有實際患有癌症的患者中,咱們預測成功的機率。對於認爲全部人都沒有患癌症的算法,召回率爲 0,那麼這種算法就表現的不好,咱們就不會被算法表面的結果所欺騙。cdn
回顧邏輯迴歸算法:blog
當咱們把臨界值 0.5 增大,查準率就會增大而召回率就會減少,當咱們把臨界值 0.5 減少,查準率就會減少而召回率就會增大。
評估一個算法的好壞咱們要用到評估度量值,評估度量值是一個實數,可以評估這個算法的好壞,可是如今有兩個值,咱們就沒辦法肯定究竟怎麼選擇。這時候首先想到用平均值,可是會發現,Algorithm 3 的平均值最大可是這個算法表現的是最差的,所以取查準率和召回率的平均值這種作法是不可取的。
咱們須要要用到 F1 值去計算評估度量值。根據 F1 值的定義,當查準率和召回率其中有一個爲 0 時,F1 值就爲 0,所以 F1 值能夠做爲評估度量值。
ps. 本篇文章是根據吳恩達機器學習課程整理的學習筆記。若是想要一塊兒學習機器學習,能夠關注微信公衆號「SuperFeng」,期待與你的相遇。