起源:
我們平時用的精度 accuracy,也就是整體的正確率
acc=predict_right_num/predict_num
這個雖然常用,但不能滿足所有任務的需求。比如,因為香蕉太多了,也不能撥開人工的一個一個的看它的好壞 (我愛吃啊,想想就心疼),此時我們就需要有一種方法,代替撥開香蕉這種粗魯的手段。這時我們需要通過一些測試,看看哪種方法能更加准確的預測。我們可以通過
“准”:預測的准確度,就是我預測的結果中真正好的香蕉要越多越好;
“全”:就是所有的好的香蕉預測出來的越多越好,雖然把有些壞的也預測是好的了,那也不管,“全” 就行。好的香蕉越多的出現在預測結果里
其實這兩者都想要達到就好了,但是不行的:
比如 "准", 我就預測一個算了,好的香蕉肯定比壞的比例高,也就是我只預測一個,100% 比例幾率最大了,這時就不 “全” 了,海有好多好的香蕉不在預測結果里面
再比如 "全", 我去全部預測成好的,這真正好的都在我的預測里,也就是 100%。可是這時的 "准" 就一點都不准了。。
所以就必須來平衡這倆同志的關系了,怎么平衡呢?肯定是通過權重來的呀,此時,F 值登上歷史舞台!
實例說明:
實例化講解吧。比如我們的香蕉中 1 表示好的,0 表示壞的,有 10 個香蕉:
gold : [1,1,1,1,1,0,0,0,0,0]
pred: [1,0,1,1,1,1,1,0,0,0]
注釋:gold 是現實的好壞;pred 是預測的好壞。
P(Precision) 查准率,准確率:就是上面說的 "准"。字面意思好理解呀,就是在預測當中查找准確個數的比例。公式為:
P = 真正預測准確的數量 / 預測是准確的數量 = 4 / 6
R(Recall) 查全率,召回率:就是上面的 "全"。根據字面理解,在預測中看看真正預測對的占全有對的比率。公式為:
R = 真正預測准確的數量 / 所有真正好的數量 = 4 / 5
准確率就是找得對,召回率就是找得全。大概就是你問問一個模型,這堆東西是不是某個類的時候,准確率就是 它說是,這東西就確實是的概率吧,召回率就是, 它說是,但它漏說了(1 - 召回率)這么多。
F 值 綜合評價指標,是:
F(k) = ( 1 + k ) * P * R / ( ( k*k ) * P + R )
注釋:k>0 度量了 查全率 對 查准率 的相對重要性。k>1 查全率有更大影響;k<1查准率有更大影響。
在這個實例中可以表示為:k>1 就是查全率有更大影響,就是好的香蕉最好都預測出來,因為你覺得不想把好的當成壞的扔點 (真可惜,我愛吃啊) ;k<1 查准率有更大影響,就是一定要准確,省時間,省力更重要,不在乎好的香蕉當壞的扔點。
而我們常用的是 F1,就是 F(1) 的意思,k=1,比如我們做一個分類任務,這幾個類覺得都一樣重要。此時:
F(1) = 2 * P * R / ( P + R ) = 2*4/6*4/5/(4/6+4/5) = 8/11