我们之前解决过一个理论问题:机器学习能不能起作用?现在来解决另一个理论问题:过度拟合。

正如之前我们看到的,很多时候我们必须进行nonlinear transform。但是我们又无法确定Q的值。Q过小,那么Ein会很大;Q过大,就会出现过度拟合问题。如下图所示:

那么overfitting具体受什么因素影响呢?

现在我们又两个例子:

第一个例子的数据来源是:一个10-th的目标函数+noise;第二个例子的数据来源是:一个50-th的目标函数。现在我们用2-th函数(H2)和10-th函数(H10)分别对两个例子进行拟合。我们来预测一下结果。

我认为:对于这两个例子来说,H10效果会更好。因为无论是对于第一个例子还是第二个例子,从阶数上来说,H10都不存在overfitting问题。

下面是真正的结果:

我们可以看出,对于两个例子,都是H2效果最好

通过这个违反直觉的例子,我们可以一窥overfitting的端倪。

通过这个学习曲线,我们可以看出,H10可以结果很好,但是是建立在N足够大的基础上;如果N很小的话,还是H2的结果好

补充一点:对于第二个例子,明明没有noise,为什么H10表现的不如H2呢?

因为50-th的复杂度太高,H10和H2都无法准确地拟合。此时目标函数的复杂度对于H2和H10来说,就相当于noise

我们现在认为数据点数N、noise、还有目标函数的complexity level(阶数)Q都会影响overfitting

下面进行详细说明。

从这个目标函数中,产生数据,然后用H2和H10去拟合。什么时候我们说会发生过度拟合呢?当使用H10得到的Eout大于使用H2得到的Eout,则必然发生了过度拟合,也即:overfit measure:Eout(g10)-Eout(g2)。

对于第一幅图,Q=20。我们可以很容易看到:1)N越小,noise越大,越容易发生过度拟合。2)当N很小的时候(此处为N<80),必然会发生过度拟合;3)当N很大,noise越大,越容易发生过度拟合。  N起到决定性作用。

对于第二幅图,noise固定。我们可以很容易看到:1)N约小,Q越大,越容易发生过度拟合;2)当N很小的时候,几乎必然会发生过度拟合;

第一幅图和第二幅图有所不同:1)对于左下方那一块红色区域,因为目标函数阶数足够小的时候,肯定会发生过度拟合。然而为什么随着N增加,反而不会有过度拟合了呢?2)当阶数够大,N很小的时候,就会发生过度拟合,但是一旦N足够大(此处N>100),就不会发生过度拟合了;

我们把noise成为stochastic noise,把Q成为deterministic noise。

overfitting的几个影响因素,N(最重要),noise,Q。

如何解决overfitting问题呢?

我们把overfitting比作出了一起车祸,出车祸的原因可能是:开的太快了、路上有很多坑、路上的标识太少。与此对应的overfitting原因是:dvc太大(Q太大)、noise太多、数据量太少。

怎么避免“这起车祸”呢?可以开得慢一点,避开路面上的坑坑洼洼、或者是多获取一些路面标识。亦或者踩刹车、多看看仪表盘

开的慢一点:从simple model开始;

避开路面坑坑洼洼:data cleaning:修正有noise的数据;data pruning:删除有noise的数据。

多获取路面标识:获取更多的数据(有可能无法实现);或者采用Data Hinting技术;

踩刹车:regularization;

看仪表盘:validation

后两个之后会详细讲述。

过度拟合(overfitting)的更多相关文章

  1. overfitting(过度拟合)的概念

    来自:http://blog.csdn.net/fengzhe0411/article/details/7165549 最近几天在看模式识别方面的资料,多次遇到“overfitting”这个概念,最终 ...

  2. 过拟合(Overfitting)和正规化(Regularization)

    过拟合: Overfitting就是指Ein(在训练集上的错误率)变小,Eout(在整个数据集上的错误率)变大的过程 Underfitting是指Ein和Eout都变大的过程 从上边这个图中,虚线的左 ...

  3. 过度拟合(overfilting)

    过拟合概念:是指分类器能够百分之百的正确分类样本数据(训练集中的样本数据),对训练集以外的数据却不能够正确分类. 原因:1:模型(算法)太过复杂,比如神经网络,算法太过精细复杂,规则太过严格,以至于任 ...

  4. tensorflow学习4-过拟合-over-fitting

    过拟合: 真实的应用中,并不是让模型尽量模拟训练数据的行为,而是希望训练数据对未知做出判断. 模型过于复杂后,模型会积极每一个噪声的部分,而不是学习数据中的通用 趋势.当一个模型的参数比训练数据还要多 ...

  5. 使用 AdaBoost 元算法提高分类器性能

    前言 有人认为 AdaBoost 是最好的监督学习的方式. 某种程度上因为它是元算法,也就是说它会是几种分类器的组合.这就好比对于一个问题能够咨询多个 "专家" 的意见了. 组合的 ...

  6. 【Todo】【转载】深度学习&神经网络 科普及八卦 学习笔记 & GPU & SIMD

    上一篇文章提到了数据挖掘.机器学习.深度学习的区别:http://www.cnblogs.com/charlesblc/p/6159355.html 深度学习具体的内容可以看这里: 参考了这篇文章:h ...

  7. Machine Learning - 第3周(Logistic Regression、Regularization)

    Logistic regression is a method for classifying data into discrete outcomes. For example, we might u ...

  8. Python中Gradient Boosting Machine(GBM)调参方法详解

    原文地址:Complete Guide to Parameter Tuning in Gradient Boosting (GBM) in Python by Aarshay Jain 原文翻译与校对 ...

  9. 吴恩达-coursera-机器学习-week3

    六.逻辑回归(Logistic Regression) 6.1 分类问题 6.2 假说表示 6.3 判定边界 6.4 代价函数 6.5 简化的成本函数和梯度下降 6.6 高级优化 6.7 多类别分类: ...

随机推荐

  1. 8、SpringMVC源码分析(3):分析ModelAndView的形成过程

    首先,我们还是从DispatcherServlet.doDispatch(HttpServletRequest request, HttpServletResponse response) throw ...

  2. Servlet3.0的新特性

    注意:Servlet3.0的项目一定要使用Tomcat7.0才能看到效果!! 1.新增标注支持     在Servlet3.0的部署描述文件web.xml的顶层标签<web-app>中有一 ...

  3. UVa 1402 Runtime Error 伸展树

    Runtime Error 到现在连样例也跑不出来!!! 调试了一晚上快要死了…… 知道错在哪里但是不会改,代码先扔在这里吧.看来不能太依赖模板啊orz…… #include <cstdio&g ...

  4. UPC 2224 / “浪潮杯”山东省第四届ACM大学生程序设计竞赛 1008 Boring Counting 主席树

    Problem H:Boring Counting Time Limit : 6000/3000ms (Java/Other)   Memory Limit : 65535/32768K (Java/ ...

  5. Android viewPage notifyDataSetChanged无刷新

    转载 http://www.67tgb.com/?p=624 最近项目结束,搞了一次代码分享.其中一位同学分享了一下自己在解决问题过程中的一些心得体会,感觉受益匪浅.整理出来,分享给大家. 建议使用自 ...

  6. 分解成3NF的保持函数依赖的分解算法:

    转换成3NF的保持函数依赖的分解算法: ρ={R1<U1,F1>,R2<U2,F2>,...,Rk<Uk,Fk>}是关系模式R<U,F>的一个分解,U= ...

  7. android多分辨率多屏幕密度下UI适配方案

    相关概念 分辨率:整个屏幕的像素数目,为了表示方便一般用屏幕的像素宽度(水平像素数目)乘以像素高度表示,形如1280x720,反之分辨率为1280x720的屏幕,像素宽度不一定为1280 屏幕密度:表 ...

  8. UWP:本地应用数据

    获取应用的设置和文件容器 使用 ApplicationData.LocalSettings 属性可以获取 ApplicationDataContainer 对象中的设置. 注意:每个设置的名称最长可为 ...

  9. MyBatis 实践 -Mapper与DAO

    MyBatis 实践 标签: Java与存储 MyBatis简介 MyBatis前身是iBatis,是一个基于Java的数据持久层/对象关系映射(ORM)框架. MyBatis是对JDBC的封装,使开 ...

  10. codeforces 340C Tourist Problem(简单数学题)

    题意:固定起点是0,给出一个序列表示n个点,所有点都在一条直线上,其中每个元素代表了从起点到这个点所走的距离.已知路过某个点不算到达这个点,则从起点出发,到达所有点的方案有许多种.求所有方案走的总路程 ...