您的位置 首页 > 数码极客

python如何评价拟合的好坏


在本文中,我们将继续进行机器学习讨论,并将重点放在与数据过度拟合相关的问题上,以及控制模型的复杂性,模型评估和错误引入,模型验证和调整以及提高模型性能。

过度拟合

过度拟合是预测分析和机器学习中最大的担忧之一。过度拟合是指选择适合训练数据的模型拟合得太好,并且实际上捕获了所有噪声,离群值等的情况。

这样的结果是,该模型将很好地拟合训练数据,但不能准确地预测训练数据未表示的案例,因此不能很好地推广到看不见的数据。这意味着训练数据比测试数据的模型性能更好。

当模型更倾向于过度拟合时,模型具有较高的方差;而当模型无法很好地拟合数据时,则具有较高的偏差。高方差模型将趋于相当灵活且过于复杂,而高偏差模型将趋于自以为是且过于简化。高偏差模型的一个很好的例子是将直线拟合到非常非线性的数据。

在这两种情况下,模型都不会对新数据做出非常准确的预测。理想的情况是找到一个模型,该模型不会过度偏倚,也不会具有高方差。找到这种平衡是数据科学家的关键技能之一。

过度拟合的发生可能有多种原因。一个常见的问题是,训练数据包含许多与观测值或数据点数量有关的特征。在这种情况下,数据比较长。

为了解决此问题,减少功能部件数量可能会有所帮助,或者在可能的情况下查找更多数据。减少功能的缺点是您会丢失潜在的有价值的信息。

另一种选择是使用一种称为正则化的技术,该技术将在本系列的后面部分讨论。

控制模型复杂度

模型的复杂性可以用很多东西来描述,并且有点主观。在机器学习中,模型复杂性通常是指给定的预测模型中包含的特征或术语的数量,以及所选模型是否为线性,非线性等。它也可以指算法学习复杂性或计算复杂性。

过于复杂的模型难以解释,存在过度拟合的风险,并且在计算上可能会更昂贵。

有一些真正复杂且自动化的方法可以用来控制并最终降低模型的复杂性,并有助于防止过拟合。他们中的一些人还可以帮助选择特征和模型。

这些方法包括线性模型和子集选择,收缩方法(包括正则化)和降维。

正则化本质上保留所有特征,但是减少(或惩罚)某些特征对模型的预测值的影响。减小的效果来自于缩小模型项系数的大小,从而缩小了效果。

两种最受欢迎的正则化方法是岭回归和套索。两种方法都涉及向模型添加调整参数(Greek lambda),该参数的设计目的是根据每个术语的大小或对模型的影响,对每个术语的系数施加惩罚。

项的系数大小越大,惩罚越大,这基本上意味着调节参数迫使系数越接近于零。选择用于调整参数的值很关键,可以使用诸如交叉验证之类的技术来完成。

套索技术的工作方式与岭回归非常相似,但是也可以用于特征选择。这是由于以下事实:每个预测变量的惩罚项的计算略有不同,并且由于某些项的系数可能变为零,因此可能导致某些项变为零。这实际上从模型中删除了这些术语,因此是自动特征选择的一种形式。

在特定情况下,Ridge回归或套索技术可能会更好。套索通常对响应最好根据少量预测变量进行建模的数据效果更好,但这不能保证。交叉验证是一种相对于另一种技术的绝佳技术。

在给定一定数量的预测变量(特征)的情况下,仅使用全部预测变量的子集就可以创建可计算数量的可能模型。一个示例是您有10个预测变量,但只想使用10个预测变量中的2个来查找所有可能的模型。

这样做,然后根据最小的测试误差选择模型之一,这称为子集选择,有时也称为最佳子集选择。注意,对于子集选择而言,一个非常有用的图是针对每个模型针对预测变量的数量绘制残差平方和(稍后讨论)。

当预测变量的数量足够大时,最佳子集选择将无法处理给定预测变量子集的大量可能的模型组合。在这种情况下,可以使用称为逐步选择的另一种方法。有两个主要版本,向前和向后逐步选择。

在正向逐步选择中,从零个预测变量开始,一次将一个预测变量添加到模型中,直到包括所有预测变量为止。向后逐步选择是相反的,它涉及从包含所有预测变量的模型开始,然后在每个步骤中删除单个预测变量。

在这两种情况下,模型性能都会在每个步骤中进行评估。在子集选择和逐步选择中,测试误差都用于确定最佳模型。有许多估计测试错误的方法,这将在本系列的后面部分讨论。

有一个概念涉及高维数据(即大量特征),称为维数诅咒。维度的诅咒是指随着数据维度(功能)数量的增加,所需的计算速度和存储量呈指数增长。

这可能表现为机器学习算法无法很好地扩展到高维数据的问题。解决此问题的一种方法是选择一种可以更好地扩展数据的算法。另一种是称为降维的技术。

降维

降维是一种用于减少机器学习过程中包含的特征数量的技术。它可以帮助降低复杂度,降低计算成本并提高机器学习算法的计算速度。可以将其视为一种将原始预测变量转换为新的,较小的预测变量集的技术,然后将其用于拟合模型。

先前在特征选择的背景下讨论了主成分分析(PCA),但它也是一种广泛使用的降维技术。它通过查找,分离和排序解释数据中最大差异的特征(以降序排列)来帮助减少特征(即维度)的数量。交叉验证是确定要包含在模型中的主要组件数量的好方法。

这样的一个示例是一个数据集,其中每个观察都由十个特征描述,但是只有三个特征可以描述大多数数据方差,因此足以用于创建模型并生成准确的预测。

请注意,人们有时会使用PCA来防止过度拟合,因为较少的功能意味着模型不太可能过度拟合。尽管PCA可以在这种情况下工作,但这不是一个好的方法,因此不建议使用。应该使用正则化来解决过度拟合的问题。

模型评估与性能

假设您使用的是高质量,无偏见且具有代表性的数据,那么预测分析和机器学习的下一个最重要的方面是测量模型性能,并在需要时进行改进,并了解经常遇到的潜在错误。

我们将在此处进行有关模型性能,改进和错误的介绍性讨论,但是在下一篇文章中将继续对这些主题进行更详细的介绍。

模型性能通常用于描述模型能够对看不见的数据(例如,测试但不训练数据)进行预测的能力,并且有多种方法和指标用于评估和衡量模型性能。模型性能的关键指标是估计模型的测试误差。

可以间接或直接估计测试误差。由于训练误差在某种程度上是过拟合(偏差和/或方差)的量度,因此可以通过进行影响训练误差的更改来间接地估算和调整。

回想一下,模型对数据的过度拟合(高方差)越多,模型推广到看不见的数据的能力就越差。鉴于此,假设是减少方差也会改善测试误差。

也可以通过使用保留的测试数据对模型进行测试来直接估计测试误差,并且通常与重采样方法(例如交叉验证)结合使用时效果最好,稍后我们将对其进行讨论。

估计模型的测试误差不仅有助于确定模型的性能和准确性,而且还是选择模型的一种非常有效的方法。

改善模型性能并整合学习

有许多方法可以改善模型的性能。所使用的数据的质量和数量对模型性能具有巨大的影响,即使不是最大的影响,但有时很难轻易更改这两者。

影响模型性能的其他主要因素包括算法调整,特征工程,交叉验证和集成方法。

算法调整是指调整某些值的过程,这些值可以有效地初始化和控制机器学习算法如何学习和生成预测模型。此调整可用于使用单独的验证数据集来提高性能,并随后使用测试数据集进行性能测试。

由于大多数算法调整参数是特定于算法的,有时非常复杂,因此本文不进行详细讨论,但是请注意,为正则化描述的lambda参数就是这样的调整参数。

如之前的文章中所述,集成学习涉及对多个学习模型的结果进行组合或取平均值(回归)以提高预测性能。在某些情况下(分类),可以将集成方法视为多数投票获胜的投票过程。

两种最常见的合奏方法是套袋(aka引导聚合)和增强。两者都有助于改善模型性能并减少方差(过度拟合)和偏差(欠拟合)。

套袋是一种通过多次替换对训练数据进行采样的技术。每次创建新的训练数据集并将模型拟合到样本数据时。然后将模型合并以产生整体模型输出,该输出可用于测量模型性能。

提升是一种旨在将一组所谓的弱学习者转变为单个强学习者的技术。用简单的英语来说,将弱学习者看作是比随机猜测仅稍好预测的模型,而强学习者认为是比随机猜测更好地预测一定精度的模型。

虽然复杂,但提升基本上是通过迭代创建弱模型并将其添加到单个强学习者中来进行的。在此过程发生时,将测试模型的准确性,然后应用权重,以便将来的学习者可以专注于改善以前未得到很好预测的案例的模型性能。

另一种非常流行的集成方法是随机森林。随机森林本质上是决策树和套袋的结合。

Kaggle可以说是世界上最负盛名的数据科学竞赛平台,其特色是由大多数著名的硅谷科技公司以及其他非常知名的公司发起和赞助的竞赛。诸如随机森林和助推之类的综合方法在赢得这些比赛中获得了很高的成功率。

模型验证和重采样方法

模型验证是机器学习过程中非常重要的一部分。验证方法包括创建模型并在验证数据集上对其进行测试。

产生的验证集误差提供了测试误差的估计值,对于定量响应,通常使用均方误差(MSE)进行评估;对于定性(离散)响应,则使用误分类率进行评估。

许多验证技术被归类为重采样方法,其中涉及将模型重新拟合为由一组训练数据形成的不同样本。

可能最流行和值得注意的技术称为交叉验证。交叉验证的关键思想是模型在训练集上的准确性是乐观的,并且更好的估计来自测试集上模型的准确性。然后的想法是在模型训练阶段估计测试集的准确性。

该过程涉及将数据重复拆分为不同的训练集和测试集,在训练集上构建模型,然后在测试集上对其进行评估,最后重复并平均估计的误差。

除了模型验证和防止过度拟合之外,交叉验证还可用于特征选择,模型选择,模型参数调整以及比较不同的预测变量。

交叉验证的一种流行的特殊情况称为k折交叉验证。该技术涉及选择一个数字k,该数字表示原始数据被划分为相同大小的分区数。划分后,将单个分区指定为验证数据集(即,用于测试模型),并将其余的k-1个数据分区用作训练数据。

请注意,通常选择的k越大,偏差越小,但方差越大,反之亦然。在交叉验证的情况下,无需替换即可进行随机抽样。

还有另一种技术涉及随机抽样和替换,称为引导。自举技术比交叉验证更容易低估误差。

另一个特殊情况是k = n时,即k等于观察数时。在这种情况下,该技术被称为留一法交叉验证(LOOCV)。


喜欢点下关注,你的关注是我写作的最大支持


责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“python如何评价拟合的好坏,python过拟合程度的评价代码”边界阅读