机器学习知识总结——过拟合和欠拟合

过拟合(overfitting)

什么是过拟合?

所谓过拟合就是指在验证集和训练集上表现很好,但是在测试集上表现很差,也就是说泛化能力差。一般表现为: 高方差,低偏差

过拟合的原因

  • 训练样本选取有误、样本标签错误等
  • 样本噪声干扰过大
  • 模型过于复杂
  • 对于神经网络来说:
    • 学习迭代次数太多

如何防止/解决过拟合问题?

  • 扩大数据集
  • 进行正则化(L1正则或者L2正则等)
  • 采用合适的模型(控制模型的复杂度)
  • Early stopping(通过迭代次数截断的方法来防止过拟合)
  • Dropout(在神经网络中可以使用Dropout)
  • 减少特征维度

欠拟合(underfitting)

什么是欠拟合?

欠拟合是指模型在训练集、验证集和测试集上表现都不好

欠拟合的原因是什么

  • 模型复杂度低
  • 模型训练迭代次数太少

如何解决欠拟合问题?

  • 增加迭代次数

  • 增加模型复杂程度

  • 增加特征

正则化

L1正则化

在原始的损失函数后面加一个L1正则化项,即全部权重 ω \omega ω的绝对值的和,在乘以 λ / n \lambda/n λ/n
C = C 0 + λ n ∑ i ∣ ω i ∣ C=C_0+\frac\lambda n\sum_i|\omega_i| C=C0+nλiωi
对应梯度
∂ C ∂ ω = ∂ C 0 ∂ ω + λ n s g n ( ω ) \frac{\partial C}{\partial\omega}=\frac{\partial C_0}{\partial\omega}+\frac\lambda nsgn(\omega) ωC=ωC0+nλsgn(ω)
其中 s g n ( ω ) sgn(\omega) sgn(ω)知识简单地取 ω \omega ω各个元素地正负号
s g n ( ω ) = { 1 , ω > 0 0 , ω = 0 − 1 , ω < 0 sgn(\omega)= \begin{cases} 1,&\omega>0\\ 0,&\omega=0\\ -1,&\omega<0 \end{cases} sgn(ω)=1,0,1,ω>0ω=0ω<0

L2正则化

L2正则化通常被称为权重衰减(weight decay),就是在原始的损失函数后面再加上一个L2正则化项,即全部权重 ω \omega ω的平方和,在乘以 λ / 2 n \lambda/2n λ/2n
C = C 0 + λ 2 n ∑ i ω i 2 C=C_0+\frac\lambda{2n}\sum_i{\omega^2_i} C=C0+2nλiωi2
对应梯度
∂ C ∂ ω = ∂ C 0 ∂ ω + λ n ω \frac{\partial C}{\partial\omega}=\frac{\partial C_0}{\partial\omega}+\frac\lambda n\omega ωC=ωC0+nλω

本人博客https://xiaoxiablogs.top

如有错误,欢迎指正。谢谢

你可能感兴趣的:(机器学习,数据挖掘,过拟合,欠拟合,机器学习,深度学习,正则化)