当α参数接近零时,Tikhonov(岭)代价与最小二乘代价等价。scikit-learn docs about the subject上的所有内容都表示相同。所以我期待
sklearn.linear_model.Ridge(alpha=1e-100).fit(data, target)
相当于
^{pr2}$但事实并非如此。为什么?在
更新代码:
import pandas as pd
from sklearn.linear_model import Ridge, LinearRegression
from sklearn.preprocessing import PolynomialFeatures
import matplotlib.pyplot as plt
%matplotlib inline
dataset = pd.read_csv('house_price_data.csv')
X = dataset['sqft_living'].reshape(-1, 1)
Y = dataset['price'].reshape(-1, 1)
polyX = PolynomialFeatures(degree=15).fit_transform(X)
model1 = LinearRegression().fit(polyX, Y)
model2 = Ridge(alpha=1e-100).fit(polyX, Y)
plt.plot(X, Y,'.',
X, model1.predict(polyX),'g-',
X, model2.predict(polyX),'r-')
注意:对于alpha=1e-8
或alpha=1e-100
,绘图看起来是一样的
根据documentation,}的结果似乎收敛。在
alpha
必须是正浮点数。您的示例将alpha=0
作为整数。使用一个小的正alpha
,Ridge
和{更新 上面的
alpha=0
是int
的问题,似乎只是上面例子中的几个玩具问题的问题。在对于住房数据来说,问题是规模问题。调用的15次多项式导致数值溢出。要从
^{pr2}$LinearRegression
和Ridge
生成相同的结果,请先尝试缩放数据:相关问题 更多 >
编程相关推荐