【干货】欠拟合与过拟合、训练集以及交叉检验等一系列问题

“探索数字”,选择“星号”或“固定”

重干货,尽快发货

【导读】昨天参加了一个学术报告讨论,突然发现大部分同学在日常工作或者写论文时经常会低估模型的误差,尤其是在使用交叉核对的时候,这种误差估计的行为趋于更严重。因此,本文对建模评估中的欠拟合与过拟合、训练集与测试集、交叉检查等一系列问题进行了梳理和梳理,希望能够阐明如何正确进行模型评估。

1 过拟合和欠拟合

在上一篇文章中,我们提到希望借助统计学习的方法,把握现有数据中的规律,从而能够预测和控制未来/未知。虽然是从已有数据中把握规律,但显然我们的重点还是在预测上。

既然我们在做预测,难免会有是非问题,预测的准确性问题。如果使用精度不够的模型,可能会影响轻量级的生产,最坏的情况是导致事故。到时候,如果孔明先生不能准确预测东风,那也算不上什么大事,但一切都结束了。

当然机器学习防止过拟合,高预测准确率不仅意味着通过学习得到的模型对现有数据有很好的预测能力,更重要的是它对未来和未知数据也能有很好的预测能力。能力。但是在具体的执行层面,由于我们没有未来的数据,为了全面评估模型的性能,我们一般可以将现有的数据集分为两部分: 一部分数据作为训练集, 模型用于训练;剩下的数据作为模型性能评估的测试集。 (具体划分比例需要根据实际情况调整,一般情况下我们会使用60%~80%左右的数据进行训练,剩下的样本用于测试)。

实际上,我们需要将数据分成训练集进行测试的原因是很好理解的。如果我只有一个训练数据集,不管是模型训练还是模型测试,都是在训练集上进行的,有点类似于在运动会上,我们既是运动员又是裁判,有点奇怪不管你怎么看。

一般我们把在训练集上计算出来的误差叫做训练误差,在测试集上计算出来的误差叫做测试误差(也叫泛化误差)。一般来说,我们通过比较测试误差的程度来选择模型。

举一个简单的例子,例如,我们正在研究客户流失。我们在集合 D 中有 1000 个样本。我们使用随机抽样从中选择 800 个样本作为训练集,剩下的 200 个作为测试集。划分集合后,我们可以在训练集 S 上训练模型,然后在测试集 T 上评估结果。如果在训练集中,我们有 700 个样本被正确分类,那么训练集的准确率为700/800*100%=87.5%,而在测试集中,如果我们只有150个样本正确分类,那么测试集的正确率是150/200*100%=75%。

虽然一般来说,训练集的准确率要高于测试集,但我们认为训练集的预测准确率不能用来评价模型的预测能力。直观上看,与上面类似,这就产生了“裁判和运动员的问题”。此外,这可能会导致过度拟合问题。

让我们再看一下下面的例子,对包含 10 个样本的数据集执行线性回归,构建多项式:M=1、M=3、M=5 和 M=9(注意 M=9,因为如果它包含常数项,它实际上包含10个参数)

(1)首先我们选择了一个线性项的回归模型,我们拟合了一条直线。可见数据拟合的效果不好,不仅距离远从训练数据来看,也有波动的情况,拟合不好,可以想象模型无论是在训练集上还是在测试集上都有很大的误差,由于对变量考虑不够或者模型估计不够形式上,这种训练数据基本上在特征拟合不好的时候,我们称之为“欠拟合”。

(2)进一步,当我们选择M=3时,虽然拟合曲线不能完美拟合所有的点,但基本可以很好的拟合数据趋势,基本可以反映自变量与因变量。模型在训练集和测试集中的误差可能比较低,比较合适。

(3)接下来,我们进一步测试揉。当我们选择M=6时,发现曲线的拟合效果进一步提高,与实际数据非常接近;最后,我们选择 M=9 ,可以发现拟合曲线经过所有样本点,效果达到最佳状态,训练误差为0。虽然这是训练集中最好的状态,但正是因为样本数据学得这么好,会导致我们的泛化能力大大下降。要知道我们的训练集中有噪声!这种学习训练中数据的所有特征(包括噪声特征)的状态集合称为“过拟合”,过拟合状态在测试集数据上的表现往往比训练集差很多;

其实我们选择M=3的时候,已经学习了训练数据的基本特征,此时模型比较简单,所以可以选择多项式(M=3)作为最终选择。

从上面的例子我们可以看出,随着模型复杂度的增加(比如更多参数),训练误差也会减小,直到趋于0(甚至等于0)。但是对于测试误差, 不是. 开始时, 随着模型复杂度的增加, 测试误差逐渐减小, 直到模型符合实际数据条件到最低水平. 如果在此基础上模型复杂度继续增加, 测试误差将从最低点开始再次增加。

下图展示了模型复杂度与模型误差的关系。

从上图我们可以清楚的看到模型复杂度并不是越高越好。事实上,模型越复杂,就越容易“过拟合”,所以总的来说我们更喜欢“更简单”的模型,而这个想法确实与著名的“奥卡姆剃刀”一致,都是巧合。

“奥卡姆剃刀”是14世纪逻辑学家奥卡姆的威廉提出的。在统计学习领域,我们可以将其翻译为“如果有两个预测能力相当的模型,我们应该选择更简单的一个”。

一般来说,欠拟合的问题比较明显,无非是因为选择的特征不够或者选择的学习算法不够强,无法学习。相反,过拟合的问题更加复杂。很多时候我们不知道问题是不是过拟合造成的,或者问题有多严重,因为总是无法避免过拟合。外貌。因此,如何选择合适的机型成为当务之急。

2个训练集、验证集和测试集

一般来说,为了准确评估模型的性能,我们可以将整个数据集分为两部分,一部分用于训练模型得到估计的参数(训练集);另一部分用于评估模型误差得到准确率(测试集)

进一步,在一些实践中,比如分类问题,我们往往事先并不知道哪个算法是最优的,而且不同的算法还包含大量需要手动设置的超参数。在这些情况下,我们经常需要划分另一个验证集来选择特定的超参数,因此数据集也可以分为训练集、验证集和测试集。

步骤:

(1)首先按一定比例分为广义训练集A和测试集T;

(2)由于我们还需要一个验证集,所以我们将训练集S和验证集V从广义训练集A中按比例划分;

(3)我们在训练集S上使用不同的算法/参数得到模型,然后使用验证集V来评估每个模型的性能。经过这一步,我们得到了最优算法/参数配置;

(4)根据得到的最优配置,我们在广义训练集A(即S+V)上重构模型,得到最终模型;

(5)使用最终模型对测试集的T检验结果进行评估测试。

注意:

a):在步骤(3)中,将广义训练集A通过随机方法直接划分为训练集S和验证集V,我们一般称之为预留法。划分这里的方法不仅可以使用随机抽样,还可以选择分层抽样,可以在一定程度上保持分布的一致性;

b):对于leave-out方法,只是直接切分,可能会给模型带来一定的不确定性,所以现阶段可以选择Cross Validation(简称CV);

c):我们选择模型和超参数后,有文章说可以根据整体数据集(包括测试集)重新训练得到最终的模型,虽然测试集的数据信息可以可以使用,但是会带来的问题是我们没有办法对这个模型的结果做出正确的评价,这会带来一定的应用风险。

2.1 坚持分层抽样

预留方法的意思是直接把总数据D分成两个对立的集合,训练集S和测试集T,我们有S+T=D,S和T的交集相等到空集;

举一个简单的例子,例如,我们正在研究客户流失。我们在 D 集中有 1000 个样本。我们使用随机抽样从中选择 800 个样本作为训练集,剩下的 200 个作为测试集。

划分集合后,我们可以在训练集S上训练模型,然后在测试集T上评估结果。如果在训练集中,我们有700个样本正确分类,那么分类准确率为700/ 800*100%=87.5%,而在测试集中,如果我们只有150个样本正确分类,那么分类准确率为150/200*100%=75%。

但实际上,这种方法存在一定的问题。由于我们采用完全随机抽样的方式,这可能会因为抽样划分的问题而改变原始数据分布。

例如,在上面的 1000 个样本中,200 个客户被标记为流失客户,800 个客户被标记为普通客户。

接下来,我们从数据集 D 中随机选择 800 个样本作为训练集,200 个样本作为测试集。但是由于抽样问题,训练集中有 100 名流失客户,测试集中另外有 100 名客户。

让我们回顾一下分配比例。最初在数据集 D 中,流失客户的分布率为 20%。划分后,我们在训练集中的损失率只有12.5%,而在测试集中的损失率达到50%。很明显,我们的数据分布与原来的数据分布相比发生了很大的变化,这很可能给我们的模型训练和评估带来很大的隐患。

因此,为了避免这种情况,我们在使用leave-out方法划分训练集和测试集时,也会使用分层抽样的方法。

回到最初的例子,我们可以随机选择 200 个流失客户中的 80% 进入训练集,20% 进入测试集;然后从800个非流失客户中抽取80%进入训练集,剩下的20%放回测试集。值得注意的是,划分训练集和测试集的方法有很多种。通过抽样方法的结合,完全可以帮助我们更好地确定训练集和测试集的组成;

当然,如果我们还需要划分验证集,也可以在训练集、验证集和测试集中分别使用分层抽样的方法。

2.2 交叉验证

虽然set-out方法可以通过分层抽样解决数据分布不均的问题,但是由于我们需要取出一部分数据作为检验,所以总会有一部分数据不能用来构建一个模型,一个更好的选择就是cross-validation,也就是通常所说的CV。

交叉验证的方法是将整个数据集平均分成k份,首先取第一个子集数据作为测试集,剩下的k-1个子集数据作为训练集进行测试;然后取数据的第二部分。集合数据,剩下的k-1个数据子集在经过一个测试,不断来回,最后重复k次的过程,一般我们称之为k-fold cross-checking,交叉校验是一个很重要的一是在参数调整过程中。方法。

一般情况下,我们经常使用十重交叉检查。我们以 k=10 为例:

以上过程,我们称之为10折交叉检查。一般来说,在普通使用中,10折交叉校验比较常见,当然也有5折交叉校验和3折交叉校验。

此外,类似于留空法,可以使用重复抽样。对于交叉检查,也有不同的划分方法。因此,我们也可以使用不同的划分方法来重复交叉实验的方法。比如我们用不同的划分方法将数据划分为5次,每次划分为10折,那么我们称之为5次10折交叉测试

还有一种交叉验证的特殊情况,称为留一法。意思是我们让样本划分的数量k等于数据集D的样本数量n,即将样本集D划分为n个子集,每个子​​集只包含一个样本。这种方法的优缺点非常明显。优点是我们的训练集每次都非常接近原始数据集,训练集和测试集也可以对立起来,这样可以保证我们得到的结果是比较准确的。 但相对而言,采用这种方式也意味着我们的计算开销会显着增加。

2.3 交叉验证、超参数选择和正确评估

特别是,一般情况下,我们的交叉验证方法经常用于选择超参数,所以我们也可以使用交叉验证方法来划分验证集。但特别重要的是要注意,在使用交叉验证进行超参数选择时,您必须记住将测试集单独留在模型评估中。

所以基于这个前提,交叉验证的过程是:

(1)首先按一定比例分为广义训练集A和测试集T;

(2)k-fold cross-check:将之前的广义训练集A平均分成k份,首先取第一个子集数据作为验证集,剩下的k-1个子集数据作为训练集,一个实验;然后第二个数据子集作为验证集机器学习防止过拟合,剩下的k-1个数据子集做一个实验,不断来回,最后重复k次的过程.

同理,我们取k=10,超参数λ的选择范围为[1,2,3],例如:

需要注意的是,此时我们不能再基于广义训练集A选择超参数后对模型进行最终评估。如果将评估结果作为最终评估结果,那么问题是我们会大大低估模型的误差。正确的做法应该是使用我们单独预留的测试集T进行模型评估。这一点尤其需要注意!

模型性能的3个评价指标

之前,我们讨论了关于模型评估的那些事情。我们已经知道,要准确评估模型的性能,我们需要将数据分为训练集和测试集。在本期分享中,我们将进一步详细介绍模型的评价指标。

1

回归任务的性能指标

1.平均绝对误差 MAE

平均绝对误差(MAE,Mean Absolute Error)或 L1 范数损失,现在较少用作评估指标。

2.均方误差 MSE

均方误差(MSE,Mean Squared Error)是我们最常用的性能评估指标。

其实均方误差就是找我们模型的预测值和实际值的偏差,所以模型的均方误差越小越好。值得一提的是,对回归模型有印象的同学,在我们用最小二乘法求解回归问题时,其实会发现这就是损失函数。

3.均方根误差 RMSE

均方根误差 (RMSE)

均方误差的平方根也是一个常用的模型评价指标。从 MAE、MSE 到 RMSE,它们都是衡量我们的模型预测与现实的偏差的度量。直观上看,上述指标越小越好。但上述指标的一个问题是,这是一个“比较”指标,即通过均方误差,我们可以知道哪个模型的偏差最小,但我们不知道模型是否足够好,而这个指标的大小显然和数据的数量级有关。

例如,我们建立了一个回归模型来预测广州市区的房价。模型的RMSE为2000,我们认为模型效果可以接受。这是因为对于均价4万的房价预测,2000年的偏差只是5%的其中之一。但是,如果我们建立一个回归模型来预测中国一个均价为5000的小县城的房价,模型的RMSE为2000,这显然是不能接受的,因为偏差已经占平均值的40% .

4. 确定系数

由于MAE、MSE和RMSE的局限性,在传统的线性回归中,我们经常使用决定系数来评估模型。

决定系数的细节在上一篇文章(统计挖掘那些事-R先生的9个故事(理论+实战案例))中有详细介绍,这里不再赘述。但值得注意的是,决定系数似乎不受数据量级的限制,但与MSE等指标相比,决定系数只能评价线性模型的拟合程度,所以对于算法可能建立非线性模型,比如神经网络,我们仍然需要使用RMSE进行评估。

2

分类任务的性能指标

1.准确度和误差

对于分类任务,最常见的准确率和错误率。

模型错误率:

模型精度:

是指示性函数,但是当函数内容为真时,函数结果为1,否则为0.

2.精度、召回率和F值

模型准确率和错误率是最常用的指标,但有时仅使用模型准确率和错误率是不够的。为了说明这一点,我们以一个二元分类问题为例,假设我们构建了一个客户影响响应模型

表客户影响活动响应分析预测矩阵

预测客户反应

是的

错误

对客户的实际影响

是的

TP(真实例子)

FN(假反例)

错误

FP(误报)

TN(真实反例)

对于模型评估,可以使用一些常用的指标进行解释。

(1)模型准确度(Accuracy)

(2)模型精度(Precision)

模型精度又称为精度。如上所述,我们更关心的是对客户在这次营销活动中的反应的预测。因此,这里引入模型准确率,主要反映我们对目标类别的预测准确率。例如,建模者提供了一份有 100 人回复客户的列表,准确率研究了该列表中有多少客户实际回复了营销活动。

(3)模型召回(Recall)

模型召回也称为召回。既然我们可以精确地把注意力集中在注意力的类别上,那么分析工作可以结束了吗?回到这个案例,假设又得到了100个用户响应列表,准确率也很高。 90人实际响应了营销活动,准确率为90%。但问题是,如果最终响应的情况是 1000 人响应,那么我们只找到响应组的 9%,显然这个结果是不能接受的。因此,召回率可以用来衡量我们是否能够“抓住所有”目标情况。

需要注意的是,虽然我们希望模型的查准率和查全率能够比较高,但是模型查准率和查准率往往是相互制约的。为了提高准确率,往往需要将召回率降低,而提高召回率往往会降低准确率。综合考虑模型的查准率和查全率,可以使用P-R曲线。

如下图所示,P-R曲线的纵坐标和横坐标分别是模型的precision和recall。要绘制 P-R 曲线,我们可以先将模型的预测样本从高到低准确率排序。接下来,依次从高到低调整判断阈值,然后按照顺序阈值的调整顺序计算不同阈值的准确率和召回率。实际上,随着阈值逐渐降低,就是模型精度下降,召回率上升的过程。

图西瓜书中P-R曲线示意图

值得注意的是,在实际项目中,PR曲线往往不是那么平滑,很有可能在(0,1)和(1,0)二)的帮助下PR曲线,我们可以对模型做出很好的综合评价,当多个模型进行比较时,比如模型A的PR曲线完全“包络”了另一个模型C的PR曲线,可以认为模型A比模型C好。但是,当两个模型的PR曲线相交时,例如模型A和模型B的PR曲线可能由于相交而难以判断,这取决于我们的实际情况. .如果我们对模型的精度有更高的要求,我们可以选择模型A,当我们对模型的召回率有更高的要求时,我们可以选择模型B。

另一方面,如果我们对模型精度和召回率没有明显的“偏好”,我们实际上可以使用曲线下面积作为权衡。曲线下面积越大,模型越全面。性能越好。值得注意的是,作为面积的替代,我们还可以使用“平衡点”(BEP,Break-Even Point),即收益率=召回率的价值点进行比较。在上图中,模型A的平衡点高于模型B,因此我们可以认为模型A优于模型B。

(4)F 测量

在某些情况下,只考虑平衡点可能过于简单,那么我们可以使用F1 Measure。

其实F1值就是precision和recall的调和平均值。调和平均数常用于计算相同距离处速度不同时的平均速度。一段旅程,前半程时速60公里,后半程时速30公里(两者距离相等),则平均速度为两者与40的调和平均速度公里每小时。

但正如我们之前所说,在某些情况下,我们对精确率和召回率的重视程度不同。比如在体检的过程中,我们希望尽可能的了解检查者是否患有某种疾病。这时候,我们更关注召回率。再比如,在产品推荐中,我往往不想过多打扰客户,会更加注重精准。因此,我们可以在计算 F1 值时引入权重。我们不妨用它来表示召回与精度相比的重要性。加权调和平均计算如下:

显然当 =1 时,, 是指示符。

3.ROC 和 AUC

通常,我们的算法模型也会为我们生成预测概率。一般我们可以选择一个阈值,当预测概率大于这个阈值时,我们将其归类为正类。通常我们习惯选择0.5作为阈值。当然,根据实际任务需要,如果我们更加注重准确率,可以适当提高阈值。反之,如果我们更注重召回,阈值可以适当降低。

Receiver Operating Characteristic Curve(简称ROC曲线),类似于P-R曲线,我们根据预测概率对分类结果进行排序。然后,从高到低选​​择阈值对样本进行分类,计算“真实率”和“误报率”。因为一开始,阈值是最高的,所以所有样本都被归类为负类,“真率”和“假阳性率”都是0.随着阈值不断降低,直到所有样本都分类为阳性,此时“真率”和“假阳性率”都是1.真率和假阳性率的定义如下:

典型的ROC曲线如下图所示,图中对角线对应随机猜测结果。曲线下面积越大,模型效果越好。显然,如果模型 A 的 ROC 曲线完全覆盖了其他模型 B 的 ROC 曲线,我们可以说模型 A 的分类效果优于模型 B。最理想的模型是曲线直接到点(0,1),此时曲线下面积达到最大值,对于1.来说是比较客观的比较方法。面积也可以,数值越大越好模型的分类效果。我们称ROC曲线下面积为AUC(Area Under ROC Curve)

当然,因为在实际情况中AUC(Area Under ROC Curve)是由各个点连接而成的,一般没有上图那么平滑的曲线。通常我们得到的ROC曲线如下图所示。

关注后回复“视频课程”,即可获得全套机器学习38小时学习视频!

关注并回复“指南”,获取机器学习统计分析入门指南!

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论