1. 程式人生 > >【機器學習】精確率與召回率

【機器學習】精確率與召回率

偏斜類

正類和負類的比例失衡,比如存在99%的正類和1%的負類,當演算法的輸出恆為1時,此時的錯誤率也只有1%,在這種情況下,並不能夠很好地估計模型的泛化能力。

定義

  1. TP(True Positive),表示模型預測為正樣本,實際上為正樣本。
  2. FP(False Positive),表示模型預測為正樣本,實際上為負樣本。
  3. FN(False Negative),表示模型預測為負樣本,實際上為正樣本
  4. TN(True Negative),表示模型預測為負樣本,實際上為負樣本。

準確率(Accuracy)

準確率表示模型預測正確的正樣本和負樣本佔所有樣本的比例。公式為 a

c c = T P + T N T
P + F P + F N + T
N
acc=\frac{TP+TN}{TP+FP+FN+TN}

精確率(Precision)

精確率表示模型預測正確的正樣本佔所有預測正樣本的比例。公式為 p r e c i s i o n = T P T P + F P precision=\frac{TP}{TP+FP}

召回率(Recall)

召回率表示模型預測正確的正樣本佔所有實際正樣本的比例。公式為
r e c a l l = T P T P + F N recall=\frac{TP}{TP+FN}

F 1 F_1 Score(F score)

定義 F 1 S o c r e = 2 P R P + R F_1Socre=2\frac{PR}{P+R} ,當精確率接近0,或者召回率接近0時,都會得到一個很低的F值。當精確率為1,召回率也為1時,F值為1。因此F值可以用來為我們選擇一個較好的臨界值。

臨界值

通常我們將模型預測輸出大於等於0.5的預測為正樣本,小於0.5的預測為負樣本。假設我們的模型是在預測病人是否患癌症
如果我們想要較高的精確率,可以將閾值調高,保證我們的模型能夠較為準確地找出患癌的人,並且不會將沒患癌症的人識別為患癌,但是相對的,此時的召回率會更低。
如果我們想要較高的精確率,可以將閾值調低,保證我們能夠找出更多實際患病的人,但是此時被誤判為患癌的正常人可能更多,也就是精確率會下降。

總結

在模型預測恆為0的情況下,精確率和召回率都為0,因此能夠說明此時模型的表現並不是很好。對樣本失衡的情況,利用召回率和精確率,能夠較好地評估模型的好與壞。同時利用F值,我們可以挑選出合適的臨界值來使得模型表現更好。