过拟合的定义
指在模型参数拟合过程中的问题,由于训练数据包含抽样误差,训练时,复杂的模型将抽样误差也考虑在内,将抽样误差也进行了很好的拟合。具体表现就是训练集上效果好,在测试集上效果差。模型泛化能力弱。
解决过拟合的方法
发生过拟合主要有两方面的原因,下面就从数据和模型复杂度来考虑。
数据
- 获取更多的数据:从数据源头获取;根据当前数据集估计数据分布参数,使用分布产生;数据增强,通过一定规则获取数据,例如图像平移,翻转,缩放,切割等
- 考虑数据降维,例如PCA,SVD等,选取重要特征,
- 重新清洗数据,增大数据的训练集
模型
- 使用合适的模型:过拟合的主要原因为,数据太少+模型太复杂。对于神经网络来讲,可以减少网络层数及神经元个数;
- 训练时间的把控,Early stopping;
- Dropout,这是一个很高效的方法,在训练时,每次随机(如50%)忽略隐层的某些节点,这样,我们相当于随机从2^H个模型中采样选择模型,类似于bagging,此外,不同模型之间权值共享,相当于一种权值正则方法,实际效果比L2更好。
- 限制权值,即正则化(regularization),L1或L2;
- 增加噪声,噪声随着网络传播,按照权值的平方放大,并传播到输出层,对误差cost产生影响。在输入中加高斯噪声,会达到与L2类似的效果;也可在权值和网络响应上加噪声。
考虑集成的方法,结合多种模型:训练多个模型,以每个模型的平均输出作为结果。如Bagging随机森林,训练一堆互不关联的决策树。Boosting如GBDT,XGBoost。
Batch normalization
决策树的剪枝
通过贝叶斯的相关方法
参考文献:
[1] https://www.zhihu.com/question/59201590/answer/167392763