模型评估

模型评估

1 评估指标的局限性

知识点:
准确率(Accuracy),精确率(Precision),召回率(Recall),均方根误差(RMSE)

问题:准确率的局限性
当负样本占99%时,分类器把所有样本都预测为负样本也可以获得99%的准确率。所以,当不同类别的样本比例非常不均衡时,占比大的类别往往成为影响准确率的最主要因素。为了解决这个问题,可以使用更有效的平均准确率(每个类别下的样本准确率的算术平均)作为模型评估的指标。

问题:精确率与召回率的权衡
精确率:预测为正样本的数据中,真实正样本的比例
召回率:真实正样本中,正确预测的比例

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

P-R曲线

问题:平方根误差的“意外”
RMSE能够很好地反应回归模型预测值与真实值的偏离程度。但在实际问题中,如果存在个别偏离程度非常大的离群点时,即使离群点数量非常少,也会让RMSE指标变得很差

解决方案:

  • 离群点是“噪声点”,过滤
  • 不是噪声点,进一步提高模型的预测能力,将离群点产生的机制建模进去
  • 鲁棒性更好的指标:平均绝对百分比误差MAPE,相当于把每个点的误差进行归一化,降低个别离群点带来的绝对误差的影响

2 ROC曲线
问题1 什么是ROC曲线?
横坐标FPR,纵坐标TPR。

FPR = FP/N
TPR = TP/P

问题2 如何绘制ROC曲线?
ROC曲线是通过不断移动分类器的“截断点”来生成曲线上的一组关键点:FPR,TPR

截断点就是区分正负预测结果的阈值

问题3 如何计算AUC?
AUC就是ROC曲线下的面积大小,该值能够量化地反应基于ROC曲线衡量出的模型性能。

AUC越大,说明分类器越可能把真正的正样本排在前面,分类性能越好。

问题4 ROC曲线相比P-R曲线有什么特点?
相比P-R曲线,ROC曲线有一个特点,当正负样本的分布发生变化时,ROC曲线的形状能够基本保持不变,而P-R曲线的形状一般会发生较剧烈的变化。

这个特点让ROC曲线能够尽量降低不同测试集带来的干扰,更加客观地衡量模型本身的性能。

3 余弦距离的应用

知识点:余弦相似度,余弦距离,欧氏距离,距离的定义

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

两个向量夹角的余弦,关注的是向量之间的角度关系,并不关心它们的绝对大小,余弦相似度取值范围为【-1,1】,余弦距离取值【0,2】

当一对文本相似度的长度差距很大,但内容相近时,如果使用词频或词向量作为特征,它们在特征空间中的欧氏距离通常很大;
而如果使用余弦相似度的话,它们之间的夹角可能很小,因而相似度高。

余弦相似度在高维情况下依然保持“相同时为1,正交时为0,相反时为-1”的性质。而欧式距离的数值则受维度的影响,范围不固定。

若向量模长经过归一化,则使用余弦相似度和欧式距离有单调的关系。

欧式距离体现数值上的绝对差异,余弦距离体现方向上的相对差异。

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

该题考察对距离的定义的理解

距离的定义:在一个集合中,如果每一对元素均可唯一确定一个实数,使得三条距离公里(正定性,对称性,三角不等式)成立,则该实数可称为这对元素之间的距离。

余弦定理满足正定性(非负)和对称性,但不满足三角不等式(即在三角形中两边之和大于第三边),因此它不是严格定义的距离。

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

4 A/B测试的陷阱

在互联网公司中,A/B测试是验证新模块、新功能、新产品是否有效,新算法、新模型的效果是否有提升,新设计是否受到用户欢迎,新更改是否影响用户体验的主要测试方法。
在机器学习领域中,A/B测试是验证模型最终效果的主要手段。

知识点:A/B测试,实验组,对照组

问题:在对模型进行过充分的离线评估之后,为什么还要进行在线A/B测试

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

问题:如何进行线上A/B测试?

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

问题:如何划分实验组和对照组?

5 模型评估的方法

知识点:Holdout检验、交叉验证、自助法(Bootstrap)、微积分

问题:在模型评估过程中,有哪些主要的验证方法,优缺点?

  • Holdout检验:
    最简单也是最直接的
    将原始的样本集合随机划分成训练集和验证集两部分
    缺点:在验证集上计算出来的最后评估指标与原始分组有很大关系。为了消除随机性,引入“交叉验证”

  • 交叉验证
    k-fold验证
    留一验证:时间开销大

  • 自助法
    不管是holdout检验还是交叉校验,都是基于划分训练集和测试集的方法进行模型评估的。然而,当样本规模比较小时,将样本集进行划分会让训练集进一步减小,可能会影响模型训练效果。
    自助法可以解决这个问题

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

问题:在自助法的采样过程中,对n个样本进行n次自主抽样,当n趋于无穷大时,最终由多少数据从未被选择?

6 超参数调优

为了进行超参数调优,一般采用网格搜索、随机搜索、贝叶斯优化等算法

超参数搜索算法包括:

  • 目标函数,即算法需要最大化/最小化的目标
  • 搜索范围,一般通过上限和下限来确定
  • 算法的其他参数,如搜索步长

算法

  • 网格搜索
    最简单、应用最广泛的超参数搜索算法,通过查找搜索范围内的所有点来确定最优值。
    实际应用中,网格搜索法一般会先使用较广的搜索范围和较大的步长,来寻找全局最优值可能的位置;然后会逐渐缩小搜索范围和步长,来寻找更精确的最优值。这种方案可以降低所需的时间和计算量,但由于目标函数一般是非凸的,所以很可能会错过全局最优值。

  • 随机搜索
    随机搜索的思想与网格搜索类似,只是不再测试上界和下界之间的所有值,而是在搜索范围中随机选取样本点。
    理论依据:如果样本点集足够大,那么通过随机采样也能大概率找到全局最优值,或其近似值。随机搜索一般会比网格搜索快,但结果没法保证

  • 贝叶斯优化算法
    贝叶斯优化算法在寻找最优最值参数时,采用了与网格搜索、随机搜索完全不同的方法。网格搜索和随机搜索在测试一个新点时,会忽略前一个点的信息;

而贝叶斯优化算法则充分利用了之前的信息。贝叶斯优化算法通过对目标函数形状进行学习,找到使目标函数向全局最优值提升的参数。

具体:它学习目标函数形状的方法是,首先根据先验分布,假设一个搜集函数(acquisition函数);然后,每一次使用新的采样点来测试目标函数时,利用这个信息来更新目标函数的先验分布;最后,算法测试由后验分布给出全局最值最可能出现的位置的点。

acquisition函数是一个权衡“探索(方差大)”和“利用(均值大)”的函数

对于贝叶斯优化算法,一旦找到了局部最优值,它会在该区域不断采样,所以很容易陷入局部最优值。
为了弥补这个缺陷,贝叶斯优化算法会在探索和利用之间找到一个平衡点,“探索”就是在还未取样的趋于获取采样点;而“利用”则是根据后验分布在最可能出现全局最值的趋于进行采样。

选均值最大的点“利用”,方差大的点作为“探索”。为什么?
均值代表期望的最终结果,当然越大越好,但不能每次都挑选均值最大的,因为有的点方差很大也有可能存在全局最优解。
均值代表这个点最终的期望效果,均值越大表示模型最终指标越大,方差表示这个点的效果不确定性,越大表示这个点不确定是否可能取得最大值,非常值得探索。

7 过拟合与欠拟合

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

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

问题:说出几种降低过拟合和欠拟合风险的方法?

  • 降低“过拟合”风险的方法
    (1)从数据入手,获得更多的训练数据。使用更多的训练数据就是解决过拟合问题最有效的手段。因为更多的样本能够让模型学习到更多更有效的特征,减小噪声的影响。当然,直接增加实验数据一般是困难的,但是可以通过一定的规则来扩充训练数据。
    (2)降低模型复杂度。在数据较少时,模型过于复杂是产生过拟合的主要因素,适当降低模型复杂度可以避免模型拟合过多的采样噪声。
    (3)正则化方法。给模型的参数加上一定的正则约束,比如将权值的大小加入到损失函数中。
    (4)集成学习方法。集成学习时把多个模型集成在一起,来降低单一模型的过拟合风险,如Bagging方法

  • 降低“欠拟合”风险的方法
    (1)添加新特征。当特征不足或者现有特征与样本标签的相关性不强时,模型容易出现欠拟合。
    (2)增加模型复杂度。
    (3)减小正则化系数。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100183.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号