在上一篇中,我们探讨了贝叶斯因子
和模型比较
,了解了如何在不同模型之间进行选择。接下来,我们将深入讨论与模型选择密切相关的两个概念:过拟合
与正则化
。这两个概念对于确保我们的贝叶斯学习模型的泛化能力至关重要。
过拟合(Overfitting) 过拟合
是指模型在训练数据上表现良好,但在新数据上的表现却急剧下降的现象。这通常发生在模型过于复杂时,即模型具有过多的参数,能够非常好地拟合训练数据中的噪声。
过拟合的案例 以线性回归为例,假设我们有一组数据点,我们使用一个高阶多项式来拟合这些数据。在训练集上,该高阶多项式可以很好地通过所有的数据点,但在验证集上,模型的预测能力却显著下降。这个现象就是过拟合的表现。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 import numpy as npimport matplotlib.pyplot as pltfrom sklearn.preprocessing import PolynomialFeaturesfrom sklearn.linear_model import LinearRegressionfrom sklearn.pipeline import make_pipelinenp.random.seed(0 ) X = np.sort(5 * np.random.rand(80 , 1 ), axis=0 ) y = np.sin(X).ravel() + np.random.normal(0 , 0.1 , X.shape[0 ]) degrees = [1 , 3 , 5 , 10 ] plt.figure(figsize=(15 , 10 )) for i, degree in enumerate (degrees): model = make_pipeline(PolynomialFeatures(degree), LinearRegression()) model.fit(X, y) y_pred = model.predict(X) plt.subplot(2 , 2 , i + 1 ) plt.scatter(X, y, s=10 , label='Data' ) plt.plot(X, y_pred, label='Prediction (degree={})' .format (degree), color='red' ) plt.title('Polynomial Degree: {}' .format (degree)) plt.legend() plt.show()
在上面的图中,我们可以看到随着多项式阶数的增加,模型在训练数据上的表现越来越好,但在测试数据上的预测能力并没有显著提高,甚至开始下降,这就是过拟合的体现。
正则化(Regularization) 为了对付过拟合,我们可以采用正则化
技术。正则化通过向损失函数中加入一个惩罚项来限制模型的复杂度,从而减少过拟合的风险。常见的正则化方法有L1正则化
(Lasso)和L2正则化
(Ridge)。
正则化的原理 在贝叶斯框架下,我们可以将正则化视为对参数施加先验分布。一种常见的选择是对参数引入一个Gaussian
先验,这导致了L2正则化
;而使用Laplace
先验则导致L1正则化
。
正则化的案例 继续使用上面的例子,我们将引入Ridge
回归(L2正则化)来对抗过拟合。
1 2 3 4 5 6 7 8 9 10 11 12 13 from sklearn.linear_model import Ridgeplt.figure(figsize=(10 , 5 )) ridge_model = make_pipeline(PolynomialFeatures(10 ), Ridge(alpha=1.0 )) ridge_model.fit(X, y) y_ridge_pred = ridge_model.predict(X) plt.scatter(X, y, s=10 , label='Data' ) plt.plot(X, y_ridge_pred, label='Ridge Prediction (degree=10)' , color='green' ) plt.title('Ridge Regression with Regularization' ) plt.legend() plt.show()
在上面的图中,我们引入了Ridge
回归来平衡模型的复杂度与拟合性能。虽然模型未能完全通过每个数据点,但其在新数据上的泛化能力得到了改善。
小结 在贝叶斯学习过程中,过拟合
与正则化
是两个非常重要的概念。了解如何识别过拟合以及通过正则化技术来改善模型的泛化能力,将帮助我们更好地进行模型选择。在下一篇中,我们将进一步探讨贝叶斯回归
,特别是线性回归模型
的具体应用和实现。
通过这篇教程,我们希望你能够将在选择中考虑到模型的复杂度,使用正则化技术来提高良好的拟合能力,同时避免过拟合现象的发生。