机器学习中防止过拟合的处理方法

过拟合: 随着模型复杂度的增加: 训练集误差减小,验证集误差增大,

(1) early stopping

每次迭代计算验证集的accuracy,连续10次没突破最佳就停止训练。

(2) 数据集扩增:

复制原有数据加上随机噪声,重采样,根据当前数据集估计数据分布参数,使用该分布产生更多的数据。

(3)正则化:

范数:满足 正定,齐次,三角不等式

||A||=n*max(|aij|)

L1 范数:各个元素绝对值之和

L2 范数: 在回归中,称为岭回归。欧几里得距离,样本和标签之差的平方之和。

L1: 基于L1范数,参数绝对值和与参数的积项。

C0 是最原始的代价函数,n是样本格式, lambda 是正则项表达式。

对于有些模型,如线性回归(L1 正则线性回归即为lasso 回归),常数项b的更新方程不包括正则项,即:

梯度下降算法中,都小于0.

从上式可以看出,当w为正时,更新后w会变小,当w为负时,更新后w 会变大,因此L1正则项是为了使得那些原先处于0附近的参数w往0移动,从而降低模型的复杂度,防止过拟合,

L2 正则:L2 正则是基于L2 范数,即在目标函数后面加上参数的L2范数和项,即参数的平方和与参数的积项。即:

L2 项参数乘了1/2 ,是为了便于计算以及公式的美感。

L2 的正则项可以 使w变下加剧,更小的参数值w意味着模型的复杂度更低,对训练数据的拟合刚刚好(奥卡姆剃刀),不会过分拟合训练数据,从而使得不会过拟合。以提高模型的泛化能力。

比较:

https://blog.csdn.net/w5688414/article/details/78046960

L1比L2 鲁棒性更好,对异常点有很好的抗干扰的能力。

L2 误差会放大很多,对异常点更敏感

L1 不太稳定,每一次调整回归线会跳很大。

L1 会使得系数更稀疏,L2 往往有非稀疏的系数。

L2 的计算更高效。

从公式上看,两者的区别:

L1的绝对值之和,因此同一个问题得出的解可能有多个,

ref:https://blog.csdn.net/u014381600/article/details/54341317

(4) dropout

(5)合适的模型:合适的层数和结构

(6) 对网络加噪声,在权重上加噪声,对网络的响应加噪声

(7)结合多个模型:从N个模型中随机选一个的期望误差会比所有模型的平均输出误差大。

Bagging: 就是分段函数的概念:用不同模型拟合不同部分的训练集,以随机森林为例,就是训练了一堆互不关联的决策树,但是神经网络本身时间长,所以不单独使用神经网络做 。

Boosting:只使用简单的神经网络,加权平均其输出。

参考:https://blog.csdn.net/heyongluoyao8/article/details/49429629

https://www.zhihu.com/question/59201590

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值