正则化

作者: 61etj | 来源:发表于2018-11-06 01:01 被阅读0次

    模型正则化

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

    相关文章

      网友评论

          本文标题:正则化

          本文链接:https://www.haomeiwen.com/subject/qzqyxqtx.html