首页 > 编程知识 正文

测量系统分析的方法,查找算法性能比较

时间:2023-05-04 22:10:06 阅读:235312 作者:413

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

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

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

如上图,TP表示预测为真的是恶性,而实际也是恶性的样例数;
FN表示预测是良性,而实际是恶性的样例数;
TP+FN表示实际是恶性的样例总数;
FP表示预测为恶性,而实际是良性的样例数;
TN表示预测为良性,而实际是良性的样例数;
TP+FP表示预测为恶性的样例数。

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

P=TPTP+FP P = T P T P + F P
它表示在所有预测为恶性的样例中,实际真的是恶性的比例。比例越高,说明FP越小,查得越准。
查全率(Recall)R的定义为:
R=TPTP+FN R = T P T P + F N
它表示在所有实际是恶性的样例中,预测为恶性的比例。比例越高,说明FN越小,漏掉的恶性的样例越少,查得越全。

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

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

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

1F1=12⋅(1P+1R)→F1=2×P×RP+R=2×TPM−TP−TN 1 F 1 = 1 2 ⋅ ( 1 P + 1 R ) → F 1 = 2 × P × R P + R = 2 × T P M − T P − T N
其中,M表示样例总数。

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

1Fβ=11+β2⋅(1P+β2R)→Fβ=(1+β2)×P×R(β2×P)+R 1 F β = 1 1 + β 2 ⋅ ( 1 P + β 2 R ) → F β = ( 1 + β 2 ) × P × R ( β 2 × P ) + R
当 β β 为1时,就是F1了。当 β>1 β > 1 时查全率有更大影响;当 β<1 β < 1 时查准率有更大影响;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。