美文网首页
(六)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