模型正则化
当模型过拟合的时候会选择正则化来解决这个问题。本质上是在损失函数上加上W矩阵的和。当使损失函数最小时不仅仅要让MSE等函数变小,也需要让W变小。当W变小了,拟合问题也会改善。
岭回归
image∝为超参数,表示了W的比重,当∝高的时候正则化力度会更高,也就是W会变得更小
from sklearn.linear_model import Ridge
def RidgeRegression(degree, alpha):
return Pipeline([
("poly", PolynomialFeatures(degree=degree)),
("std_scaler", StandardScaler()),
("ridge_reg", Ridge(alpha=alpha))#∝超参数
])
ridge1_reg = RidgeRegression(20, 0.0001)
ridge1_reg.fit(X_train, y_train)
y1_predict = ridge1_reg.predict(X_test)
mean_squared_error(y_test, y1_predict)
LASSO回归
image类似岭回归,通过这个回归得到的模型图形上会比岭回归更倾向于是一条直线。因为他趋向于把一部分∝变为0。所以可以作为特征选择使用
from sklearn.linear_model import Lasso
def LassoRegression(degree, alpha):
return Pipeline([
("poly", PolynomialFeatures(degree=degree)),
("std_scaler", StandardScaler()),
("lasso_reg", Lasso(alpha=alpha))
])
lasso1_reg = LassoRegression(20, 0.01)
lasso1_reg.fit(X_train, y_train)
y1_predict = lasso1_reg.predict(X_test)
mean_squared_error(y_test, y1_predict)
弹性网
image同时使用L1正则项(LASSO回归)和L2正则项(岭回归),r为超参数,用来做两个的比例
网友评论