“模型评估”面试知识点总结-百面机器学习系列2-创新互联
文章目录提示:在准备机器学习算法工程师面试的过程中,我主要参考《百面机器学习》去巩固自己的基础知识。本系列博客将以该书为主题,并以八股文的方式去概述整本书的内容,以尽量减少读者们的阅读作量,并方便读者可以随时随地的记忆背诵。
创新互联建站是一家集网站建设,谷城企业网站建设,谷城品牌网站建设,网站定制,谷城网站建设报价,网络营销,网络优化,谷城网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
建议:我还是认为读者们可以提前买一本《百面机器学习》,从前到后完全看一遍,然后再看我的博客去记忆背诵会更好些哈。
- 问题1:评估指标的局限性
- 问题2:ROC曲线的相关知识
- 问题3:余弦距离的应用
- 问题4:A/B测试的陷阱
- 问题5:模型评估的方法
- 问题6:超参数调优
- 问题7:过拟合与欠拟合
1.准确率的局限性:当不同类别的样本比例非常不均衡时,占比大的类别往往成为影响准确率的主要因素。 解决方式:可以使用更为有效的平均准确率(每个类别下的样本准确率的算术平均)作为模型评估的指标。
2.1)精确率是指分类正确的正样本个数占分类器判定为正样本个数的比例。召回率是指分类正确的正样本个数占真正的正样本个数的比例。
2)P-R曲线的横轴是召回率,纵轴是精确率。
3)只用一个点对应的精确率和召回率是不能全面地衡量模型的性能,只有通过P-R曲线的整体表现,才能够对模型进行更为全面的评估。
4)F1score和ROC曲线也能综合的反应一个模型的性能。 F1score是精确率和召回率的调和平均值,定义为:F1=(2PR/(P+R))
3.平方根误差(RMSE)一般能很好地反映回归模型预测值和真实值的偏离程度。但在实际问题中,如果存在个别偏离程度非常大的离群点时,即使离群点非常少,也会让RMSE指标变得很差。 解决方法:第一,如果认为这些离群点是噪音点,那么数据预处理过滤掉这些离群点;第二,如果不认为这些离群点是噪音点,就需要进一步提高预测能力,将离群点加入模型训练中;第三,找一个更合适的指标来评估该模型。
4.每个评估指标都有其价值,但如果只从单一的评估指标出发评估模型,往往会得出片面甚至错误的结论;只有通过一组互补的指标去评估模型,才能更好地发现并解决模型存在的问题。
1.ROC曲线又称为受试者工作特征曲线,其横轴为假阳性率纵轴为真阳性率。(FPR=FP/N; TPR=TP/P)
2.ROC曲线经常作为二值分类器的重要指标。在二值分类问题中,模型的输出一般都是预测样本为正例的概率。 ROC曲线是通过不断的移动分类器的“截断点”来生成曲线上的一组关键点的。(截断点就是区分正负预测结果的阈值)
3.AUC是指ROC曲线下的面积大小,能够量化地反映ROC曲线并衡量出模型的性能。ROC曲线一般处于y=x这条直线的上方,所以AUC取值一般为0.5~1之间。AUC越大,分类性能越好。
4.相比于P-R曲线,ROC曲线有一个特点,当正负样本的分布发生变化时,ROC曲线的形状能够基本保持不变,而P-R曲线的形状一般会发生较剧烈的变化。 这个特点让ROC曲线能够尽量降低不同分布的测试集带来的干扰,更加客观地衡量模型本身的性能。 如果研究者希望更多地看到模型在特定数据集上的表现,P-R曲线则能够直观地反映其性能。
1.常使用余弦相似度来表示两特征向量之间的相似性,余弦相似度的取值范围为[-1,1],相同的向量相似度为1。如果希望得到类似于距离的表示,将1减去余弦相似度即为余弦距离。
2.探讨为什么在一些场景中要使用余弦相似度而不是欧氏距离?
1)当一对文本相似度的长度差距很大、但内容相近时,如果使用词频或词向量作为特征,他们在特征空间中的欧氏距离通常很大;而如果使用余弦相似度的话,它们之间的夹角可能很小,因而相似度高。
2)余弦相似度在高维情况下依然保持“相同时为1,正交时为0,相反时为-1”的性质,而欧氏距离的数值受维度的影响,高维度下范围不固定,并且含义比较模糊。
3)欧氏距离体现数值上的绝对差异,余弦距离体现方向上的相对差异。
3.余弦距离满足正定性和对称性,但不满足三角不等式,因此他不是严格定义的距离。 除此之外,KL距离,也叫相对熵,它常用于计算两个分布间的差异,但不满足对称性和三角不等式。
1.为什么对模型进行充分的离线评估之后,还要进行在线A/B测试原因如下:1)离线评估无法完全消除模型过拟合的影响,因此,得出的离线评估结果无法完全替代线上评估结果。
2)离线评估无法完全还原线上的工程环境。一般来讲,离线评估往往不会考虑线上环境的延迟、数据丢失、标签数据缺失等情况。因此,离线评估的结果是理想工程环境下的结果。
3)线上系统的某些无法直接获得的商业指标在离线评估中无法计算。
2.如何进行线上A/B测试?A/B测试(也称为分割测试或桶测试)是一种将两种模型相互比较以确定哪个模型的性能更好的方法。进行A/B测试的主要手段是进行用户分桶,即将用户分成实验组和对照组,对实验组的用户施以新模型,对对照组的用户施以旧模型。在分桶的过程中,要注意样本的独立性和的采样方式的无偏性,确保同一个用户每次只能分到同一个桶中,在分桶过程中所选取的user-id需要是一个随机数,这样才能保证桶中的样本是无偏的。
1.常用评估方法:Holdout检验;交叉验证;自助法
1)Holdout检验是最简单也是最直接的验证方法,它将原始的样本集合随机划分成训练集和验证集两部分。 缺点:在验证集上计算出来的最后评估指标与原始分组有很大关系。为了消除随机性,研究者引入了交叉检验的思想。
2)交叉检验:K-fold交叉验证;留1验证(是留p验证的特例)
3)对于Holdout或者交叉检验都是基于划分训练集和测试集的方法进行模型评估的。然而,当样本规模比较小时,将样本集进行划分会让训练集进一步减小,这可能会影响模型的训练效果。 解决方法:自助法是基于自助采样法的检验方法。对于总数为n的样本集合,进行n次有放回的随机抽样,得到大小为n的训练集。n次采样过程中,有的样本会被重复采样,有的样本没有被抽过,将这些没有被抽过的样本作为验证集,进行模型验证,这就是自助法的验证过程。
2.在自助采样过程中,对n个样本进行n次自助抽样,当n趋于无穷大时,最终有多少数据从未被选择过? 用极限的思想可解的:当样本数据无穷大时,大约36.8%的样本从未被选择过,其可作为验证集。
1.超参数调优常用方法:网格搜索、随机搜索、贝叶斯优化等算法。
2.超参数调优一般包括的几个要素:1)目标函数,即算法需要大化/最小化的目标。2)搜索范围,一般通过上限和下限来确定。3)算法的其他参数,如搜索步长等。
3.1)网格搜索:它通过查找搜索范围内的所有点来确定最优值。较大搜索范围较小步长,很大概率找到全局最优值。但这种方法,对于有较多需调节的超参数时,十分消耗计算资源和时间。在实际应用中,网格搜索法一般会先使用较广的搜索范围和较大的步长,来寻找全局最优值可能的位置;然后再逐渐缩小搜索范围和步长,来寻找更精确的最优位置。这种方式,可以降低所需的时间和计算量,但由于目标函数一般是非凸的,所以很可能错过全局最优值。
2)随机搜索的思想与网格搜索比较相似,只是不再测试上界和下界之间的所有值,而是在搜索范围内随机选择样本点。它的理论依据是,如果样本集足够大,那么通过随机采样也能大概率地找到全局最优值或其近似值。
3)贝叶斯优化算法:
网格搜索和随机搜索在测试一个新起点时,会忽略前一个点的信息;而贝叶斯优化算法会充分利用之前的信息。贝叶斯优化算法通过对目标函数形状进行学习,找到能使目标函数向全局最优值提升的参数。具体来说,它学习目标函数形状的方法是,首先根据先验分布,假设一个搜集函数;然后,每一次使用新的采样点来测试目标函数时,利用这个信息更新目标函数的先验分布;最后,算法测试由后验分布给出的全局最值最可能出现的位置的点。
贝叶斯算法缺点:一旦它找到了一个局部最优值,它会在该区域不断的采样,所以很容易陷入局部最优值。为了弥补这个缺陷,贝叶斯优化算法会在探索和利用之间找一个平衡点,“探索”就是在还未取样的区域获取采样点;而“利用”则是根据后验分布在最可能出现全局最值的区域进行采样。
1.过拟合是指模型对于训练数据拟合呈现过当的情况,反映到评估指标上,就是模型在训练集上的表现很好,但在测试集和新数据上的表现较差。 欠拟合是指模型在训练和测试时表现都不好的情况。
2.解决过拟合的方法:1)从数据入手,通过各种方式(数据扩充、GAN网络合成数据等)得到更多的数据用于训练。 2)降低模型复杂度(这样可以避免模型拟合过多的采样噪声) 3)正则化方法 4)采用集成学习方法。
3.解决欠拟合的方法:1)添加具有明显类别差异性的新特征。 2)增加模型复杂度。 3)如果添加了正则化项,适当减小正则化系数。
注:这些知识点是作者在备战秋招的时候,把《百面机器学习》这本书看了n遍后,为了方便自己背诵,进行了八股文形式的总结。(写作目的:主要用于各位小伙伴们的知识交流,如若侵权,则会及时删除)。
祝愿您能顺利通过每一次面试哈,干就完事了!加油!
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
当前文章:“模型评估”面试知识点总结-百面机器学习系列2-创新互联
转载来源:http://pwwzsj.com/article/cejsds.html