最小二乘线性回归

线性回归(linear regression):试图学得一个线性模型以尽可能准确地预测实际值的输出。

以一个例子来说明线性回归,假设银行贷款会根据 年龄 和 工资 来评估可放款的额度。即:

数据:工资和年龄(2个特征)

目标:预测银行放款额度(标签)

参数:考虑工资和年龄分别对放款额度的影响程度

可以写成这样: Y = X 1 θ 1 + X 2 θ 2 Y=X_1\theta_1+X_2\theta_2 Y=X1θ1+X2θ2,这里 X 1 、 X 2 就是特征, Y X_1、X_2 就是特征,Y X1X2就是特征,Y就是银行最终放款额度。

​ 找到最合适的一个平面来拟合数据点:
最小二乘线性回归_第1张图片

​ 拟合的平面方程: h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 h_{\theta}(x)=\theta_0+\theta_1x_1+\theta_2x_2 hθ(x)=θ0+θ1x1+θ2x2,这里 θ 0 \theta_0 θ0是偏置项。整合该方程可以写成如下形式:
h θ ( x ) = ∑ i = 0 n θ i x i = θ ⊤ x h_{\theta}(x)=\sum_{i=0}^n \theta_ix_i=\theta^\top x hθ(x)=i=0nθixi=θx
注意这里 x 0 = 1 x_0=1 x0=1,添加一个全为1的特征,方便表示。

​ 真实值和预测值之间肯定存在误差,用 ϵ \epsilon ϵ来表示误差。对于每个样本:
y i = θ ⊤ x i + ϵ i y_i = \theta^\top x_i + \epsilon_i yi=θxi+ϵi
这里 y i y_i yi 为真实值, θ ⊤ x i \theta^\top x_i θxi为预测值, ϵ i \epsilon_i ϵi为误差项

对于误差的理解:误差 ϵ i \epsilon_i ϵi是独立同分布的,且服从均值为0方差为 θ 2 \theta^2 θ2的高斯分布

  • 独立:每个样本 x i x_i xi是没有关系的(张三李四一起放款,他俩没关系)
  • 同分布:每个 x i x_i xi都是对于同一个问题的(他俩都是来同一家银行 )
  • 高斯分布:误差可大可小,但是绝大多数情况下这个浮动不会太大,极小情况下浮动会比较大,符合正常情况。

​ 由于误差服从高斯分布:
p ( ϵ i ) = 1 2 π σ e − 1 2 ( ϵ i σ ) 2 p(\epsilon_i) = \frac{1}{\sqrt{2\pi}\sigma } e^{-\frac{1}{2}\left(\frac{\epsilon_i}{\sigma}\right)^2} p(ϵi)=2π σ1e21(σϵi)2
将预测值和误差带入上式得:
y i = θ ⊤ x i + ϵ i 带入   p ( ϵ i ) = 1 2 π σ e − 1 2 ( ϵ i σ ) 2 : p ( y i ∣ x i ; θ ) = 1 2 π σ e − 1 2 ( y i − θ ⊤ x i σ ) 2 y_i = \theta^\top x_i + \epsilon_i \\ 带入\ \ p(\epsilon_i) = \frac{1}{\sqrt{2\pi}\sigma } e^{-\frac{1}{2}\left(\frac{\epsilon_i}{\sigma}\right)^2}:\\ p(y_i|x_i;\theta)=\frac{1}{\sqrt{2\pi}\sigma } e^{-\frac{1}{2}\left(\frac{y_i-\theta^\top x_i}{\sigma}\right)^2} yi=θxi+ϵi带入  p(ϵi)=2π σ1e21(σϵi)2p(yixi;θ)=2π σ1e21(σyiθxi)2
上式的似然函数如下:
L ( θ ) = ∏ i = 1 m p ( y i ∣ x i ; θ ) = ∏ i = 1 m 1 2 π σ e − 1 2 ( y i − θ ⊤ x i σ ) 2 L(\theta) = \prod_{i=1}^mp(y_i|x_i;\theta)=\prod_{i=1}^m \frac{1}{\sqrt{2\pi}\sigma } e^{-\frac{1}{2}\left(\frac{y_i-\theta^\top x_i}{\sigma}\right)^2} L(θ)=i=1mp(yixi;θ)=i=1m2π σ1e21(σyiθxi)2
对似然函数的解释:

什么样的参数跟我们的数据组合后恰好是真实值

对数似然:
l o g L ( θ ) = l o g ∏ i = 1 m p ( y i ∣ x i ; θ ) = l o g ∏ i = 1 m 1 2 π σ e − 1 2 ( y i − θ ⊤ x i σ ) 2 = m l o g 1 2 π σ − 1 σ 2 ∗ 1 2 ∗ ∑ i = 1 m ( y i − θ ⊤ x i ) 2 log L(\theta) =log \prod_{i=1}^mp(y_i|x_i;\theta)=log \prod_{i=1}^m \frac{1}{\sqrt{2\pi}\sigma } e^{-\frac{1}{2}\left(\frac{y_i-\theta^\top x_i}{\sigma}\right)^2}\\=mlog\frac{1}{\sqrt{2 \pi}\sigma}-\frac{1}{\sigma ^2}*\frac12*\sum_{i=1}^m(y_i-\theta^\top x_i)^2 logL(θ)=logi=1mp(yixi;θ)=logi=1m2π σ1e21(σyiθxi)2=mlog2π σ1σ2121i=1m(yiθxi)2
目标是让似然函数(对数变换之后)越大越好:
m a x   l o g L ( θ ) → m i n   J ( θ ) = 1 2 ∑ i = 1 m ( y i − θ ⊤ x i ) 2 (最小二乘法) max \ log L(\theta)\\ →min \ J(\theta)=\frac12 \sum_{i=1}^m(y_i-\theta^\top x_i)^2(最小二乘法) max logL(θ)min J(θ)=21i=1m(yiθxi)2(最小二乘法)
J ( θ ) = 1 2 ∑ i = 1 m ( y i − θ ⊤ x i ) 2 J(\theta)=\frac12 \sum_{i=1}^m(y_i-\theta^\top x_i)^2 J(θ)=21i=1m(yiθxi)2即为最小二乘法。

​ 将目标函数写为矩阵形式:
J ( θ ) = 1 2 ∑ i = 1 m ( y i − θ ⊤ x i ) 2 = 1 2 ( X θ − y ) ⊤ ( X θ − y ) 对 θ 求偏导 : ∇ θ J ( θ ) = X ⊤ X θ − X ⊤ y 令 ∇ θ J ( θ ) = 0 得 : θ = ( X ⊤ X ) − 1 X ⊤ y J(\theta)=\frac12 \sum_{i=1}^m(y_i-\theta^\top x_i)^2= \frac12(X\theta-y)^\top (X\theta-y)\\ 对\theta 求偏导:\\ \nabla_\theta J(\theta)=X^\top X\theta-X^\top y\\ 令\nabla_\theta J(\theta)=0得:\\ \theta=(X^\top X)^{-1}X^\top y J(θ)=21i=1m(yiθxi)2=21(y)(y)θ求偏导:θJ(θ)=XXyθJ(θ)=0:θ=(XX)1Xy
​ 采用微分和迹的关系 d f = t r ( ( ∂ f ∂ X ) ⊤ d X ) df= tr((\frac{\partial f}{\partial X})^\top dX) df=tr((Xf)dX)进行求导,求导过程如下:
d J ( θ ) = t r ( d J ( θ ) ) = d [ 1 2 ( X θ − y ) ⊤ ( X θ − y ) ] = t r [ d ( 1 2 ( θ ⊤ X ⊤ X θ − 2 y ⊤ X θ + y ⊤ y ) ) ] = t r [ d ( 1 2 θ ⊤ X ⊤ X θ ) ] − t r ( d ( 2 y ⊤ X θ ) ) + t r ( d ( y ⊤ y ) ) = t r ( 1 2 d θ ⊤ X ⊤ X θ ) + t r ( 1 2 θ ⊤ X ⊤ X d θ ) − t r ( 2 y ⊤ X d θ ) + 0 = t r ( 1 2 θ ⊤ X ⊤ X d θ ) + t r ( 1 2 θ ⊤ X ⊤ X d θ ) − t r ( 2 y ⊤ X d θ ) = t r ( θ ⊤ X ⊤ X d θ − 2 y ⊤ X d θ ) = t r ( ( θ ⊤ X ⊤ X − 2 y ⊤ X ) d θ ) = t r ( ( X ⊤ X θ − 2 X ⊤ y ) ⊤ d θ ) 故: ∂ J ( θ ) ∂ θ = X ⊤ X θ − 2 X ⊤ y dJ(\theta)= tr(dJ(\theta))=d[\frac12(X\theta-y)^\top (X\theta-y)]\\ =tr[d(\frac12(\theta^\top X^\top X\theta-2y^\top X\theta+y^\top y))]\\ =tr[d(\frac12\theta^\top X^\top X\theta)]-tr(d(2y^\top X\theta))+tr(d(y^\top y))\\ =tr(\frac12d\theta^\top X^\top X\theta)+tr(\frac12\theta^\top X^\top Xd\theta)-tr(2y^\top Xd\theta)+0\\ =tr(\frac12\theta^\top X^\top Xd\theta)+tr(\frac12\theta^\top X^\top Xd\theta)-tr(2y^\top Xd\theta)\\ =tr(\theta^\top X^\top Xd\theta-2y^\top Xd\theta)=tr((\theta^\top X^\top X-2y^\top X)d\theta)\\ =tr(( X^\top X\theta - 2X^\top y)^\top d\theta)\\ 故:\\ \frac{\partial J(\theta)}{\partial \theta}=X^\top X\theta - 2X^\top y\\ dJ(θ)=tr(dJ(θ))=d[21(y)(y)]=tr[d(21(θX2y+yy))]=tr[d(21θX)]tr(d(2y))+tr(d(yy))=tr(21dθX)+tr(21θXXdθ)tr(2yXdθ)+0=tr(21θXXdθ)+tr(21θXXdθ)tr(2yXdθ)=tr(θXXdθ2yXdθ)=tr((θXX2yX)dθ)=tr((X2Xy)dθ)故:θJ(θ)=X2Xy
X ⊤ X X^\top X XX为满秩矩阵或者正定矩阵时,令偏导数 ∂ J ( θ ) ∂ θ = X ⊤ X θ − 2 X ⊤ y = 0 \frac{\partial J(\theta)}{\partial \theta}=X^\top X\theta - 2X^\top y=0 θJ(θ)=X2Xy=0得到:
θ = ( X ⊤ X ) − 1 X ⊤ y \theta=(X^\top X)^{-1}X^\top y θ=(XX)1Xy

其中 ( X ⊤ X ) − 1 (X^\top X)^{-1} (XX)1是矩阵 X ⊤ X X^\top X XX的逆矩阵。但是现实任务中, X ⊤ X X^\top X XX通常不是满秩矩阵,例如在许多任务中会遇到大量的变量,其数目甚至超过样例数,导致X的列数多于行数, X ⊤ X X^\top X XX X ⊤ X X^\top X XX显然不满秩。此时可以解出多个 θ \theta θ,他们都能使均方差最小化。选择哪一个解作为输出,将由机器学习算法的归纳偏好决定,常见的做法是引入正则化项。

你可能感兴趣的:(线性回归,机器学习,算法)