[机器学习]机器学习笔记05—欠拟合与过拟合

我们在进行模型训练的时候会出现模型不能够很好地拟合数据的情况,这个时候就需要我们来判断究竟现在的模型是欠拟合还是过拟合
一. 欠拟合

首先欠拟合就是模型没有很好地捕捉到数据特征,不能够很好地拟合数据,例如下面的例子:
这里写图片描述

左图表示size与prize关系的数据,中间的图就是出现欠拟合的模型,不能够很好地拟合数据,如果在中间的图的模型后面再加一个二次项,就可以很好地拟合图中的数据了,如右面的图所示。

解决方法:

1)添加其他特征项

有时候我们模型出现欠拟合的时候是因为特征项不够导致的,可以添加其他特征项来很好地解决。例如,“组合”、“泛化”、“相关性”三类特征是特征添加的重要手段,无论在什么场景,都可以照葫芦画瓢,总会得到意想不到的效果。除上面的特征之外,“上下文特征”、“平台特征”等等,都可以作为特征添加的首选项。

2)添加多项式特征

这个在机器学习算法里面用的很普遍,例如将线性模型通过添加二次项或者三次项使模型泛化能力更强。例如上面的图片的例子。

3)减少正则化参数

正则化的目的是用来防止过拟合的,但是现在模型出现了欠拟合,则需要减少正则化参数。

二 过拟合概念
1) 过拟合在生活中一个自负可以理解为过拟合;
这里写图片描述
2) 在机器学习中就是训练出来的模型在训练集上表现很好,但是在测试集上表现较差的一种现象!下图给出例子:
这里写图片描述
我们将上图第三个模型解释为出现了过拟合现象,过度的拟合了训练数据,而没有考虑到泛化能力。在训练集上的准确率和在开发集上的准确率画在一个图上如下:
这里写图片描述
从图中我们能够看出,模型在训练集上表现很好,但是在交叉验证集上表现先好后差。这也正是过拟合的特征!

三、过拟合产生原因

(1)建模样本抽取错误

包括(但不限于)样本数量太少,抽样方法错误,抽样时没有足够正确考虑业务场景或业务特点,等等导致抽出的样本数据不能有效足够代表业务逻辑或业务场景

(2)样本里的噪音数据干扰过大

大到模型过分记住了噪音特征,反而忽略了真实的输入输出间的关系

这里写图片描述
这里就假设总体数据分布满足一个线性模型 y = kx+b, 现实中肯定不会这么简单,数据量也不会这么少,至少也是多少亿级别,但是不影响解释。反正总体数据满足模型 y
此时我们得到的部分数据,还有噪声的话,如图所示:
这里写图片描述

(注意: 红色数据点为噪声)

那么由上面训练数据点训练出来的模型肯定不是线性模型(总体数据分布下满足的标准模型),比如训练出来的模型如下:
这里写图片描述
]产生了过拟合现象!

(3)建模时的“逻辑假设”到了模型应用时已经不能成立了

任何预测模型都是在假设的基础上才可以搭建和应用的,常用的假设包括:假设历史数据可以推测未来,假设业务环节没有发生显著变化,假设建模数据与后来的应用数据是相似的,等等。如果上述假设违反了业务场景的话,根据这些假设搭建的模型当然是无法有效应用的。

(4)参数太多、模型复杂度高

(5)决策树模型。

如果我们对于决策树的生长没有合理的限制和修剪的话,决策树的自由生长有可能每片叶子里只包含单纯的事件数据(event)或非事件数据(no
event),可以想象,这种决策树当然可以完美匹配(拟合)训练数据,但是一旦应用到新的业务真实数据时,效果是一塌糊涂。

(6)神经网络模型。

a.由于对样本数据,可能存在隐单元的表示不唯一,即产生的分类的决策面不唯一.随着学习的进行, BP算法使权值可能收敛过于复杂的决策面,并至极致.
b.权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征.

四 过拟合解决办法

1. 重新清洗数据

导致过拟合的一个原因也有可能是数据不纯(数据噪声)导致的,如果出现了过拟合就需要我们重新清洗数据。

2. 增加数据量

数据量少也有可能产生过拟合现象出现,所以增加数据量,可以防止过拟合问题出现

3. 运用正规化. L1, l2 regularization等等

正则化方法包括L0正则、L1正则和L2正则,而正则一般是在目标函数之后加上对于的范数。但是在机器学习中一般使用L2正则.后面着重讲讲正则化

4. dropout方式

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

参考
1. 忆臻 .大白话解释模型产生过拟合的原因!
2. 漫漫成长.过拟合原因与解决办法

猜你喜欢

转载自blog.csdn.net/baihuaxiu123/article/details/80373602