从零思考过拟合的解决方法

解决问题首先定义问题。
老话说过犹不及。过拟合在机器学习中产生,机器学习本质上是对问题真实模型的近似与逼近,但若逼近小样本数据,则不能代表全体甚至有很大偏差,故产生过拟合问题。并不是说过拟合就是跟训练集的数据完全一致,而是在训练集上很好,在测试集上不灵,所以过拟合需要用一个“误差”的指标来衡量。
我们把这个误差定义为“置信风险”,与样本数量和模型的条件有关。直观来说,样本数越多,函数的条件越宽松,越可以信任。比如一个班50个人随机抽40个人都考了80-90,那么剩下10人我们也会觉得在80-90间,但如果只有1个考了85,那我就不太信其他人也一样;但如果我们放宽条件,说一个人考了0-100分,那我100%相信(当然是百分制的考试,要是四六级我会表示同情)
试卷图选自电影《情书》

机器学习上用函数的VC维表示条件。我对VC维的理解:存在h个点的位置,无论h们的类别怎么定,函数f都可以将h们分开,就称f的VC维是h。VC维越高,条件就越严格,置信风险就大。
在这里插入图片描述
举例如图,平面上存在3个点,无论点是什么类型,是实心也好、空心也好随便变,都有一条线可以把他们分成两类,我们就说直线的VC维是3;四个点的时候,直线就分不开图中两类了。
以上,我们把解决过拟合的问题,转化成两个方法:
①优化数据集;
②降低模型的复杂度。

一、数据集的角度

进行预处理,有改变、改变两种思路。

1.改变量:增强数据

比如图像处理中将图片旋转角度;截取部分作为整体。

2.改变质:转化数据

①增加噪声。添加噪声的途径有很多,可以在输入数据上添加,增大数据的多样性,之前讲的EMD方法就是这样;可以在权值上添加噪声,这种方法类似于L2正则化。
想起一个处理短文本的模型叫BTM,把一个短句如“我要吃饭”三个词重新组合成词对,扩展成{我,要,吃饭;我要,吃饭;我要吃饭;我,要吃饭},变成 C 3 2 C_{3}^{2} C32这样的词袋,变相增加了数据。
②降维。如LDA主题模型,就是把原本需要one-hot的词向量,降维成了一定主题数下的概率。
③减少选取属性的数量。

二、模型的角度

不同机器学习模型可以不同,共同原则就是简化模型的内部结构。

1、正则化

正则化是机器学习中最常见的过拟合解决方法,在损失函数中加入正则项来惩罚模型的参数,以此来降低模型的复杂度,常见的添加正则项的正则化技术有L1,L2正则化。
在这里插入图片描述

有点泰勒展开,皮亚诺余项的意味,把余项的次数降低,减小了复杂度。至于泰勒展开,可以看看这篇文章,受益匪浅:怎样更好地理解并记忆泰勒展开式?
SVM里就有松弛变量,罚参数C,C越大就越复杂,容易过拟合。越小就容易欠拟合,可用交叉验证去选这个参数。

2、剪枝处理

决策树,主要有预剪枝和后剪枝这两种,常见的是两种方法一起使用。预剪枝通过在训练过程中控制树深、叶子节点数、叶子节点中样本的个数等来控制树的复杂度。后剪枝则是在训练好树模型之后,采用交叉验证的方式进行剪枝以找到最优的树模型。

3、提前终止迭代(Early stopping)

神经网络,神经网络的权值初始化时较小,模型的拟合能力较弱,随着迭代次数的增大,部分的权值也会不断的增大,越来越拟合。可以在适当的时候终止。

4、权值共享

CNN/RNN,使用同一个滤波器filter扫描整幅图,旨在减小模型中的参数,同时还能较少计算量。

5、Dropout

Dropout是深度学习中最常用的控制过拟合的方法,主要用在全连接层处。在一定的概率隐式的去除网络中的神经元。老师说这实际上是一种集成学习的思路,随机隐藏一定的神经元就类似于集成了几个不同的神经网络模型。

6、Batch Normalization

Batch Normalization算法会将每一层的输入值做归一化处理,并且会重构归一化处理之后的数据,确保数据的分布不会发生变化,可以让大型的卷积神经网络快速收敛。而且有很多变种,比如Layer Normalization,在RNN或者Transformer中用的比较多。

7、Bagging和Boosting

Bagging和Boosting是机器学习中的集成方法,多个模型的组合可以弱化每个模型中的异常点的影响,保留模型之间的通性,弱化单个模型的特性。

常见的方式是采用交叉验证来检测过拟合。

参考:
机器学习中常见的过拟合解决方法
怎么解决过拟合与欠拟合
机器学习之正则化(Regularization)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值