第五章 第五节 算法分析与优化(偏斜类(Skewed Classes))

查准率(Precision)与召回率(Recall)

从上面的例子我们知道,单纯地使用误差(Error)并不能完善地评价模型好坏,现在引入两个重要的评价指标:(1)查准率(Precision);(2)召回率(Recall),并定义:

  • 阳性(Positive):表示正样本。当预测和实际都为正样本时,表示真阳性(True Positive);如果预测为正样本,而实际为负样本,则表示假阳性(False Positive)。
  • 阴性(Negative):表示负样本。当预测和实际都为负样本时,表示真阴性(True Negative);如果预测为负样本,而实际为正样本,则表示假阴性(False Negative)。
 真值1真值0
预测1True PositiveFalse Positive
预测0False NegativeTrue Negative

则:

  • 查准率(Precision)

在上例中,查准率就描述了:在我们预测患癌的病人中,确实患了癌症的病人的比例。从公式中我们也可以得出,要想得到提高查准率,我们就要降低假阳性的出现的频次,即,我们只有在拥有十足的把握是,才预测一个样本为正样本。

  • 召回率(Recall)

在上例中,召回率就描述了:在患癌的病人中,有多少病人被我们预测到了。从公式中我们也可以得出,要想提高召回率,我们就要降低假阴性出现的频次,即,尽可能不放过任何可能为正样本的样本。

查准率和召回率的权衡

理想状况下,我们希望假设函数能够同时具备高准确率(High Precision)及高召回率(High Recall)。但是往往鱼和熊掌不可兼得。回到预测病人患癌的例子中,假定我们的预测函数为:

即,我们设定的预测阈值为 0.5。这么做似乎风险不小,很多没有患癌的病人被我们认为患有癌症而接受了不必要的治疗,因此,我们调高我们的阈值为 0.7:

此时,必须有较高的把握,我们才会预测一个患有癌症,避免非癌症患者接受到了不必要的治疗,假阳性样本少,此时我们也获得了高查准率。然而,这么预测的代价是,有些癌症病患体征不明显,就被我们认为没有患癌,从而得不到治疗,假阴性样本多,即我们的召回率偏低。

当我们尝试构建了不同的算法模型,并且获得了不同的查准率和召回率:

 PrecisionRecall
算法 10.50.4
算法 20.70.1
算法 30.021.0

那么选择哪个算法是最好的呢,假定我们使用平均值来权衡查准率和召回率:

 PrecisionRecallAverage
算法 10.50.40.45
算法 20.70.10.4
算法 30.021.00.51

按照平均值,我们会选择算法 3,但是这并不是一个好的算法,因为其查准率太低了,我们希望有一个指标能选出查准率和召回率都高的算法,为此,引入了

从公式中也可以看到,分子是查准率和召回率的乘积,只有二者都较高时,才会较高,特别地:

 PrecisionRecallF1ScoreF1Score
算法 10.50.40.444
算法 20.70.10.175
算法 30.021.00.0392

帮我们选出了算法1,事实也确实如此,算法1的查准率和召回率都较高。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值