定义

定义:给定一个假设空间H,一个假设h属于H,如果存在其他的假设h’属于H,使得在训练样例上h的错误率比h’小,但在整个实例分布上h’比h的错误率小,那么就说假设h过度拟合训练数据。 ———《Machine Learning》Tom M.Mitchell

出现过拟合的原因

1.  训练集的数量级和模型的复杂度不匹配。训练集的数量级要小于模型的复杂度;

2.  训练集和测试集特征分布不一致;

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

4.  权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征。

解决方案

(simpler model structure、 data augmentation、 regularization、 dropout、early stopping、ensemble、重新清洗数据

1.  simpler model structure

调小模型复杂度,使其适合自己训练集的数量级(缩小宽度和减小深度)

2.   data augmentation

训练集越多,过拟合的概率越小。在计算机视觉领域中,增广的方式是对图像旋转,缩放,剪切,添加噪声等。

3.  regularization

参数太多,会导致我们的模型复杂度上升,容易过拟合,也就是我们的训练误差会很小。 正则化是指通过引入额外新信息来解决机器学习中过拟合问题的一种方法。这种额外信息通常的形式是模型复杂性带来的惩罚度。 正则化可以保持模型简单,另外,规则项的使用还可以约束我们的模型的特性。

a)L0范数与L1范数

L0范数是指向量中非0的元素的个数。如果我们用L0范数来规则化一个参数矩阵W的话,就是希望W的大部分元素都是0即让参数W是稀疏的。 
L1范数是指向量中各个元素绝对值之和,也叫“稀疏规则算子”(Lasso regularization)。为什么L1范数会使权值稀疏?有人可能会这样给你回答“它是L0范数的最优凸近似”。实际上,还存在一个更美的回答:任何的规则化算子,如果他在Wi=0的地方不可微,并且可以分解为一个“求和”的形式,那么这个规则化算子就可以实现稀疏。W的L1范数是绝对值,|w|在w=0处是不可微, 
为什么L0和L1都可以实现稀疏,但常用的为L1?因为L0范数很难优化求解(NP难问题),二是L1范数是L0范数的最优凸近似,而且它比L0范数要容易优化求解。所以大家才把目光和万千宠爱转于L1范数。

综上,L1范数和L0范数可以实现稀疏,L1因具有比L0更好的优化求解特性而被广泛应用。 
那么 参数稀疏有什么好处 呢?这里扯两点: 
(1)特征选择(Feature Selection): 
大家对稀疏规则化趋之若鹜的一个关键原因在于它能实现特征的自动选择。一般来说,xi的大部分元素(也就是特征)都是和最终的输出yi没有关系或者不提供任何信息的,在最小化目标函数的时候考虑xi这些额外的特征,虽然可以获得更小的训练误差,但在预测新的样本时,这些没用的信息反而会被考虑,从而干扰了对正确yi的预测。稀疏规则化算子的引入就是为了完成 特征自动选择 的光荣使命,它会学习地去掉这些没有信息的特征,也就是把这些特征对应的权重置为0。 
(2)可解释性(Interpretability): 
另一个青睐于稀疏的理由是,模型更容易解释。例如患某种病的概率是y,然后我们收集到的数据x是1000维的,也就是我们需要寻找这1000种因素到底是怎么影响患上这种病的概率的。假设我们这个是个回归模型:y=w1*x1+w2*x2+…+w1000*x1000+b(当然了,为了让y限定在[0,1]的范围,一般还得加个Logistic函数)。通过学习,如果最后学习到的w*就只有很少的非零元素,例如只有5个非零的wi,那么我们就有理由相信,这些对应的特征在患病分析上面提供的信息是巨大的,决策性的。也就是说,患不患这种病只和这5个因素有关,那医生就好分析多了。但如果1000个wi都非0,医生面对这1000种因素,累觉不爱。

b)L2范数

除了L1范数,还有一种更受宠幸的规则化范数是L2范数: ||W||2。它也不逊于L1范数,它有两个美称,在回归里面,有人把有它的回归叫“岭回归”(Ridge Regression),有人也叫它“权值衰减”(weight decay)。 weight decay还有一个好处,它使得目标函数变为凸函数,梯度下降法和L-BFGS都能收敛到全局最优解。 
L2范数是指向量各元素的平方和然后求平方根。我们让L2范数的规则项||W||2最小,可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什么影响,专业一点的说法是『抗扰动能力强』。


4、 dropout

这个方法在神经网络里面很常用。dropout方法是ImageNet中提出的一种方法,通俗一点讲就是dropout方法在训练的时候让神经元以一定的概率不工作。具体看下图:

如上图所示,左边a图是没用用dropout方法的标准神经网络,右边b图是在训练过程中使用了dropout方法的神经网络,即在训练时候以一定的概率p来跳过一定的神经元。

5、 early stopping

对模型进行训练的过程即是对模型的参数进行学习更新的过程,这个参数学习的过程往往会用到一些迭代方法,如梯度下降(Gradient descent)学习算法。Early stopping便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。
  Early stopping方法的具体做法是,在每一个Epoch结束时(一个Epoch集为对所有的训练数据的一轮遍历)计算validation data的accuracy,当accuracy不再提高时,就停止训练。这种做法很符合直观感受,因为accurary都不再提高了,在继续训练也是无益的,只会提高训练的时间。那么该做法的一个重点便是怎样才认为validation accurary不再提高了呢?并不是说validation accuracy一降下来便认为不再提高了,因为可能经过这个Epoch后,accuracy降低了,但是随后的Epoch又让accuracy又上去了,所以不能根据一两次的连续降低就判断不再提高。一般的做法是,在训练的过程中,记录到目前为止最好的validation accuracy,当连续10次Epoch(或者更多次)没达到最佳accuracy时,则可以认为accuracy不再提高了。此时便可以停止迭代了(Early Stopping)。这种策略也称为“No-improvement-in-n”,n即Epoch的次数,可以根据实际情况取,如10、20、30……


6、 ensemble

集成学习算法也可以有效的减轻过拟合。Bagging通过平均多个模型的结果,来降低模型的方差。Boosting不仅能够减小偏差,还能减小方差。

7、重新清洗数据

数据清洗从名字上也看的出就是把“脏”的“洗掉”,指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。导致过拟合的一个原因也有可能是数据不纯导致的,如果出现了过拟合就需要我们重新清洗数据。

过拟合(定义、出现的原因4种、解决方案7种)相关推荐

  1. Springboot加密配置文件中数据库密码的两种解决方案

    Springboot 加密配置文件中数据库密码的两种解决方案 第一种:jasypt 加解密 jasypt 是一个简单易用的加解密Java库,可以快速集成到 Spring Boot 项目中,并提供了自动 ...

  2. python函数拟合不规则曲线_python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案...

    第一种是进行多项式拟合,数学上可以证明,任意函数都可以表示为多项式形式.具体示例如下. ###拟合年龄 import numpy as np import matplotlib.pyplot as p ...

  3. 【python教程入门学习】Python函数定义及传参方式详解(4种)

    这篇文章主要介绍了Python函数定义及传参方式详解(4种),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 一.函数初识 1.定 ...

  4. 计算机的广义定义和狭义定义,计算机辅助制造有广义和狭义两种定义.doc

    计算机辅助制造有广义和狭义两种定义 计算机辅助制造有广义和狭义两种定义.狭义CAM通常是指NC程序编制,即计算机辅助数控加工编程.包括刀具路径规划.刀位文件生成.刀具轨迹仿真及NC代码生成等.广义CA ...

  5. 语义分割-地表建筑物识别的一种解决方案

    语义分割-地表建筑物识别的一种解决方案 一,前言 该篇博客是用于记录阿里天池上的一个比赛--语义分割-地表建筑物识别的整个学习,编程的过程,由于是该比赛是我做的第一个机器学习的项目,因此记录的比较详细 ...

  6. Android ListView异步加载图片乱序问题,原因分析及解决方案

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/45586553 在Android所有系统自带的控件当中,ListView这个控件算是 ...

  7. Java开发Web Service的几种解决方案

    转自:http://blog.csdn.net/zolalad/article/details/25158995 Java开发中经常使用到的几种WebService技术实现方案 随着异构系统互联需求的 ...

  8. form表单用js提前执行函数若不成功则不提交_面试必会的重复提交 8 种解决方案!...

    重复提交看似是一个小儿科的问题,但却存在好几种变种用法.在面试中回答的好,说不定会有意想不到的收获!现把这 8 种解决方案分享给大家! 1.什么是幂等 在我们编程中常见幂等 select查询天然幂等 ...

  9. c++socket发送文字少一个字符_Socket粘包问题的3种解决方案,最后一种最完美

    在 Java 语言中,传统的 Socket 编程分为两种实现方式,这两种实现方式也对应着两种不同的传输层协议:TCP 协议和 UDP 协议,但作为互联网中最常用的传输层协议 TCP,在使用时却会导致粘 ...

  10. 分布式事务中常见的三种解决方案

    分布式事务中常见的三种解决方案 目录 一.分布式事务前奏 二.柔性事务解决方案架构 (一).基于可靠消息的最终一致性方案概述 (二).TCC事务补偿型方案 (三).最大努力通知型 三.基于可靠消息的最 ...

最新文章

  1. SqlServer性能监控和优化总结
  2. make后gcc出现不全_Linux零基础:C语言和gcc
  3. 每天一道LeetCode-----实现LFU置换算法
  4. LuceneLucene简介
  5. #undef 标识符
  6. jQuery 对HTML的操作(二)
  7. 光纤收发器按照网管怎么分类
  8. 华为OJ平台——整形数组合并
  9. 在大厂做螺丝钉?还是去新赛道攻城略地?看看这届年轻人怎么说
  10. 时间复杂度O(n^2)和O(nlog n)差距有多大?
  11. sublime的Package Control的安装及使用
  12. [转贴]Linux新增用户和组
  13. iis启动服务时提示在本地计算机 无法启动iis admin服务,无法启动IIS Express Web服务器...
  14. Sails框架知识点
  15. 动视是否磨灭了暴雪的灵魂?
  16. 打造综合娱乐性平台,TCL爱奇艺电视体验记
  17. 2032:【例4.18】分解质因数
  18. python方差检验分析(ANOVA)
  19. Vue3.x使用富文本tinymce-vue
  20. 剑灵各大区服务器地图位置,剑灵各地图区域 时装获取详细方法总汇

热门文章

  1. 经济学家眼中的数字货币:与时俱进(监管篇)
  2. 【饭谈】如何避免“面试造航母,进来拧螺丝”
  3. office 快捷键记录
  4. 微信小程序获取用户唯一标识OpenID
  5. DSSM原理解读与工程实践
  6. C# 关闭电脑防火墙
  7. SqlServer索引介绍
  8. 循环数组有几种方法?
  9. 查看geth keystore私钥
  10. OPJ400题祭!!!