线性回归(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 X1、X2就是特征,Y就是银行最终放款额度。
找到最合适的一个平面来拟合数据点:
拟合的平面方程: 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=0∑nθ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πσ1e−21(σϵ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πσ1e−21(σϵi)2:p(yi∣xi;θ)=2πσ1e−21(σ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=1∏mp(yi∣xi;θ)=i=1∏m2πσ1e−21(σ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=1∏mp(yi∣xi;θ)=logi=1∏m2πσ1e−21(σyi−θ⊤xi)2=mlog2πσ1−σ21∗21∗i=1∑m(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=1∑m(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(θ)=21∑i=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=1∑m(yi−θ⊤xi)2=21(Xθ−y)⊤(Xθ−y)对θ求偏导:∇θJ(θ)=X⊤Xθ−X⊤y令∇θJ(θ)=0得:θ=(X⊤X)−1X⊤y
采用微分和迹的关系 d f = t r ( ( ∂ f ∂ X ) ⊤ d X ) df= tr((\frac{\partial f}{\partial X})^\top dX) df=tr((∂X∂f)⊤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(Xθ−y)⊤(Xθ−y)]=tr[d(21(θ⊤X⊤Xθ−2y⊤Xθ+y⊤y))]=tr[d(21θ⊤X⊤Xθ)]−tr(d(2y⊤Xθ))+tr(d(y⊤y))=tr(21dθ⊤X⊤Xθ)+tr(21θ⊤X⊤Xdθ)−tr(2y⊤Xdθ)+0=tr(21θ⊤X⊤Xdθ)+tr(21θ⊤X⊤Xdθ)−tr(2y⊤Xdθ)=tr(θ⊤X⊤Xdθ−2y⊤Xdθ)=tr((θ⊤X⊤X−2y⊤X)dθ)=tr((X⊤Xθ−2X⊤y)⊤dθ)故:∂θ∂J(θ)=X⊤Xθ−2X⊤y
当 X ⊤ X X^\top X X⊤X为满秩矩阵或者正定矩阵时,令偏导数 ∂ J ( θ ) ∂ θ = X ⊤ X θ − 2 X ⊤ y = 0 \frac{\partial J(\theta)}{\partial \theta}=X^\top X\theta - 2X^\top y=0 ∂θ∂J(θ)=X⊤Xθ−2X⊤y=0得到:
θ = ( X ⊤ X ) − 1 X ⊤ y \theta=(X^\top X)^{-1}X^\top y θ=(X⊤X)−1X⊤y
其中 ( X ⊤ X ) − 1 (X^\top X)^{-1} (X⊤X)−1是矩阵 X ⊤ X X^\top X X⊤X的逆矩阵。但是现实任务中, X ⊤ X X^\top X X⊤X通常不是满秩矩阵,例如在许多任务中会遇到大量的变量,其数目甚至超过样例数,导致X的列数多于行数, X ⊤ X X^\top X X⊤X , X ⊤ X X^\top X X⊤X显然不满秩。此时可以解出多个 θ \theta θ,他们都能使均方差最小化。选择哪一个解作为输出,将由机器学习算法的归纳偏好决定,常见的做法是引入正则化项。