model_evaluation

Chapter 2 模型评估

1. 准确率和平方根误差的缺陷

准确率

准确率是指分类正确的样本占样本个数的比例,即 $Accuracy = \frac{n{correct}}{n{total}}$ ,其中 $n{correct}$ 为被正确分类的样本个数, $n{total}$ 为总样本的个数。

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

​ 为了解决这个问题,可以使用更为有效的平均准确率(每个类别下的样本准确率的算术平均)作为评估的指标。

平方根误差 RMSE

​ RMSE 平方根误差经常被用来衡量回归模型的好坏,其计算公式为 $RMSE = \sqrt{\frac{1}{n}\sum^{n}{i-1}{(y{i}-\hat{y_{i}})^2}}$, 其中 $y_i$ 是第i个样本点的真实值吗,$\hat{y_i}$ 是 第i个样本的预测值,n 是样本点的个数。

​ 一般情况下,RMSE 能够更好的反映回归模型预测值与真实值的偏离程度。但在实际问题中,如果存在个别偏离程度非常大的离群点(Outlier), 即使离群点数量非常少,也会让RSME 指标变得非常差。

​ 针对这种情况从三个角度进行解决。(1) 如何认定这些离群点是“噪声点”的话,就需要在数据预处理的阶段把这些噪声过滤掉。(2)如果不认为这些离群点是“噪声点”的话,需要进一步提高模型的预测能力,将离群点产生的机制建模进去。(3)找一个更合适的指标来评估模型。比如平均绝对百分比误差MAPE, 它定义为 $MAPE = \sum_{i=1}^{n}\lvert \frac{y_i - \hat{y_i}}{y_i}\rvert \times\frac{100}{n}$, 相比于 RSME, MAPE 相当于把这个点的误差进行了归一化,降低了个别离群点带来的误差影响。

2. 混淆矩阵、P-R曲线、ROC 曲线

混淆矩阵

精确率: 分类正确的正样本个数占分类器判定为正样本的样本个数的比例。即: $Precision = \frac{TP}{TP+FP}$。

召回率: 分类正确的正样本个数占真正正样本个数的比例。即:$Recall = \frac{TP}{TP+FN}$。

​ Precision 值和 Recall 值是既矛盾又统一的两个指标,为了提高Precision值,分类器需要尽量在”更有把握“时才把样本预测为正样本,但此时由于过于保守而漏掉很多”没有把握“的正样本,导致Recall值降低。

​ P-R 曲线能够综合评估一个排序模型的好坏。P-R 曲线的横轴是召回率,纵轴是精确率。对于一个排序模型来说, 某P-R曲线上的一个点代表着,在某一阈值下,模型将大于该阈值的结果判定为正样本,小于该阈值的结果判定为负样本,此时返回的结果对应的召回率和精确率。整条P-R曲线是通过将阈值从高到底移动而生成的。

假阳性率:分类错误的正样本(预测为正样本,实际是正样本)占真正负样本的比例。即 $FPR = \frac{FP}{FP+TN}$。

真阳性率:分类正确的正样本占真正正样本个数的比例。$TPR = \frac{TP}{TP+FN}$。

​ ROC 曲线是通过不断移动分类器区分正负预测结果的阈值来生成曲线上的一组关键点的。从最高的得分开始(实际上是从正无穷开始,对应ROC 曲线的零点), 逐渐调整到最低得分,每一个阈值都会对应一个FPR和TPR,在ROC图上绘制出每个阈值对应的位置,再连接所有点酒得到最终的ROC 曲线。另外所谓的AUC 是指ROC 曲线下的面积大小,该值能够量化地反应基于ROC 曲线衡量出的模型性能。计算AUC 的值只需要沿着ROC横轴积分即可。由于ROC 曲线一般都处于y=x 这条直线的上方,所以AUC 的取值一般在0.5-1 之间。AUC 越大,说明分类器越可能把真正的正样本排在前面,分类性能越好。

​ 相比于 P-R 曲线,ROC 曲线有一个特点,当政府样本的分布发生变化时, ROC 曲线的形状能够基本保持不变,而P-R 曲线的形状一般会发生比较剧烈的变化。所以 ROC 曲线的使用场景更多,被广泛用于排序、推荐、广告等领域。

F1-Score 也能综合反映一个排序模型的性能。它是精准率和召回率的调和平均值。它的定义为:

3. 余弦距离的应用

​ 对于两个向量 A和 B ,其余弦相似度的定义为 $cos(A,B) = \frac{A\cdot B}{\Vert A \Vert_2 \Vert B \Vert_2}$。 即两个向量夹角的余弦,关注的是向量之间的角度关系,并不关心它们的绝对大小,其取值范围是[-1, 1]。 相比较而言,欧式距离的数值受维度的影响,范围不固定,并且含义也比较模糊。总体来说,欧式距离体现在数值上的绝对差异,而余弦距离则体现方向上的相对差异。比如统计两部剧的用户观看行为,用户A 的观看向量是(0,1), 而用户B 的观看向量为(1,0);此时两者的余弦距离很大,而欧式距离很小;我们分析两个用户不同视频的偏好,更关注相对差异,显然应当使用余弦距离。而当我们分析用户活跃度时,以登录次数和平均观看市场作为调整,余弦距离会认为(1,10)(10,100) 两个用户距离很近;但是显然两个用户活跃度有着极大差异的,此时我们要关注数值的绝对差异,应当使用欧式距离。

​ 考查一个距离是否是严格定义的距离。要从距离的定义出发:在一个集合中,如果每一对元素均可唯一决定一个实数,使得三条距离公理(正定性、对称性、三角不等式)成立,则该实数可称为这对元素之间的距离。以余弦距离为例:

  • 正定型:$dist(A, B) = 1- cos\theta \ge 0 $ 恒成立, 特别地,有 $dist(A, B) = 0 \Leftrightarrow \Vert A \Vert_2 \Vert B \Vert_2 = AB \Leftrightarrow A=B$

    因此余弦距离满足正定性。

  • 对称性:

  • 因此,余弦距离满足对称性。

  • 三角不等式:该性质并不成立,下面给出一个反例。给定 A = (1, 0), B = (1, 1),C=(0,1),则有

    因此有 $dist(A, B)+dist(B,C) = 2-\sqrt{2} < 1 = dist(A, C)$

在机器学习领域,被俗称为距离,却不满足三条距离公理的不仅仅有余弦距离,还有KL距离,也叫相对熵, 它常用于计算两个分布之间的差异,但不满足对称性和三角不等式。

4. 为什么对模型进行过充分的离线评估之后,还要进行在线A/B 测试?如何进行A/B 测试?

需要进行在线 A/B 测试的原因如下:

(1)离线评估无法完全消除模型过拟合的影响,因此,得出的离线评估结果无法完全替代线上评估结果。

(2)离线评估无法完全还原线上工程环境。一般来讲,离线评估往往不会考虑线上环境的延迟、数据丢失、标签数据缺失等情况。因此,离线评估的结果是理想工程环境下的结果。

(3)线上系统的某些商业指标在离线评估中无法计算。离线评估一般是针对模型本身进行评估,而与模型相关的其他指标,特别是商业指标,往往无法直接获得。

进行A/B 测试的主要手段是将用户划分为实验组和对照组,对实验组的用户施以新模型,对对照组的用户施以就模型。在划分用户的过程过程中,要注意样本的独立性(同一用户每次只能划分到一个分组中)和采样方式的无偏性(划分过程中选取的usr_id 是一个随机数)。

 5. 模型评估中的验证方法

Holdout检验: 将原始的样本集合随机划分为训练集和验证集两部分。训练集用于模型训练, 验证集用于模型验证。 缺点:在验证集上计算出来的最后评估指标与原始分组有很大关系。

交叉验证: 最常见的是k-fold 交叉验证。首先将全部样本划分成k个大小相等的样本子集;依次遍历这k个子集,每次把当前子集作为验证集,其余所有子集作为训练集,进行模型的训练和评估;最后把k次评估指标的平均值作为最终的评估指标。在实际实验中,k经常取10。

自助法(Bootstrap) : 对于总数为n 的样本集合,进行n次有放回的随机采样,得到大小为n的训练集合。n次采样过程中,有的样本会被重复采样,有的样本没有被抽出过,将这些没有被抽出的样本作为验证集,进行模型验证。

  在自助采样过程中。对于样本进行n次自助抽样,当n趋于无穷大时,最终有多少数据从未被选择过?

一个样本在一次抽样过程中未被抽中的概率为 $1 - \frac{1}{n} $, n次抽样均未被抽中的概率为 $(1-\frac{1}{n})^n$。 当n趋于无穷大时,概率为 

 6. 超参数调优

网格搜索: 网格搜索可能是最简单,应用最广泛的超参数搜索算法,它通过查找搜索范围内的所有的点来确定最优值。在实际应用中,我们一般会先使用较广的搜索范围和较大的步长,来寻找全局最优值可能的位置;然后会逐渐缩小搜索范围和步长,来寻找更精确的最优值。

随机搜索: 在搜索范围内随机选取样本点而不是测试上界和下界之间之间的所有值。它的理论依据是如果样本点足够大,那么通过随机采样也能大概率找到全局最优值或者近似值、。

贝叶斯优化算法:贝叶斯优化算法通过对目标函数的形状进行学习,找到使目标函数向全局最优值提升的参数。具体来说,它的学习目标函数形状的方法是,首先根据先验分布,假设一个搜集函数;然后每一次使用新的采样点来测试目标函数时,利用这个信息来更新目标函数的先验分布;最后,算法测试由后验分布给出的全局最优最可能出现的位置的点。对于贝叶斯算法,有一个需要注意的地方,一旦找到一个局部最优值,它就会在该区域不断采样,所以很容易陷入局部最优值。为了弥补这个缺陷,贝叶斯优化算法会在探索和利用直接找到一个平衡点,“探索”就是在还未取样的区域获取采样点;而“利用”则是根据后验分布在最可能出现的全局区域最值进行采样。

 7. 在模型评估过程中,过拟合现象和欠拟合现象具体是指什么?

过拟合是指模型对于训练数据拟合过当的情况,反应到评估指标上,就是模型在训练集上表现很好,但是在测试集和新数据上表现较差。 欠拟合是指模型在训练和预测时表现都不好的情况。

IMG

8. 常见的降低过拟合和欠拟合风险的方法

 降低过拟合风险的方法

(1) 获取更多的数据集,或者通过一定的规则来扩充训练数据, 如在图像分类问题上,可以通过平移、旋转、缩放等方法来扩充数据;更进一步地,可以通过对抗生成网络来合成大量的新训练数据。

(2)降低模型的复杂度。当数据较少,模型过于复杂是产生过拟合的主要因素,适当降低模型复杂度可以避免模型拟合过多的采样噪声。例如,在神经网络中减少网络层数、神经元个数等;在决策树模型中降低树的深度、进行剪枝等。

(3)正则化方法。 给模型的参数加上一定的正则约束,比如,将权值的大小加入到损失函数中。以L2正则化为例:$C = C0 + \frac{\lambda}{2n}\dot\sum{i}{w_i}^2$。 这样在优化原来目标函数$C_0$ 的同时,也能避免权值过大带来的过拟合风险。

(4)集成学习方法。集成学习是把多个模型集成在一起,来降低模型的过拟合风险。

 降低欠拟合风险的方法

(1)添加新特征。 当特征不足或者现有特征与样本标签的相关性不强时, 模型容易出现欠拟合。

(2)增加模型复杂度。简单模型的学习能力较差,通过增加模型的复杂度可以使模型拥有较强的拟合能力。例如,在线性模型中添加高次项,在神经网络中添加网络层数或神经元个数等。

(3)减小正则化洗漱。正则化是用来防止过拟合的,但当模型中出现欠拟合现象时,则需要有针对性地减少正则化系数。

补充:添加特征时,通过挖掘“上下文特征”、“ID 类特征”、“组合特征”等新的特征,往往能取得更好的效果,在深度学习中,有很多模型可以帮助完成特征工程,如因子分解机、梯度提升策略树、Deep-crossing等都可以成为丰富特征的方法


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!