【数理知识】最小二乘法,一般线性情况,矩阵化表示过程,最佳参数的求解公式过程

序号 内容
1 【数理知识】自由度 degree of freedom 及自由度的计算方法
2 【数理知识】刚体 rigid body 及刚体的运动
3 【数理知识】刚体基本运动,平动,转动
4 【数理知识】向量数乘,内积,外积,matlab代码实现
5 【数理知识】协方差,随机变量的的协方差,随机变量分别是单个数字和向量时的协方差
6 【数理知识】旋转矩阵的推导过程,基于向量的旋转来实现,同时解决欧式变换的非线性局限

友情提醒:请先服用文章【数理知识】最小二乘法,从线性回归出发,数值举例并用最小二乘法求解回归模型,再来服用本文。

文章目录

  • [1. 多解释变量,多响应变量](#1. 多解释变量,多响应变量)
  • [2. 矩阵运算求偏导](#2. 矩阵运算求偏导)
  • Ref

之前的文章【数理知识】最小二乘法,从线性回归出发,数值举例并用最小二乘法求解回归模型中,从回归分析的角度出发,分析了线性回归的模型,举了具体的数值例子,并使用最小二乘法求解了模型的最佳参数。

在之前的回归分析中,举例时使用的是:

  • 简单线性回归模型(单解释变量,单响应变量)
  • 多元线性回归模型(多解释变量,单响应变量)

但是都是单响应变量,同时也不方便进行矩阵化描述。

在实际的应用中,更多使用的是多解释变量多响应变量的回归模型,同时也会使用矩阵化操作,这样既能节省计算机的资源,还能加速计算的效率。

因此本文将从多解释变量多响应变量出发,重点介绍如何矩阵化,以及矩阵化后的求导运算和操作。


1. 多解释变量,多响应变量

在上述(单解释变量,单响应变量)和的基础上,推广到更一般的线性情况。

这种多解释变量多响应变量的回归模型,可以用公式表征为

y 1 = β 0 + β 1 x 11 + β 2 x 12 + ⋯ + β p x 1 p y 2 = β 0 + β 1 x 21 + β 2 x 22 + ⋯ + β p x 3 p y 3 = β 0 + β 1 x 31 + β 2 x 32 + ⋯ + β p x 3 p ⋮ y m = β 0 + β 1 x m 1 + β 2 x m 2 + ⋯ + β p x m p \begin{aligned} y_1 &= \beta_{0} + \beta_{1} x_{11} + \beta_{2} x_{12} + \cdots + \beta_{p} x_{1p} \\ y_2 &= \beta_{0} + \beta_{1} x_{21} + \beta_{2} x_{22} + \cdots + \beta_{p} x_{3p} \\ y_3 &= \beta_{0} + \beta_{1} x_{31} + \beta_{2} x_{32} + \cdots + \beta_{p} x_{3p} \\ \vdots \\ y_m &= \beta_{0} + \beta_{1} x_{m1} + \beta_{2} x_{m2} + \cdots + \beta_{p} x_{mp} \end{aligned} y1y2y3⋮ym=β0+β1x11+β2x12+⋯+βpx1p=β0+β1x21+β2x22+⋯+βpx3p=β0+β1x31+β2x32+⋯+βpx3p=β0+β1xm1+β2xm2+⋯+βpxmp

可以看到这种回归模型共有
m m m 个响应变量 y 1 , ⋯   , y m y_1, \cdots, y_m y1,⋯,ym,
m ∗ p m * p m∗p 个解释变量 x 11 , ⋯   , x m p x_{11}, \cdots, x_{mp} x11,⋯,xmp,
1 1 1 个参数 β 0 \beta_{0} β0,
p p p 个参数 β 1 , ⋯   , β p \beta_{1}, \cdots, \beta_{p} β1,⋯,βp。


接下来进行矩阵化,令

Y = [ y 1 y 2 ⋮ y m ] m × 1 , X = [ x 11 x 12 ⋯ x 1 p x 21 x 22 ⋯ x 2 p ⋮ ⋮ ⋱ ⋮ x m 1 x m 2 ⋯ x m p ] m × p , β = [ β 1 β 2 ⋮ β p ] p × 1 Y = \left[\begin{matrix} y_1 \\ y_2 \\ \vdots \\ y_m \end{matrix}\right]{m \times 1}, \quad X = \left[\begin{matrix} x{11} & x_{12} & \cdots & x_{1p} \\ x_{21} & x_{22} & \cdots & x_{2p} \\ \vdots & \vdots & \ddots & \vdots \\ x_{m1} & x_{m2} & \cdots & x_{mp} \\ \end{matrix}\right]{m \times p}, \quad \beta = \left[\begin{matrix} \beta{1} \\ \beta_{2} \\ \vdots \\ \beta_{p} \end{matrix}\right]_{p \times 1} Y= y1y2⋮ym m×1,X= x11x21⋮xm1x12x22⋮xm2⋯⋯⋱⋯x1px2p⋮xmp m×p,β= β1β2⋮βp p×1

Y = X β + β 0 \begin{aligned} Y = X \beta + \beta_0 \end{aligned} Y=Xβ+β0

这种形式虽然看着简单清晰,但是多一项 β 0 \beta_0 β0,我们换种形式将 β 0 \beta_0 β0 融进 β \beta β 中去。令

Y = [ y 1 y 2 ⋮ y m ] m × 1 , X = [ 1 x 11 x 12 ⋯ x 1 p 1 x 21 x 22 ⋯ x 2 p ⋮ ⋮ ⋮ ⋱ ⋮ 1 x m 1 x m 2 ⋯ x m p ] m × ( p + 1 ) , β = [ β 0 β 1 β 2 ⋮ β p ] ( p + 1 ) × 1 Y = \left[\begin{matrix} y_1 \\ y_2 \\ \vdots \\ y_m \end{matrix}\right]{m \times 1}, \quad X = \left[\begin{matrix} 1 & x{11} & x_{12} & \cdots & x_{1p} \\ 1 & x_{21} & x_{22} & \cdots & x_{2p} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 1 & x_{m1} & x_{m2} & \cdots & x_{mp} \\ \end{matrix}\right]{m \times (p+1)}, \quad \beta = \left[\begin{matrix} \beta{0} \\ \beta_{1} \\ \beta_{2} \\ \vdots \\ \beta_{p} \end{matrix}\right]_{(p+1) \times 1} Y= y1y2⋮ym m×1,X= 11⋮1x11x21⋮xm1x12x22⋮xm2⋯⋯⋱⋯x1px2p⋮xmp m×(p+1),β= β0β1β2⋮βp (p+1)×1

然后就变成了

Y = X β \begin{aligned} Y = X \beta \end{aligned} Y=Xβ


2. 矩阵运算求偏导

接下来的重点就是找寻一个最好的 θ \theta θ 使得 X β − Y X\beta - Y Xβ−Y 最小,即

min ⁡ β ∥ X β − Y ∥ 2 2 \min_{\beta} \| X \beta - Y \|_2^2 βmin∥Xβ−Y∥22

其中 X , Y X, Y X,Y 是已知的,未知的是 β \beta β。

使用最小二乘法求解最佳参数 β \beta β 时,我们经常看到一个结论公式,即最佳的 β \beta β 为

β = ( X T X ) − 1 X T Y \beta = (X^\text{T} X)^{-1} X^\text{T} Y β=(XTX)−1XTY

但总是不知道其求解过程。因此接下来将讨论如何得到的此结论。


令 J ( β ) = ∥ X β − Y ∥ 2 2 J(\beta) = \| X \beta - Y \|_2^2 J(β)=∥Xβ−Y∥22,这是残差平方和的另一种表示方式。我们可以通过展开这个方程来找到其对应的矩阵形式为

J ( β ) = ( X β − Y ) T ( X β − Y ) J(\beta) = (X \beta - Y)^\text{T} (X \beta - Y) J(β)=(Xβ−Y)T(Xβ−Y)

接下来计算 J ( β ) J(\beta) J(β) 对 β \beta β 的偏导数,并令其等于零而求得 β \beta β 的值。展开上述方程有

J ( β ) = ( X β − Y ) T ( X β − Y ) = ( β T X T − Y T ) ( X β − Y ) = β T X T X β − β T X T Y − Y T X β + Y T Y \begin{aligned} J(\beta) &= (X \beta - Y)^\text{T} (X \beta - Y) \\ &= (\beta^\text{T} X^\text{T} - Y^\text{T}) (X \beta - Y) \\ &= \beta^\text{T} X^\text{T} X \beta - \beta^\text{T} X^\text{T} Y - Y^\text{T} X \beta + Y^\text{T} Y \end{aligned} J(β)=(Xβ−Y)T(Xβ−Y)=(βTXT−YT)(Xβ−Y)=βTXTXβ−βTXTY−YTXβ+YTY

求偏导有

∂ J ( β ) ∂ β = ∂ ∂ β ( β T X T X β − β T X T Y − Y T X β + Y T Y ) \begin{aligned} \frac{\partial J(\beta)}{\partial \beta} &= \frac{\partial}{\partial \beta} (\beta^\text{T} X^\text{T} X \beta - \beta^\text{T} X^\text{T} Y - Y^\text{T} X \beta + Y^\text{T} Y) \end{aligned} ∂β∂J(β)=∂β∂(βTXTXβ−βTXTY−YTXβ+YTY)

这个式子想要求出来必须借助矩阵微积分的规则:对于未知量 X X X 和常数矩阵 A A A,有

  • d d X ( A X ) = A T \frac{\text{d}}{\text{d}X}(A X) = A^\text{T} dXd(AX)=AT
  • d d X ( X T A ) = A \frac{\text{d}}{\text{d}X}(X^\text{T} A) = A dXd(XTA)=A
  • d d X ( X T A X ) = ( A + A T ) X \frac{\text{d}}{\text{d}X}(X^\text{T} A X) = (A+A^\text{T}) X dXd(XTAX)=(A+AT)X

根据上述规则分别有

  • ∂ ∂ β ( β T X T X β ) = ( ( X T X ) + ( X T X ) T ) β = 2 X T X β \frac{\partial}{\partial \beta} (\beta^\text{T} X^\text{T} X \beta) = ((X^\text{T} X) + (X^\text{T} X)^\text{T})\beta = 2 X^\text{T} X \beta ∂β∂(βTXTXβ)=((XTX)+(XTX)T)β=2XTXβ
  • ∂ ∂ β ( − β T X T Y ) = − X T Y \frac{\partial}{\partial \beta} (- \beta^\text{T} X^\text{T} Y) = -X^\text{T} Y ∂β∂(−βTXTY)=−XTY
  • ∂ ∂ β ( − Y T X β ) = ( − Y T X ) T = − X T Y \frac{\partial}{\partial \beta} (- Y^\text{T} X \beta) = (-Y^\text{T} X)^\text{T} = -X^\text{T} Y ∂β∂(−YTXβ)=(−YTX)T=−XTY

故偏导为

∂ J ( β ) ∂ β = 2 X T X β − 2 X T Y \frac{\partial J(\beta)}{\partial \beta} = 2 X^\text{T} X \beta - 2 X^\text{T} Y ∂β∂J(β)=2XTXβ−2XTY

令其为零有

2 X T X β − 2 X T Y = 0 X T X β − X T Y = 0 X T X β = X T Y β = ( X T X ) − 1 X T Y \begin{aligned} 2 X^\text{T} X \beta - 2 X^\text{T} Y &= 0 \\ X^\text{T} X \beta - X^\text{T} Y &= 0 \\ X^\text{T} X \beta &= X^\text{T} Y \\ \beta &= (X^\text{T} X)^{-1} X^\text{T} Y \end{aligned} 2XTXβ−2XTYXTXβ−XTYXTXββ=0=0=XTY=(XTX)−1XTY

至此,也就得到了最小二乘法的最佳参数的求解公式。


Ref

  1. 最小二乘法 - WikiPedia
  2. 最小二乘法,它怎么用,又是如何推出来的 - bilibili
  3. 如何理解最小二乘法? - 马同学

相关推荐
readmancynn6 分钟前
二分基本实现
数据结构·算法
萝卜兽编程8 分钟前
优先级队列
c++·算法
盼海16 分钟前
排序算法(四)--快速排序
数据结构·算法·排序算法
一直学习永不止步31 分钟前
LeetCode题练习与总结:最长回文串--409
java·数据结构·算法·leetcode·字符串·贪心·哈希表
Rstln1 小时前
【DP】个人练习-Leetcode-2019. The Score of Students Solving Math Expression
算法·leetcode·职场和发展
芜湖_1 小时前
【山大909算法题】2014-T1
算法·c·单链表
珹洺1 小时前
C语言数据结构——详细讲解 双链表
c语言·开发语言·网络·数据结构·c++·算法·leetcode
几窗花鸢2 小时前
力扣面试经典 150(下)
数据结构·c++·算法·leetcode
.Cnn2 小时前
用邻接矩阵实现图的深度优先遍历
c语言·数据结构·算法·深度优先·图论
2401_858286112 小时前
101.【C语言】数据结构之二叉树的堆实现(顺序结构) 下
c语言·开发语言·数据结构·算法·