模型评估

在机器学习领域中,为了检验训练好的模型性能,需要对模型进行评估。而且不同类型的模型所使用的评估方法也会有所差异。只有选择与问题相匹配的评估方法,才能快速地发现模型选择或训练过程中出现的问题,迭代地对模型进行优化。模型评估主要分为离线评估和在线评估两个阶段。针对分类、排序、回归、序列预测等不同类型的机器学习问题,评估指标的选择有所不同。

1. 分类问题

分类模型的常用评估指标有准确率、精确率、回召率、F1-score、ROC曲线等等。

分类的混淆矩阵

真实情况预测结果
正例反例
正例TP(真正例)FN(假反例)
反例FP(假正例)TN(真反例)

TP:预测为正例,真实为正例的样本数
FP:预测为正例,真实为负例的样本数
TN:预测为负例,真实为负例的样本数
FN:预测为负例,真实为正例的样本数

1.1 准确率

准确率是指正确分类的样本占总样本个数的比例,即 A c c u r a c y = T P + T N T P + F P + T N + F N Accuracy=\frac{TP+TN}{TP+FP+TN+FN} Accuracy=TP+FP+TN+FNTP+TN其中 T P , T N TP,TN TP,TN为分类预测正确的样本数,分母为总样本数。

准确率是分类问题中最简单也是最直观的评价指标,但存在明显的缺陷。比如,当负样本占99%时,分类器把所有样本都预测为负样本也可以获得99%的准确率。所以,当不同类别的样本比例非常不均衡时,占比大的类别往往成为影响准确率的最主要因素。

1.2 精确率

精确率是指预测的正例中真实的正例所占的比例。 P r e c i s i o n = T P T P + F P Precision=\frac{TP}{TP+FP} Precision=TP+FPTP其中,分母为预测为正例的样本数,分子为预测的样本中真实正例的样本数。

1.3 召回率

召回率是指真实的正例中预测为正例所占的比例。 R e c a l l = T P T P + F N Recall=\frac{TP}{TP+FN} Recall=TP+FNTP其中,分母为真实正例的样本数,分子为真正的正例中预测为正例的样本数。

案例:视频推荐的模糊搜索功能,搜索排序模型返回的TOP 5的精确度非常高,但在实际使用过程中,用户还是经常找不到想要的视频,特别是一些比较冷门的视频,这是什么原因导致的呢?

解答:在排序问题中,通常没有一个确定的阈值把得到的结果直接判定为正样本或负样本,而是采用Top N返回结果的Precision值和Recall值来衡量排序模型的性能,即认为模型返回的Top N的结果为模型判定的正样本,然后计算前N个位置上的准确率与召回率。
Precision值和Recall值是从两个不同角度来评估模型的性能。为了提高Precision值,分类器要尽量在“更有把握”时才把样本预测为正样本(阈值较大),但是也会由于过于保守从而导致漏掉很多“没有把握”的正样本,使得Recall值降低。
根据问题可知,模型返回的Precision@5结果非常好,但是用户经常找不到想要的视频,这说明模型没有把相关的视频都找出来呈现给用户。显然,问题出在召回率上。假如相关结果有100个,即使Precision@5达到了100%,但是Recall@5也仅仅是5%。

思考:在模型评估时,是否应该同时关注Precision值和Recall值?进一步而言,是否应该选取不同的Top N结果进行观察呢?

解答:为了综合评估一个排序模型的好坏,不仅要从Precision和Recall两个指标对模型进行评估,而且还要观察不同Top N下的Precision值和Recall值的变化。观察Precision与Recall的变化关系,可绘制P-R曲线进行观察。

为了综合反映模型的性能,最常用的几种评估方法:P-R曲线,F1-score、ROC曲线等等

1.4 P-R曲线(Precision-Recall)

P-R曲线横坐标是召回率,纵坐标是精确率。。对于一个排序模型来说,其P-R曲线上的一个点代表着,在某一阈值下,模型将大于该阈值的结果判定为正样本,小于该阈值的结果判定为负样本,此时返回结果对应的召回率和精确率。整条P-R曲线是通过将阈值从高到低移动而生成的。如下图所示:

由图可见,当召回率接近于0时,模型A的精确率为0.9,模型B的精确率是1,这说明模型B得分前几位的样本全部是真正的正样本,而模型A即使得分最高的几个样本也存在预测错误的情况。并且,随着召回率的增加,精确率整体呈下降趋势。但是,当召回率为1时,模型A的精确率反而超过了模型B。这充分说明,只用某个点对应的精确率和召回率是不能全面地衡量模型的性能,只有通过P-R曲线的整体表现,才能够对模型进行更为全面的评估。

1.5 F1 score

在介绍F1 score之前,先分析从Precision和Recall两个指标来综合评估模型性能。 F β = ( 1 + β 2 ) ∗ P ∗ R β 2 ∗ P + R F_{\beta}=\frac{(1+\beta ^2)*P*R}{\beta ^2*P+R} Fβ=β2P+R(1+β2)PR
其中 β = R P \beta = \frac{R}{P} β=PR,度量这两者之间的相对关系。如果 β &gt; 1 \beta&gt;1 β>1,召回率占较大比重;如果 β &lt; 1 \beta&lt;1 β<1,精确率有更大的影响;当 β = 1 \beta=1 β=1,两者影响力相同,即F1 score: F 1 = 2 P R P + R F_1=\frac{2PR}{P+R} F1=P+R2PR

1.6 ROC曲线

ROC曲线,即曲线下的面积(Area Under Curve,AUC),是作为评估二值分类器最重要的指标之一。

ROC曲线的横坐标是假阳性率(False Positive Rate,FPR);纵坐标为真阳性率(True Positive Rate,TPR)。TPR和FPR的计算公式如下: F P R = F P F P + T N FPR=\frac{FP}{FP+TN} FPR=FP+TNFP T P R = T P T P + F N TPR=\frac{TP}{TP+FN} TPR=TP+FNTP其中,TPR是指所有的真实正例中,预测为正例样本所占的比例,和召回率意义相同。FPR是指所有的负例中,预测为正例的样本所占的比例。

思考:如何绘制ROC曲线?

解答:事实上,ROC曲线是通过不断移动分类器的“截断点”来生成曲线上的一组关键点。在二值分类问题中,模型的输出一般都是预测样本为正例的概率。在输出最终的正例、负例之前,需要指定一个阈值,预测概率大于该阈值的样本预测为正例,小于该阈值的样本预测为负例。所谓的“截断点”就是区分正负预测结果的阈值。这样,通过动态地调整截断点,从最高的得分开始,逐渐调整到最低得分,每个截断点都会对应一个FPR和TPR,在ROC图上绘制每个截断点对应的位置,连接所有点得到最终的ROC曲线。

如何计算AUC?

AUC指的是ROC曲线下的面积大小,可通过沿着ROC横轴做积分计算得到,该值能够量化地反映基于ROC曲线衡量出的模型性能。AUC取值一般在0.5~1之间。AUC值越大,说明分类器越可能把真正的正样本排在前面,分类性能越好。

思考:ROC曲线与P-R曲线相比有什么特点?

解答:相比P-R曲线,ROC曲线有一个特点,当正负样本的分布发生变化时,ROC曲线的形状能够基本保持不变,而P-R曲线的形状一般会发生较剧烈的变化。下图是样本分布变化前与变化后的ROC曲线和P-R曲线。

可以看出,当数据分布发生变化后,ROC曲线形状一般不会发生太大的变化,而P-R曲线变化较大。这个特点使得ROC曲线能尽量降低不同测试集带来的干扰,更加客观的衡量模型本身的性能。在很多实际问题中,正负样本数量往往很不均衡。比如,计算广告领域经常涉及转化率模型,正样本的数量往往是负样本数量的1/1000甚至1/10000。若选择不同的测试集,P-R曲线的变化就会非常大,而ROC曲线则能够更加稳定地反映模型本身的好坏。所以,ROC曲线的适用场景更多,被广泛用于排序、推荐、广告等领域。

2. 回归问题

由于回归模型的输出值为连续值,其模型的评估与分类模型评估有所差异。一般采用均方根误差、平均绝对误差、平均平方误差等等。

2.1 平均绝对误差MAE

平均绝对误差MAE,被称为L1: 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

2.2 平均平方误差MSE

平均平方误差MSE,被称为L2: M S E = 1 n ∑ i = 1 n ( y − y i ) 2 MSE=\frac{1}{n}\sum_{i=1}^n(y-y_i)^2 MSE=n1i=1n(yyi)2

2.3均方根误差RMSE

均方根误差RMSE能很好地反映回归模型预测值与真实值的偏离程度。但在实际问题中,如果存在个别偏移程度非常大的离群点时,即使离群点数量非常少,也会让RMSE指标变得很差。 R M S E = ∑ i = 1 n ( y − y i ) 2 n RMSE=\sqrt {\frac{\sum_{i=1}^n(y-y_i)^2}{n}} RMSE=ni=1n(yyi)2

案例:Hulu作为一家流媒体公司,拥有众多的美剧资源,预测每部美剧的流量趋势。对于广告投放、用户增长都非常重要。我们希望构建一个回归模型来预测某部美剧的流量趋势,但无论采用哪种回归模型,得到的RMSE指标都非常高。然而事实是,模型在95%的时间区间内的预测误差都小于1%,取得了相当不错的预测结果。那么,造成RMSE指标居高不下的最可能的原因是什么?
解答:模型在95%的时间区间内的预测误差都小于1%,这说明,在大部分时间区间内,模型的预测效果都是非常优秀的。然而,RMSE却一直很差,这很可能是由于在其他的5%时间区间内存在非常严重的离群点。事实上,在流量预估这个问题中,噪声点确实是很容易产生的,比如流量特别小的美剧、刚上映的美剧或者刚获奖的美剧,甚至一些相关社交媒体突发事件带来的流量,都可能会造成离群点。

针对“噪声点”对模型评估的影响,有什么解决方案呢?

  1. 在数据预处理的阶段把这些噪声点过滤掉;
  2. 如果不认为这些离群点是“噪声点”的话,需要进一步提高模型的预测能力,将离群点产生的机制建模进去;
  3. 找一个更合适的指标来评估该模型。关于评估指标,其实是存在比RMSE的鲁棒性更好的指标,比如平均绝对百分比误差,定义为 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相比RMSE,MAPE相当于把每个点的误差进行归一化,降低了个别离群点带来的绝对误差的影响。
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值