机器学习(第二章)—— 模型评估

2023-11-15

目录

一、评估指标的局限性

二、ROC曲线

三、余弦距离的应用

四、A/B测试的陷阱          

五、模型的评估方法

六、超参数优化

七、过拟合与欠拟合


准确率的局限性

精确率与召回率的权衡

平方根误差的“意外”

什么是ROC曲线?
为什么要进行在线A/B测试?

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

过拟合和欠拟合具体是指什么现象?

如何绘制ROC曲线?

如何计算AUC?

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

如何划分实验组和对照组?

模型评估过程中的验证方法及其优缺点

能否说出几种降低过拟合和欠拟合风险的方法?

ROC曲线相比P-R曲线有什么特点?

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

自助法采样在极限情况下会有多少数据从未被选择过?

超参数有哪些调优方法?

        在计算机科学特别是机器学习领域中,对模型的评估同样至关重要。只有选择与问题相匹配的评估方法,才能快速的发现模型选择或训练过程中出现的问题,迭代地对模型进行优化。模型评估主要分为离线评估在线评估两个阶段。针对分类、排序、回归、预测序列等不同类型的机器学习问题,评估指标的选择也有所不同。

一、评估指标的局限性

        在模型评估过程中,分类问题、排序问题、回归问题往往需要使用不同的指标进行评估。在诸多的评估指标中,大部分指标只能片面地反映模型的一部分性能。如果不能合理地运用评估指标,不仅不能发现模型本身的问题,而且会得出错误的结论。

1.准确率的局限性

举个例子

        Hulu的奢侈品广告主希望把广告定向投放给奢侈品用户。Hulu通过第三方的数据管理平台拿到一部分奢侈品用户的数据,并以此为训练集和测试集,训练和测试奢侈品用户的分类模型。该模型的分类准确率超过了95%,但在实际广告投放过程中,该模型还是把大部分广告投给了非奢侈品用户,这可能是什么原因造成的呢?

        我们先了解一下准确率的定义。准确率是指分类正确的样本总样本个数的比例。

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

        针对这个问题,可以使用更为有效的平均准确率每个类别下的样本准确率的算术平均)作为模型评估的指标。

2.精确率与召回率的权衡

        Hulu提供视频的模糊搜索功能,搜索排序模型返回 Top 5 的精确率非常高,但在实际使用过程中,用户还是搜索不到自己想要的内容,这是什么问题呢?

        要回答这个问题,首先要明确两个概念,精确率与召回率。精确率是指分类正确的正样本个数占分类器判定为正样本的样本个数的比例。召回率是指分类正确的正样本个数占真正的正样本个数的比例

        在排序问题中,通常没有一个确定的阈值把得到的结果直接判定为正样本或负样本,而是采用 Top N 返回结果的Precision值和Recall值来衡量排序模型的性能,即认为模型返回的Top N 的结果就是模型判定的正样本,然后计前N个位置上的准确率Precision N 和前N个位置上的召回率Recall N。

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

        针对刚才的问题,我们可以看出,问题出在召回率上,如果相关结果有100个,即使Precision 5 达到了100%,Recall 5 也仅仅是5%。在模型评估时,我们是否应该同时关注Precision和Recall呢?进一步而言,是否应该选取不同的Top N 的结果进行观察呢?是否应该选取更高阶的评估指标来更全面的反映模型在Precision和Recall两方面的表现?

        答案是肯定的。为了综合评估一个模型的好坏,不仅要看模型在不同Top N 下的Precision N 和Recall N ,而且最好绘制出模型的P-R曲线

        P-R曲线的横轴是召回率,纵轴是精确率。对于一个排序模型来说,其P-R曲线上的一个点代表着,在某一阈值下,模型将大于该阈值的结果判定为正样本,小于该阈值的结果判定为负样本,此时返回结果对应的召回率和精确率。整条P-R曲线是通过将阈值从高到低移动而生成的。图2.1是P-R曲线样例图,其中实线代表模型A的P-R曲线,虚线代表模型B的P-R曲线。原点附近代表当阈值最大时模型的精确率和召回率。

         由图可见,当召回率接近于0时,模型A的精确率为0.9,模型B的精确率是1,这说明模型B得分前几位的样本全部是真正的正样本,而模型A即使得分最高的几个样本也存在预测错误的情况。并且,随着召回率的增加,精确率整体呈下降趋势。但是,当召回率为1时,模型A的精确率反而超过了模型B。这充分说明,只用某个点对应的精确率和召回率是不能全面地衡量模型的性能,只有通过P-R曲线的整体表现,才能够对模型进行更为全面的评估
        除此之外,F1 score和ROC曲线 也能综合地反映一个排序模型的性能。F1 score是精准率和召回率的调和平均值,它定义为

3.平方根误差的意外

问题:我们希望构建一个回归模型来预测某部美剧的流量趋势,但无论采用那种回归模型,RMSE指标都非常高。然而事实是,模型在95%的时间区间内的预测误差都小于1%,取得了相当不错的预测结果。那么,造成RMSE指标居高不下的最可能的原因是什么?

        RMSE经常被用来衡量回归模型的好坏,但按照题目的叙述,RMSE这个指标却失效了。先看一下RMSE(平方根误差)的计算公式为

         其中y_i是第i个样本点的真实值,\hat{y_i}是第i个样本点的预测值,n是样本点的个数。

        一般情况下,RMSE能够很好地反映回归模型预测值与真实值的偏离程度。但在实际问题中,如果存在个别偏离程度非常大的离群点(Outlier) 时,即使离群点数量非常少,也会让RMSE指标变得很差。
        回到问题中来,模型在95%的时间区间内的预测误差都小于1%,这说明,在大部分时间区间内,模型的预测效果都是非常优秀的。然而,RMSE却一直很差,这很可能是由于在其他的5%时间区间内存在非常严重的离群点。事实上,在流量预估这个问题中,噪声点确实是很容易产生的,比如流量特别小的美剧、刚上映的美剧或者刚获奖的美剧,甚至--些相关社交媒体突发事件带来的流量,都可能会造成离群点。
        针对这个问题,有什么解决方案呢?可以从三个角度来思考。第一,如果我们认定这些离群点是“噪声点”的话,就需要在数据预处理的阶段把这些噪声点过滤掉。第二,如果不认为这些离群点是“噪声点”的话,就需要进一步提高模型的预测能力将离群点产生的机制建模进去(这是一个宏大的话题,这里就不展开讨论了)。第三,可以找一个更合适的指标来评估该模型。关于评估指标,其实是存在比RMSE的鲁棒性更好的指标,比如平均绝对百分比误差(Mean Absolute Percent Error,MAPE) ,它定义为

        相比RMSE,MAPE相当于把每个点的误差进行了归一化降低了个别离群点带来的绝对误差的影响

二、ROC曲线

        二值分类器是机器学习领域中最常见也是应用最广泛的分类器。评价二值分类器的指标很多,比如Precision、recall、F1 score、P-R曲线等。ROC曲线也经常作为评估二值分类器最重要的指标之一

1.什么是ROC曲线?

        ROC(Receiver Operating Curve)曲线的横坐标为假阳性率(False Positive Rate,FPR),纵坐标为真阳性率(True Positive Rate,TPR)。FPR和TPR的计算方法分别为:

FPR=\frac{FP}{N}

TPR=\frac{TP}{P}

        上式中,P是真实的正样本的数量,N是真实的负样本的数量,TP是P个正样本中被分类器预测为正样本的个数,FP是N个负样本的中被分类器预测为正样本的个数。

        举个例子:假设有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)。

2.如何绘制ROC曲线?

        事实上,ROC曲线是通过不断移动分类器的“截断点”来生成曲线上的一组关键点的,通过下面的例子进一步来解释“截断点”的概念。
        在二值分类问题中,模型的输出一般都是预测样本为正例的概率。假设测试集中有20个样本,下表是模型的输出结果。样本按照预测概率从高到低排序。在输出最终的正例、负例之前,我们需要指定一个阈值,预测概率大于该阈值的样本会被判为正例,小于该阈值的样本则会被判为负例。比如,指定阈值为0.9,那么只有第一个样本会被预测为正例,其他全部都是负例。上面所说的“截断点”指的就是区分正负预测结果的阈值。通过动态地调整截断点,从最高的得分开始(实际上是从正无穷开始,对应着ROC曲线的零点),逐渐调整到最低得分,每一个截断点都会对应一个FPR和TPR,在ROC图上绘制出每个截断点对应的位置,再连接所有点就得到最终的ROC曲线。

         就本例来说,当截断点选择为正无穷时,模型把全部样本预测为负例,那么FP和TP必然都为0,FPR和TPR也都为0,因此曲线的第一个点的坐标就是(0,0)。当把截断点调整为0.9时,模型预测1号样本为正样本,并且该样本确实是正样本,因此,TP=1,20个样本中,所有正例数量为P=10,故TPR=TP/P=1/10;这里没有预测错的正样本,即FP=0, 负样本总数N=10,故FPR=FP/N=0/10=0,对应ROC曲线上的点(0,0.1) 。依次调整截断点,直到画出全部的关键点,再连接关键点即得到最终的ROC曲线,如下图所示。

         其实,还有一种更直观地绘制ROC曲线的方法。首先,根据样本标签统计出正负样本的数量,假设正样本数量为P,负样本数量为N;接下来,把横轴的刻度间隔设置为1/N,纵轴的刻度间隔设置为1/P;再根据模型输出的预测概率对样本进行排序(从高到低) ;依次遍历样本,同时从零点开始绘制ROC曲线,每遇到一个正样本就沿纵轴方向绘制一-个刻度间隔的曲线,每遇到一个负样本就沿横轴方向绘制一个刻度间隔的曲线,直到遍历完所有样本,曲线最终停在(1,1) 这个点,整个ROC曲线绘制完成。

3.如何计算AUC?

        AUC指的是ROC曲线下的面积大小,该值能够量化地反映基于ROC曲线衡量出的模型性能。计算AUC曲线只需要沿着ROC横轴做积分就可以了。AUC越大(一般在0.5~1),说明分类器越可能把真正的正样本排在前面,分类性能越好

4.ROC曲线相比P-R曲线有什么特点?

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

        下图为ROC曲线和P-R曲线的对比图,其中a和c是ROC曲线,b和d是P-R曲线。c和d则是将测试集中的负样本数量增加10倍后的曲线图。

        可以发现,P-R曲线发生了明显的变化,而ROC曲线形状基本不变。这个特点让ROC尽量降低不同测试集带来的干扰,更加客观地衡量模型本身的性能。

        这有什么实际意义呢?在很多实际问题中,正负样本数量往往很不均衡。比如,计算广告领域经常涉及转化率模型,正样本的数量往往是负样本数量的1/1000甚至1/10000。若选择不同的测试集,P-R曲 线的变化就会非常大,而ROC曲线则能够更加稳定地反映模型本身的好坏。所以,ROC曲线的适用场景更多,被广泛用于排序、推荐、广告等领域。但需要注意的是,选择P-R曲线还是ROC曲线是因实际问题而异的,如果研究者希望更多地看到模型在特定数据集上的表现,P-R曲线则能够更直观地反映其性能
 

三、余弦距离的应用

        本章的主题是模型评估,但其实在模型训练过程中,我们也在不断地评估着样本间的距离,如何评估样本距离也是定义优化目标和训练方法的基础

        在机器学习问题中,通常将特征表示为向量的形式,所以在分析两个特征向量之间的相似性时,常使用余弦相似度来表示余弦相似度的取值范围是[-1,1]相同的两个向量之间的相似度为1。如果希望得到类似于距离的表示,将1减去余弦相似度即为余弦距离。因此,余弦距离的取值范围为[0,2]相同的两个向量余弦距离为0,相似度越高,距离越短。

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

        对于两个向量A和B,其余弦相似度定义,即两个向量夹角的余弦,关注的是向量之间的角度关系并不关心它们的绝对大小其取值范围是[-1,1]当一对文本相似度的长度差距很大、但内容相近时,如果使用词频或词向量作为特征,它们在特征空间中的的欧氏距离通常很大;而如果使用余弦相似度的话,它们之间的夹角可能很小,因而相似度高。此外,在文本、图像、视频等领域,研究的对象的特征维度往往很高,余弦相似度在高维情况下依然保持“相同时为1,正交时为0,相反时为-1”的性质,而欧氏距离的数值则受维度的影响,范围不固定,并且含义也比较模糊

        在一些场景,例如Wor2Vec中,其向量的模长是经过归一化的,此时欧氏距离与余弦距离有着单调的关系,即

         其中,表示欧氏距离,表示余弦相似度,表示余弦距离。在此场景下,如果选择距离最小(相似度最大)的近邻,那么使用余弦相似度和欧氏距离的结果是相同的。

        总体来说,欧氏距离体现数值上的绝对差异而余弦距离体现方向上的相对差异。例如,统计两部剧的用户观看行为,用户A的观看向量为(0,1),用户B为(1,0);此时二者的余弦距离很大,而欧氏距离很小;我们分析两个用户对于不同视频的偏好,更关注相对差异,显然应当使用余弦距离。而当我们分析用户活跃度,以登陆次数(单位:次)和平均观看时长(单位:分钟)作为特征时,余弦距离会认为(1,10)、(10,100)两 个用户距离很近;但显然这两个用户活跃度是有着极大差异的,此时我们更关注数值绝对差异,应当使用欧氏距离。

2.余弦距离是否是一个严格定义的距离?

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

        余弦距离满足正定性和对称性,但是不满足三角不等式,因此它并不是严格定义的距离。具体来说,对于向量A和B,三条距离公理的证明过程如下。

  • 正定性:根据余弦距离的定义,有:

         考虑到,因此有恒成立。特别的,有

         因此余弦满足正定性。

  • 对称性:根据余弦距离的定义,有

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

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

 因此有,

         此外,也可以思考余弦距离 和欧氏距离的关系。从问题1中,我们知道单位圆上欧氏距离和余弦距离满足

 即有如下关系

        显然在单位圆上,余弦距离和欧氏距离的范围都是[0,2]。我们已知欧氏距离是一个合法的距离,而余弦距离与欧氏距离有二次关系,自然不满足三角不等式。具体来说,可以假设A B B C 非常近,其欧氏距离为极小量 u ;此时 A B C虽然在圆弧上,但近似在一条直线上,所以 A C 的欧氏距离接近于 2 u 。因此, A B B C 的余弦距离为 u 2 /2 A C 的余弦距离接近于 2 u 2 ,大于 A B B C的余 弦距离之和。

       

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

四、A/B测试的陷阱          

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

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

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

2.如何进行线上A/B测试?

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

3.如何划分实验组和对照组?

举个例子:

        H公司的算法工程师们最近针对系统中的“美国用户”研发了一套全新的视频推荐模型A,而目前正在使用的针对全体用户的推荐模型是B。在正式上线之前,工程师们希望通过A/B测试来验证新推荐模型的效果。下面有三种实验组和对照组的划分方法,请指出哪种划分方法是正确的?

(1)根据user_id(user_id完全随机生成)个位数的奇偶性将用户划分为实验组和对照组,对实验组施以推荐模型A,对照组施以推荐模型B
(2)将user_id个位数为奇数且为美国用户的作为实验组,其余用户为对照组;
(3)将user_id个位数为奇数且为美国用户的作为实验组,user_id个位数为偶数的用户作为对照组。
         答:上述3种A/B测试的划分方法都不正确。我们用包含关系图来说明三种划分方法,如图2.4所示。方法1(见图2.4(a))没有区分是否为美国用户,实验组和对照组的实验结果均有稀释;方法2(见图2.4(b))的实验组选取无误,并将其余所有用户划分为对照组,导致对照组的结果被稀释;方法3(见图2.4(c))的对照组存在偏差。正确的做法是将所有美国用户根据user_id个位数划分为试验组合对照组(见图2.4(d)),分别施以模型AB,才能够验证模型A的效果。
        下图为A/B测试中的划分方法(黄色为实验组,棕色前对照组)

五、模型的评估方法

        在机器学习中,我们通常把样本分为训练集和测试集训练集用于训练模型,测试集用于评估模型。在样本划分和模型验证的过程中,存在着不同的抽样方法和验证方法。本小节主要考察面试者是否熟知这些方法及其优缺点、是否能够在不同问题中挑选合适的评估方法

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

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

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

        一个样本在一次抽样过程中未被抽中的概率为n次抽样均未抽中的概率为。当n趋于无穷大时,概率为

        根据重要极限,,所以有:

         因此,当样本数很大时,大约有36.8%的样本从未被选择过,可作为验证集。

六、超参数优化

超参数有哪些调优方法?

        为了进行超参数调优,我们一般会采用网格搜索、随机搜索、贝叶斯优化等算法。在具体介绍算法之前,需要明确超参数搜索算法一般包括哪几个要素。一是目标函数,即算法需要最大化/最小化的目标;二是搜索范围,一般通过上限和下限来确定;三是算法的其他参数,如搜索步长。

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

七、过拟合与欠拟合

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

        过拟合是指模型对于训练数据拟合呈过当的情况,反映到评估指标上,就是模型在训练集上的表现很好,但在测试集和新数据上的表现较差。欠拟合指的是模型在训练和预测时表现都不好的情况。下图形象地描述了过拟合和欠拟合的区别。

        可以看出,图(a)是欠拟合的情况,拟合的黄线没有很好地捕捉到数据的特征,不能够很好地拟合数据。图(c)则是过拟合的情况,模型过于复杂,把噪声数据的特征也学习到模型中,导致模型泛化能力下降,在后期应用过程中很容易输出错误的预测结果。

2.说出几种降低过拟合和欠拟合的方法

(1)降低过拟合的方法

  • 更多的训练数据。使用更多的训练数据是解决过拟合问题最有效的手段,因为更多的样本能够让模型学习到更多更有效的特征,减小噪声的影响。当然,直接增加实验数据一般是很困难的,但是可以通过一定的规则来扩充训练数据。比如,在图像分类的问题上,可以通过图像的平移、旋转、缩放等方式扩充数据;更进一步地,可以使用生成式对抗网络来合成大量的新训练数据。
  • 降低模型复杂度。在数据较少时,模型过于复杂是产生过拟合的主要因素,适当降低模型复杂度可以避免模型拟合过多的采样噪声。例如,在神经网络模型中减少网络层数、神经元个数等;在决策树模型中降低树的深度、进行剪枝等。
  • 正则化方法。给模型的参数加上一定的正则约束,比如将权值的大小加入到损失函数中。以L2正则化为例。
         这样 ,在优化原来的目标函数C0 的同时,也能避免权值过大带来的过拟合风险。
  • 集成学习方法。集成学习是把多个模型集成在一起,来降低单一模型的 过拟合风险,如 Bagging 方法。
(2)降低欠拟合的方法
  • 添加新特征。当特征不足或者现有特征与样本标签的相关性不强时,模型容易出现欠拟合。通过挖掘 上下文特征 ”“ID 类特征 ”“ 组合特征”等新的特征,往往能够取得更好的效果。在深度学习潮流中,有很多模型可以帮助完成特征工程,如因子分解机、梯度提升决策树、 Deep-crossing等都可以成为丰富特征的方法。
  • 增加模型复杂度。简单模型的学习能力较差,通过增加模型的复杂度可以使模型拥有更强的拟合能力。例如,在线性模型中添加高次项,在神经网络模型中增加网络层数或神经元个数等。
  • 减小正则化系数。正则化是用来防止过拟合的,但当模型出现欠拟合现 象时,则需要有针对性地减小正则化系数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习(第二章)—— 模型评估 的相关文章

随机推荐

  • poll,epoll,select,poll与epoll的区别,LT模式与ET模式的区别

    文章目录 一 poll poll与select的区别 二 epoll select poll 与epoll的区别 LT模式与ET模式的区别 一 poll 以下图片来自Liunx高性能服务器编程 poll与select的区别 poll是个加强
  • 服务器u.2接口固态硬盘,固态硬盘的U.2接口为何物

    U 2接口我相信大家听到的次数肯定远远不如SATA MSATA M 2 PCIE这些接口 U 2即然被发明 为何一直没有真正的在市场上 扬名立万 呢 最重要的还是缺乏配套的主板资源 U 2原名叫SFF 8639 如果光听这个代号 估计没有多
  • 2022最新秋招+社招Android面试题汇总+解析(内含字节、网易等大厂面经)

    前言 目前的就业形式可以分为校招和社招两大战场 无形的竞争相当于是一场没有硝烟的厮杀 人才饱和的结果当然就是一阵阵卷麻了的哀嚎 不过 大家既然选择了Android 自然就得做好迎战的准备 最近一两个月 陆陆续续的秋招面经都出来了 但是在网上
  • 2020年全国平均工资出炉:IT行业超17万居首!网友:又是拖后腿的那个~

    2020年全国平均工资出炉了 2020年全国城镇非私营单位就业人员年平均工资为97379元 2020年全国城镇私营单位就业人员年平均工资为57727元 前三甲依次是信息传输 软件和信息技术服务业177544元 其次是科学研究和技术服务业13
  • codeblocks创建和使用静态库(C语言)

    静态库 扩展名为 a 或 lib 是包含函数的文件 用于在link阶段整合执行程序 动态链接库 扩展名 dll 是不在link阶段整合进执行程序中的 DLL文件在执行阶段动态调用 下面我们将用免费的开发工具CodeBocks开发静态库 创建
  • 【C++】在线IDE

    1 洛谷在线IDE https www luogu com cn ide 2 菜鸟工具 https c runoob com compile 12 3 Cloud Studio https cloudstudio net
  • 使用STM32CubeMX生成源码工程后,使用ST-LINK下载出现问题的解决方法

    第一次使用STM32CubeMX生成源码工程文件 各种时钟引脚资源配置好后 点击生成了Keil的工程 编译通过 连接ST LINK下载程序 第一次下载 一切正常 然后修改了一下程序 再次下载 出现找不到设备的提示 以为板子出了问题 又拿过来
  • Python 数组(Arrays)

    数组 Array 是有序的元素序列 若将有限个类型相同的变量的集合命名 那么这个名称为数组名 组成数组的各个变量称为数组的分量 也称为数组的元素 有时也称为下标变量 用于区分数组的各个元素的数字编号称为下标 数组是在程序设计中 为了处理方便
  • 为什么db是先写日志,而redis是后写日志

    预写式日志 Write Ahead Logging WAL 基本上所有的数据库都实现了这个WAL技术 来保证原子性和持久性 WAL的核心思想是 在数据写入到数据库之前 先写入到日志 这一定程度上也可以提高效率 因为不需要每次都和磁盘交互 可
  • 各种开源应用的实践经验

    在实际的项目中 很多地方需要用到开源项目 而现在的开源项目太多 从开源项目的首页去看的话 也未必能得到足够充分的信息 多数时候是选用淘汰法 选剩下两到三个项目然后自己再去一个一个地去试用 选择合适的开源组件确实是一件麻烦事 本文将记录下选择
  • Arthas 定位CPU跑满问题,源头竟是Apache Beanutils

    一 背景 大早上 线上k8s 机子 某个机子 cpu 飙高 导致k8s 健康检查失败 线上环境会自动执行jstack 上传到oss 通知到 钉钉告警群 直接分析锁 cpu 高的线程 二 过程分析 2 1 排查cpu 占用最高的线程 使用js
  • JAVA-0基础学习笔记-day01

    0基础学Java笔记day01 01 01 计算机基础知识 计算机概述 了解 A 什么是计算机 计算机在生活中的应用举例 计算机 Computer 全称 电子计算机 俗称电脑 是一种能够按照程序运行 自动 高速处理海量数据的现代化智能电子设
  • Java经典面试题 带答案(五)

    Java经典面试题 带答案 五 Java 面试笔试题汇总 一 编程语言 Java 2 二 软件工程方面 9 三 智力测试 9 四 数据库 12 五 Java框架方面 14 六 XML方面 17 七 网络基础方面 17 八 算法方面 19 1
  • eclispe黑色配色方案,插件配置

    http blog csdn net zhwangkaixuan article details 9303359 使用android官方的ADT感觉界面白色的太怪了 看就了眼睛不舒服 上网找了一个eclispe的插件可以定制编辑器的配色方案
  • Docker学习笔记05-----镜像仓库之官方Docker Hub

    官方Docker Hub https hub docker com 1 创建Repository 2 构建容器镜像 2 1 创建Dockerfile FROM java 8 MAINTAINER itmrl LABEL name hello
  • Qt颜色选择器(HSV)

    目录 引言 HSV颜色空间 实现思路 代码实现 引言 基于Qt实现的HSV颜色选择器 效果如下 HSV颜色空间 HSV Hue Saturation Value 是根据颜色的直观特征创建的颜色模型 如下图所示 Hue为色调 通过角度表示不同
  • 3_Nginx重载、热部署、日志切割

    文章目录 常用命令 重载配置文件 热部署 流程 日志切割 常用命令 获取帮助 nginx h 使用指定的配置文件 nginx c conf file 在命令行中覆盖配置文件中的指令 nginx g 指定运行目录 nginx p 发送信号 n
  • 【Vue学习笔记3】使用Vite开启一个Vue3工程项目

    1 什么是Vite Vite是一个web开发构建工具 Vite 的竞品是 Webpack 而且按照现在的趋势看 使用率超过 Webpack 也是早晚的事 Vite 主要提升的是开发的体验 Webpack启动调试环境需要 3 分钟都很常见 V
  • linux环境下的Qt编程问题解决

    1 gcc编译器无法使用 原因可能是没有安装g 终端输入命令 sudo apt get install g 2 编译程序报错Could not start process make qmake all 解决办法 终端输入命令 sudo ap
  • 机器学习(第二章)—— 模型评估

    目录 一 评估指标的局限性 二 ROC曲线 三 余弦距离的应用 四 A B测试的陷阱 五 模型的评估方法 六 超参数优化 七 过拟合与欠拟合 准确率的局限性 精确率与召回率的权衡 平方根误差的 意外 什么是ROC曲线 为什么要进行在线A B