机器学习:算法性能度量之查准率与查全率
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时查准率有更大影响;
例如,我们想要利用机器学习算法来预测肿瘤是不是恶性的。在训练集中,只有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时查准率有更大影响;
相关文章推荐
- 机器学习中性能度量(错诶率、精度、查准率、查全率、F)
- 【机器学习】K均值算法 - 性能分析
- 《统计学习方法》笔记——算法性能度量
- 机器学习基础5--文档相似性检索与度量算法
- 【机器学习-西瓜书】二、性能度量:召回率;P-R曲线;F1值;ROC;AUC
- 机器学习--近邻成分分析(NCA)算法 和 度量学习
- 【机器学习实战-python3】Adaboost元算法提高分类性能
- 机器学习中的查准率和查全率
- 西瓜书《机器学习》阅读笔记2——Chapter2_查准率、查全率与F1
- 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能
- 检索性能评测标准之recall(查全率),precision(查准率),AR(平均查全率),ANMRR(平均归一化调整后的检索秩)汇总
- 【机器学习】分类性能度量指标 : ROC曲线、AUC值、正确率、召回率、敏感度、特异度
- 机器学习实战第七章 - 利用AdaBoost元算法提高分类性能
- 机器学习笔记(六)性能度量
- 机器学习中的分类算法之性能优劣
- 【机器学习-西瓜书】九、聚类:性能度量;距离计算
- 算法的性能度量基础理论
- 27-如何度量分类算法的性能好坏(Scoring metrics for classification)
- 机器学习回归算法—性能评估欠拟合与过拟合
- 机器学习实战笔记(Python实现)-07-模型评估与分类性能度量