over fit与underfit的区别与解决方法

overfit有两种情况:1.机器从样本数据中过度的学习了太多的局部特征,在测试集中会出现识别率低的情况。信息量过小,识别其他信息是缺少数据特征量,学习的东西太多了,特征也多,只要不是该特征的数据都不要,这个过度拟合是因为数据量太小但是学习的特征太多,只要没有其中任何的一个特征的数据都识别不了的一种过度拟合的情况。举个例子:

(1)打个形象的比方,给一群天鹅让机器来学习天鹅的特征,经过训练后,知道了天鹅是有翅膀的,天鹅的嘴巴是长长的弯曲的,天鹅的脖子是长长的有点曲度,天鹅的整个体型像一个“2”且略大于鸭子.这时候你的机器已经基本能区别天鹅和其他动物了。

(2)然后,很不巧你的天鹅全是白色的,于是机器经过学习后,会认为天鹅的羽毛都是白的,以后看到羽毛是黑的天鹅就会认为那不是天鹅.

(3)好,来分析一下上面这个例子:(1)中的规律都是对的,所有的天鹅都有的特征,是全局特征;然而,(2)中的规律:天鹅的羽毛是白的.这实际上并不是所有天鹅都有的特征,只是局部样本的特征。机器在学习全局特征的同时,又学习了局部特征,这才导致了不能识别黑天鹅的情况.

所以:(1)对于机器来说,在使用学习算法学习数据的特征的时候,样本数据的特征可以分为局部特征和全局特征,全局特征就是任何你想学习的那个概念所对应的数据都具备的特征,而局部特征则是你用来训练机器的样本里头的数据专有的特征.

(2)在学习算法的作用下,机器在学习过程中是无法区别局部特征和全局特征的,于是机器在完成学习后,除了学习到了数据的全局特征,也可能习得一部分局部特征,而习得的局部特征比重越多,那么新样本中不具有这些局部特征但具有所有全局特征的样本也越多,于是机器无法正确识别符合概念定义的“正确”样本的几率也会上升,也就是所谓的“泛化性”变差,这是过拟合会造成的最大问题.

(3)所谓过拟合,就是指把学习进行的太彻底,把样本数据的所有特征几乎都习得了,于是机器学到了过多的局部特征,过多的由于噪声带来的假特征,造成模型的“泛化性”和识别正确率几乎达到谷点,于是你用你的机器识别新的样本的时候会发现就没几个是正确识别的.

(4)解决过拟合的方法,其基本原理就是限制机器的学习,使机器学习特征时学得不那么彻底,因此这样就可以降低机器学到局部特征和错误特征的几率,使得识别正确率得到优化.

(5)从上面的分析可以看出,要防止过拟合,训练数据的选取也是很关键的,良好的训练数据本身的局部特征应尽可能少,噪声也尽可能小。

2.过度拟合学习了太多的噪音,人们将噪声误认为信号的行为,在统计学上被称为「过度拟合」(overfit)。人类大脑的工作方式是捕捉规律,并且预测。一般来讲,智商高的人的神经网络学习能力更强,这意味着 ta 捕捉规律的能力也越强。捕捉规律能力强意味着对于很少的样本中隐含的不明显的「规律」他们也能捕捉出来。但从很少的样本或噪声过多的样本中总结出「规律」来是极为危险的事——自然界的运行很多时候并没有确定的规律,我们带着一双为了发现规律的眼睛去挖掘总结出了规律,结果却聪明反被聪明误了。

一句话概括:

过拟合:在训练数据上表现良好,在未知数据上表现差。 
欠拟合:在训练数据和未知数据上表现都很差。

解决方法:

解决欠拟合或过拟合的思路

1、增减模型的参数维度。如利用线性回归预测房屋价格的例子中,增加“卧室数量”,“停车位数量”,“花园面积”等维度以解决欠拟合,或相应的减少维度去解决过拟合。

2、增减多项式维度,比如将加入高阶多项式来更好地拟合曲线,用以解决欠拟合,或者降阶去处理过拟合。

3、调整Regularization Parameter。在不改变模型参数维度和多项式维度的情况下,单纯的调整Regularization Parameter同样可以有效改变模型对数据的拟合程度。

原文地址:https://www.cnblogs.com/klausage/p/10260043.html

时间: 2024-10-07 15:26:05

over fit与underfit的区别与解决方法的相关文章

ServletInputStream 和FileInputStream 的区别 ServletInputStream取不到数据解决方法

最近做项目遇到的问题,现在一下: 1:实现文件上传下载 如果用到Tomcat  和HttpServlet,那么我们就要获取上传的字节流ServletInputStream.下面说一下用ServletInputStream要注意的地方. (1) 要想到的ServletInputStream中的数据,必须要从缓存区读出来. ServletInputStream ServletInputStream = request.getInputStream(); byte [] a =new byte[Ser

【解决方法】iOS 开发小技巧

1,Search Bar 怎样去掉背景的颜色(storyboard里只能设置background颜色,可是发现clear Color无法使用). 其实在代码里还是可以设置的,那就是删除背景view [[self.searchBar.subviews objectAtIndex:0] removeFromSuperview]; 2,NSDate: [java] view plaincopy 字母  日期或时间元素    表示     示例 G     Era   标志符     Text     

谷歌、火狐浏览器下实现JS跨域iframe高度自适应的完美解决方法,跨域调用JS不再是难题!

谷歌.火狐浏览器下实现JS跨域iframe高度自适应的解决方法 导读:今天开发的时候遇到个iframe自适应高度的问题,相信大家对这个不陌生,但是一般我们都是在同一个项目使用iframe嵌套页面,这个ifame高度自适应网上一搜一大把,今天要讲的如何在不同的网站下进行相互的调用跟在同一个网站下是一个效果:例如我在自己的项目里面Iframe  了第一博客的页面  http://www.diyibk.com/   当第一博客的页面高度变化了怎么通知父页面呢? 这个时候在谷歌下肯定是拿不到 ifram

使用Spring Mvc 转发 带着模板 父页面 之解决方法 decorators.xml

周末了,周一布置的任务还没完成,卡在了页面跳转上,接手了一个半截的项目要进行开发,之前没有人给培训,全靠自己爬代码,所以进度比较慢,而且加上之前没有用过 Spring Mvc 开发项目,所以有点吃力,不过接触了Spring Mvc近一个月的时间感觉 开发速度确实比 SSH快不少,不用一个一个的Bean去配置,直接扫描就OK了,可就是这样还是有些地方容易搞上一天也没搞多少进度,这不,被我新写的一个 Controller 的转发搞晕了,我本来要实现一个列表的分页查询,哪里想到点下一页的时候,除了我要

Android实际开发中的bug总结与解决方法(一)

                                                                             Android实际开发中的bug总结与解决方法(一) Android开发中有很多bug,我们是完全可以在线下避免的,不要等到线上报的BUG的再去修复.下面是我在实际开发中遇到过的bug和解决方法. BUG 1: java.lang.RuntimeException: Unable to start activity ComponentInfo

关于启动Visual Studio 2010 旗舰版的几个错误的解决方法。

关于启动Visual Studio 2010 旗舰版的几个错误的解决方法.亲测. 重做系统之后,今天是第一次打开Visual Studio 2010 旗舰版码代码,结果遇到几个弹出的对话框,现在与大家分享下错误和解决方法. 人品不好,首先遇到这个错误. Q1:未能正确加载“VSTS for Database Professionals Sql Server Data-tier Application" 包. A1:打开cmd,输入regsvr32 %windir%\system32\jscrip

js中style.display=""无效的解决方法

本文实例讲述了js中style.display=""无效的解决方法.分享给大家供大家参考.具体解决方法如下: 一.问题描述: 在js中我们有时想动态的控制一个div显示或隐藏或更多的操作,但如果我们style.display=""可能导致没有效果. 看下面一段代码: 复制代码代码如下: <style> #name {     display:none; }</style></head><body><div id=

ORA-12520错误解决方法

前两天偶然听到关于==和equals的讨论,编程中也经常用这两种,仔细一想,理解有限,所以稍作分析,要了解这两个的区别,首先要知道内存中的堆和栈,如下图: 基本类型的变量名和值.对象的地址存放在空间较小的栈中,对象内容存放在空间较大的堆中. ==和equals区别 equals的定义 要知道equals的作用,首先要知道JAVA中"万象之宗"的Object,Object中声明了equals及实现,查看API文档,发现最主要的一段内容: The equals method for cla

Ubuntu 14.04中root 密码忘记解决方法[转载+17.04亲测可用]

Ubuntu 14.04中root 密码忘记解决方法 Ubuntu 14.04中root 密码忘记解决方法 方法一: 如果用户具有sudo权限,那么直接可以运行如下命令: #sudo su root #passwd #更改密码 或者直接运行sudo passwd root命令就可以直接更改root密码. 有关sudo su的区别: 1.共同点:都是root用户的权限: 2.不同点:su仅仅取得root权限,工作环境不变,还是在切换之前用户的工作环境:sudo是完全取得root的权限和root的工