【机器学习】模型评估(precision、recall、f1,ROC)

文章目录

  • 偏斜类
  • 评估指标
    • 定义
    • 准确率(Accuracy)
    • 精确率(Precision)
    • 召回率(Recall)
    • PR曲线
    • $F_1$Score(F score)
    • 平均绝对误差MAE
    • 平方根误差RMSE
    • 平均绝对百分比误差MAPE
    • ROC曲线
    • ROC和PR的区别
  • 分类阈值
  • 总结

偏斜类

正类和负类的比例失衡,比如存在99%的正类和1%的负类,当算法的输出恒为1时,此时的错误率也只有1%。在这种情况下,并不能够很好地估计模型的泛化能力。

评估指标

定义

  1. TP(True Positive),表示模型预测为正样本,实际上为正样本。
  2. FP(False Positive),表示模型预测为正样本,实际上为负样本。
  3. FN(False Negative),表示模型预测为负样本,实际上为正样本
  4. TN(True Negative),表示模型预测为负样本,实际上为负样本。

准确率(Accuracy)

  准确率表示模型预测正确的正样本和负样本占所有样本的比例。公式为 a c c = T P + T N T P + F P + F N + T N acc=\frac{TP+TN}{TP+FP+FN+TN} acc=TP+FP+FN+TNTP+TN
  当不同类别的样本比例非常不均匀时,占比大的类别往往成为影响准确率的主要因素。

精确率(Precision)

  精确率表示模型预测正确的正样本占所有预测正样本的比例。公式为 p r e c i s i o n = T P T P + F P precision=\frac{TP}{TP+FP} precision=TP+FPTP

召回率(Recall)

  召回率表示模型预测正确的正样本占所有实际正样本的比例。公式为
r e c a l l = T P T P + F N recall=\frac{TP}{TP+FN} recall=TP+FNTP
  精确率和召回率是一对矛盾统一的指标,当我们提高分类阈值时,精确率往往会上升,但是会因为阈值过高而漏掉很多没有把握的正样本,导致召回率降低。

PR曲线

  可以使用PR曲线来比较精确率和召回率。在PR曲线中,横轴是召回率,纵轴是精确率,整条PR曲线通过将阈值从高到低移动形成,如果一个学习器的P-R曲线被另一个学习器的P-R曲线完全包住,则可断言后者的性能优于前者。
【机器学习】模型评估(precision、recall、f1,ROC)_第1张图片

F 1 F_1 F1Score(F score)

  F1 score是精确率和召回率的调和平均值,定义 F 1 = 2 P R P + R F_1=2\frac{PR}{P+R} F1=2P+RPR,当精确率接近0,或者召回率接近0时,都会得到一个很低的F值。当精确率为1,召回率也为1时,F值为1。因此F值可以用来为我们选择一个较好的临界值。

平均绝对误差MAE

  MAE是绝对误差的平均值,能够反映预测值误差的真实情况,公式如下
M A E = 1 n ∑ i = 1 n ∣ y i − y ^ i ∣ MAE=\frac{1}{n}\sum_{i=1}^n|y_i-\hat y_i| MAE=n1i=1nyiy^i

平方根误差RMSE

  RMSE是观测值与真值偏差的平方和与观测次数n比值的平方根,用来衡量观测值同真值之间的偏差,公式如下
R M S E = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 RMSE=\sqrt{\frac{1}{n}\sum_{i=1}^n(y_i-\hat y_i)^2} RMSE=n1i=1n(yiy^i)2
  一般情况下RMSE能够很好地反映回归模型预测值与真实值的偏离程度,但如果存在个别偏离程度非常大的离群点,即使数量很少,也会使RMSE指标变得很差。可以考虑把这些离群点过滤掉,或者在建模的时候把离群点的机制建模进去,或者是使用下面提到的MAPE指标。

平均绝对百分比误差MAPE

  相比RMSE,MAPE把每个点的误差进行了归一化,降低了个别离群点带来的绝对误差的影响。
M A P E = ∑ i = 1 n ∣ y i − y ^ i y i ∣ × 100 n MAPE=\sum_{i=1}^n|\frac{y_i-\hat y_i}{y_i}|\times \frac{100}{n} MAPE=i=1nyiyiy^i×n100

ROC曲线

  ROC曲线的横坐标为假阳性率FPR,纵坐标为真阳性率TPR,其计算公式如下:
F P R = F P N FPR=\frac{FP}{N} FPR=NFP
T P R = T P P TPR=\frac{TP}{P} TPR=PTP
  ROC曲线通过不断移动区分正负预测结果的阈值来生成,从正无穷点开始,模型将全部样本预测为负例,FPR和TPR为0,此时对应的坐标是 ( 0 , 0 ) (0,0) (0,0)。截断点逐渐调整到最低得分,每个截断点对应一个FPR和TPR,连接这些点得到ROC曲线。

  得到ROC曲线后,我们用ROC曲线下的面积大小来衡量模型性能。这个值被称为AUC,计算AUC只需要沿着ROC横轴做积分就可以了。

ROC和PR的区别

  **在正负样本的分布发生变化的情况下,ROC曲线基本不变,PR曲线一般会发生剧烈变化。**这个特点使ROC曲线能够尽量降低不同测试集带来的干扰,更加客观地衡量模型本身的性能。因此ROC也能够适应偏斜类带来的问题,适用的场景更多。
  如果希望更多看到模型在特定数据集上的表现,PR曲线则能够更直观地反映其性能。

分类阈值

通常我们将模型预测输出大于等于0.5的预测为正样本,小于0.5的预测为负样本。假设我们的模型是在预测病人是否患癌症
如果我们想要较高的精确率,可以将阈值调高,保证我们的模型能够较为准确地找出患癌的人,并且不会将没患癌症的人识别为患癌,但是相对的,此时的召回率会更低。
如果我们想要较高的精确率,可以将阈值调低,保证我们能够找出更多实际患病的人,但是此时被误判为患癌的正常人可能更多,也就是精确率会下降。

总结

在模型预测恒为0的情况下,精确率和召回率都为0,因此能够说明此时模型的表现并不是很好。对样本失衡的情况,利用召回率和精确率,能够较好地评估模型的好与坏。同时利用F值,我们可以挑选出合适的临界值来使得模型表现更好。

你可能感兴趣的:(机器学习之旅)