机器学习知识总结——过拟合和欠拟合
过拟合(overfitting)
什么是过拟合?
所谓过拟合就是指在验证集和训练集上表现很好,但是在测试集上表现很差,也就是说泛化能力差。一般表现为: 高方差,低偏差
过拟合的原因
- 训练样本选取有误、样本标签错误等
- 样本噪声干扰过大
- 模型过于复杂
- 对于神经网络来说:
- 学习迭代次数太多
如何防止/解决过拟合问题?
- 扩大数据集
- 进行正则化(L1正则或者L2正则等)
- 采用合适的模型(控制模型的复杂度)
- Early stopping(通过迭代次数截断的方法来防止过拟合)
- Dropout(在神经网络中可以使用Dropout)
- 减少特征维度
欠拟合(underfitting)
什么是欠拟合?
欠拟合是指模型在训练集、验证集和测试集上表现都不好
欠拟合的原因是什么
- 模型复杂度低
- 模型训练迭代次数太少
如何解决欠拟合问题?
-
增加迭代次数
-
增加模型复杂程度
-
增加特征
正则化
L1正则化
在原始的损失函数后面加一个L1正则化项,即全部权重\(\omega\)的绝对值的和,在乘以\(\lambda/n\)
\[C=C_0+\frac\lambda n\sum_i|\omega_i|
\]
对应梯度
\[\frac{\partial C}{\partial\omega}=\frac{\partial C_0}{\partial\omega}+\frac\lambda nsgn(\omega)
\]
其中\(sgn(\omega)\)知识简单地取\(\omega\)各个元素地正负号
\[sgn(\omega)=
\begin{cases}
1,&\omega>0\\
0,&\omega=0\\
-1,&\omega<0
\end{cases}
\]
L2正则化
L2正则化通常被称为权重衰减(weight decay),就是在原始的损失函数后面再加上一个L2正则化项,即全部权重\(\omega\)的平方和,在乘以\(\lambda/2n\)。
\[C=C_0+\frac\lambda{2n}\sum_i{\omega^2_i}
\]
对应梯度
\[\frac{\partial C}{\partial\omega}=\frac{\partial C_0}{\partial\omega}+\frac\lambda n\omega
\]
如有错误,欢迎指正。谢谢