正则化

模型正则化

当模型过拟合的时候会选择正则化来解决这个问题。本质上是在损失函数上加上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为超参数,用来做两个的比例

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容