我想把一个例子笔记本放在一起,演示正则化如何对简单的线性回归这样一个简单的模型产生影响。但是,在执行下面的脚本时,我注意到LinearRegression()和Ridge()模型都返回相同的coef_和intercept_,因此返回相同的回归图,不管我如何改变正则化强度。
该数据是一个小数据集,包含2021年以美元计算的人均国内生产总值和一组国家(n=40)的生活满意度评分。用回归线(S)绘制的数据集如下所示:

在Aurélien Géron的手-使用Scikit的机器学习-学习和TensorFlow的书 (第27页)中,我阅读了以下内容:
约束模型使其更简单,降低过度拟合的风险称为正则化。例如,我们前面定义的线性模型有两个参数,θ0和θ1,这给了学习算法两个自由度来适应训练数据:它可以调整直线的高度(θ0)和斜率(θ1)。(...)如果我们允许算法修改θ1,但我们强迫它保持较小,那么学习算法将产生一个比两个自由度更简单的模型,但比一个自由度更复杂。
基于此,我的理解是,通过包含alpha超参数(即正则化lambda),我实际上是对coef_和intercept_的平方和施加了额外的约束,从而迫使模型在训练期间调整它们,因为新的成本函数现在包含了lambda项。在我当前的设置中,coef_ (斜率)在1e-5的范围内,而intercept_在5.75左右。它们的平方和约为33。我预计正则化模型会减少intercept_,因为这对平方和的影响要比coef_大得多。然而,当运行具有任意Ridge(alpha=...)值的alpha时,所学习的参数(因此是回归图)与非正则简单线性回归的参数相同。
我是不是误解了一些基本的东西?我怎么能看到正规化对这样一个模型的影响?
我的完整代码:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression, Ridge
X = np.c_[df['GDP_2021']]
y = np.c_[df['LifeSatisf']]
model1 = LinearRegression()
model1.fit(X, y)
model2 = Ridge(alpha=100)
model2.fit(X, y)
print("Coefs model 1: ", model1.coef_, model1.intercept_)
print("Coefs model 2: ", model2.coef_, model2.intercept_)
x_new = np.linspace(0, 140000, 10000)[:, np.newaxis]
y_1 = model1.predict(x_new).flatten().tolist()
y_2 = model2.predict(x_new).flatten().tolist()
plt.figure(figsize=(10, 3))
ax = plt.axes()
ax.scatter(df['GDP_2021'], df['LifeSatisf']);
ax.plot(x_new, y_1, c='r', linestyle='--');
ax.plot(x_new, y_2, c='b', linestyle='--');
plt.title("Life satisfaction vs. GDP per capita regression models");
plt.xlabel("GDP per capita (2021) [US$]");
plt.ylabel("Life satisfaction [-]");数据集作为逗号分隔的文件:
Country,LifeSatisf,GDP_2021
Australia,7.3,62618.59
Austria,7.1,53793.37
Belgium,6.9,50412.71
Canada,7.4,52791.23
Czech Republic,6.7,25806.38
Denmark,7.6,67919.59
Finland,7.6,53522.57
France,6.5,45028.27
Germany,7.0,50787.86
Greece,5.4,19827.16
Hungary,5.6,18527.59
Iceland,7.5,68843.65
Ireland,7.0,102394.02
Italy,6.0,35584.88
Japan,5.9,40704.3
Korea,5.9,35195.52
Luxembourg,6.9,131301.6
Mexico,6.5,9967.39
Netherlands,7.4,57714.88
New Zealand,7.3,48348.99
Norway,7.6,82244.23
Poland,6.1,17318.5
Portugal,5.4,24457.14
Slovak Republic,6.2,21383.29
Spain,6.3,30536.86
Sweden,7.3,58639.19
Switzerland,7.5,93515.48
Turkey,5.5,9406.58
United Kingdom,6.8,46200.26
United States,6.9,69375.38
Brazil,6.4,7741.15
Chile,6.5,16799.37
Estonia,5.7,27100.74
Israel,7.2,49840.25
Latvia,5.9,19538.9
Russia,5.8,11273.24
Slovenia,5.9,28939.27
South Africa,4.7,6861.17
Colombia,6.3,5892.14
Lithuania,5.9,22411.65发布于 2021-12-19 15:42:10
您对正则化的理解是完全正确的,您所使用的alpha值似乎太低,无法产生任何有意义的影响。将alpha的值增加到更大的值(下面的例子是10e9)确实显示了正则化对模型参数的影响:

https://datascience.stackexchange.com/questions/106258
复制相似问题