您的位置:首页 > 其它

机器学习:算法性能度量之查准率与查全率

2017-08-08 21:47 330 查看
我们经常使用错误率(即分类错误的样本占总体样本的比例)来分析一个机器学习算法的性能,但是有时候不能满足任务的需求。

例如,我们想要利用机器学习算法来预测肿瘤是不是恶性的。在训练集中,只有0.5%的样本是恶性肿瘤。假设我编写一个非机器学习的算法,无论输入是什么,我都预测肿瘤是良性的,那么最终错误率也就只有0.5%。而如果我通过一个机器学习算法得到了1%的错误率,我是不是可以说这个机器学习的算法反而不如不学习?显然,这是有问题的。所以这时候,错误率就不能用来作为评判算法性能的依据了。此时就需要用到查准率和查全率了。

假设我们用y=1表示肿瘤是恶性,y=0表示肿瘤是良性。则:



如上图,TP表示预测为真的是恶性,而实际也是恶性的样例数;

FN表示预测是良性,而实际是恶性的样例数;

TP+FN表示实际是恶性的样例总数;

FP表示预测为恶性,而实际是良性的样例数;

TN表示预测为良性,而实际是良性的样例数;

TP+FP表示预测为恶性的样例数。

所以,查准率(Precision)P的定义为:

P=TPTP+FPP=TPTP+FP

它表示在所有预测为恶性的样例中,实际真的是恶性的比例。比例越高,说明FP越小,查得越准。

查全率(Recall)R的定义为:

R=TPTP+FNR=TPTP+FN

它表示在所有实际是恶性的样例中,预测为恶性的比例。比例越高,说明FN越小,漏掉的恶性的样例越少,查得越全。

所以,对于文章一开始讨论的使用非机器学习的做法,它的查全率就是为0。显然是不好的。

但是,查准率与查全率之间是有矛盾的。要想查准率高,那么你就要选最有把握是恶性的肿瘤出来,但这样又会漏掉一些实际是恶性的肿瘤(即误认为是良性的),使得查全率较低。如果想要查全率高,那么就要尽可能多选一些肿瘤当成恶性的,如果将所有的肿瘤都认为是恶性的,那必然实际是恶性的肿瘤都被选上了,这样查全率确实高了,但是,这样查准率又比较低。

那么,如何来平衡查准率与查全率呢?

一般来说,我们采用F1来平衡查准率与查全率。F1的定义如下:

1F1=12⋅(1P+1R)→F1=2×P×RP+R=2×TPM−TP−TN1F1=12⋅(1P+1R)→F1=2×P×RP+R=2×TPM−TP−TN

其中,M表示样例总数。

然而,在一些应用中,我们对查准率和查全率的重视程度不同。比如在商品推荐中,为了尽可能少地打扰客户,更希望推荐内容确实是用户感兴趣的,此时的查准率更为重要;相反,在逃犯信息检索中,更希望尽可能少漏掉逃犯,此时查全率比较重要,所以F1的一般形式为:

1Fβ=11+β2⋅(1P+β2R)→Fβ=(1+β2)×P×R(β2×P)+R1Fβ=11+β2⋅(1P+β2R)→Fβ=(1+β2)×P×R(β2×P)+R

当ββ为1时,就是F1了。当β>1β>1时查全率有更大影响;当β<1β<1时查准率有更大影响;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息