美文网首页
(六)Ridge回归--岭回归

(六)Ridge回归--岭回归

作者: 羽天驿 | 来源:发表于2020-04-07 08:36 被阅读0次

    一、本质是改良后的最小二乘法。

    原理1.png
    原理2.png
    作用.png

    岭回归是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性(精确解),以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠的回归方法,对病态数据的拟合要强于OLS

    • 损失函数

    • \min\limits_w||Xw - y||_2^2 + \alpha||w||_2^2

    • J(w) = \frac{1}{m}(||Xw - y||_2^2 + \alpha||w||_2^2) m代表样本量,求平均

    • J(w) = \frac{1}{m}\sum\limits_{i=1}^m[(Xw - y)^T(Xw - y) + \alpha w^Tw]

    • \frac{dX^T}{dX} = I 求解出来是单位矩阵

    • \frac{dX}{dX^T} = I

    • \frac{dX^TA}{dX} = A

    • \frac{dAX}{dX} = A^T

    • \frac{dXA}{dX} = A^T

    • \frac{dAX}{dX^T} = A

    • 求解梯度

      • 前半部分和之前的线性回归一模一样
      • J'(w) = \frac{2}{m} [X^T(Xw - y) +\alpha w]
      • \nabla_wJ(w) = \frac{2}{m} [X^T(Xw - y) +\alpha w]

    • 从损失函数,推导出岭回归的正规方程
      • J(w) = ||Xw - y||_2^2 + \alpha||w||_2^2
      • J(w) = (Xw - y)^T(Xw - y) + \alpha w^Tw
      • \nabla_wJ(w) = 2X^TXw - 2X^Ty + 2\alpha w
      • 令导数为0
      • 0 = X^TXw - X^Ty + \alpha w
      • 0=X^TXw - X^Ty + \alpha Iw I 是单位矩阵
      • 0 = (X^TX +\alpha I)w - X^Ty
      • (X^TX + \alpha I)w = X^Ty
      • (X^TX + \alpha I)^{-1}(X^TX + \alpha I)w = (X^TX + \alpha I)^{-1}X^Ty
      • w = (X^TX + \alpha I)^{-1}X^T y
    • 其中,α≥0是控制模型复杂度的因子(可看作收缩率的大小),α越大,收缩率越大, 那么系数对于共线性的鲁棒性更强

    • epsilon 就是步幅,学习率 之前代码中使用step表示变量

    • w = w - \epsilon \nabla_wJ(w)

    • w = w - \frac{2}{m}\epsilon[X^T(Xw - y) + \alpha w]

    • w = w - \frac{2\epsilon}{m}X^T(Xw - y) - \frac{2\alpha\epsilon}{m}w

    • w = [w - \frac{2\epsilon}{m}X^T(Xw - y)] - \frac{2\epsilon\alpha}{m}w

    • 前半部分相当于线性回归更新规则

    • 也就是说,领回归是线性回归的基础上多减了一项\frac{2\epsilon\alpha}{m}w

    • \alpha >= 0 缩放强度

      • \epsilon >=0 步幅
    • m > 0 样本数量大于0

    • 当w如果是正的数</font>:w = [w - \frac{2\epsilon}{m}X^T(Xw - y)] - \frac{2\epsilon\alpha}{m}w 多减去 \frac{2\epsilon\alpha}{m}w

      • 结果,系数w变小</font>
    • 当w如果是负的数</font>:w = [w - \frac{2\epsilon}{m}X^T(Xw - y)] - \frac{2\epsilon\alpha}{m}w 多减去 \frac{2\epsilon\alpha}{m}w

      • 负负得正
      • w加上了正的一个数
      • w是-10 + 2 = -8
      • 结果:<font color = green>系数w的绝对值变小</font>
    • 正则项:

      • regularizaton
      • 规则,增加规则,希望系数按照某种规则变化
      • 岭回归什么样的规则
      • 无论w正负,希望w绝对值变小
      • w变小,好处:
      • 防止过拟合

    二、代码

    (一。岭回归)

    这两个模型,都是解方程,构建模型

    对比,建模的哪些不同

    import numpy as np
    
    from sklearn.linear_model import LinearRegression,Ridge
    
    from sklearn import datasets
    
    d:\python3.7.4\lib\importlib\_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject
      return f(*args, **kwds)
    
    X,y = datasets.load_boston(True)
    X.shape
    
    (506, 13)
    
    linear = LinearRegression()
    linear.fit(X,y)
    w_ = linear.coef_
    b_ = linear.intercept_
    print('普通线性回归斜率是:\n',w_)
    print('普通线性回归截距是:',b_)
    
    普通线性回归斜率是:
     [-1.08011358e-01  4.64204584e-02  2.05586264e-02  2.68673382e+00
     -1.77666112e+01  3.80986521e+00  6.92224640e-04 -1.47556685e+00
      3.06049479e-01 -1.23345939e-02 -9.52747232e-01  9.31168327e-03
     -5.24758378e-01]
    普通线性回归截距是: 36.45948838509001
    
    ridge = Ridge(alpha= 10)
    ridge.fit(X,y)
    w_ = ridge.coef_
    b_ = ridge.intercept_
    print('岭回归斜率是:\n',w_)
    print('岭回归截距是:',b_)
    
    岭回归斜率是:
     [-0.10143535  0.0495791  -0.0429624   1.95202082 -2.37161896  3.70227207
     -0.01070735 -1.24880821  0.2795956  -0.01399313 -0.79794498  0.01003684
     -0.55936642]
    岭回归截距是: 27.467884964141252
    
    ridge = Ridge(alpha= 0)
    ridge.fit(X,y)
    w_ = ridge.coef_
    b_ = ridge.intercept_
    print('岭回归斜率是:\n',w_)
    print('岭回归截距是:',b_)
    
    岭回归斜率是:
     [-1.08011358e-01  4.64204584e-02  2.05586264e-02  2.68673382e+00
     -1.77666112e+01  3.80986521e+00  6.92224640e-04 -1.47556685e+00
      3.06049479e-01 -1.23345939e-02 -9.52747232e-01  9.31168327e-03
     -5.24758378e-01]
    岭回归截距是: 36.45948838508981
    

    相关文章

      网友评论

          本文标题:(六)Ridge回归--岭回归

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