13 过拟合与正则化
在机器学习中,过拟合(Overfitting)
和正则化(Regularization)
都是非常重要的概念,它们直接影响到模型的表现和泛化能力。本文将深入探讨这些概念,并结合实际案例和代码示例来帮助理解。
过拟合的概念
过拟合
发生在模型学习到了训练数据中的噪声和细节,而不是真正的信号。这意味着模型在训练数据上表现良好,但在未见过的新数据上性能较差。
过拟合的示例
设想我们有一个简单的回归问题,使用多项式回归来拟合数据。如果我们用一个高次多项式(如5次或6次多项式)来拟合少量数据,模型可能会曲折地通过每一个数据点,从而导致过拟合
。
1 | import numpy as np |
在上面的代码中,我们创建了一个高次多项式拟合示例,可以看到这个模型在训练数据上拟合得非常完美,但在新数据上表现较差。
识别过拟合
过拟合的常见迹象包括:
- 训练误差较低,但验证误差较高。
- 模型在训练集和验证集之间的性能差异(即模型在训练集上表现良好但在验证集上表现差)。
使用交叉验证(Cross-Validation)
是一种检测过拟合的有效方法。通过将数据集分成多个子集并对模型进行多次评估,可以更好地理解模型的泛化能力。
正则化的概念
为了应对过拟合,我们可以使用正则化
。正则化
是引入额外的信息来约束或惩罚模型参数,从而降低模型的复杂度。
常见的正则化方法
L1 正则化(Lasso):加入参数绝对值的惩罚项,使得部分参数为零,达到特征选择的效果。
$$ J(\theta) = \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})^2 + \lambda \sum_{j=1}^{n} |\theta_j| $$L2 正则化(Ridge):加入参数平方的惩罚项,通常不会使参数为零,但可以缩小所有参数的值。
$$ J(\theta) = \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})^2 + \lambda \sum_{j=1}^{n} \theta_j^2 $$
以下是应用L2 正则化
的示例代码。
正则化的案例
1 | from sklearn.linear_model import Ridge |
在此示例中,应用了L2 正则化
可以看到模型在训练数据和新数据上的性能有所改善。正则化通过惩罚较大的系数,使得模型更加平滑,从而提高了其泛化能力。
结论
过拟合
和正则化
是机器学习中不可或缺的概念。理解这些概念并能够运用相关技术,可以显著改善模型的性能。在接下来的内容中,我们将探讨深度学习与神经网络
的基础概念,包括神经元模型与激活函数
,为理解更复杂的模型打下基础。