在统计学中,普通最小二乘法(Ordinary Least Squares,OLS)是一种用于在线性回归
模型中估计未知参数的线性最小二乘法。 OLS通过最小二乘法原则选择一组解释变量的线性函数的参数:最小化给定数据集中观察到的因变量(被预测变量的值)与预测变量之间残差的平方和。
一元线性回归求解过程
我们先以一元线性模型为例来说明。
假设有一组数据 X = { ( x 1 , y 1 , ⋯ , ( x m , y m ) } X=\{({{x}_{1}},{{y}_{1}},\cdots ,({{x}_{m}},{{y}_{m}})\} X={(x1,y1,⋯,(xm,ym)},我们希望求出对应的一元线性模型来拟合这一组数据:
y
=
β
0
+
β
1
x
y={{\beta }_{0}}+{{\beta }_{1}}x
y=β0+β1x
既然要拟合,总要有一个拟合程度高低的判断标准,上文说到,最小二乘法中使用的就是误差平方和方法,所以,这时候损失函数,或者说我们的目标函数就是:
J
(
β
)
=
∑
i
=
0
m
(
y
i
−
β
1
x
i
−
β
0
)
2
J(\beta )=\sum\limits_{i=0}^{m}{{{({{y}_{i}}-{{\beta }_{1}}{{x}_{i}}-{{\beta }_{0}})}^{2}}}
J(β)=i=0∑m(yi−β1xi−β0)2
有了这个目标函数,我们要做的就是求出
β
0
{{\beta }_{0}}
β0和
β
1
{{\beta }_{1}}
β1使得
J
(
β
)
J(\beta )
J(β)最小,在这里就是极小值。
求极值的一个很好的方法就是求导,在这里因为有多个参数,所以,我们要分别对
β
0
{{\beta }_{0}}
β0和
β
1
{{\beta }_{1}}
β1求偏导:
∂
J
(
β
)
∂
β
1
=
∑
i
=
0
m
2
(
y
i
−
β
1
x
i
−
β
0
)
(
−
x
i
)
=
2
∑
i
=
0
m
(
β
1
x
i
2
+
β
0
x
i
−
x
i
y
i
)
\frac{\partial J(\beta )}{\partial {{\beta }_{1}}}=\sum\limits_{i=0}^{m}{2({{y}_{i}}-{{\beta }_{1}}{{x}_{i}}-{{\beta }_{0}})(-{{x}_{i}})}=2\sum\limits_{i=0}^{m}{({{\beta }_{1}}x_{i}^{2}+{{\beta }_{0}}{{x}_{i}}-{{x}_{i}}{{y}_{i}})}
∂β1∂J(β)=i=0∑m2(yi−β1xi−β0)(−xi)=2i=0∑m(β1xi2+β0xi−xiyi)
∂ J ( β ) ∂ β 0 = ∑ i = 0 m 2 ( y i − β 1 x i − β 0 ) ( − 1 ) = 2 ∑ i = 0 m ( β 1 x i + β 0 − y i ) ( − 1 ) = 2 ( m β 1 ∑ 1 m x i m + m β 0 − m ∑ 1 m y i m ) \frac{\partial J(\beta )}{\partial {{\beta }_{0}}}=\sum\limits_{i=0}^{m}{2({{y}_{i}}-{{\beta }_{1}}{{x}_{i}}-{{\beta }_{0}})(-1)}=2\sum\limits_{i=0}^{m}{({{\beta }_{1}}{{x}_{i}}+{{\beta }_{0}}-{{y}_{i}})(-1)}=2(m{{\beta }_{1}}\frac{\sum\limits_{1}^{m}{{{x}_{i}}}}{m}+m{{\beta }_{0}}-m\frac{\sum\limits_{1}^{m}{{{y}_{i}}}}{m}) ∂β0∂J(β)=i=0∑m2(yi−β1xi−β0)(−1)=2i=0∑m(β1xi+β0−yi)(−1)=2(mβ1m1∑mxi+mβ0−mm1∑myi)
因为
x
ˉ
=
∑
1
m
x
i
m
\bar{x}=\frac{\sum\limits_{1}^{m}{{{x}_{i}}}}{m}
xˉ=m1∑mxi,
y
ˉ
=
∑
1
m
y
i
m
\bar{y}=\frac{\sum\limits_{1}^{m}{{{y}_{i}}}}{m}
yˉ=m1∑myi, 所以,上面第二个,也就是对
β
0
{{\beta }_{0}}
β0的偏导可以转化为:
∂
J
(
β
)
∂
β
0
=
2
(
m
β
1
x
ˉ
+
m
β
0
−
m
y
ˉ
)
\frac{\partial J(\beta )}{\partial {{\beta }_{0}}}=2(m{{\beta }_{1}}\bar{x}+m{{\beta }_{0}}-m\bar{y})
∂β0∂J(β)=2(mβ1xˉ+mβ0−myˉ)
我们知道,目标函数取得极值时,偏导一定是等于0的,所以,我们令
∂
J
(
β
)
∂
β
0
\frac{\partial J(\beta )}{\partial {{\beta }_{0}}}
∂β0∂J(β)等于0,于是有:
2
(
m
β
1
x
ˉ
+
m
β
0
−
m
y
ˉ
)
=
0
2(m{{\beta }_{1}}\bar{x}+m{{\beta }_{0}}-m\bar{y})=0
2(mβ1xˉ+mβ0−myˉ)=0
β 0 = y ˉ − β 1 x ˉ {{\beta }_{0}}=\bar{y}-{{\beta }_{1}}\bar{x} β0=yˉ−β1xˉ
接着,我们继续回到上面第一个偏导,也就是对
β
1
{{\beta }_{1}}
β1的偏导
∂
J
(
β
)
∂
β
1
\frac{\partial J(\beta )}{\partial {{\beta }_{1}}}
∂β1∂J(β),令
∂
J
(
β
)
∂
β
1
=
0
\frac{\partial J(\beta )}{\partial {{\beta }_{1}}}=0
∂β1∂J(β)=0,并将
β
0
=
y
ˉ
−
β
1
x
ˉ
{{\beta }_{0}}=\bar{y}-{{\beta }_{1}}\bar{x}
β0=yˉ−β1xˉ代入,得:
2
∑
i
=
0
m
(
β
1
x
i
2
+
(
y
ˉ
−
β
1
x
ˉ
)
x
i
−
x
i
y
i
)
=
0
2\sum\limits_{i=0}^{m}{({{\beta }_{1}}x_{i}^{2}+(\bar{y}-{{\beta }_{1}}\bar{x}){{x}_{i}}-{{x}_{i}}{{y}_{i}})}=0
2i=0∑m(β1xi2+(yˉ−β1xˉ)xi−xiyi)=0
β 1 = ∑ i = 1 m x i y i − y ˉ ∑ i = 1 m x i ∑ i = 1 m x i 2 − x ˉ ∑ i = 1 m x i {\beta}_1 = \frac{\sum_{i=1}^m{x_iy_i} - \bar{y}\sum_{i=1}^mx_i} {\sum_{i=1}^mx_i^2 - \bar{x} \sum_{i=1}^mx_i} β1=∑i=1mxi2−xˉ∑i=1mxi∑i=1mxiyi−yˉ∑i=1mxi
根据求和性质
可得:
β
1
=
∑
i
=
1
m
x
i
y
i
−
y
ˉ
∑
i
=
1
m
x
i
∑
i
=
1
m
x
i
2
−
x
ˉ
∑
i
=
1
m
x
i
=
∑
i
=
1
m
(
x
i
−
x
ˉ
)
(
y
i
−
y
ˉ
)
∑
i
=
1
m
(
x
i
−
x
ˉ
)
2
{\beta}_1 = \frac{\sum_{i=1}^m{x_iy_i} - \bar{y}\sum_{i=1}^mx_i} {\sum_{i=1}^mx_i^2 - \bar{x} \sum_{i=1}^mx_i} = \frac{\sum_{i=1}^{m}{({{x}_{i}}-\bar{x})({{y}_{i}}-\bar{y})}}{\sum_{i=1}^{m}{{{({{x}_{i}}-\bar{x})}^{2}}}}
β1= ∑i=1mxiyi−yˉ∑i=1mxii=1∑mxi2−xˉi=1∑mxi=∑i=1m(xi−xˉ)2∑i=1m(xi−xˉ)(yi−yˉ)
求和性质:
求和性质,具体可以参考Introductory Econometrics A Modern Approach (Fourth Edition) 一书(计量经济学导论,第4版,杰弗里·M·伍德里奇 著)的附录A。
∑
i
=
1
m
(
x
i
−
x
ˉ
)
(
y
i
−
y
ˉ
)
=
∑
i
=
1
m
(
x
i
y
i
−
x
i
y
ˉ
−
x
ˉ
y
i
+
x
ˉ
y
ˉ
)
=
∑
i
=
1
m
x
i
y
i
−
∑
i
=
1
m
x
i
y
ˉ
−
∑
i
=
1
m
x
ˉ
y
i
+
∑
i
=
1
m
x
ˉ
y
ˉ
=
∑
i
=
1
m
x
i
y
i
−
m
x
ˉ
y
ˉ
−
m
x
ˉ
y
ˉ
+
m
x
ˉ
y
ˉ
=
∑
i
=
1
m
x
i
y
i
−
y
ˉ
∑
i
=
1
m
x
i
\begin{aligned} &\sum_{i=1}^{m}\left(x_{i}-\bar{x}\right)\left(y_{i}-\bar{y}\right)\\ &=\sum_{i=1}^{m}\left(x_{i} y_{i}-x_{i} \bar{y}-\bar{x} y_{i}+\bar{x} \bar{y}\right)\\ &=\sum_{i=1}^{m} x_{i} y_{i}-\sum_{i=1}^{m} x_{i} \bar{y}-\sum_{i=1}^{m} \bar{x} y_{i}+\sum_{i=1}^{m} \bar{x} \bar{y}\\ &=\sum_{i=1}^{m} x_{i} y_{i}-m \bar{x} \bar{y}-m \bar{x} \bar{y}+m \bar{x} \bar{y}\\ &=\sum_{i=1}^{m} x_{i} y_{i}-\bar{y} \sum_{i=1}^{m} x_{i} \end{aligned}
i=1∑m(xi−xˉ)(yi−yˉ)=i=1∑m(xiyi−xiyˉ−xˉyi+xˉyˉ)=i=1∑mxiyi−i=1∑mxiyˉ−i=1∑mxˉyi+i=1∑mxˉyˉ=i=1∑mxiyi−mxˉyˉ−mxˉyˉ+mxˉyˉ=i=1∑mxiyi−yˉi=1∑mxi
分子得证
∑ i = 1 m ( x i − x ˉ ) 2 = ∑ i = 1 m ( x i 2 − 2 x i x ˉ + x ˉ 2 ) = ∑ i = 1 m x i 2 − 2 x ˉ ∑ i = 1 m x i + ∑ i = 1 m x ˉ 2 = ∑ i = 1 m x i 2 − 2 m x ˉ 2 + m x ˉ 2 = ∑ i = 1 m x i 2 − m x ˉ 2 = ∑ i = 1 m x i 2 − x ˉ ∑ i = 1 m x i \begin{array}{l} \sum_{i=1}^{m}\left(x_{i}-\bar{x}\right)^{2}=\sum_{i=1}^{m}\left(x_{i}^{2}-2 x_{i} \bar{x}+\bar{x}^{2}\right) \\ \quad=\sum_{i=1}^{m} x_{i}^{2}-2 \bar{x} \sum_{i=1}^{m} x_{i}+\sum_{i=1}^{m} \bar{x}^{2} \\ \quad=\sum_{i=1}^{m} x_{i}^{2}-2 m \bar{x}^{2}+m \bar{x}^{2} \\ \quad=\sum_{i=1}^{m} x_{i}^{2}-m \bar{x}^{2}=\sum_{i=1}^{m} x_{i}^{2}-\bar{x} \sum_{i=1}^{m} x_{i} \end{array} ∑i=1m(xi−xˉ)2=∑i=1m(xi2−2xixˉ+xˉ2)=∑i=1mxi2−2xˉ∑i=1mxi+∑i=1mxˉ2=∑i=1mxi2−2mxˉ2+mxˉ2=∑i=1mxi2−mxˉ2=∑i=1mxi2−xˉ∑i=1mxi
分母得证
有了上述推导证明,普通最小二乘法一般形式可以写成(字母盖小帽表示估计值,具体参考应用概率统计):
y
=
β
1
x
+
β
0
y = \beta_1 x + \beta_0
y=β1x+β0 的普通最小二乘解为:
{
β
1
=
∑
i
=
1
m
(
x
i
−
x
ˉ
)
(
y
i
−
y
ˉ
)
∑
i
=
1
m
(
x
i
−
x
ˉ
)
2
β
0
=
y
ˉ
−
β
1
x
ˉ
\left\{ \begin{array}{lr} {\beta}_1 = \frac{\sum_{i=1}^{m}{({{x}_{i}}-\bar{x})({{y}_{i}}-\bar{y})}}{\sum_{i=1}^{m}{{{({{x}_{i}}-\bar{x})}^{2}}}}\\ {{\beta }_{0}}=\bar{y}-{{\beta }_{1}}\bar{x} \end{array} \right.
{β1=∑i=1m(xi−xˉ)2∑i=1m(xi−xˉ)(yi−yˉ)β0=yˉ−β1xˉ
多元线性回归求解过程
对于多元的情况,需要使用矩阵运算来求解,先用矩阵表示:
X
β
=
y
X\beta =y
Xβ=y
其中,
X
=
[
1
x
12
⋯
x
1
n
1
x
22
⋯
x
2
n
⋯
⋯
⋯
⋯
1
x
m
2
⋯
x
m
n
]
,
β
=
[
β
0
β
1
⋯
β
n
]
,
y
=
[
y
1
⋯
y
m
]
X=\left[ \begin{matrix} 1 & {{x}_{12}} & \cdots & {{x}_{1n}} \\ 1 & {{x}_{22}} & \cdots & {{x}_{2n}} \\ \cdots & \cdots & \cdots & \cdots \\ 1 & {{x}_{m2}} & \cdots & {{x}_{mn}} \\ \end{matrix} \right],\beta =\left[ \begin{matrix} {{\beta }_{0}} \\ {{\beta }_{1}} \\ \cdots \\ {{\beta }_{n}} \\ \end{matrix} \right],y=\left[ \begin{matrix} {{y}_{1}} \\ \cdots \\ {{y}_{m}} \\ \end{matrix} \right]
X=⎣⎢⎢⎡11⋯1x12x22⋯xm2⋯⋯⋯⋯x1nx2n⋯xmn⎦⎥⎥⎤,β=⎣⎢⎢⎡β0β1⋯βn⎦⎥⎥⎤,y=⎣⎡y1⋯ym⎦⎤
目标函数:
J
(
β
)
=
∑
i
=
1
m
∣
y
i
−
∑
j
=
1
n
x
i
j
β
j
∣
2
=
∥
y
−
X
β
T
∥
2
J(\beta )={{\sum\limits_{i=1}^{m}{\left| {{y}_{i}}-\sum\limits_{j=1}^{n}{{{x}_{ij}}{{\beta }_{j}}} \right|}}^{2}}={{\left\| y-X{{\beta }^{T}} \right\|}^{2}}
J(β)=i=1∑m∣∣∣∣∣yi−j=1∑nxijβj∣∣∣∣∣2=∥∥y−XβT∥∥2
如果要使上述目标函数最小,显然其结果为0,即:
y
−
X
β
T
=
0
y- {X} {\beta}^T = 0
y−XβT=0
也就是说:
X
β
T
=
y
X
T
X
β
T
=
X
T
y
(
X
T
X
)
−
1
X
T
X
β
T
=
(
X
T
X
)
−
1
X
T
y
β
T
=
(
X
T
X
)
−
1
X
T
y
{X}\beta^T = y \\ {X}^T {X} \beta^T = {X}^Ty \\ ( {X}^T {X})^{-1} {X}^T{X} \beta^T = ( {X}^T {X})^{-1} {X}^T y \\ {\beta}^T = ( {X}^T {X})^{-1} {X}^Ty
XβT=yXTXβT=XTy(XTX)−1XTXβT=(XTX)−1XTyβT=(XTX)−1XTy
最终获得解:
β
T
=
(
X
T
X
)
−
1
X
T
y
{{\beta }^{T}}={{({{X}^{T}}X)}^{-1}}{{X}^{T}}y
βT=(XTX)−1XTy
可以看出,对于一般的最小二乘法多元求解,使用矩阵运算即可,都不需要迭代 。
此处不做证明,具体可参考《应用概率统计》 张国权著 第九章 回归分析
最小二乘法 VS 梯度下降法
通过上面推导可知,最小二乘法可以矩阵运算求解,这种方法十分方便快捷,但这种方法不是万能的,因为线性最小二乘的解是closed-form即 x = ( A T A ) − 1 A T b x=(A^TA)^{-1}A^Tb x=(ATA)−1ATb,而非线性最小二乘没有closed-form(即 ( A T A ) (A^TA) (ATA)没有可逆矩阵),这时候矩阵运算求解就行不通,这时候就可以通过迭代法(梯度下降法)求最优解。
来具体说说这两种方法的区别:
最小二乘法 | 梯度下降法 |
---|---|
不需要设置学习率 | 需要设置学习率 |
一次运算得出最优解 | 需要多次迭代求解最优解 |
矩阵求逆得复杂度时 O ( n 3 ) O(n^3) O(n3),所以数据维度越大,效率越低,甚至不可接受 | 维度较大时也适用 |
只适用于线性模型 | 适用性高,各种模型都可以使用 |
迭代法,即在每一步update未知量逐渐逼近解,可以用于各种各样的问题(包括最小二乘),比如求的不是误差的最小平方和而是最小立方和。
梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。高斯-牛顿法是另一种经常用于求解非线性最小二乘的迭代法(一定程度上可视为标准非线性最小二乘求解方法)。
还有一种叫做Levenberg-Marquardt的迭代法用于求解非线性最小二乘问题,就结合了梯度下降和高斯-牛顿法。
所以如果把最小二乘看做是优化问题的话,那么梯度下降是求解方法的一种, x = ( A T A ) − 1 A T b x=(A^TA)^{-1}A^Tb x=(ATA)−1ATb是求解线性最小二乘的一种,高斯-牛顿法和Levenberg-Marquardt则能用于求解非线性最小二乘。
莱文贝格-马夸特方法(Levenberg–Marquardt algorithm)能提供数非线性最小化(局部最小)的数值解。此算法能借由执行时修改参数达到结合高斯-牛顿算法以及梯度下降法的优点,并对两者之不足作改善(比如高斯-牛顿算法之反矩阵不存在或是初始值离局部极小值太远)
然后Levenberg-Marquardt方法的好处就是在于可以调节:
如果下降太快,使用较小的λ,使之更接近高斯牛顿法
如果下降太慢,使用较大的λ,使之更接近梯度下降法