案例介绍
在这个案例中,我们将使用波士顿房屋数据集来展示岭回归(Ridge Regression)的应用。岭回归是一种用于处理多重共线性问题的线性回归方法,它通过对模型的系数进行约束,可以提高模型的稳定性和泛化能力。
算法原理
岭回归通过在损失函数中添加一个L2正则化项来控制模型的复杂度。L2正则化项基于模型的系数向量的平方和来惩罚大的系数值,从而有效地减小模型的过拟合风险。这个正则化项可以写为:
$$
\lambda \sum_{j=1}^{p} w_j^2
$$
其中,$\lambda$ 是我们定义的正则化参数,$p$ 是特征的数量,$w_j$ 是第 j 个特征的系数。岭回归的目标是最小化以下损失函数:
$$
\text{Loss} = \text{MSE} + \lambda \sum_{j=1}^{p} w_j^2
$$
这里的 $\text{MSE}$ 是均方误差,即预测值与真实值之间的平方差的平均值。通过添加正则化项,岭回归通过权衡模型的拟合能力和稳定性来提高泛化能力。
数据集
我们将使用 Scikit-learn 自带的波士顿房屋数据集。该数据集包含关于波士顿地区房屋的信息,包括房屋的价格和一些与房屋相关的特征。我们的目标是根据这些特征来预测房屋的价格。
计算步骤
- 导入必要的库和数据集
- 数据探索和预处理
- 拆分数据集为特征矩阵 X 和目标向量 y
- 归一化特征矩阵 X
- 使用岭回归模型进行训练和预测
- 评估模型性能
Python代码示例
# 导入必要的库和数据集
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import Ridge
from sklearn.metrics import mean_squared_error
import numpy as np
import matplotlib.pyplot as plt
# 加载波士顿房屋数据集
boston = load_boston()
# 数据探索和预处理
X = boston.data
y = boston.target
# 拆分数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 归一化特征矩阵
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# 岭回归模型训练和预测
ridge = Ridge(alpha=1.0) # 正则化参数 alpha 默认为 1.0
ridge.fit(X_train_scaled, y_train)
y_pred = ridge.predict(X_test_scaled)
# 评估模型性能
mse = mean_squared_error(y_test, y_pred)
print("均方误差:", mse)
# 绘制预测值与真实值的散点图
plt.scatter(y_test, y_pred)
plt.xlabel("actual")
plt.ylabel("predict")
plt.title("ridge")
plt.show()
代码细节解释
- 我们首先导入了所需的库和数据集,包括波士顿房屋数据集。
- 我们使用
load_boston()
加载数据集,并将特征矩阵和目标向量分别赋值给变量 X 和 y。 - 然后,我们使用
train_test_split()
函数将数据集拆分为训练集和测试集,在代码中将测试集大小设置为 20%。 - 接下来,我们使用
StandardScaler()
对特征矩阵进行归一化,将每个特征的平均值缩放到 0,标准差缩放到 1。 - 我们创建了一个岭回归对象
Ridge()
,并使用fit()
方法对训练集进行拟合(训练)。 - 然后,我们使用
predict()
方法对测试集进行预测,得到预测结果。 - 最后,我们使用
mean_squared_error()
函数计算真实值与预测值之间的均方误差(MSE)作为模型性能的评估指标,并将散点图绘制出来以可视化预测结果。
岭回归模型通过引入正则化项来对线性回归模型进行约束,以避免过拟合。在代码示例中,我们使用了 Scikit-learn 中的 Ridge
类来实现岭回归,并使用均方误差来评估模型的性能。绘制的散点图展示了预测值与真实值之间的相关性。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。