- 本文介绍了欠拟合、过拟合相关概念,分析形成它们的缘由,总结了防止过拟合的通常策略。
1 损失函数
- 损失函数(loss function):是用来度量模型预测值f(x)与样本真实标签值y的不一致程度。
- 给定输入的样本数据x,模型函数输出一个f(x),这个输出的f(x)与样本的真实值标签值y多是相同的,也多是不一样的,为了表示咱们拟合的好坏,就用一个函数来度量拟合的程度。有平方差损失函数、交叉熵损失函数,对比损失函数,合页损失函数等。
- 损失函数是一个实值函数,它的值越小,表示模型在训练样本集上拟合地越好。是否是训练集损拟合的越好,模型的效果会更好呢? 答案是No。因为训练样本集和测试数据集是不同的,在训练集上损失函数越小,并不表明测试集损失函数越小,咱们但愿模型在训练集上有高准确率的同时在测试集上也有高准确率。衡量这种能力的指标就是泛化能力,这时候不得不提过拟合和欠拟合的概念。
2 学习
- 学习:找到一组模型参数,使得在给定的训练数据样本和对应的目标值上的损失函数最小化。
3 过拟合与欠拟合
- 欠拟合(under-fitting):也称为欠学习,它的直观表现是算法训练获得的模型在训练集上表现差(测试集表现也差),没有学到数据的规律。
- 引发欠拟合的缘由:
- 模型自己过于简单,例如数据自己是非线性的但使用了线性模型;
- 特征数太少没法正确的创建统计关系。
- 过拟合(over-fitting):也称为过学习,它的直观表现是算法在训练集上表现好,但在测试集上表现很差,泛化性能差。过拟合是在模型参数拟合过程当中因为训练数据包含抽样偏差,在训练时复杂的模型将抽样偏差也进行了拟合致使的。所谓抽样偏差,是指抽样获得的样本集和总体数据集之间的误差。
- 引发过拟合的可能缘由:
- 模型自己过于复杂,以致于拟合了训练样本集中的噪声。此时须要选用更简单的模型,或者对模型进行裁剪。
- 训练样本太少或者缺少表明性。此时须要增长样本数,或者增长样本的多样性。
- 训练样本噪声的干扰,致使模型拟合了这些噪声,这时须要剔除噪声数据或者改用对噪声不敏感的模型。
4 方差与误差
- 模型的泛化偏差来自于两部分,分别称为误差和方差。
- 误差(bias)是模型自己致使的偏差,即错误的模型假设所致使的偏差,它是模型的预测值的数学指望和真实值之间的差距。
- 方差(variance)是因为对训练样本集的小波动敏感而致使的偏差。它能够理解为模型预测值的变化范围,即模型预测值的波动程度。
- 误差、方差、错误率与模型复杂度的关系以下图所示。一般随着模型的复杂度增长,误差也会跟着逐渐增大。

5 如何避免过拟合
5.1 正则化
为了防止过拟合,能够为损失函数加上一个惩罚项对复杂的模型进行惩罚,即强制让模型的参数值尽量小。加上正则化项的目标是让它的值尽量小,即参数等于0或者接近于0。\(\lambda\)为惩罚项系数,是人工设定的大于0的参数。算法
5.2 剪枝
剪枝是决策树类算法防止过拟合的方法。若是决策树的结构过于复杂,可能会致使过拟合问题,此时须要对树进行剪枝,消掉某些节点让它变得更简单。剪枝的关键问题是肯定减掉哪些树节点以及减掉它们以后如何进行节点合并。决策树的剪枝算法能够分为两类,分别称为预剪枝和后剪枝。前者在树的训练过程当中经过中止分裂对树的规模进行限制;后者先构造出一棵完整的树,而后经过某种规则消除掉部分节点,用叶子节点替代。网络
5.3 数据增广
数据增广是解决过拟合中思想比较朴素的方法。训练集越多,过拟合的几率越小,数据增广是一个比较方便有效屡试不爽的方法,但各种领域的增广方法都不一样。机器学习
- 1 在计算机视觉领域中,增广的方式是对图像旋转,缩放,剪切,添加噪声等。
- 2 在天然语言处理领域中,能够作同义词替换扩充数据集。
- 3 语音识别中能够对样本数据添加随机的噪声。
5.4 dropout
Dropout是神经网络中防止过拟合的方法。dropout的作法是在训练时随机的选择一部分神经元进行正向传播和反向传播,另一些神经元的参数值保持不变,以减轻过拟合。dropout机制使得每一个神经元在训练时只用了样本集中的部分样本,这至关于对样本集进行采样,即bagging的作法。最终获得的是多个神经网络的组合。函数
5.5 Early Stopping
提早中止的策略是在验证集偏差出现增大以后,提早结束训练;而不是一直等待验证集 偏差达到最小。提早中止策略十分简单,执行效率高,但须要额外的空间备份参数。性能
5.6 集成学习
集成学习算法也能够有效的减轻过拟合。Bagging经过平均多个模型的结果,来下降模型的方差。Boosting不只可以减少误差,还能减少方差。学习
6 参考文献
- [1] 雷明著.机器学习与应用[M].清华大学出版社,2019.