岭回归是失损函数通过添加所有权重的平方和的乘积(L2)来惩罚模型的复杂度。
均方差除以2是因为方便求导,w_j指所有的权重系数, λ指惩罚型系数,又叫正则项力度
特点:
岭回归不会将权重压缩到零,这意味着所有特征都会保留在模型中,但它们的权重会被缩小。
适用于特征间存在多重共线性的情况。
岭回归产生的模型通常更为平滑,因为它对所有特征都有影响。
from sklearn.linear_model import Ridge from sklearn.model_selection import train_test_split from sklearn.datasets import fetch_california_housing from sklearn.preprocessing import StandardScaler from sklearn.metrics import mean_squared_errorx,y = fetch_california_housing(return_X_y=True,data_home = "./src")x_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.2,random_state = 42) scaler = StandardScaler() x_train = scaler.fit_transform(x_train) x_train = scaler.fit_transform(x_train)model = Ridge(alpha = 1,max_iter = 100,fit_intercept=True)#调节这里的alpha可以改变w model.fit(x_train,y_train)y_hat = model.predict(x_test) print("loss:",mean_squared_error(y_test,y_hat)) print("w:",model.coef_) print("b:",model.intercept_)
具有L2正则化的线性回归-岭回归。
sklearn.linear_model.Ridge()
1 参数:
(1)alpha, default=1.0,正则项力度
(2)fit_intercept, 是否计算偏置, default=True
(3)solver, {‘auto’, ‘svd’, ‘cholesky’, ‘lsqr’, ‘sparse_cg’, ‘sag’, ‘saga’, ‘lbfgs’}, default=’auto’
当值为auto,并且数据量、特征都比较大时,内部会随机梯度下降法。
(4)normalize:,default=True, 数据进行标准化,如果特征工程中已经做过标准化,这里就该设置为False
(5)max_iterint, default=None,梯度解算器的最大迭代次数,默认为150002 属性
coef_ 回归后的权重系数
intercept_ 偏置
说明:SGDRegressor也可以做岭回归的事情,比如SGDRegressor(penalty='l2',loss="squared_loss"),但是其中梯度下降法有些不同。所以推荐使用Ridge实现岭回归