阅读本文需要的背景知识点:标准线性回归算法、一丢丢编程知识

一、引言

  前面一节我们学习了机器学习算法系列(三)- 标准线性回归算法(Standard Linea算法的五个特性r RePythongression A矩阵lgorithm),最后求得标准线性回归的代价函数的解析解 w 为:

w=(XTX)−1XTyw=left(X^{T} Xright)^{-1} X^{T} y

  其中提到如果矩阵 X 的转置与矩阵 X 相乘后的矩阵不是满秩矩阵时,这个矩阵是不可逆的,还提到其本质是多个自变量 x 之间存在多重共线性。下面来介绍多重共矩阵和行列式的区别线性的问题与解决这个问题的其中一个方法 – 岭回归1(Ridge Regression)

二、多重共线性

  先来看看多重共线性在维基百科中的解释:

多重共线性2(Multicollinearity)python基础教程是指多变量线性回工商银行归中,变量之间由于存在精确相关关系或高度相关关系而使回归估计不准确。

  那么什么是精确相关关系与高度相关关系呢?假如有下面的(1)式,其中 w1 = 2、w2 = 3,同时如果又存在(2)式的关系,这时就说明 x1 与 x2 存在精确相矩阵相乘怎么算关关系。python是什么意思当 x1 与 x2 之间存在近似精确相关关系,例如 x1 约等于 2 倍python基础教程的 x2,则说明存在高度相关关系。

{y=2机器学习x1+3×2(1)x2=2×1(2)python是什么意思left{begin{array}{l} y=2 x_{1}矩阵游戏+3 x_{2} &工龄差一年工资差多少 (1)\ x_{机器学习2}=2 x_{1} & (2) end{array}right.

算法设计与分析 因为由(2)式可以将(1)式改写成不同的形式,这样就会导致 w 存在无数种解,会使得最后的回归估计不准确。google

⟹{y=2×1+3×2⇒w1=2w2=3y=8×1⇒w1=8w2=0y=4×2⇒w1=0w2=4y=6×1+x2⇒w1=6w2=1…Longrightarrowleft{begin{array}{lll} y=2 x_{1}+3 x_{2} & Rightarrow w_{1}=2 & w_{2}算法分析的目的是=3 \ y=8 x_{1} & Rightarrow w_{1}=8 & w_{2}=0 \ y=4 x_{2} & Rightarrow w_{1矩阵和行列式的区别}=0 & w矩阵计算器_{2}=4 \ y=6 x_{1}+x_{2} & Rightarrow w_{1}=6 & w_{2}=1 \ ldots & &am机器学习p; end{array}right.

  根据 w 的解析解,可以通过下面的公式来求矩阵的迹解其中的逆矩阵运算,被除数为矩阵的伴随矩阵3,除数为矩阵的行列式。可以看到矩阵可逆的矩阵的乘法运算条件是其行列算法工程师式不能为零。

(XTX)−1=(XTX工资超过5000怎么扣税)∗∣X公司让员工下班发手机电量截图TX∣left(X^TXright)^{-1} = frac{left(X^TXright)^*}{mid X^TX mid }

  如果自变量之间存在多重矩阵相乘怎么算共线性,会使得矩阵的行列式为零,导致矩阵不可逆。如下图算法是指什么中的示例 X,可以看到 x1 与 x2 存在精确相关关系,相乘后的矩阵经过初等变换4后其行列式为零,说明相乘后的矩阵的行列式也必然为零(初等变换不改变行列式为零的判断),这时的矩阵不矩阵可逆。如果自变量之间是高度相关工龄越长退休金越多吗关系,会使得矩阵的行列式近似等于零,这时所得的 w 的偏差会很大,也会造成回归估计不准确。

X=[112124136148]XT=[111112342468]XTX=[410201030602060120]⟶初等变换[100012000]begin{array}{c} X=left[begin{array}{lll} 1 & 1 & 2 \ 1 & 2 & 4 \ 1 & 3 & 6 \ 1 & 4 & 8 end{array}right] quad X^{T}=left[begin{array}{llll} 1 & 1 & 1 & 1 \ 1 & 2 & 3 & 4 \ 2 & 4 & 6 & 8 end{array}right] \ X^{T} X=left[begin{array}{ccc} 4 & 10 & 20 \ 10 & 30 & 60 \ 20 & 60 & 120 end{array}right] stackrel{text { 初等变换 }}矩阵的秩{lonpython可以做什么工作grightarrow}left[begin{array}{lll} 1 & 0 & 0 \ 0 & 1 & 2 \ 0 & 0 & 0 end{array}right] end{a公司让员工下班发手机电量截图rray}

  多重共线性的问题既然是自变量之间存在相关关系,其中一个解决方矩阵转置法就是剔除掉共线的自变量,可以通过计算方差扩大因子5宫颈癌Variance inflation factor,VIF)来量化自变量之间的相关关系,方差扩大因子越大说明自变量的共线性越严重。

  另一种方式是通过对代价函数正则化加入惩罚项来解决,其中一种正则化方式被称为吉洪诺夫正则化(Tikhonov re枸杞gpython怎么读ula算法rization),这种代价函数正则化后的线性回归被称为岭回归(Ridge Regression)。

三、算法步骤

  岭回归的代价python编程函数第一项与标准线性回归的一致,都是欧几里得距离的平方和,只是在后面加上了一个 w 向量的L2-范数6 的平方作为惩罚项(L2-范数的含义为向量 W 每个元素的平方和然后开平方),其中 表示惩罚项的系数,人为的公司让员工下班发手机电量截图控制惩罚项的大小。由于正则项是L2-范数,有时这种正则化方式也被称为L2正则化。

Cost⁡(w)=∑i=1N(yi−wTxi)2+∥w∥22operatorname{Cost}(w) = sum_{python保留字i = 1}^N left(算法导论 y_i – w^Tx_i right)^2 + lambda|w|_{2}^{2}

  同标准线性回归一样,也是求龚俊使得岭回归的代价函数最小时 w 的大小:

w=argmin⁡w(∑i=1N(yi−wTxi)2+∥w∥22矩阵转置)w=underset{w}{operatorname{argmin}}lpython是什么意思eft(sum_{i=1}^{N}left(y_{i}-w^{T} x算法工程师_{i}right)^{2}+lambda|w|_{2}^{2}right)

  代价函数通过求导直接得到 w 的解析解,其中 X 为 N x M 矩阵,y 为 N 维列向量, 属于实数集,I 为 M x M 的单位矩阵。

w=(XTX+I)−1XTy∈Rw=left(X^{T} X+lambda算法是指什么 Iright)^{-1} X^{T}y quad lambda in mat算法设计与分析hbb{R}
X=[x1Tx2T⋮xNT]=[X11X12⋯X1MX21X22⋯X2M⋮⋮⋱⋮XN1XN2⋯XNM]y=(y1y2⋮yN)X=left[begin{array}{c} x_{1}^{T} \ x_{2}^{T} \ vdots \ x_{N}^{T} end{array}right]=left[begin{array}{cccc} X_{11} & X_{12} & cdots & X_{1 M} \ X_{21} & X_{22} & cdots & X_{2 M} \ vdots & vdots & ddots & vdots \ X_{N 1} & X_{N 2} & cdots & X_{N M} end{array}right] quad y=left(算法设计与分析begin{array}{c} y_{1} \ y_{2} \ vdots \ y_{N} end{array}right)

四、原理证明

岭回归代价函数为凸函数
  同样需要证明:

f(x1+x22)≤f(x1)+f(x2)2fleft(frac{x_{1}+x_{2}}{矩阵转置2}right) leq frac{fleft(x_{1}right)+fleft(x_{2}right)}{2}

  不等式左边:

Cos矩阵转置t⁡(python可以做什么工作w1+w22算法的空间复杂度是指)=∑i=1N[(w1+w22)Txi−yi]2+∥w1+w22∥22operpython语言atorname{Cost}left(frac{w_{1}+w_{2}}{2}righ算法是指什么t)=sum_{i=1}^{N}left[left(frac{w_{1}+w_{2}}{2}right)^{T} x_{i}-y_{i}right]^{2}+lambdaleft|fr矩阵的秩ac{w_{1}Python+w_{2}}{2}right|_{2}^{2}

  不等式右边:

Cost⁡(w1)+Cost⁡(w2)2=∑i矩阵相乘怎么算=1N(w1Txi−y矩阵i)2+∑i=1N(w2Txi−yi)2+∥w1∥22+∥w2∥222frac{operatorname{Cost}left(w_{1}rightGo)+operatorname{Cost}left(w_{2}right)}{2}=frac{sum_{i=1}^{Npython安装教程}left(w_{1}^{T} x_{i}-y_{i}right)^{2}+sum_{i=1}^{N}left(w_{2}python123^{T} x_{i}-y_{i}right)^{2python123平台登录}+la算法是指什么mbdaleft|w_{1}rig矩阵计算器ht|_{2}^{2}+lambdaleft|w_{2}rig龚俊ht|_{2}^{2}}{2}

(1)不等式python123两边的工龄越长退休金越多吗算法的有穷性是指半部分与标准线性回归一致,只需要证明剩下的差值大于等于零即可
(2)将其工资超过5000怎么扣税改写成向量点算法的时间复杂度取决于积的形式
(3)展开括号
(4)合并相同的项,w1的转置乘w2与w2的转置乘w1互为转置,又因为算法的五个特性结果为实数,所以这个矩阵的逆两项可以合并
(5)可以写成向量的平方的形式

=算法是指什么∥w1∥22+∥w2∥22−2∥w1+w22∥22(1)=[w1Tw1+w2Tw2−2(w1+w22)T(w1+w22)](2)=(w1Tw1+w2Tw2−w1Tw1+w2Tw2+w1Tw2+w2Tw12)(3)=2(w1Tw1+w2Tw2−2w1Tw2)(4)矩阵计算器=2(w1−w2)T(w1−w2)(5)beginpython是什么意思{aligned} Delt矩阵计算器a &=lambdaleft|w_{1}righpython123t|_{2}^{2}+lambdaleft|w_{2}right|_{2}^{2}-2 lambdaleft|frac{w_{1}+w_{2}}工龄差一年工资差多少{2}right|_{2}^{2} & (1) \ &=lambdal算法设计与分析eft[w_{1}^{T} w_{1}+w_{2}^{T} w_{2}-2left(frac{w_{1}+w_{2}}{2}right)^{T}left(frac{w_{1}+w_{2}}{2}right)right] & (2) \ &=lambdalef公积金t(w_{1}^{T} w矩阵转置_{1}+w_{2}^{T} w_{2}-frac{w_{1}^{T} w_{1}+w_{2}^{T} w_{2}+w_{1}^{T} w_{2}+w_{2}^{T} w_{1}}{2}right) & (3) \ &=frac{lapython编程mbda}{2}left(w_{1}^{T} w_{1}+w_{2}^{T} w_{2}-2矩阵计算器 w_{1}^{T} w_{2}right) & (4)工商银行 \ &=工资超过5000怎么扣税frac{lambda}{2}left(w_{1}-w_{2}right)^{T}left(w_{1}-w_{2}right) & (5) end{aligned}

  不等式右边减去不等python123平台登录式左边的差值为平方式的连加运算加上两向量差的平方,人为的控制 的大小,最后的结果在实数范围内必然大于等于零,证毕。

岭回归代python编程价函数的解工商银行析解
(1)岭回归的代价函数
(2)前面三项为标准线性回归代价函数展开后的结果,w 的 L2-范数的平方可以写成向量 w 的点算法的特征
(3)合并第一项与第四项

Cospython可以做什么工作t⁡(w)=∑i=1N(yi−wTxi)2+∥w∥22(1)=wTXTXw−2wTXTy+yTy+wTw(2)=wT(XTX+I)w−2wTXTy+yTy(3)begin{aligned} operatorname{Cost}(w) &=sum_{i=1}^{N}left(y_{python语言i}-w^{T} x_{i}ri矩阵相乘怎么算ght)^{2}+lambda|w|_{2}^{2}矩阵和行列式的区别 &amp工商银行; (1)\ &=w^{T} X^{T} X w-2 w^{T} X^{PythonT} y+y^{T} y+工龄越长退休金越多吗lambda w^{T} w & (2)\ &=w^{T}left(X^{T} X+lambda Iright) w-2 w^{T} X^{T} y+y^{T矩阵和行列式的区别} y & (3) end{aligned}

(1)代价函数对 w 求偏导数,根据向量求导公式,只有第一项和第二项与 W 有关,最后一项为常数,又因为代价函数是个凸函数,矩阵相乘怎么算当对 W 的偏导数为 0 向量时,代价函数为最小值。
(2)将第二项移项后同时除以2,再两边同时在前面乘以一个逆矩阵,等式左边的矩阵和逆矩阵乘后为单位矩阵,所以只剩下 w 向量。

∂Cost(w)⁡∂w=2(XTX+I)w−2XTy=0(1)w=(XTX+I)−1XTy(2)begin{aligned} frac{partial operatorname{Cost(机器学习w)}}{partial w} &= 2(X^TX + lambda I)w – 2X^Ty = 0 & (1) \python编程 w &= (X^TX + lambda I)^{-1}X^Ty & (2) end{aligned}

  可以看到岭回归代价函数的解析解相较于标准线性回归来说多了矩阵的秩一个可以人为控制的对角矩阵,这时可以通过调整不同的 来使得括号内的矩阵可逆。
  在上一节的工作年限与平均月工资的例子中,X 为 一个 5 x 2 的矩矩阵乘法阵,y 为一个python可以做什么工作 5 维列向量,当 为 0.1 时,最后可以算矩阵相乘怎么算得 w 为一个 2 维列向量,则这个例子的线性方程为 y = 2矩阵139 * x算法导论 – 403.9。算法的空间复杂度是指

X=[1112131415]y=(159838986220779910510)X = begin{bmat算法分析的目的是rix} 1 & 1\ 1 & 2\ 1 & 3\ 1 & 4\ 1 & 5 end{bmatrix} quad算法的有穷性是指 y = begin工资超过5000怎么扣税{pmatrix} 1598\ 3898\ 6220\ 7799\ 10510 end{pmatrix}
w=(XTX+I)−1XTy=(−403.92139.0)w = left(X^TX + lambda Iright算法的有穷性是指)^{-1}X^Ty = begin{pmatrix} -403.9\ 2139.0 end{pmatrix}

  可以看到加了惩罚项后,相较于标准线性回归的结果,拟合变差了,但是通过人为的控制惩罚项的大小,解决了自变量多重共线性的问题。

五、代码实python123

使用 Python 实现线性回归算法:

import numpy as np
def ridge(X, y, lambdas=0.1):
    """
    岭回归
    args:
        X - 训练数据集
        y - 目标标签值
        lambdas - 惩罚项系数
   return:
       w - 权重系数
   """
   return np.linalg.inv(X.T.dot(X) + lambdas * np.eye(X.shape[1])).dot(X.T).dot(y)

六、第三算法方库实现

scikit-learn7 实现:

from sklearn.linear_model import Ridge
# 初始化岭回归器
reg = Ridge(alpha=0.1, fit_intercept=False)
# 拟合线性模型
reg.fit(X, y)
# 权重系数
w = reg.coef_

七、动画演示

  下图展示了算法是指什么惩罚系数 对各个自变量的权重系数的影响,横轴为惩罚系数 ,纵轴为权重系数,每一个颜色表示一矩阵计算器个自变量的权重系数:

机器学习算法系列(四)- 岭回归算法(Ridge Regression Algorithm)

机器学习算法系列(四)- 岭回归算法(Ridge Regression Algorithm)

  可以看到当 越大时( 向算法的特征左移动),惩罚项占据主导地位,会使得每个自变量的权重系数趋近于零,而当 越小时( 向右移动),惩罚项的影响越来越小,会导致每个自变量的权重系数震荡的幅度变大。在实际应用中需要多次调整不同的 值来找到一个合适的模型使得最后的效果最好。

八、思维导图

机器学习算法系列(四)- 岭回归算法(Ridge Regression Algorithm)

九、参考文献

  1. en.算法wikipedia.org/w矩阵游戏iki/Tikh矩阵的迹on…
  2. en.wikipedia.org/wiki/Multic…
  3. en.wikipedia.org/wik矩阵相乘怎么算i/Adjuga…
  4. en.wikipedia.o算法rg/wiki/Elemen…
  5. en.wikipedia.org/wiki/Varian…
  6. enpython安装教程.wikipedpython编程ia.org/wiki/Norm_(…
  7. scikit-learn.org/stable/modu…

完整演示请点击这里

算法分析的目的是:本文力求准确并通俗易懂,但由于笔者也是初学者,水平有限,如文中存在错误或遗漏之处,恳请读者通过留言的方式批评指正
本文首发于——AI导图,欢迎关注