在学习SLAM的时候不断的出现最小二乘法相关的算法,看的云里雾里,所以用这篇博客总结一下。
定义
最小二乘法是一种在误差估计、不确定度、系统辨识及预测、预报等数据处理诸多学科领域广泛应用的数学估计。以上是百度百科的定义。更直观的解释,我们常说的曲线拟合,就常用最小二乘法求解。
推导
完整的解释和推导请看知乎最小二乘法的本质是什么。这篇文章看完之后我是醍醐灌顶,把最小二乘法用最简单的语言和例子解释清楚了。
个人总结一下:
- 设
y
y
y为要预测的数据真值,
y
i
(
i
=
1
,
2
,
.
.
.
,
n
)
y_i(i=1,2,...,n)
yi(i=1,2,...,n)为采集到的数据点,求解式子:
S = m i n ∑ ( y − y i ) 2 S = min\sum(y - y_i)^2 S=min∑(y−yi)2
使得式子S的值最小,此时的y就是最小二乘法的结果。求解方法是把S看作一个函数,对函数进行求导,并令导数为0,即 ∂ S ∂ y = 0 \frac{\partial S}{\partial y} = 0 ∂y∂S=0。 - 统计学的推导:假设测量值为
x
i
x_i
xi,真值为
x
x
x,它们的误差即为:
e i = x − x i e_i = x - x_i ei=x−xi
这样误差最终会形成一个概率分布,但是我们不知道这个误差的概率分布是什么,现假设误差的概率密度函数为: p ( e i ) p(e_i) p(ei),那么将每个测量值对应的概率密度相乘,得到一个联合概率:
L ( x ) = p ( e 1 ) p ( e 2 ) . . . p ( e n ) = p ( x − x 1 ) p ( x − x 2 ) . . . p ( x − x n ) \begin{aligned} L(x) &= p(e_1)p(e_2)...p(e_n) \\ &= p(x-x_1)p(x-x_2)...p(x-x_n) \end{aligned} L(x)=p(e1)p(e2)...p(en)=p(x−x1)p(x−x2)...p(x−xn)
当 x x x作为变量的时候,上式就变为似然函数了。同样的,对于 L ( x ) L(x) L(x)求最大值,就是找极值点,让求导等于0。带入 x = x − x=\overset{-}{x} x=x−的条件,发现误差的概率密度函数为一个正态分布。也就是说如果误差的分布是正态分布,那么最小二乘法得到的就是最有可能的值。(看原文,特别详细)