最小二乘法
最小二乘法(Least Squares Method)是统计学和数值分析中的一种重要方法,用于解决过度确定(即方程的数量多于未知数的数量)的线性方程组,以及数据拟合问题。其核心思想是通过最小化预测值与实际观测值之间的误差的平方和来找到最佳拟合的参数。
最小二乘法的基本原理
假设我们有一组数据点 ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x n , y n ) (x_1, y_1), (x_2, y_2), \dots, (x_n, y_n) (x1,y1),(x2,y2),…,(xn,yn),我们希望找到一个函数 y = f ( x ) y = f(x) y=f(x) 来拟合这些数据点,使得实际观测值 y i y_i yi 与拟合函数值 f ( x i ) f(x_i) f(xi) 之间的误差最小。
最常见的情况是线性拟合,即假设拟合函数是线性的:
y
=
m
x
+
b
y = mx + b
y=mx+b
其中,
m
m
m 是斜率,
b
b
b 是截距。我们的目标是找到
m
m
m 和
b
b
b 的值,使得实际值和拟合值之间的误差平方和最小。具体来说,误差的平方和(称为残差平方和)定义为:
S
(
m
,
b
)
=
∑
i
=
1
n
(
y
i
−
(
m
x
i
+
b
)
)
2
S(m, b) = \sum_{i=1}^n \left( y_i - (mx_i + b) \right)^2
S(m,b)=i=1∑n(yi−(mxi+b))2
最小二乘法的目标是找到
m
m
m 和
b
b
b 使得
S
(
m
,
b
)
S(m, b)
S(m,b) 最小。
为什么要对 S ( m , b ) S(m, b) S(m,b) 求导?
在数学中,找到函数的极值(最大值或最小值)通常通过求函数的导数或偏导数,并令其等于零来实现。这个原理基于如下几点:
-
极值点的性质:
一个可微函数在其极值点(局部最大值或最小值)处,导数为零。这是因为导数表示的是函数的变化率,而在极值点上,函数的变化率为零(即函数曲线在该点处的切线是水平的)。 -
一阶条件:
对于多元函数 S ( m , b ) S(m, b) S(m,b),其极值点满足一阶导数为零的条件:
∂ S ∂ m = 0 , ∂ S ∂ b = 0 \frac{\partial S}{\partial m} = 0, \quad \frac{\partial S}{\partial b} = 0 ∂m∂S=0,∂b∂S=0
这意味着在极值点,沿着 m m m 和 b b b 方向的瞬时变化率为零。
偏导数等于零的推导
对 b b b 求偏导数:
∂ S ( m , b ) ∂ b = ∂ ∂ b ∑ i = 1 n ( y i − ( m x i + b ) ) 2 \frac{\partial S(m, b)}{\partial b} = \frac{\partial}{\partial b} \sum_{i=1}^n \left( y_i - (mx_i + b) \right)^2 ∂b∂S(m,b)=∂b∂i=1∑n(yi−(mxi+b))2
使用链式法则对每一项求导:
∂ S ( m , b ) ∂ b = ∑ i = 1 n 2 ( y i − ( m x i + b ) ) ⋅ ( − 1 ) \frac{\partial S(m, b)}{\partial b} = \sum_{i=1}^n 2 \left( y_i - (mx_i + b) \right) \cdot (-1) ∂b∂S(m,b)=i=1∑n2(yi−(mxi+b))⋅(−1)
简化为:
∂ S ( m , b ) ∂ b = − 2 ∑ i = 1 n ( y i − ( m x i + b ) ) \frac{\partial S(m, b)}{\partial b} = -2 \sum_{i=1}^n \left( y_i - (mx_i + b) \right) ∂b∂S(m,b)=−2i=1∑n(yi−(mxi+b))
将其设为零,得到:
∑ i = 1 n ( y i − ( m x i + b ) ) = 0 \sum_{i=1}^n \left( y_i - (mx_i + b) \right) = 0 i=1∑n(yi−(mxi+b))=0
进一步简化为:
∑
i
=
1
n
y
i
=
m
∑
i
=
1
n
x
i
+
n
b
\sum_{i=1}^n y_i = m \sum_{i=1}^n x_i + nb
i=1∑nyi=mi=1∑nxi+nb
(1)
对 m m m 求偏导数:
∂ S ( m , b ) ∂ m = ∂ ∂ m ∑ i = 1 n ( y i − ( m x i + b ) ) 2 \frac{\partial S(m, b)}{\partial m} = \frac{\partial}{\partial m} \sum_{i=1}^n \left( y_i - (mx_i + b) \right)^2 ∂m∂S(m,b)=∂m∂i=1∑n(yi−(mxi+b))2
同样使用链式法则:
∂ S ( m , b ) ∂ m = ∑ i = 1 n 2 ( y i − ( m x i + b ) ) ⋅ ( − x i ) \frac{\partial S(m, b)}{\partial m} = \sum_{i=1}^n 2 \left( y_i - (mx_i + b) \right) \cdot (-x_i) ∂m∂S(m,b)=i=1∑n2(yi−(mxi+b))⋅(−xi)
简化为:
∂ S ( m , b ) ∂ m = − 2 ∑ i = 1 n x i ( y i − ( m x i + b ) ) \frac{\partial S(m, b)}{\partial m} = -2 \sum_{i=1}^n x_i \left( y_i - (mx_i + b) \right) ∂m∂S(m,b)=−2i=1∑nxi(yi−(mxi+b))
将其设为零,得到:
∑ i = 1 n x i ( y i − ( m x i + b ) ) = 0 \sum_{i=1}^n x_i \left( y_i - (mx_i + b) \right) = 0 i=1∑nxi(yi−(mxi+b))=0
进一步简化为:
∑
i
=
1
n
x
i
y
i
=
m
∑
i
=
1
n
x
i
2
+
b
∑
i
=
1
n
x
i
\sum_{i=1}^n x_i y_i = m \sum_{i=1}^n x_i^2 + b \sum_{i=1}^n x_i
i=1∑nxiyi=mi=1∑nxi2+bi=1∑nxi
(2)
解方程组
通过解这两个方程(方程1和方程2),可以得到 m m m 和 b b b 的值。
解 b b b 的方程
从方程 (1) 中,我们可以解出 b b b:
b = ∑ i = 1 n y i − m ∑ i = 1 n x i n b = \frac{\sum_{i=1}^n y_i - m \sum_{i=1}^n x_i}{n} b=n∑i=1nyi−m∑i=1nxi
解 m m m 的方程
将 b b b 的表达式代入方程 (2) 可以求得 m m m 的值:
m = n ∑ i = 1 n x i y i − ∑ i = 1 n x i ∑ i = 1 n y i n ∑ i = 1 n x i 2 − ( ∑ i = 1 n x i ) 2 m = \frac{n \sum_{i=1}^n x_i y_i - \sum_{i=1}^n x_i \sum_{i=1}^n y_i}{n \sum_{i=1}^n x_i^2 - \left( \sum_{i=1}^n x_i \right)^2} m=n∑i=1nxi2−(∑i=1nxi)2n∑i=1nxiyi−∑i=1nxi∑i=1nyi
用 m m m 和 b b b 进行预测
通过上述推导得到的 m m m 和 b b b,我们可以构建出一个线性回归模型,并用它来对新数据点进行预测。
构建预测模型
预测模型为:
y
=
m
x
+
b
y = mx + b
y=mx+b
预测新数据
当有一个新的自变量值
x
new
x_{\text{new}}
xnew 时,可以使用这个模型预测相应的因变量值
y
pred
y_{\text{pred}}
ypred:
y
pred
=
m
x
new
+
b
y_{\text{pred}} = m x_{\text{new}} + b
ypred=mxnew+b
举例说明
假设我们有一组数据点:
{
(
1
,
2
)
,
(
2
,
3
)
,
(
3
,
5
)
,
(
4
,
4
)
}
\{(1, 2), (2, 3), (3, 5), (4, 4)\}
{(1,2),(2,3),(3,5),(4,4)}
通过最小二乘法计算得到
m
m
m 和
b
b
b(假设
m
=
0.9
m = 0.9
m=0.9,
b
=
1.2
b = 1.2
b=1.2)。
预测模型为:
y
=
0.9
x
+
1.2
y = 0.9x + 1.2
y=0.9x+1.2
对于新的自变量
x
new
=
5
x_{\text{new}} = 5
xnew=5,我们可以预测相应的因变量:
y
pred
=
0.9
×
5
+
1.2
=
5.7
y_{\text{pred}} = 0.9 \times 5 + 1.2 = 5.7
ypred=0.9×5+1.2=5.7
总结
通过最小二乘法得到的 m m m 和 b b b 实际上是用于构建线性回归模型的参数。这个模型可以用来预测新数据点的结果。计算出的 m m m 和 b b b 定义了最佳拟合直线,通过这个直线模型,你可以对新的输入进行预测,获得相应的输出。