算法基础 - 如何避免过拟合?

如何避免过拟合?

参考整理:https://www.cnblogs.com/jiangxinyang/p/9281107.html

1) 正则化
通过控制模型参数的大小来降低模型的复杂度
L1 = $\alpha \sum_w |w|$ 作为J0函数的约束,加入L1正则项后,数据集中对模型贡献不大的特征所对应的参数w可以为0,
因此L1正则项得出的参数是稀疏的;

L2 =$\alpha \sum_w |w|^2 $,将对模型贡献不大的特征所对应的参数设置为无限小的值

【机器学习】
决策树:
2) 剪枝处理
预剪枝:控制树深度、叶子节点数、叶子节点中样本的个数 --> 控制树的复杂度
后剪纸:模型训练完之后,用交叉验证的方式进行剪枝达到最优的树模型

--结合多种模型
集成学习:
3)Bagging和Boosting
多个模型的组合弱化单个模型的异常点的影响

【神经网络】
4) 增加噪声
在输入数据上添加,增大数据的多样性;也可在权值上添加噪声

5) 权值共享
最常见的在CNN中,权值共享可以减小模型中的参数,同时减少计算量

6) 提前终止迭代(Early stopping)
通过提前终止迭代,有效控制权值参数的大小,从而降低模型的复杂度

7) Batch Normalization
在深度神经网络激活层之前,将每一层的输入值做归一化处理,且重构归一化处理之后的数据,确保数据的分布不会发生改变
优点:提高CNN网络收敛速度,提高分类准确率;不需要使用局部相应归一化处理,不需要加入dropout

--结合多种模型
8) Dropout
用在全连接层,在一定概率上(通常设为0.5,此时随机生成的神经网络最多)隐式地去除网络中的神经元
缺点:每次迭代时dropout的神经元都不同,有一些参数不被训练到,导致网络的训练速度慢2、3倍;且数据小时效果不佳

 


(1),(2),(4),(5),(6),(7): 在一个模型上,通过改变模型的复杂度来控制过拟合;
(3),(8): 结合多种模型来控制过拟合.

posted @ 2020-08-27 08:01  Nooni  阅读(277)  评论(0编辑  收藏  举报