不同类型的机器学习问题,选择恰当的评估指标才能快速发现模型选择或模型训练过程中出现的问题。模型评估主要分为离线评估和在线评估两个阶段。
一、评估指标的局限性
1.1 准确性的局限性
准确率是指分类正确的样本栈总样本个数的比例,即
其中为被正确分类的样本个数,
为总样本个数
如果训练集中不同类别占比非常不均衡,假如99%都是负样本,那模型只要将所有样本都归为负样本就能达到99%的准确率。所以当不同类别的样本比例非常不均衡时,占比大的类别往往称为影响准确率的最主要因素。
可以使用平均准确率(每个类别下的样本准确率的算术平均)作为评估指标更有效。当然在实际应用中模型效果不好还可能是模型过拟合、欠拟合、测试集训练集划分不合理、线下评估与线上测试的样本分布存在差异等。
1.2 精确率和召回率的权衡(P-R曲线)
精确率(Precision):分类正确的正样本个数占分类器判定为正样本的样本个数比例。
召回率(Recall):分类正确的正样本个数占真正的正样本个数的比例。
在排序问题中,通常没有一个确定的阈值吧得到的结果直接判定为正样本或负样本,而是采用Top N返回结果的Precision值和Recall值来衡量排序模型的性能,即认为模型返回的Top N结果就是模型判定的正样本,然后计算前N个位置上的准确率和前N个位置上的召回率
Precision和Recall是矛盾又统一的两个指标。Precision越高,说明分类器判定一个样本为正样本时越严格,所以往往因为更保守而漏掉没有把握的正样本,导致了Recall值降低。为了综合评估一个排序模型的好坏,最好绘制出模型的P-R曲线。横轴代表R,纵轴代表P,整条曲线通过将阈值从高到底移动而生成的,超出阈值判定为正样本,低于阈值为负样本。F1 score和ROC曲线也能综合反应排序模型的性能,F1 score是P值和R值的调和平均值,定义为:
1.3 平方根误差RMSE的局限
RMSE的计算公式为:
其中,是第i个样本点的真实值,
是第i个样本点的预测值,n为样本点的个数
一般情况下,RMSE能够很好的反映回归模型预测值与真实值的偏离程度。但在实际问题中,如果存在个别偏离程度非常大的离群点(Outlier)时,及时离群点非常少,也会让RMSE指标变得很差。
解决方案:
- 如果离群点是噪声点的话,过滤。
- 不是噪声点,那需要提高模型预测能力。
- 找到更合适的指标评估模型,如平均绝对百分比误差(MAPE)。
二、 ROC曲线
ROC曲线是用来评估二值分类器最重要的指标之一。2.1 ROC曲线定义
ROC曲线是Reveiver Operating Characteristic Curve的简称,中文名为“受试者工作特征曲线”。
ROC曲线的横坐标为假阳性率(False Positive Rate)FPR,纵坐标为真阳性率(Ture Positive Rate)TPR:
其中,P为真实的正样本数量,N是真实的负样本数量,TP是P个正样本被分类器预测为正样本的个数,FP是N个负样本中被分类器预测为正样本的个数(误检)。在目标检测中TP为IOU大于阈值的检测框,FP为小于阈值的检测框数量,或者同一目标多余的检测框数量,FN为漏检的数量2.2 绘制ROC曲线的方法
ROC曲线是通过不断移动分类器的“截断点”(即区分正负预测结果的阈值)来生成曲线上的关键点形成的。模型预测概率大于阈值判定为正样本,小于阈值判定为负样本,每一个阈值对应一个FPR和TPR,连接所有的关键点得到ROC曲线。2.3 AUC
指的是ROC曲线下的面积大小,一般取值在0.5~1之间。AUC越大,说明分类器越有可能把真正的正样本排在前面,分类性能越好。2.4 ROC曲线与P-R曲线的特点
当正负样本分布(如正负样本比例发生改变)发生变化时,ROC曲线形状基本保持不变,P-R曲线一般会发生剧烈变化。所以ROC曲线能够降低不同测试集带来的干扰,更加稳定的反应模型好坏,适用场景更多如排序、推荐、广告等。如果想看到模型在特定数据集上的表现,P-R曲线能够更直观的反应其性能。三、余弦距离的应用
如何评估样本距离也是定义优化目标和训练方法的基础。机器学习中常用余弦相似度来表示两个特征向量之间的相似性。
余弦相似度的取值范围是[-1,1],相同的两个向量之间的相似度为1.
余弦距离 = 1 - 余弦相似度。所以余弦距离的取值范围为[0,2],相同的两个向量的余弦距离为03.1 为什么一些场景中使用余弦相似度而不是欧式距离:
对于两个向量A,B,其余弦相似度定义如下:
即两个向量夹角的余弦。关心的是向量之间的角度关系,而不关心绝对大小,取值范围为[-1,1]。在文本、图像、视频等领域,对象的特征维度很高,余弦相似度在高维的情况下依然能保持“相同时为1,正交时为0,相反时为-1”,欧式距离的值受维度影响,范围不固定,含义也比较模糊。在一些向量模长经过归一化的场景中,欧式距离与余弦距离具有单调的关系,使用哪一个结果都是相同的:
其中表示欧氏距离,
表示余弦相似度,
代表余弦距离。
总结:欧式距离体现数值上的绝对差异,余弦距离体现方向上的相对差异。根据不同的应用场景选择合适的距离评估方式3.2 余弦距离是否是一个严格定义的距离:
首先明确距离是如何定义的:在一个集合中,如果每一对元素均可唯一确定一个实数,使得三条距离公理(正定性、对称性、三角不等式)成立,则该实数可称为这对元素之间的距离。
余弦距离满足正定性和对称性,但是不满足三角不等式
所以余弦距离不是严格定义的距离。此外KL距离也不是距离,不满足对称性和三角不等式。四、A/B测试
A/B测试是验证模型最终效果的主要手段4.1 模型进行充分的离线评估后,为何仍需要在线的A/B 测试?
- 离线评估无法完全消除模型过拟合的影响。
- 离线评估无法完全还原线上的工程环境。如线上环境延迟、数据丢失、标签数据缺失等情况。离线评估是理想工程环境下的结果。
线上系统的某些商业指标在离线评估中无法计算。离线评估往往关注ROC曲线、P-R曲线的改进。线上评估可以全面了解模型的其他指标,尤其商业指标,如推荐算法带来的用户点击率、留存时长、PV访问量的变化。
4.2 如何进行A/B测试:
进行用户分桶。将用户分成实验组和对照组,实验组施以新模型,对照组施以旧模型。在分桶过程中,需要注意样本的独立性和采样方式的无偏性。独立性是同一个用户每次只能分到一个桶中。无偏性是选取的user_id是随机选取的。
4.3 如何划分实验组和对照组:
五、模型评估的方法
模型评估主要的验证方法以及有缺点:
Holdout验证:最简单直接的方法。原始样本集按比例随机划分为训练集和测试集。缺点:再验证集上计算出来的最后评估指标与原始分组有很大关系。为了消除随机性,引入了”交叉验证”的思想。
- 交叉验证,也叫k-fold验证:全部样本划分为k个大小相等的子集,依次遍历这k个子集,每次把当前子集作为验证集,其余子集作为训练集。k次评估指标的平均值作为最终的评估指标。缺点:样本总数较多的时候,时间开销极大。若每次随机选取p个子集做测试集,其余做训练集,也叫做留p验证,留一验证是留p验证的特例。时间开销远高于留一验证。所以很少在实际工程中应用。
- 自助法:当样本规模比较小时,上述两种方法划分样本集会让训练集进一步减小,影响模型训练效果。而自助法可以维持训练集样本规模。对于总数为n的样本集,进行n次有放回的随机抽样,得到大小为n的训练集。在抽样过程中,有的样本会被重复采样,有的样本没有被抽出过,没有抽到过的样本就构成了测试集。
自助法中,当n趋于无穷时,最终有36.8%的数据从未被选择。
六、超参数调优
超参数的调优方法:超参数搜索算法一般包括三个要素,一是目标函数,二是搜索范围,一般通过上下限决定,三是算法其他参数,如搜索步长。
- 网格搜索:查找搜索范围内的所有点来确定最优值,最简单应用范围最广的搜索算法。较大范围较小步长,大概率能找到全局最优值。但是十分消耗资源和时间。实际应用中,较大范围,较大步长搜索全局最优的可能位置,然后逐步缩小范围和步长寻找更精确的最优值。但由于目标函数是非凸的,很可能会错过全局最优。
- 随机搜索:与网格搜索相似,但不测试上界和下界范围内的所有值,随机在搜索范围内选取样本点。随机搜索比网格搜索快一些,但结果无法保证。
贝叶斯优化算法:网格搜索和随机搜索在测试一个新点时,会忽略前一个点的信息。而贝叶斯优化算法充分利用了之前的信息。通过对目标函数形状进行学习,找到使目标函数向全局最优值提升的参数。具体来说,首先根据先验分布,假设一个搜集函数;然后使用新的采样点测试目标函数时,同时更新目标函数的先验分布;最后算法测试由后验分布给出的全局最值最可能出现的位置点。但是,在局部最优值的区域会不断采样,陷入局部最优。所以贝叶斯算法会在探索与利用之间找到一个平衡点。
七、过拟合和欠拟合
过拟合与欠拟合的现象:
- 过拟合指的是模型对于训练数据拟合过当(比如模型过于复杂,把噪声也学习到模型中),在训练集上表现良好,在测试集和新数据上表现较差。泛化能力差
- 欠拟合是在训练集和测试集上表现都不好。
- 降低过拟合和欠拟合风险的方法:
- 降低过拟合:一是从数据入手。获取更多的训练数据,使模型学到更多有效的特征。采集实验数据比较困难,所以也可以利用一些规则扩充数据,如图像的平移、旋转、缩放。也可以利用生成式对抗网络来合成大量数据。二是降低模型复杂度。三是正则化方法。四是继承学习方法,把多个模型集和在一起,减少单个模型的过拟合风险。
- 降低欠拟合:一添加新特征。二增加模型复杂度。三减少正则化系数。
