机器学习-线性回归理论推导-最小二乘法理论推导

机器学习-线性回归理论推导-最小二乘法理论推导

    • 0.概述
    • 1.线性回归理论推导
    • 2.最小二乘法推导
    • 3.为什么不使用最小二乘法
    • 4.小结

0.概述

在统计学中,线性回归(Linear regression)是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归。 ——维基百科
从最简单的只有一个自变量的简答回归来看:
机器学习-线性回归理论推导-最小二乘法理论推导_第1张图片
蓝点为实际样本,红线为线性预测函数,对于任意给定新的样本自变量即可按照线性预测函数进行因变量 y y y的预测。直观理想情况下,样本"应该是"均匀分布在预测函数两侧,红色预测函数从蓝色样本"居中"位置穿过去。
下面进行从理论实现对上述"直观感觉"的推导

1.线性回归理论推导

  1. 预备定理
    1. 中心极限定理
      设随机变量 X 1 , X 2 , … , X n X_1,X_2,\dots,X_n X1,X2,,Xn互相独立,服从同一分布,并且具有相同的期望 μ \mu μ和方差 σ 2 \sigma^2 σ2,则随机变量
      Y n = ∑ i = 1 n X i − n μ n σ Y_n=\frac{\sum_{i=1}^nX_i - n\mu}{\sqrt{n}\sigma} Yn=n σi=1nXinμ
      的分布收敛到标准正态分布,即高斯分布。
      转化一下,即可得到 ∑ i = 1 n X i \sum_{i=1}^nX_i i=1nXi收敛到正态分布 N ( n μ , n σ 2 ) N(n\mu, n\sigma^2) N(nμ,nσ2)
      简言之,当样本量足够大时,样本均值的分布慢慢变成正态分布
    2. 极大似然估计
      设总体分布为 f ( x , θ ) f(x,\theta) f(x,θ) X 1 , X 2 , … , X n X_1,X_2,\dots,X_n X1,X2,,Xn为该总体采样得到的样本。因为 X 1 , X 2 , … , X n X_1,X_2,\dots,X_n X1,X2,,Xn独立同分布,因此,对于联合密度函数
      L ( X 1 , X 2 , … , X n ; θ 1 , θ 2 , … , θ k ) = ∏ i = 1 n f ( X i ; θ 1 , θ 2 , … , θ k ) L(X_1, X_2, \dots, X_n; \theta_1, \theta_2, \dots, \theta_k)=\prod_{i=1}^{n}f(X_i; \theta_1, \theta_2, \dots, \theta_k) L(X1,X2,,Xn;θ1,θ2,,θk)=i=1nf(Xi;θ1,θ2,,θk)
      上式中, θ \theta θ被看作固定但待求解的参数;反过来,因为样本已经存在,可以看成 X 1 , X 2 , … , X n X_1,X_2,\dots,X_n X1,X2,,Xn是固定的, L ( x , θ ) L(x, \theta) L(x,θ)是关于 θ \theta θ的函数,即似然函数。
      θ \theta θ的值,使得似然函数取极大值,这种方法就是极大似然估计
  2. 线性回归数学定义
    对于 n n n维空间(或者可以通俗的描述为 n n n维特征)的 m m m个样本,每个样本对应一个因变量 y y y,即有 m m m个样本数据如下
    ( x 1 1 , x 2 1 , … , x n 1 , y 1 ) , ( x 1 2 , x 2 2 , … , x n 2 , y 2 ) , … , ( x 1 m , x 2 m , … , x n m , y m ) (x_{1}^{1},x_{2}^{1},\dots,x_{n}^{1},y^{1}),(x_{1}^{2},x_{2}^{2},\dots,x_{n}^{2},y^{2}),\dots,(x_{1}^{m},x_{2}^{m},\dots,x_{n}^{m},y^{m}) (x11,x21,,xn1,y1),(x12,x22,,xn2,y2),,(x1m,x2m,,xnm,ym)
    在上面样本的基础之上,任意给定一个新样本 ( x 1 x , x 2 x , … , x n x ) (x_{1}^{x},x_{2}^{x},\dots,x_{n}^{x}) (x1x,x2x,,xnx),如何求得该样本对应的 y x y^x yx呢?如果 y y y是连续的,这就是一个回归问题,如果 y y y是离散的,就是一个分类问题,本文暂讨论回归情况。
    (对于本文初自变量只有一维的情况,线性回归目的是求得一条直线( y = a x + b y=ax+b y=ax+b)的方程,需要确定的量有斜率( a a a)和截距( b b b)两个。同理对于n维度自变量的情况,线性回归需要求得的是直线的推广——超平面的方程。此时待确定的依然是斜率和截距两个变量,但此时斜率维数变为 n n n维)
    对于上述 m m m个样本,给出线性回归的模型如下
    h θ ( x 1 , x 2 , … , x n ) = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n h_\theta(x_{1},x_{2},\dots,x_{n})=\theta_0+\theta_{1}x_{1}+\theta_{2}x_{2}+\dots+\theta_{n}x_{n} hθ(x1,x2,,xn)=θ0+θ1x1+θ2x2++θnxn
    其中, θ 0 \theta_0 θ0为截距, θ i ( i = 1 , 2 , … , n ) \theta_i(i=1,2,\dots,n) θi(i=1,2,,n)唯一确定"斜率"(注:超平面使用更多的是法向量,与"斜率"是垂直关系)。为了更加表述更加简洁,我们在截距项上增加一个 x 0 x_0 x0,并且令 x 0 = 1 x_0=1 x0=1,上述线性回归模型可以全等写成
    h θ ( x 1 , x 2 , … , x n ) = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n h_\theta(x_{1},x_{2},\dots,x_{n})=\theta_{0}x_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}+\dots+\theta_{n}x_{n} hθ(x1,x2,,xn)=θ0x0+θ1x1+θ2x2++θnxn

    h θ ( x 1 , x 2 , … , x n ) = ∑ i = 1 n θ i x i h_\theta(x_{1},x_{2},\dots,x_{n})=\sum_{i=1}^{n}\theta_{i}x_{i} hθ(x1,x2,,xn)=i=1nθixi
    进一步,采用矩阵表示
    h θ ( X ⃗ ) = θ ⃗ T X ⃗ h_{\theta}(\vec X)=\vec\theta^\mathrm{T} \vec X hθ(X )=θ TX
    其中, X ⃗ \vec X X m × n m\times n m×n维矩阵, m m m为样本个数, n n n为样本维数(同特征数), θ ⃗ T \vec\theta^\mathrm{T} θ T n × 1 n\times 1 n×1维向量, h θ ( X ⃗ ) h_{\theta}(\vec X) hθ(X ) m × 1 m\times 1 m×1维因变量。
  3. 线性回归推导-误差分布
    对于上述已经给定的样本点
    ( x 1 1 , x 2 1 , … , x n 1 , y 1 ) , ( x 1 2 , x 2 2 , … , x n 2 , y 2 ) , … , ( x 1 m , x 2 m , … , x n m , y m ) (x_{1}^{1},x_{2}^{1},\dots,x_{n}^{1},y^{1}),(x_{1}^{2},x_{2}^{2},\dots,x_{n}^{2},y^{2}),\dots,(x_{1}^{m},x_{2}^{m},\dots,x_{n}^{m},y^{m}) (x11,x21,,xn1,y1),(x12,x22,,xn2,y2),,(x1m,x2m,,xnm,ym)
    它们是在所求线性回归 h θ ( X ⃗ ) = θ ⃗ T X ⃗ h_{\theta}(\vec X)=\vec\theta^\mathrm{T} \vec X hθ(X )=θ TX 的"附近",并不一定在所求的线性回归超平面上。因此,我们将已有的 m m m个样本点代入线性回归方程中时,会产生一个上下浮动的误差(扰动),记为 ε \varepsilon ε。将所有样本点代入回归方程,得到
    Y ⃗ = θ ⃗ T X ⃗ + ε ⃗ \vec Y=\vec\theta^\mathrm{T} \vec X+\vec \varepsilon Y =θ TX +ε
    其中, ε ⃗ \vec \varepsilon ε m × 1 m \times 1 m×1维向量,分别代表 m m m个样本相对于线性回归方程的上下浮动程度(误差)。
    敲黑板! 上式中的误差 ε ⃗ \vec \varepsilon ε 是独立同分布的,由中心极限定理,误差分布服从均值为0,方差为某定值的正态分布,记方差为 σ 2 \sigma^2 σ2
  4. 线性回归推导-最大似然与最小二乘
    对于上面方程
    Y ⃗ = θ ⃗ T X ⃗ + ε ⃗ \vec Y=\vec\theta^\mathrm{T} \vec X+\vec \varepsilon Y =θ TX +ε

    ε ⃗ = Y ⃗ − θ ⃗ T X ⃗ \vec \varepsilon=\vec Y-\vec\theta^\mathrm{T} \vec X ε =Y θ TX
    对每个样本分开,有
    ε j = y j − θ ⃗ T x ⃗ j \varepsilon_j=y_j-\vec\theta^\mathrm{T} \vec x_j εj=yjθ Tx j
    其中 j ∈ ( 1 , 2 , … , m ) j\in(1,2,\dots,m) j(1,2,,m) x ⃗ j \vec x_j x j 1 × n 1\times n 1×n维向量(第 j j j个样本自变量取值), y j y_j yj为第 j j j个样本因变量取值, ε j \varepsilon_j εj为第 j j j个样本的误差, θ ⃗ \vec \theta θ n × 1 n\times 1 n×1维向量。
    由上面中心极限定理,误差分布服从均值为0,方差为 σ 2 \sigma^2 σ2的正态分布,按照整体分布的概率密度函数进行展开

    p ( ε j ) = 1 2 π σ exp ⁡ ( − ε j 2 2 σ 2 ) p(\varepsilon_j)=\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{{\varepsilon_j}^2}{2\sigma^2}) p(εj)=2π σ1exp(2σ2εj2)
    ε j = y j − θ ⃗ T x ⃗ j \varepsilon_j=y_j-\vec\theta^\mathrm{T} \vec x_j εj=yjθ Tx j代入右式,得到一个关于 θ \theta θ的函数
    p ( y j ∣ x j ; θ ) = 1 2 π σ exp ⁡ ( − ( y j − θ ⃗ T x ⃗ j ) 2 2 σ 2 ) p(y_j|x_j;\theta)=\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{{(y_j-\vec\theta^\mathrm{T} \vec x_j)}^2}{2\sigma^2}) p(yjxj;θ)=2π σ1exp(2σ2(yjθ Tx j)2)
    再将所有样本代入,极大似然函数为 L ( θ ) = ∏ j = 1 m p ( y j ∣ x j ; θ ) L(\theta)=\prod_{j=1}^{m}p(y_j|x_j;\theta) L(θ)=j=1mp(yjxj;θ)
    L ( θ ) = ∏ j = 1 m 1 2 π σ exp ⁡ ( − ( y j − θ ⃗ T x ⃗ j ) 2 2 σ 2 ) L(\theta)=\prod_{j=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{{(y_j-\vec\theta^\mathrm{T} \vec x_j)}^2}{2\sigma^2}) L(θ)=j=1m2π σ1exp(2σ2(yjθ Tx j)2)
    两边取对数,令 l ( θ ) = log ⁡ L ( θ ) l(\theta)=\log L(\theta) l(θ)=logL(θ)
    l ( θ ) = log ⁡ ∏ j = 1 m 1 2 π σ exp ⁡ ( − ( y j − θ ⃗ T x ⃗ j ) 2 2 σ 2 ) l(\theta)=\log \prod_{j=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{{(y_j-\vec\theta^\mathrm{T} \vec x_j)}^2}{2\sigma^2}) l(θ)=logj=1m2π σ1exp(2σ2(yjθ Tx j)2)
    乘积的对数等于对数的和
    l ( θ ) = ∑ j = 1 m log ⁡ 1 2 π σ exp ⁡ ( − ( y j − θ ⃗ T x ⃗ j ) 2 2 σ 2 ) l(\theta)=\sum_{j=1}^{m}\log\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{{(y_j-\vec\theta^\mathrm{T} \vec x_j)}^2}{2\sigma^2}) l(θ)=j=1mlog2π σ1exp(2σ2(yjθ Tx j)2)
    在利用一次乘积的对数等于对数的和
    l ( θ ) = m log ⁡ 1 2 π σ − 1 σ 2 ⋅ 1 2 ∑ j = 1 m ( y j − θ ⃗ T x ⃗ j ) 2 l(\theta)=m\log\frac{1}{\sqrt{2\pi}\sigma}-\frac{1}{\sigma^2}\cdot\frac{1}{2}\sum_{j=1}^{m}{(y_j-\vec\theta^\mathrm{T} \vec x_j)}^2 l(θ)=mlog2π σ1σ2121j=1m(yjθ Tx j)2
    可以看出等式右边第一项为常数,第二项前面的系数 1 σ 2 \frac{1}{\sigma^2} σ21也为常数,对求极值点无影响。求 l ( θ ) l(\theta) l(θ)极大似然估计点,即求 − 1 2 ∑ j = 1 m ( y j − θ ⃗ T x ⃗ j ) 2 -\frac{1}{2}\sum_{j=1}^{m}{(y_j-\vec\theta^\mathrm{T} \vec x_j)}^2 21j=1m(yjθ Tx j)2的极大值点,去掉负号,即求 1 2 ∑ j = 1 m ( y j − θ ⃗ T x ⃗ j ) 2 \frac{1}{2}\sum_{j=1}^{m}{(y_j-\vec\theta^\mathrm{T} \vec x_j)}^2 21j=1m(yjθ Tx j)2的极小值点,令
    J ( θ ) = 1 2 ∑ j = 1 m ( y j − θ ⃗ T x ⃗ j ) 2 J(\theta)=\frac{1}{2}\sum_{j=1}^{m}{(y_j-\vec\theta^\mathrm{T} \vec x_j)}^2 J(θ)=21j=1m(yjθ Tx j)2
    h θ ( x j ) = θ ⃗ T x ⃗ j h_\theta(x_j)=\vec\theta^\mathrm{T} \vec x_j hθ(xj)=θ Tx j代入
    J ( θ ) = 1 2 ∑ j = 1 m ( y j − h θ ( x j ) ) 2 J(\theta)=\frac{1}{2}\sum_{j=1}^{m}{(y_j-h_\theta(x_j))}^2 J(θ)=21j=1m(yjhθ(xj))2
    上式第一项 y j y_j yj为样本实际函数值,第二项 h θ ( x j ) h_\theta(x_j) hθ(xj)为线性回归预测值,现在目的就是求这两个值的差的平方最小值。这就是最小二乘法的由来,原理很简单
    目 标 函 数 = ∑ ( 样 本 值 − 预 测 函 数 值 ) 2 目标函数=\sum(样本值-预测函数值)^2 =()2
    其中,样本值就是实际观测样本的函数值,预测函数值就是线性回归函数值,目标函数就是机器学习中的损失函数。我们的求解目的就是求得使目标函数最小的线性回归函数值,也就完成了线性回归中 θ ⃗ \vec \theta θ 的求解。

2.最小二乘法推导

将式
J ( θ ) = 1 2 ∑ j = 1 m ( y j − h θ ( x j ) ) 2 J(\theta)=\frac{1}{2}\sum_{j=1}^{m}{(y_j-h_\theta(x_j))}^2 J(θ)=21j=1m(yjhθ(xj))2
改为矩阵表示
J ( θ ) = 1 2 ( X ⃗ θ ⃗ − Y ⃗ ) T ( X ⃗ θ ⃗ − Y ⃗ ) J(\theta)=\frac{1}{2}(\vec X\vec\theta-\vec Y)^\mathrm{T}(\vec X\vec\theta-\vec Y) J(θ)=21(X θ Y )T(X θ Y )
将转置放到括号里面
J ( θ ) = 1 2 ( θ ⃗ T X ⃗ T − Y ⃗ T ) ( X ⃗ θ ⃗ − Y ⃗ ) J(\theta)=\frac{1}{2}(\vec\theta^\mathrm{T}\vec X^\mathrm{T}-\vec Y^\mathrm{T})(\vec X\vec\theta-\vec Y) J(θ)=21(θ TX TY T)(X θ Y )
相乘展开
J ( θ ) = 1 2 ( θ ⃗ T X ⃗ T X ⃗ θ ⃗ − θ ⃗ T X ⃗ T Y ⃗ − Y ⃗ T X ⃗ θ ⃗ + Y ⃗ T Y ⃗ ) J(\theta)=\frac{1}{2}(\vec\theta^\mathrm{T}\vec X^\mathrm{T}\vec X\vec\theta-\vec\theta^\mathrm{T}\vec X^\mathrm{T}\vec Y-\vec Y^\mathrm{T}\vec X\vec\theta+\vec Y^\mathrm{T}\vec Y) J(θ)=21(θ TX TX θ θ TX TY Y TX θ +Y TY )
求梯度
∇ ( J ( θ ) ) = ∇ ( 1 2 ( θ ⃗ T X ⃗ T X ⃗ θ ⃗ − θ ⃗ T X ⃗ T Y ⃗ − Y ⃗ T X ⃗ θ ⃗ + Y ⃗ T Y ⃗ ) ) \nabla(J(\theta))=\nabla(\frac{1}{2}(\vec\theta^\mathrm{T}\vec X^\mathrm{T}\vec X\vec\theta-\vec\theta^\mathrm{T}\vec X^\mathrm{T}\vec Y-\vec Y^\mathrm{T}\vec X\vec\theta+\vec Y^\mathrm{T}\vec Y)) (J(θ))=(21(θ TX TX θ θ TX TY Y TX θ +Y TY ))
∇ ( J ( θ ) ) = 1 2 ( 2 X ⃗ T X ⃗ θ ⃗ − X ⃗ T Y ⃗ − ( Y ⃗ T X ⃗ ) T ) \nabla(J(\theta))=\frac{1}{2}(2\vec X^\mathrm{T}\vec X\vec\theta-\vec X^\mathrm{T}\vec Y-(\vec Y^\mathrm{T}\vec X)^\mathrm{T}) (J(θ))=21(2X TX θ X TY (Y TX )T)
最后一项转置写开
∇ ( J ( θ ) ) = 1 2 ( 2 X ⃗ T X ⃗ θ ⃗ − X ⃗ T Y ⃗ − X ⃗ T Y ⃗ ) \nabla(J(\theta))=\frac{1}{2}(2\vec X^\mathrm{T}\vec X\vec\theta-\vec X^\mathrm{T}\vec Y-\vec X^\mathrm{T}\vec Y) (J(θ))=21(2X TX θ X TY X TY )
合并
∇ ( J ( θ ) ) = 1 2 ( 2 X ⃗ T X ⃗ θ ⃗ − 2 X ⃗ T Y ⃗ ) \nabla(J(\theta))=\frac{1}{2}(2\vec X^\mathrm{T}\vec X\vec\theta-2\vec X^\mathrm{T}\vec Y) (J(θ))=21(2X TX θ 2X TY )
∇ ( J ( θ ) ) = X ⃗ T X ⃗ θ ⃗ − X ⃗ T Y ⃗ \nabla(J(\theta))=\vec X^\mathrm{T}\vec X\vec\theta-\vec X^\mathrm{T}\vec Y (J(θ))=X TX θ X TY
求梯度的驻点,令 ∇ ( J ( θ ) ) = 0 \nabla(J(\theta))=0 (J(θ))=0,即
X ⃗ T X ⃗ θ ⃗ − X ⃗ T Y ⃗ = 0 \vec X^\mathrm{T}\vec X\vec\theta-\vec X^\mathrm{T}\vec Y=0 X TX θ X TY =0
X ⃗ T X ⃗ θ ⃗ = X ⃗ T Y ⃗ \vec X^\mathrm{T}\vec X\vec\theta=\vec X^\mathrm{T}\vec Y X TX θ =X TY
最终得到参数 θ \theta θ的解析式
θ = ( X ⃗ T X ⃗ ) ⃗ − 1 X ⃗ T Y ⃗ \theta=(\vec X^\mathrm{T}\vec X\vec)^{-1}\vec X^\mathrm{T}\vec Y θ=(X TX ) 1X TY
上述推导需要用到 X ⃗ T X ⃗ \vec X^\mathrm{T}\vec X X TX 的逆,因此要求 X ⃗ T X ⃗ \vec X^\mathrm{T}\vec X X TX 满秩或者正定。然而现实任务中 X ⃗ T X ⃗ \vec X^\mathrm{T}\vec X X TX 往往不是满秩的。例如有的任务会使用到大量特征,甚至特征的个数会超过样本数,此时 X ⃗ T X ⃗ \vec X^\mathrm{T}\vec X X TX 显然不满秩。为此,引入正则项,对任意 λ > 0 \lambda>0 λ>0 X ⃗ T X ⃗ + λ I \vec X^\mathrm{T}\vec X+\lambda I X TX +λI正定, I I I为单位阵。参数解析式优化为
θ = ( X ⃗ T X ⃗ + ⃗ λ I ) − 1 X ⃗ T Y ⃗ \theta=(\vec X^\mathrm{T}\vec X\vec+\lambda I)^{-1}\vec X^\mathrm{T}\vec Y θ=(X TX + λI)1X TY

3.为什么不使用最小二乘法

上节对最小二乘法进行了理论上的推导,得到的结果可以说是很漂亮的,但是在实际的操作中却不常使用,原因如下:

  1. X ⃗ T X ⃗ \vec X^\mathrm{T}\vec X X TX 可能不是正定的,加入正则项可以解决;
  2. X ⃗ T X ⃗ \vec X^\mathrm{T}\vec X X TX 在数据量很大的时候计算量特别大;
  3. 最小二乘法只适应于线性回归;
  4. 回归问题常使用的方法有梯度下降法和牛顿法以及拟牛顿法等。

4.小结

本文从最简单一维样本情况引出线性回归的概念,进而使用中心极限定理说明样本点与回归函数值之间的误差的分布是服从均值为0的正态分布。使用最大似然估计推导出最小二乘法,然后利用梯度为0求出最小二乘的驻点。最终给出线性回归参数 θ \theta θ的解析式。
如有不妥,请指示正,谢谢阅读!
作者:togetlife

你可能感兴趣的:(机器学习)