ML |机器学习模型如何检测和预防过拟合?

简介: ML |机器学习模型如何检测和预防过拟合?

ml_overfit

「过拟合」(overfitting)也称为过学习,它的直观表现是算法在训练集上表现好,但在测试集上表现不好,泛化性能差。同理,「欠拟合」(underfitting)也称为欠学习,它的直观表现是算法训练得到的模型在训练集上表现差,没有学到数据的规律。过拟合和欠拟合会导致模型在未知的数据集上表现较差。

如图,左中右分别代表欠拟合、适度拟合、过拟合三种情况。欠拟合在训练集和测试集上都表现较差;过拟合在训练集上表现较好,在测试集上表现较差;适度拟合则在训练集和测试集上都表现较好。

我们也可以从偏差和方差来看待过拟合和欠拟合,模型的泛化误差来自于两部分,分别称为偏差和方差。「偏差」(bias)是模型本身导致的误差,即错误的模型假设所导致的误差,它是模型的预测值的数学期望和真实值之间的差距。「高偏差意味着模型本身的输出值与期望值差距很大,因此会导致欠拟合问题」「方差」(variance)是由于对训练样本集的小波动敏感而导致的误差。它可以理解为模型预测值的变化范围,即模型预测值的波动程度。「高方差意味着算法对训练样本集中的随机噪声进行建模,从而出现过拟合问题」「如果模型过于简单,一般会有大的偏差和小的方差;反之如果模型复杂则会有大的方差但偏差很小。」这是一对矛盾,因此我们需要在偏置和方差之间做一个折中。如果我一模型的复杂度作为横坐标,把方差和偏差的值作为纵坐标,可以得到下图所示的两条曲线。

偏差方差与模型复杂度关系

下图为模型「迭代次数」(numbers of  iterations)即模型复杂度与训练集和测试集的错误率之间的关系。同样,模型越复杂,在训练集中表现越好,而在测试集中错误率则先下降后上升。因此找到关键点(sweet spot)对建立最优模型至关重要。

模型迭代次数与训练集验证机错误率的关系

Detection

由于过拟合是一个常见的问题,因此对其进行检测是非常必要的。要检测过拟合数据,前提是它必须用于测试数据。这方面的第一步是将数据集划分为独立的训练和测试集。如果模型在训练集上的表现比测试集上的好,那么它显然是过拟合的。

「Prevent」

在检测到过拟合后,现在模型需要消除它。有各种方法可以防止过拟合,包括:

  • 「使用更多的数据进行训练」:有时,可以通过训练使用更多数据的模型来避免过拟合。一个模型可以输入更多的数据,这样算法就可以更好地检测信号,而不会被过度拟合。然而,这并不是一个有保证的方法。简单地添加更多的数据,特别是当数据不干净的时候,弊大于利。
  • 「早期停止」(Early Stopping)::当一个模型通过多次重复进行训练时,可以对模型的每一次重复进行评估。有一种与重复相关的收益递减模式。最初,模型的性能不断提高,直到达到一个平台后,过拟合开始增加。提前停止是在这个点到来之前暂停这个过程。
    Early Stopping
  • 「正则化」(Regularisation)或「数据简化」:有时,即使有大量的数据,当一个模型过于复杂时,它也可能过拟合。这个问题可以通过删除参数的数量,或者对决策树模型进行剪枝(pruning down),或者在神经网络上使用dropout来解决。

dropout的做法是在训练时随机的选择一部分神经元进行正向传播和反向传播,另外一些神经元的参数值保持不变,以减轻过拟合。dropout机制使得每个神经元在训练时只用了样本集中的部分样本,这相当于对样本集进行采样,即bagging的做法。最终得到的是多个神经网络的组合。

  • 「删除特征」:这是关于具有内置特征选择的算法。删除不相关的输入特征可以提高模型的可泛化性。
  • 「集成学习」(Ensembling):集成学习是将多个独立模型的预测结合起来。最常用的组合技术是「套袋」(bagging)和「增强」(boosting)。
    Bagging是一种通过训练大量按顺序设置的弱学习者来减少模型过拟合的方法。这有助于顺序中的每个学习者从前面一个学习者的错误中学习。Boosting是把所有的弱学习者放在一个单一的序列中,让一个强学习者出现。套袋法适用于复杂的基础模型并使其预测变得平滑,而增强法则是使用基本模型,然后增加它们的总体复杂性。
  • 「数据增强」(Data augmentation):与使用更多数据的训练模型相比,数据增强是更便宜的选择。这种方法不是试图获取更多的数据,而是简单地试图使数据集看起来更加多样化,从而阻止模型学习数据集。这样,每当模型重复一个数据集时,它就显得不同。
    另一种类似于数据增强的方法是向输出数据添加噪声。在输入数据中添加适量的噪声可以稳定输入数据,而在输出数据中添加噪声则可以使数据集更加多样化。然而,大量的噪声也会干扰数据集。
  • 「交叉验证」(Cross-validation):在这种技术中,初始训练数据集被分割成几个小型训练-测试集。然后使用这些小型训练-测试集来调整模型的超参数。这使测试集在最终确定模型之前不可见。
    k-fold

参考

  1. https://analyticsindiamag.com/how-to-detect-and-prevent-overfitting-in-a-model/
  2. https://zhuanlan.zhihu.com/p/38224147

往期

  1. CNS图表复现|生信分析|R绘图 资源分享&讨论群!
  2. 这图怎么画| 有点复杂的散点图
  3. 这图怎么画 | 相关分析棒棒糖图
  4. 组学生信| Front Immunol |基于血清蛋白质组早期诊断标志筛选的简单套路
  5. (免费教程+代码领取)|跟着Cell学作图系列合集
  6. Q&A | 如何在论文中画出漂亮的插图?
  7. 跟着 Cell 学作图 | 桑葚图(ggalluvial)
  8. R实战 | Lasso回归模型建立及变量筛选
  9. 跟着 NC 学作图 | 互作网络图进阶(蛋白+富集通路)(Cytoscape)
  10. R实战 | 给聚类加个圈圈(ggunchull)
  11. R实战 | NGS数据时间序列分析(maSigPro)
  12. 跟着 Cell 学作图 | 韦恩图(ggVennDiagram)
相关文章
|
1月前
|
机器学习/深度学习 数据采集 数据挖掘
实战派教学:掌握Scikit-learn,轻松实现数据分析与机器学习模型优化!
【10月更文挑战第4天】Scikit-learn凭借高效、易用及全面性成为数据科学领域的首选工具,简化了数据预处理、模型训练与评估流程,并提供丰富算法库。本文通过实战教学,详细介绍Scikit-learn的基础入门、数据预处理、模型选择与训练、评估及调优等关键步骤,助你快速掌握并优化数据分析与机器学习模型。从环境搭建到参数调优,每一步都配有示例代码,便于理解和实践。
83 2
|
28天前
|
机器人
1024 云上见 使用 PAI+LLaMA Factory 微调 Qwen2-VL 模型,搭建 “文旅领域知识问答机器人” 领精美计时器
1024 云上见 使用 PAI+LLaMA Factory 微调 Qwen2-VL 模型,搭建 “文旅领域知识问答机器人” 领精美计时器
84 3
|
2月前
|
机器学习/深度学习 人工智能 分布式计算
使用PAI+LLaMA Factory 微调 Qwen2-VL 模型,搭建文旅领域知识问答机器人
本次教程介绍了如何使用 PAI ×LLaMA Factory 框架,基于全参方法微调 Qwen2-VL 模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
使用PAI+LLaMA Factory 微调 Qwen2-VL 模型,搭建文旅领域知识问答机器人
|
1月前
|
机器学习/深度学习 数据采集 监控
如何使用机器学习模型来自动化评估数据质量?
【10月更文挑战第6天】如何使用机器学习模型来自动化评估数据质量?
|
7天前
|
机器学习/深度学习 数据采集 监控
如何使用机器学习模型来自动化评估数据质量?
如何使用机器学习模型来自动化评估数据质量?
|
4天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
18 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
8天前
|
机器学习/深度学习 算法 PyTorch
用Python实现简单机器学习模型:以鸢尾花数据集为例
用Python实现简单机器学习模型:以鸢尾花数据集为例
25 1
|
1月前
|
数据采集 移动开发 数据可视化
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
这篇文章介绍了数据清洗、分析、可视化、模型搭建、训练和预测的全过程,包括缺失值处理、异常值处理、特征选择、数据归一化等关键步骤,并展示了模型融合技术。
53 1
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
|
17天前
|
机器学习/深度学习 数据采集 Python
从零到一:手把手教你完成机器学习项目,从数据预处理到模型部署全攻略
【10月更文挑战第25天】本文通过一个预测房价的案例,详细介绍了从数据预处理到模型部署的完整机器学习项目流程。涵盖数据清洗、特征选择与工程、模型训练与调优、以及使用Flask进行模型部署的步骤,帮助读者掌握机器学习的最佳实践。
54 1
|
20天前
|
机器学习/深度学习 数据采集 监控
如何使用机器学习模型来自动化评估数据质量?
如何使用机器学习模型来自动化评估数据质量?