百面机器学习W2

百面机器学习笔记
第二章模型评估
在这里插入图片描述
在这里插入图片描述
这一章节比较多,评估要选择和问题相匹配的评估方法,才能快速的发现模型选择或训练过程中出现的问题,能够迭代的对模型进行优化,莫i选哪个评估分为离线评估和在线评估

Q1准确率的局限性(将奢侈品推荐给有钱的用户)

A1准确率是指分类正确的样本站总样本个数的比例,当负样本占99%时,分类器把所有的样本都预测为负样本也可能获得99%的准确率,这种情况是不同类别的样本的比例非常的不平均时,占比大的类别往往成为影响准确率的最主要的因素,模型可能对整体的准确率很高,但是对于想要的小数量样本的分类准确率是高的,可以使用更有效地平均准确率作为模型评估的指标

Q2精确率与召回率的权衡(找火爆的剧准确率很高,但是找一些冷门的剧的时候却找不到)

A2精确率是指分类正确的正样本个数占分类器判别为正样本的个数的比例
,召回率是指分类正确的正样本个数占真正的正样本个数的比例
比如在排序问题中没有确定的阈值来把结果直接判别为正样本或者负样本,采用topN返回结果的PR值来衡量模型的性能,模型返回的topN的值就是模型判别的正样本,两个衡量指标是矛盾统一的关系,那么在排序模型就是视频查询的逻辑抽象,冷门视频排名靠后,问题是出现在召回率上,相关的结果有100个,现在找到top5,现在的精确率达到了100%,召回率也仅是5%,那么就最好采用绘制模型的PR曲线,横轴是召回率,纵轴是精确率,在曲线下面为小于阈值的结果是负样本,原点附近代表阈值最大时模型的精确率和召回率。
在这里插入图片描述
召回率接近0时,A 的P为0.9,B的P为1.0,说明B得分前几位的样本全部是真正的正样本,A得分高的几个样本中也有预测错误的情况,当召回率为1时,A的精确率反超了B,说明只用某个点对应的精确率和召回率是不能全面衡量模型的性能的。此外F1 score和ROC曲线也能反映性能

Q3 我们希望构建一个回归模型来预测某部剧的流量趋势,无论哪个回归模型,得到的RMSE指标都很高然而,模型在95%的时间区间内的预测误差都小于1%,纳闷RMSE指标很高的原因是什么?平方根误差的意外

A3 RMSE经常用来衡量回归模型的好坏,但是题目中出现了失效,计算公式为
在这里插入图片描述
yi为第i个样本点的真实值,yiba为第i个样本点的预测值,n为样本点的个数。一般情况下,他能很好的反映回归模型预测值和真实值的偏离程度,但是如果存在个别的偏离程度很大的离群点,即使离群点数量很少,也会让指标变得很差,模型在95%的时间区间内的预测误差都小于1%,说明大部分的时间是优秀的,但是指标一直很差,就是这5%的时间区间内存在非常严重的离群点。在实际中就是噪音点是很容易产生的,比如流量很小的美剧,甚至一些相关媒体突发事件带来的流量,都可能造成离群点。
解决方法从三个角度来考虑:
如果认为离群点是噪音点,就在数据预处理时将噪音点过滤掉;如果不认为是噪音点的话,就去进一步提高模型的预测能力,让离群点产生的机制建模进去;可以找一个更合适的指标去评估模型,比如平均绝对百分比误差,他把每个点的误差进行了归一化,降低了个别离群点带来的绝对误差的影响
在这里插入图片描述

Q4 ROC曲线经常作为评估二值分类器的重要指标,那么什么是ROC曲线?

横坐标为假阳性率FPR,纵坐标为真阳性率TPR
FPR=N个负样本中被分类器预测为正样本的个数FP/真实的负样本的个数N
TPR=P个正样本中被分类器预测为正样本的个数TP/真实的正样本的个数P
举一个医院诊断病人的例子。 假设有10位疑似癌症患者, 其中有3位很不幸确实患了癌症(P=3) ,另外7位不是癌症患者(N=7) 。 医院对这10位疑似患者做了诊断, 诊断出3位癌症患者, 其中有2位确实是真正的患者(TP=2) 。 那么真阳性率TPR=TP/P=2/3。 对于7位非癌症患者来说,有一位很不幸被误诊为癌症患者(FP=1) , 那么假阳性率FPR=FP/N=1/7。 对于“该医院”这个分类器来说, 这组分类结果就对应ROC曲线上的一个点(1/7, 2/3)

Q5如何绘制ROC曲线

A5如果只是从单纯应试的角度来看,有一个方法就是从最高分开始动态地调整截断点,每次调整对应着一个FPR和TPR,这个阶段点就是阈值,小于阈值的预测为负例

Q6 如何计算AUC

A6 AUC就是ROC曲线下面积的大小,该值量化的反映了模型的性能,所以沿着ROC曲线做积分就好了,AUC越大,说明分类器越可能把真正的正样本排在前面,分类性能越好

Q7 ROC预先相比于P-R曲线有什么特点

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

Q8 在机器学习问题中,通常将特征表示为向量的形式,所以在分析两个 向量的相似性时,常用余弦相似度来表示,取值范围为[-1,1]如果想要得到类似于距离的表示,将1减去余弦相似度即可,则取值范围为[0,2]什么时候使用余弦相似度而不用欧式距离

A8 余弦相似度的定义为两个向量夹角的余弦,关注向量之间的角度关系而不关心大小关系,当一对样本的相似度的长度差距很大但内容很相近时如果使用词频或者词向量,那么特征空间中欧氏距离的差距很大,此外在文本图像视频领域研究对象的维度本来就很高,欧氏距离的数值容易受到维度的影响,范围不固定,并且含义也比较模糊
比如在Word2Vec中,向量的模长是经过归一化的,此时欧式距离和余弦距离有着单调的关系
在这里插入图片描述
在这里插入图片描述

其中|| A−B ||2表示欧氏距离, cos(A,B)表示余弦相似度, (1−cos(A,B))表示余弦距离。 在此场景下, 如果选择距离最小( 相似度最大) 的近邻, 那么使用余弦相似度和欧氏距离的结果是相同的。
例如, 统计两部剧的用户观看行为, 用户A的观看向量为(0,1), 用户B为(1,0); 此时二者的余弦距离很大, 而欧氏距离很小; 我们分析两个用户对于不同视频的偏好, 更关注相对差异, 显然应当使用余弦距离。 而当我们分析用户活跃度, 以登陆次数(单位: 次)和平均观看时长(单位: 分钟)作为特征时, 余弦距离会认为(1,10)、 (10,100)两个用户距离很近; 但显然这两个用户活跃度是有着极大差异的, 此时我们更关注数值绝对差异, 应当使用欧氏距离。

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

A9 距离的定义为:在一个集合中,如果每一对元素均可唯一确定一个实数,使得三条距离公理(正定性,对称性,三角不等式)成立,则该实数可称为这对元素之间的距离
余弦距离满足正定性和对称性,但不满足三角不等式,因为不是严格定义的距离
正定性的证明,余弦距离的定义公式
在这里插入图片描述
分子大于等于0,所以整体大于等于0
对称性的证明:
在这里插入图片描述
三角不等式:
在这里插入图片描述
三角不等式的另一种思考方式,可以考虑余弦距离与欧式距离之间的关系:
在这里插入图片描述

在机器学习领域 中被俗称为距离但是不满足三条距离公理的不仅仅有余弦距离,还有KL距离,叫做相对熵,用于计算两个分布之间的差异

Q10 在互联网公司中,A/B测试时验证新模块,新功能,新产品是否有效,新算法,新模型的效果是否有提升,新设计是否受到用户的欢迎,新更改是否影响用户体验的主要测试方法,A/B测试时验证模型有效效果的主要手段,那么在对模型进行过充分的离线评估之后,为什么还要进行在线的A/B测试?

A10 离线评估无法消除模型过拟合的影响,离线评估无法完全模拟线上的实时数据分布和模型的真实应用情境,因此无法消除过拟合的影响;在线上,模型可能面临新的、不同于历史数据的情境。例如,用户行为可能因季节性变化、广告活动等而发生变化。线上评估可以更好地反映模型在真实环境中的性能
离线评估无法还原线上的工程环境,一个推荐系统在离线评估时可能使用历史交互数据,但忽略了用户在实时环境中的即时反馈和行为;在线上,模型需要在真实环境中应对实时的请求和用户行为。延迟、数据丢失等问题可能会对模型的性能产生实质性的影响
商业指标无法计算的问题, 离线评估主要关注模型本身的性能,例如改进的评估指标如ROC曲线、P-R曲线等。但它无法直接测量与业务相关的指标,比如用户点击率、留存时长;在推荐系统中,上线了新的算法,线上评估可以通过A/B测试来比较不同算法对用户点击率、留存时长等商业指标的影响

Q11 如何进行线上A/B测试

A11 进行用户分桶,将用户分为实验组和对照组,一组用新模型,另一组用旧模型,确保同一用户每次只能分到同一个桶中,在分桶过程中所选取的user_id需要是一个随机数, 这样才能保证桶中的样本是无偏的。

Q12 如何划分实验组和对照组,公司的算法工程师们最近针对系统中的“美国用户”研发了一套全新的视频推荐模型A, 而目前正在使用的针对全体用户的推荐模型是B。 在正式上线之前, 工程师们希望通过A/B测试来验证新推荐模型的效果。 下面的三种划分方法哪组是正确的 :(1)根据user_id(user_id完全随机生成) 个位数的奇偶性将用户划分为实验组和对照组, 对实验组施以推荐模型A, 对照组施以推荐模型B; (2)将user_id个位数为奇数且为美国用户的作为实验组, 其余用户为对照组;(3) 将user_id个位数为奇数且为美国用户的作为实验组, user_id个位数为偶数的用户作为对照组。

A12 都不正确,方法一没有区分出美国用户,实验组与对照组对实验结果有稀释,方法二对照组被稀释,方法三对照组被稀释(有点子弱智)

Q13 在模型评估过程中,有哪些主要的验证方法,他们的优缺点是什么?

A13Holdout检验,交叉检验,自助法
Holdout检验:它将原始的样本集合随机划分成训练集和验证集两部分。 比方说, 对于一个点击率预测模型, 我们把样本按照70%~30% 的比例分成两部分, 70% 的样本用于模型训练; 30% 的样本用于模型验证, 包括绘制ROC曲线、 计算精确率和召回率等指标来评估模型性能。Holdout 检验的缺点很明显, 即在验证集上计算出来的最后评估指标与原始分组有很大关系。 为了消除随机性, 研究者们引入了“交叉检验”的思想。
交叉验证:
k-fold交叉验证,将所有的样本划分为k个大小相等的样本子集,遍历k个子集,每次把当前子集作为验证集,其他的作为训练集最后把k次评估指标的平均值作为最终的评估指标,k通常取10
留一验证每次留下1个样本作为验证集, 其余所有样本作为训练集。 样本总数为n, 依次对n个样本进行遍历, 进行n次验证, 再将评估指标求平均值得到最终的评估指标。 在样本总数较多的情况下, 留一验证法的时间开销极大。 事实上,留一验证是留p验证的特例。 留p验证是每次留下p个样本作为验证集, 而从n个元素中选择p个元素有 种可能, 因此它的时间开销更是远远高于留一验证, 故而很少在实际工程中被应用。
自助法:以上的两个都是基于划分训练集和测试集的方法,当样本规模较少的时候,可能影响模型的训练效果,自助法是基于自助采样法的检验方法。对于总数为n的样本集合, 进行n次有放回的随机抽样, 得到大小为n的训练集。 n次采样过程中,有的样本会被重复采样, 有的样本没有被抽过, 将这些没有被抽出的样本作为验证集, 进行模型验证, 这就是自助法的验证过程。

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

在这里插入图片描述
在这里插入图片描述

Q15 超参数调优方法

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

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

A16 过拟合是指模型对于训练数据拟合呈过当的情况, 反映到评估指标上, 就是模型在训练集上的表现很好, 但在测试集和新数据上的表现较差。欠拟合指的是模型在训练和预测时表现都不好的情况。过拟合的情况, 模型过于复杂, 把噪声数据的特征也学习到模型中, 导致模型泛化能力降,在后期应用过程中很容易输出错误的预测结果。
在这里插入图片描述

Q17 降低过拟合和欠拟合风险的方法

A17
降低过拟合的方法:
数据:更多的数据,更多的数据能够学习到更加有效的特征,减少噪音的干扰,或者通过一定形式来扩充训练数据,或者可以使用生成对抗网络来合成大量的新数据
降低模型的复杂度:可以避免拟合过多的噪声,在神经网络中每减少网络层数,神经元个数,子啊决策树模型中降低树的深度进行剪枝
正则化方法:给模型的参数加上一定的正则约束,比如将权值的大小加入到损失函数中,在L2正则化中在优化原来的目标函数的同时也能避免权值过大带来的过拟合风险
集成学习方法:将多个模型集成在一起,来降低单一模型的过拟合风险,比如Bagging方法
降低欠拟合的方法:
增加新的特征,通过挖掘新的特征,在深度学习中,很多的模型都可以帮助完成特征工程,银子分解机,梯度提升决策树,Deep-crossing等
增加模型的复杂度,比如在线性模型中加入高次项,在神经网络模型中增加网络层数或者神经元的个数
减少正则化系数

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值