【机器学习】线性回归模型

一、线性回归模型概述

  • 线性回归模型:简单的来说就是在样本空间中的一条直线或者一个平面或者更高维的超平面,并且我们要使得预测值与真实值之间的误差最小化。
  • 三维样本空间如下图:
  • 二维样本空间:

二、线性回归模型

  • 给定训练集 D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , , ( x n , y n ) D={(x_1,y_1 ),(x_2,y_2 ),…,(x_n,y_n)} 其中 x i R d ; y R ; x_i∈R^d;y∈R; 线性回归模型如下: f ( x i ) = w T x i + b f(x_i )=w^T x_i+b 并且我们期望得到的模型有下面式子成立: f ( x i ) y i f(x_i )≈y_i

  • 为便于讨论我们将将 b b 并入到 w w 中: x i = [ x i 1 , x i 2 , , x i d , 1 ] T x_i=[x_i^1,x_i^2,…,x_i^d,1]^T w i = [ w i 1 , w i 2 , , w i d , b ] T w_i=[w_i^1,w_i^2,…,w_i^d,b]^T 所以线性回归模型可以表示为: f ( x i ) = w T x i f(x_i )=w^T x_i

  • 我们将每个样本的预测值与真实值记为: ε i ε_i y i = w T x i + ε i y_i=w^T x_i+ε_i

  • 假设误差 ε i ε_i 是独立同分布的,并且服从高斯分布。即: P ( ε i ) = 1 2 π σ e x p ( ε i 2 2 σ 2 ) P(ε_i )=\frac{1}{\sqrt{2πσ}} exp(-\frac{ε_i^2}{2σ^2 }) ε i = y i x i ε_i=y_i-x_i 带入得到: P ( y i x i , w ) = 1 2 π σ e x p ( ( y i w T x i ) 2 2 σ 2 ) P(y_i |x_i,w)=\frac{1}{\sqrt{2πσ}} exp(-\frac{(y_i-w^T x_i)^2}{2σ^2 }) 已知参数 w w 和数据 x i x_i 的情况下,预测值为 y i y_i 的条件概率.

  • 注:这个地方个人感觉比较疑惑: P ( ε i ) P(ε_i ) 按理来说表示的是误差为 ε i ε_i 时的概率,为啥一下变成预测值为 y i y_i 的条件概率了呢?个人的一个理解:当我们的模型 f ( x i ) = w T x i f(x_i )=w^T x_i 确定后, w w 是固定的,所以我们向模型输入一个 x i x_i 都会有一个预测值 f ( x i ) f(x_i ) 输出,并且预测值是唯一确定的。而样本 x i x_i 的标签 y i y_i 也是唯一确定的;那么误差 ε i ε_i 也唯一确定的并且与标签 y i y_i 是一一对应关系,所以 ε i ε_i 的概率就等于 y i y_i 的概率。

  • 于是可以得到最大似然函数: L ( w ) = i = 1 n P ( y i x i , w ) = i = 1 n 1 2 π σ e x p ( ( y i w T x i ) 2 2 σ 2 ) L(w)=∏_{i=1}^nP(y_i |x_i,w) =∏_{i=1}^n\frac{1}{\sqrt{2πσ}} exp(-\frac{(y_i-w^T x_i)^2}{2σ^2 }) 取对数: l ( w ) = i = 1 n l o g ( P ( y i x i , w ) ) l(w)=∑_{i=1}^nlog(P(y_i |x_i,w)) = i = 1 n l o g ( 1 2 π σ ) i = 1 n ( y i w T x i ) 2 2 σ 2 =∑_{i=1}^nlog(\frac{1}{\sqrt{2πσ}}) -∑_{i=1}^n\frac{(y_i-w^T x_i )^2}{2σ^2 } = n l o g ( 1 2 π σ ) 1 2 σ 2 i = 1 n ( y i w T x i ) 2 =nlog(\frac{1}{\sqrt{2πσ}})-\frac{1}{2σ^2 } ∑_{i=1}^n(y_i-w^T x_i )^2

  • 使用极大似然估计法最大化上面函数得到 w w ,从而得到模型。由于上面函数为 w w 的函数所以其它量都是常量,则最大化 l ( w ) l(w) 就是最小化下面公式: J ( w ) = 1 2 i = 1 n ( y i w T x i ) 2 J(w)=\frac{1}{2} ∑_{i=1}^n(y_i-w^T x_i )^2 1 2 \frac{1}{2} 只是为了求导方便留下的。这就是最小二乘法的目标函数。

  • 将上面式子转化为矩阵运算: J ( w ) = 1 2 i = 1 n ( y i w T x i ) 2 = 1 2 [ y 1 w T x 1 y 2 w T x 2 y n w T x n ] 2 J(w)=\frac{1}{2} ∑_{i=1}^n(y_i-w^T x_i )^2=\frac{1}{2} \begin{vmatrix} \begin{bmatrix} y_1-w^T x_1 \\ y_2-w^T x_2 \\ \vdots \\ y_n-w^T x_n \end{bmatrix} \end{vmatrix}^2 = 1 2 Y X T W 2 = 1 2 ( Y X T W ) T ( Y X T W ) =\frac{1}{2}\begin{vmatrix} Y-X^T W \end{vmatrix}^2=\frac{1}{2} (Y-X^T W)^T (Y-X^T W) 其中: Y = [ y 1 , y 2 , , y n ] T R n × 1 Y=[y_1,y_2,…,y_n ]^T∈R^{n×1} X = [ x 1 , x 2 , , x n ] R d + 1 × n X=[x_1,x_2,…,x_n ]∈R^{d+1×n} x i = [ x i 1 , x i 2 , , x i d , 1 ] T R d + 1 × 1 x_i=[x_i^1,x_i^2,…,x_i^d,1]^T∈R^{d+1×1} w i = [ w i 1 , w i 2 , , w i d , b ] T R d + 1 × 1 w_i=[w_i^1,w_i^2,…,w_i^d,b]^T ∈R^{d+1×1} \begin{vmatrix} \end{vmatrix} 为行列式

  • J ( w ) J(w) 称为线性回归模型的目标函数或损失函数,该函数是凸函数,只要找到一阶导数为0的位置,就找到了最优解

  • J ( w ) J(w) 求导: J ( w ) w = 1 2 w ( ( Y X T W ) T ( Y X T W ) ) \frac{∂J(w)}{∂w}=\frac{1}{2} \frac{∂}{∂w} ((Y-X^T W)^T (Y-X^T W)) = 1 2 w ( Y T Y Y T X T W W T X Y + W T X X T W ) =\frac{1}{2} \frac{∂}{∂w}(Y^T Y-Y^T X^T W-W^T XY+W^T XX^T W) 由于 Y T X T W Y^T X^T W 为一个常数所以: Y T X T W = ( Y T X T W ) T = W T X Y Y^T X^T W=(Y^T X^T W)^T=W^T XY 所以有: J ( w ) w = 1 2 w ( Y T Y 2 W T X Y + W T X X T W ) \frac{∂J(w)}{∂w}=\frac{1}{2} \frac{∂}{∂w}(Y^T Y-2W^T XY+W^T XX^T W) = ( W T X Y ) w + 1 2 ( W T X X T W ) w =-\frac{∂(W^T XY)}{∂w}+\frac{1}{2} \frac{∂(W^T XX^T W)}{∂w} = X Y + 1 2 ( W T ( X X T W ) w + ( ( W T X X T ) W ) w =-XY+\frac{1}{2} \frac{∂(W^T (XX^T W)}{∂w}+\frac{∂((W^T XX^T )W)}{∂w} = X Y + 1 2 ( X X T W + ( W T X X T ) T ) = X X T W X Y =-XY+\frac{1}{2} (XX^T W+(W^T XX^T )^T )=XX^T W-XY = X ( X T W Y ) =X(X^TW-Y)

  • 线性模型的学习算法主要有:最小二乘法和梯度下降法

三、最小二乘法:

  • 最小二乘法是利用矩阵运算求解方程组的思想来直接求解: J ( w ) w = 0 \frac{∂J(w)}{∂w}=0 X X T W = X Y XX^T W=XY
  • X X T XX^T 可逆:有唯一解: W = ( X X T ) 1 X Y = ( X T ) 1 X 1 X Y = ( X T ) 1 Y W^*=(XX^T )^{-1} XY=(X^T )^{-1} X^{-1} XY=(X^T )^{-1} Y
  • X X T XX^T 不可逆:可能有多个解,选择哪一个解作为输出,将有学习算法的偏好决定,常见的做法是增加 λ λ 扰动: W = ( X X T + λ I ) 1 X Y W^*=(XX^T+λI)^{-1} XY
  • 算法步骤:
    • 从数据集D出发,构建输入矩阵 X X 和输出向量 y y Y = [ y 1 , y 2 , , y n ] T R n × 1 Y=[y_1,y_2,…,y_n ]^T∈R^{n×1} X = [ x 1 , x 2 , , x n ] T R n × d + 1 X=[x_1,x_2,…,x_n ]^T∈R^{n×d+1}
    • 计算伪逆(pseudo-inverse): X + X^+
    • 返回 w = X + y w^*= X^+ y ,得到线性回归模型为: y ^ = w T X \hat{y}= {w^*}^T X

四、梯度下降算法:

  • 上面求导的结果: J ( w ) w = X ( X T W Y ) = \frac{∂J(w)}{∂w}=X(X^TW-Y)= 它还有另外一个名字,叫梯度,它是一个向量表示自变量沿着这个方向移动函数值增长最快,也就是说如果我们沿着其反方向走,函数下降的最快。这就是梯度下降算法的思想:
  • 上面梯度可以写成: J ( w ) w = X ( X T W Y ) = X ( f ( X ) Y ) \frac{∂J(w)}{∂w}=X(X^TW-Y)=X(f(X)-Y) 展开为: J ( w ) w j = i = 1 n ( f ( x i ) y i ) x i j \frac{∂J(w)}{∂w_j }=∑_{i=1}^n(f(x_i )-y_i ) x_i^j
  • 那么参数 w w 沿着梯度反方向,迭代的公式为: W = W λ J ( w ) w W=W-λ \frac{∂J(w)}{∂w} W i = W i λ J ( w ) w j = W i i = 1 n ( f ( x i ) y i ) x i j W_i=W_i-λ \frac{∂J(w)}{∂w_j }=W_i-∑_{i=1}^n(f(x_i )-y_i ) x_i^j 其中λ为步长。