二、模型评估


模型评估主要分为离线评估和在线评估两个阶段。针对分类、排序、回归、 序列预测等不同类型的机器学习问题,评估指标的选择也有所不同。知道每种评估指标的精确定义、有针对性地选择合适的评估指标、根据评估指标的反馈进行模型调整,这些都是机器学习在模型评估阶段的关键问题,也是一名合格的算法工程师应当具备的基本功。

分类问题常用的评估指标:

介绍常用平指标之前,我们先做如下的定义:
在这里插入图片描述
准确率(accuracy):准确率是指分类正确的样本占总样本个数的比例,(TP+TN)/(P+N)。
精确率(precision):预测为正,真实为正的样本数占所有预测为正的样本的比例,TP/(TP+FP)。
召回率:预测为正,真实为正的样本数占所有正样本个数的比例,TP/(TP+FN)。
真阳性率:真阳性率和召回率其实是一个东西,只是在PR曲线里叫召回率,在ROC曲线里叫真阳性率,TP/(TP+FN)。
假阳性率:预测为正,真实为负的样本数占所有负样本个数的比例,FP/(TN+FP)。

评估指标的局限性

准确率(accuracy)的局限性

准确率是分类问题中最简单也是最直观的评价指标,但存在明显的缺陷。比如,当负样本占99%时,分类器把所有样本都预测为负样本也可以获得99%的准确率。所以,当不同类别的样本比例非常不均衡时,占比大的类别往往成为影响准确率的最主要因素。 为了解决这个问题,可以使用更为有效的平均准确率(每个类别下的样本准确率的算术平均)作为模型评估的指标。

精确率(precision)与召回率的权衡

在排序问题中,通常是采用Top N返回结果的Precision值和Recall值来衡量排序模型的性能,即认为模型返回的Top N的结果就是模型判定的正样本,然后计算前N个位置上的准确率Precision@N和前N个位置上的召回率Recall@N。
Precision值和Recall值是既矛盾又统一的两个指标,为了提高Precision值,分类器需要尽量在“更有把握”时才把样本预测为正样本,但此时往往会因为过于保守而漏掉很多“没有把握”的正样本,导致Recall值降低。我们可以考虑一种极端的情况:有100个相关样本,其中50个正样本,50个负样本。现在我们的模型将所有样本都预测为正样本,那么模型的召回率达到了 100%,但是精确率仅仅是50%。所以,为了综合评估一个排序模型的好坏,最好绘制出模型的P-R曲线。

P-R曲线

P-R曲线的横轴是召回率,纵轴是精确率。对于一个排序模型来说,其P-R曲线上的一个点代表着,在某一阈值下,模型将大于该阈值的结果判定为正样本, 小于该阈值的结果判定为负样本,此时返回结果对应的召回率和精确率。整条P-R 曲线是通过将阈值从高到低移动而生成的。下图是P-R曲线样例图,其中实线代表模型A的P-R曲线,虚线代表模型B的P-R曲线。原点附近代表当阈值最大时模型的精确率和召回率。
在这里插入图片描述

F1score

除此了P-R曲线之外,F1score也能综合地反映一个排序模型的性能。F1score是精准率和召回率的调和平均值,它定义为
在这里插入图片描述

ROC曲线

ROC曲线是Receiver Operating Characteristic Curve的简称,中文名为“受试者工作特征曲线”。ROC曲线源于军事领域,而后在医学领域应用甚广,“受试者工作特征曲线”这一名称也正是来自于医学领域。
ROC曲线的横坐标为假阳性率(FPR);纵坐标为真阳性率(TPR)。FPR和TPR的计算方法分别为

在这里插入图片描述
上式中,P是真实的正样本的数量,N是真实的负样本的数量,TP是P个正样本中被分类器预测为正样本的个数,FP是N个负样本中被分类器预测为正样本的个数。

如何绘制P-R,ROC曲线

在二值分类问题中,模型的输出一般都是预测样本为正例的概率,在输出最终的正例、负例之前,我们需要指定一个阈值,预测概率大于该阈值的样本会被判为正例,小于该阈值的样本则会被判为负例。通过动态地调整截阈值,从最高的得分开始(实际上是从正无穷开始,对应 着ROC曲线的零点),逐渐调整到最低得分,每一个点都会对应一个FPR和 TPR,在ROC图上绘制出每个截断点对应的位置,再连接所有点就得到最终的 ROC曲线。

在这里插入图片描述
就本例来说,当阈值选择为正无穷时,模型把全部样本预测为负例,那么FP和TP必然都为0,FPR和TPR也都为0,因此曲线的第一个点的坐标就是 (0,0)。当把截断点调整为0.9时,模型预测1号样本为正样本,并且该样本确实是正样本,因此,TP=1,20个样本中,所有正例数量为P=10, 故TPR=TP/P=1/10;这里没有预测错的正样本,即FP=0,负样本总数N=10, 故FPR=FP/N=0/10=0,对应ROC曲线上的点(0,0.1)。依次调整截断点,直到画出全部的关键点,再连接关键点即得到最终的ROC曲线,如图所示。
在这里插入图片描述

如何计算AUC

顾名思义,AUC指的是ROC曲线下的面积大小,该值能够量化地反映基于 ROC曲线衡量出的模型性能。计算AUC值只需要沿着ROC横轴做积分就可以了。 由于ROC曲线一般都处于y=x这条直线的上方(如果不是的话,只要把模型预测的 概率反转成1−p就可以得到一个更好的分类器),所以AUC的取值一般在0.5~1之 间。AUC越大,说明分类器越可能把真正的正样本排在前面,分类性能越好。

ROC与P-R的区别

相比 P-R曲线,ROC曲线有一个特点,当正负样本的分布发生变化时,ROC曲线的形状 能够基本保持不变,而P-R曲线的形状一般会发生较剧烈的变化。
举例来说,图是ROC曲线和P-R曲线的对比图,其中图(a)和图(c)是ROC曲线,图(b)和图(d)是P-R曲线,图(c)和图(d)则是将测试集中的负样本数量增加10倍后的曲线图。
在这里插入图片描述
可以看出,P-R曲线发生了明显的变化,而ROC曲线形状基本不变。这个特点让ROC曲线能够尽量降低不同测试集带来的干扰,更加客观地衡量模型本身的性能。这有什么实际意义呢?
在很多实际问题中,正负样本数量往往很不均衡。比如,计算广告领域经常涉及转化率模型,正样本的数量往往是负样本数量的1/1000 甚至1/10000。若选择不同的测试集,P-R曲线的变化就会非常大,而ROC曲线则能够更加稳定地反映模型本身的好坏。所以,ROC曲线的适用场景更多,被广泛用于排序、推荐、广告等领域。但需要注意的是,选择P-R曲线还是ROC曲线是因实际问题而异的,如果研究者希望更多地看到模型在特定数据集上的表现,P-R曲 线则能够更直观地反映其性能。

回归问题常用的评估指标

平均绝对误差(MAE)

平均绝对误差(Mean Absolute Error),观测值与真实值的误差绝对值的平均值。公式为:
在这里插入图片描述

平方误差(MSE)

在这里插入图片描述

平方根误差(RMSE)

RMSE经常被用来衡量回归模型的好坏,先看一下RMSE的计算公式:
在这里插入图片描述
但是RMSE指标有时会失效,比如:我们希望构建一个回归模型来预测某部美剧的流量趋势,无论采用哪种回归模型,得到的RMSE指标都非常高。然而,模型在绝大多数情况下都取得了相当不错的预测结果。那么,造成RMSE指标居高不下的最可能的原因是什么?这很可能是由于存在非常严重的离群点。事实上,在流量预估这个问题中,噪声点确实是很容易产生的,比如流量特别小的美剧、刚上映的美剧或者刚获奖的美剧,甚至一些相关社交媒体突发事件带来的流量,都可能会造成离群点。

平均绝对百分比误差(MAPE)

针对这个问题,有什么解决方案呢?可以从三个角度来思考。
第一,如果我们认定这些离群点是“噪声点”的话,就需要在数据预处理的阶段把这些噪声点过滤掉。
第二,如果不认为这些离群点是“噪声点”的话,就需要进一步提高模型的预测能力,将离群点产生的机制建模进去。
第三,可以找一个更合适的指标来评估该模型。比如平均绝对百分比误差(Mean Absolute Percent Error,MAPE),它定义为
在这里插入图片描述
相比RMSE,MAPE相当于把每个点的误差进行了归一化,降低了个别离群点带来的绝对误差的影响。

余弦距离的应用

在机器学习问题中,通常将特征表示为向量的形式,所以在分析两个特征向量之间的相似性时,常使用余弦相似度来表示。余弦相似度的取值范围是[−1,1], 相同的两个向量之间的相似度为1。如果希望得到类似于距离的表示,将1减去余弦相似度即为余弦距离。因此,余弦距离的取值范围为[0,2],相同的两个向量余弦距离为0。
对于两个向量A和B,其余弦相似度定义为:
在这里插入图片描述
即两个向量夹角的余弦,关注的是向量之间的角度关系,并不关心它们的绝对大小,其取值范围是[−1,1]。

为什么在一些场景中要使用余弦相似度而不是欧氏距离?

当一对文本相似度的长度差距很大、但内容相近时,如果使用词频或词向量作为特征,它们在特征空间中的的欧氏距离通常很大;而如果使用余弦相似度的话,它们之间的夹角可能很小,因而相似度高。此外,在文本、图像、 视频等领域,研究的对象的特征维度往往很高,余弦相似度在高维情况下依然保 持“相同时为1,正交时为0,相反时为−1”的性质,而欧氏距离的数值则受维度的 影响,范围不固定,并且含义也比较模糊。
在一些场景,例如Word2Vec中,其向量的模长是经过归一化的,此时欧氏距 离与余弦距离有着单调的关系,即
在这里插入图片描述
其中|| A−B ||2表示欧氏距离,cos(A,B)表示余弦相似度,(1−cos(A,B))表示余弦距离。在此场景下,如果选择距离最小(相似度最大)的近邻,那么使用余弦相似度和欧氏距离的结果是相同的。总体来说,欧氏距离体现数值上的绝对差异,而余弦距离体现方向上的相对差异。例如,统计两部剧的用户观看行为,用户A的观看向量为(0,1),用户B为 (1,0);此时二者的余弦距离很大,而欧氏距离很小;我们分析两个用户对于不同 视频的偏好,更关注相对差异,显然应当使用余弦距离。而当我们分析用户活跃 度,以登陆次数(单位:次)和平均观看时长(单位:分钟)作为特征时,余弦距离会 认为(1,10)、(10,100)两个用户距离很近;但显然这两个用户活跃度是有着极大差异 的,此时我们更关注数值绝对差异,应当使用欧氏距离。
特定的度量方法适用于什么样的问题,需要在学习和研究中多总结和思考, 这样不仅仅对面试有帮助,在遇到新的问题时也可以活学活用。

余弦距离是否是一个严格定义的距离?

并不是,一个严格定义的距离必须满足正定性、对称性、三角不等式。
正定:d(x,y)>=0
对称:d(x,y)=d(y,x)
余弦距离不满足三角不不等式。证明十分简单,令A(1,0),B(1,1),C(0,1),算一下距离即可,不满足两边之和大于第三边。

A/B测试的陷阱

A/B 测试又被称为“分流测试”或“分桶测试”,它通过把被测对象随机分成 A、B 两组,分别对它们进行对照测试的方法得出实验结论。具体到推荐模型测试的场景下,它的流程是这样的:先将用户随机分成实验组和对照组,然后给实验组的用户施以新模型,给对照组的用户施以旧模型,再经过一定时间的测试后,计算出实验组和对照组各项线上评估指标,来比较新旧模型的效果差异,最后挑选出效果更好的推荐模型。

为什么要进行A/B测试

需要进行在线A/B测试的原因如下。
(1)离线评估无法完全消除模型过拟合的影响,因此,得出的离线评估结果 无法完全替代线上评估结果。
(2)离线评估无法完全还原线上的工程环境。一般来讲,离线评估往往不会 考虑线上环境的延迟、数据丢失、标签数据缺失等情况。因此,离线评估的结果 是理想工程环境下的结果。
(3)线上系统的某些商业指标在离线评估中无法计算。离线评估一般是针对 模型本身进行评估,而与模型相关的其他指标,特别是商业指标,往往无法直接 获得。比如,上线了新的推荐算法,离线评估往往关注的是ROC曲线、P-R曲线等 的改进,而线上评估可以全面了解该推荐算法带来的用户点击率、留存时长、PV 访问量等的变化。这些都要由A/B测试来进行全面的评估。

如何进行A/B测试

进行A/B测试的主要手段是进行用户分桶,即将用户分成实验组和对照组,对 实验组的用户施以新模型,对对照组的用户施以旧模型。在分桶的过程中,要注 意样本的独立性和采样方式的无偏性,确保同一个用户每次只能分到同一个桶 中,在分桶过程中所选取的user_id需要是一个随机数,这样才能保证桶中的样本是无偏的。

模型评估的方法

  1. Holdout检验
    Holdout 将原始的样本集合随机划分成训练集和验证集两部分。比方说,70% 的样本用于模型训练;30% 的样本用于模型 验证,包括绘制ROC曲线、计算精确率和召回率等指标来评估模型性能。 Holdout 检验的缺点很明显,即在验证集上计算出来的最后评估指标与原始分组有很大关系。为了消除随机性,研究者们引入了“交叉检验”的思想。
  2. 交叉检验
    k-fold交叉验证:首先将全部样本划分成k个大小相等的样本子集;依次遍历这k个子集,每次把当前子集作为验证集,其余所有子集作为训练集,进行模型的训练和评估;最后把k次评估指标的平均值作为最终的评估指标。在实际实验中,k经常取10。
  3. 自助法
    不管是Holdout检验还是交叉检验,都是基于划分训练集和测试集的方法进行模型评估的。然而,当样本规模比较小时,将样本集进行划分会让训练集进一步减小,这可能会影响模型训练效果。有没有能维持训练集样本规模的验证方法呢?自助法可以比较好地解决这个问题。
    自助法是基于自助采样法的检验方法。对于总数为n的样本集合,进行n次有放回的随机抽样,得到大小为n的训练集。n次采样过程中,有的样本会被重复采样,有的样本没有被抽出过,将这些没有被抽出的样本作为验证集,进行模型验 证,这就是自助法的验证过程。

超参数调优方法

  1. 网格搜索
    网格搜索可能是最简单、应用最广泛的超参数搜索算法,它通过查找搜索范围内的所有的点来确定最优值。然而,这种搜索方案十分消耗计算资源和时间,特别是需要调优的超参数比较多的时候。因此,在实际应用中,网格搜索法 一般会先使用较广的搜索范围和较大的步长,来寻找全局最优值可能的位置;然后会逐渐缩小搜索范围和步长,来寻找更精确的最优值。这种操作方案可以降低 所需的时间和计算量,但由于目标函数一般是非凸的,所以很可能会错过全局最优值。
  2. 随机搜索
    随机搜索的思想与网格搜索比较相似,只是不再测试上界和下界之间的所有值,而是在搜索范围中随机选取样本点。它的理论依据是,如果样本点集足够大,那么通过随机采样也能大概率地找到全局最优值,或其近似值。随机搜索一般会比网格搜索要快一些,但是和网格搜索的快速版一样,它的结果也无法保证。
  3. 贝叶斯优化算法
    贝叶斯优化算法在寻找最优最值参数时,采用了与网格搜索、随机搜索完全不同的方法。网格搜索和随机搜索在测试一个新点时,会忽略前一个点的信息; 而贝叶斯优化算法则充分利用了之前的信息。贝叶斯优化算法通过对目标函数形状进行学习,找到使目标函数向全局最优值提升的参数。
    具体来说,它学习目标函数的方法是,首先根据先验分布,假设一个搜集函数;
    然后,每一次使用新的采样点来测试目标函数时,利用这个信息来更新目标函数的先验分布;
    最后,算法测试由后验分布给出的全局最值最可能出现的位置的点。
    对于贝叶斯优 化算法,有一个需要注意的地方,一旦找到了一个局部最优值,它会在该区域不断采样,所以很容易陷入局部最优值。为了弥补这个缺陷,贝叶斯优化算法会在 探索和利用之间找到一个平衡点,“探索”就是在还未取样的区域获取采样点; 而“利用”则是根据后验分布在最可能出现全局最值的区域进行采样。

过拟合与欠拟合

降低过拟合风险的方法

(1)从数据入手,获得更多的训练数据。使用更多的训练数据是解决过拟合问题最有效的手段,因为更多的样本能够让模型学习到更多更有效的特征,减小噪声的影响。
(2)降低模型复杂度。在数据较少时,模型过于复杂是产生过拟合的主要因素,适当降低模型复杂度可以避免模型拟合过多的采样噪声。例如,在神经网络 模型中减少网络层数、神经元个数等;在决策树模型中降低树的深度、进行剪枝等。
(3)正则化方法。给模型的参数加上一定的正则约束,比如将权值的大小加 入到损失函数中。以L2正则化为例:
在这里插入图片描述
这样,在优化原来的目标函数C0的同时,也能避免权值过大带来的过拟合风险。
(4)集成学习方法。集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险,如Bagging方法。

降低欠拟合风险的方法

(1)添加新特征。当特征不足或者现有特征与样本标签的相关性不强时,模 型容易出现欠拟合。通过挖掘“上下文特征”“ID类特征”“组合特征”等新的特征,往 往能够取得更好的效果。在深度学习潮流中,有很多模型可以帮助完成特征工 程,如因子分解机、梯度提升决策树、Deep-crossing等都可以成为丰富特征的方 法。
(2)增加模型复杂度。简单模型的学习能力较差,通过增加模型的复杂度可 以使模型拥有更强的拟合能力。例如,在线性模型中添加高次项,在神经网络模型中增加网络层数或神经元个数等。
(3)减小正则化系数。正则化是用来防止过拟合的,但当模型出现欠拟合现 象时,则需要有针对性地减小正则化系数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值