前言

机器学习中,模型的拟合效果意味着对新数据的预测能力的强弱(泛化能力)。而程序员评价模型拟合效果时,常说“过拟合”及“欠拟合”,那究竟什么是过/欠拟合呢?什么指标可以判断拟合效果?以及如何优化?

欠拟合&过拟合的概念

注:在机器学习或人工神经网络中,过拟合与欠拟合有时也被称为“过训练”和“欠训练”,本文不做术语差异上的专业区分。

欠拟合是指相较于数据而言,模型参数过少或者模型结构过于简单,以至于无法学习到数据中的规律。

过拟合是指模型只过分地匹配特定数据集,以至于对其他数据无良好地拟合及预测。其本质是模型从训练数据中学习到了统计噪声,由此分析影响因素有:

  1. 训练数据过于局部片面,模型学习到与真实数据不相符的噪音;

  2. 训练数据的噪音数据干扰过大,大到模型过分记住了噪音特征,反而忽略了真实的输入输出间的关系;

  3. 过于复杂的参数或结构模型(相较于数据而言),在可以“完美地”适应数据的同时,也学习更多的噪声;如上图以虚线的区分效果来形象表示模型的拟合效果。Underfitting代表欠拟合模型,Overfitting代表过拟合模型,Good代表拟合良好的模型。

拟合效果的评估方式

现实中通常由训练误差及测试误差(泛化误差)评估模型的学习程度及泛化能力。

欠拟合时训练误差和测试误差在均较高,随着训练时间及模型复杂度的增加而下降。在到达一个拟合最优的临界点之后,训练误差下降,测试误差上升,这个时候就进入了过拟合区域。它们的误差情况差异如下表所示:

拟合效果的深入分析

对于拟合效果除了通过训练、测试的误差估计其泛化误差及判断拟合程度之外,我们往往还希望了解它为什么具有这样的泛化性能。统计学常用“偏差-方差分解”(bias-variance decomposition)来分析模型的泛化性能:其泛化误差为偏差、方差与噪声之和。

噪声(ε) 表达了在当前任务上任何学习算法所能达到的泛化误差的下界,即刻画了学习问题本身(客观存在)的难度。

偏差(Bias) 是指用所有可能的训练数据集训练出的所有模型的输出值与真实值之间的差异,刻画了模型的拟合能力。偏差较小即模型预测准确度越高,表示模型拟合程度越高。

方差(Variance) 是指不同的训练数据集训练出的模型对同预测样本输出值之间的差异,刻画了训练数据扰动所造成的影响。方差较大即模型预测值越不稳定,表示模型(过)拟合程度越高,受训练集扰动影响越大。如下用靶心图形象表示不同方差及偏差下模型预测的差异:

偏差越小,模型预测值与目标值差异越小,预测值越准确;

方差越小,不同的训练数据集训练出的模型对同预测样本预测值差异越小,预测值越集中;

“偏差-方差分解” 说明,模型拟合过程的泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。

当模型欠拟合时:模型准确度不高(高偏差),受训练数据的扰动影响较小(低方差),其泛化误差大主要由高的偏差导致。

当模型过拟合时:模型准确度较高(低偏差),模型容易学习到训练数据扰动的噪音(高方差),其泛化误差大由高的方差导致。

拟合效果的优化方法

可结合交叉验证评估模型的表现,可较准确判断拟合程度。在优化欠/过拟合现象上,主要有如下方法:

模型欠拟合

  • 增加特征维度:如增加新业务层面特征,特征衍生来增大特征假设空间,以增加特征的表达能力;

  • 增加模型复杂度:如增加模型训练时间、结构复杂度,尝试复杂非线性模型等,以增加模型的学习能力;

模型过拟合

  • 增加数据: 如寻找更多训练数据样本,数据增强等,以减少对局部数据的依赖;

  • 特征选择:通过筛选掉冗余特征,减少冗余特征产生噪声干扰;

  • 降低模型复杂度

  1. 简化模型结构:如减少神经网络深度,决策树的数目等。

  2. L1/L2正则化:通过在代价函数加入正则项(权重整体的值)作为惩罚项,以限制模型学习的权重。

    (拓展:通过在神经网络的网络层引入随机的噪声,也有类似L2正则化的效果)

  1. 提前停止(Early stopping):通过迭代次数截断的方法,以限制模型学习的权重。

  • 结合多个模型

  1. 集成学习:如随机森林(bagging法)通过训练样本有放回抽样和随机特征选择训练多个模型,综合决策,可以减少对部分数据/模型的依赖,减少方差及误差;

  2. Dropout:神经网络的前向传播过程中每次按一定的概率(比如50%)随机地“暂停”一部分神经元的作用。这类似于多种网络结构模型bagging取平均决策,且模型不会依赖某些局部的特征,从而有更好泛化性能。


往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑
本站qq群704220115,加入微信群请扫码:

【机器学习基础】说模型过拟合的时候,说的是什么?相关推荐

  1. 机器学习基础:模型评估(下)

    目录 1. 引言 2. 进一步评估 3. 机器学习中的偏差和方差种类 3.1 过拟合 3.2 欠拟合 3.3 训练曲线观察泛化性 3.4 模型偏差和方差(bias and variance) 3.4. ...

  2. 机器学习:防止模型过拟合的方法

    机器学习中造成过拟合的原因可能有以下几点: (1)数据有噪声 (2)训练数据不足,有限的训练数据 (3)训练模型过度导致模型非常复杂 防止过拟合的方法: 1.提前停止: 对模型进行训练的过程即是对模型 ...

  3. 机器学习基础:模型集成/集成学习

    目录 1. 什么是集成学习 1.1 分类器集成的结果 1.2 构造基分类器的三种方法 1.3 多个基分类器如何进行分类 2. 分析预测模型的泛化误差 3. 分类器集成方法 3.1 装袋法 Baggin ...

  4. 机器学习基础 HMM模型(隐马尔科夫)

    文章目录 一.马尔科夫链 1. 简介 2. 经典举例 3. 小结 二.HMM简介 1. 简单案例 2. 三个基本问题 三.HMM模型基础 1. 什么样的问题需要HMM模型 2. HMM模型的定义 3. ...

  5. 机器学习基础:模型评估(上)

    目录 1. 什么是一个优秀的分类器 2. 选择测试数据集 2.1 切分训练测试集 2.1.1 简单随机划分(random handout) 2.1.2 留一法(leave-one-out) 2.1.3 ...

  6. 机器学习基础之模型篇-----二元分类和多元分类

    机器学习是一个比较广阔的知识领域,涉及到很多数学统计和计算机的相关知识. 要想深入了解,需要系统学习和大量的时间. 但是如果我们很清楚地知道机器学习如果用一句话来概括就是:通过大量的训练,使得机器把输 ...

  7. 机器学习基础问题1|欠拟合与过拟合

    欠拟合模型,对已有数据的匹配性很差,但是对数据中的噪声不敏感 解决欠拟合问题的三个方法 (1) 增加特征项:在大多数情况下,欠拟合的出现是因为数据主要特征的提取缺失,因此可以在模型中加入更多的和原数据 ...

  8. 机器学习基础——生成模型和判别模型

    有监督学习方法可以再分为生成生成方法和判别方法 1.首先官方点的说法 生成模型,是去求出数据的联合概率分布,然后根据联合概率分布求出对应X的条件概率 P(y∣x)=P(x,y)P(x)P(y|x) = ...

  9. 【机器学习】一文深层解决模型过拟合

    一.过拟合的本质及现象 过拟合是指模型只过分地匹配特定训练数据集,以至于对训练集外数据无良好地拟合及预测.其本质原因是模型从训练数据中学习到了一些统计噪声,即这部分信息仅是局部数据的统计规律,该信息没 ...

最新文章

  1. sina微博api源码阅读之函数
  2. android怎么监听多点触摸_什么是多点触控技术,有哪些用途
  3. python类、对象、方法、属性之类与对象笔记
  4. NetBeans 时事通讯(刊号 # 117 - Sep 16, 2010)
  5. [Shder]物体溶解效果
  6. linux 重复执行脚本,防止shell脚本重复执行的代码
  7. leetcode53. 最大子序和详解——pygo
  8. [PHP]如何在百度(BAE)和新浪(SAE)的云平台使用PHP连接MySQL并返回结果数据
  9. [原创]电路仿真设计multisim 14安装,破解,汉化教程
  10. 淘宝搜索页面爬取数据
  11. win 2008无法远程桌面服务器,Windows 2008远程桌面无法连接的几个情况分析
  12. SNIP验证EDI文件
  13. Gartner:2017年十大科技趋势盘点
  14. android 二选一的按钮,选择框 RadioButton/Check - Android 入门教程
  15. linux系统工程师面试题答案整理
  16. 备战数学建模9-层次分析法模型
  17. PUCCH(2)格式与DTX检测(源于5G上行控制信道增强技术研究)
  18. [转帖]LNMP组件安装
  19. 单片机0 10秒计时C语言,基于单片机的秒,分,时的精确计时实现
  20. 爬虫(Spider)与反爬虫(Anti-Spider)

热门文章

  1. 从程序员到项目经理(十一):每个人都是管理者
  2. a:hover伪类在ios移动端浏览器内点击无效的解决方法
  3. 【python练习题】程序15
  4. Android开发——异步任务中Activity销毁时的问题
  5. centos6.2系统使用扩展源epel报错问题解决方法
  6. iOS-NSData与NSDictionary的互相转换
  7. mantis1.18升级1.2X方法
  8. 如何让采集的数据比原创还要原创!
  9. 为利用 QT 制作的项目设置图标
  10. 如何发表自己的第一篇SCI?