什么是正则化

问题:什么是正则化?

详细介绍:

正则化是机器学习中用来防止模型过拟合的一种技术。在模型训练过程中,正则化通过对模型的复杂度进行惩罚来避免模型对训练数据的过度拟合。如果不使用正则化,模型可能会过度强调训练数据中的细节,并因此无法很好地泛化到未知数据。

算法原理:

常见的正则化技术有L1正则化(Lasso)和L2正则化(Ridge)。L1正则化通过在损失函数中加入正则化项,这个正则化项是权重系数的绝对值之和,使得某些权重系数变为零,从而达到特征选择和模型简化的目的。L2正则化则是将权重系数的平方和加入到损失函数中,这使得权重系数较小,从而减少模型过拟合的风险。

公式推导:

L1正则化公式:

L1正则化的损失函数表示为:
$$Loss = \sum_{i=1}^{n} (y_i – \hat{y_i})^2 + \alpha \sum_{j=1}^{p} |w_j|$$

其中,$n$表示样本数量,$p$表示特征数量,$y_i$表示真实值,$\hat{y_i}$表示预测值,$w_j$表示特征系数,$\alpha$表示正则化强度。

L2正则化公式:

L2正则化的损失函数表示为:
$$Loss = \sum_{i=1}^{n} (y_i – \hat{y_i})^2 + \alpha \sum_{j=1}^{p} w_j^2$$

计算步骤:

  1. 初始化权重系数,在线性回归中为零矩阵或随机生成的小数矩阵。
  2. 基于梯度下降法或正规方程法,通过最小化损失函数进行训练。
  3. 在更新权重系数时,根据正则化公式添加正则化项。
  4. 重复步骤2和3,直到达到收敛条件。

复杂Python代码示例:

下面是一个使用L2正则化(Ridge)进行线性回归的示例代码:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# 生成虚拟数据
np.random.seed(0)
n_samples = 100
X = np.random.normal(size=(n_samples, 1))
y = 2*X[:, 0] + np.random.normal(size=n_samples)

# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

# 初始化Ridge模型,设置正则化强度
ridge = Ridge(alpha=0.5)

# 模型训练
ridge.fit(X_train, y_train)

# 预测
y_pred = ridge.predict(X_test)

# 计算均方误差
mse = mean_squared_error(y_test, y_pred)

# 绘制结果
plt.scatter(X_test, y_test, color='black')
plt.plot(X_test, y_pred, color='blue', linewidth=3)
plt.title("Ridge Regression (alpha=0.5), MSE={:.2f}".format(mse))
plt.xlabel("X")
plt.ylabel("y")
plt.show()

代码细节解释:

  1. 首先,我们使用numpy库生成100个服从正态分布的随机数据作为特征(X),并构造标签(y)。
  2. 然后,使用train_test_split函数将数据划分为训练集和测试集,其中测试集占比为20%。
  3. 接下来,初始化Ridge模型,并设置正则化强度(alpha)为0.5。
  4. 使用训练集对模型进行训练,调用fit方法传入训练集的特征和标签。
  5. 进行预测,通过调用predict方法传入测试集的特征得到预测结果。
  6. 最后,使用均方误差(MSE)作为评估指标衡量预测的准确性,并将结果可视化显示。

这段代码演示了使用L2正则化的线性回归模型。通过调整正则化强度(alpha)的值,我们可以控制模型的复杂度和正则化的程度。

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/821980/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球