最小二乘估计

在本文中,将介绍最优估计理论中的最经典、最基本的一种估计方法——最小二乘估计。掌握好经典的方法,有利于我们学习更新、更深入的知识。

我将全文分为以下四个部分:

  • 绪论
  • 最小二乘估计推导
  • 理解“最好”
  • 示例

本文的绝大部分内容从《Optimal State Estimation》一书中翻译而来,并加上了一些自己的学习体会。

绪论

在这一节中,我们来考虑这样一个问题:我们要估计一个未知的常数,它受噪声影响,我们对它进行多组观测,但都是不准确的。

举例来说,我们想要测一个电阻的阻值,我们使用一个万用表来获得多组测量。但是由于我们使用的是廉价的万用表,测得的数据受到了噪声的影响,也就是说测得不准确。我们的目标就是在这些不准确的测量值基础之上,估计一个更加准确的估计值。

最小二乘估计推导

上例中要估计的量只有一个未知电阻,这种属于对一个未知常值标量的估计。推广一下,如果要估计一组未知常量,这就属于对一个未知常值矢量的估计,我们考虑后者这种推广的情况。

假设x是一个常值但未知且含有n个元素的矢量,这是我们要拿来做估计的,y是一个含有k个元素受噪声影响的测量值矢量。我们的问题是:如何从x推导出“最好”的估计hat x呢?

我们假设测量值矢量y的每一个元素都是由两部分相加而成。第一部分是,x中每一个元素的线性组合,第二部分是附加的测量噪声:

$y1 = {H_{11}}{x_1} + cdots + {H_{1n}}{x_n} + {v_1}$
;;;vdots
yk = {H_{k1}}{x_1} +  cdots  + {H_{kn}}{x_n} + {v_k}

将上面的方程组用矩阵表示:

y = Hx + v

现在我们来定义一个差值:它是噪受噪声影响的观测值与H hat x之差。其中hat x是我们向推导出的“最好”的估计值:

{{rm{varepsilon }}_y} = y - Hhat x

我们将这个值叫做测量残差。

等等,hat x不是我们最终要求得的值吗?现在怎么都用上了?记得我们小学学解方程时老师是如何教的吗:设未知数、列方程、解方程、求得未知数。没错,我们这里也是同样的套路,现在已经列出了方程,下面要开始解方程了!

没错,所谓的“估计”,其实就是解方程,是解矩阵形式的方程。
下面我们继续思考:未知矢量的真实值我们既然得不到,我们可以通过“估计”,来得到一个比测量值更加接近于真实值的估计值。如何找出这种比测量值还准的估计值hat x呢?

高斯1809年就写道:我们要找的这个值hat x,就是能够使得残差平方和为最小时的解。

我们首先将残差平方和设为函数J,它又称为代价函数(cost function),也称为目标函数(objective function):

J = {{ rm {varepsilon }} _{y1}} ^2 +  cdots  + {{ rm{varepsilon }} _{yk}} ^2
;;; = {rm{varepsilon }}_y^T{{rm{varepsilon }}_y}

下面我们带入残差的具体值,并展开代价函数:

J = {(y - Hhat x)^T}(y - Hhat x)
;;; = {y^T}y - {{hat x}^T}{H^T}y - {y^T}Hhat x + {{hat x}^T}{H^T}Hhat x

我们要找出一个hat x,使J最小,说白了不就是求偏导嘛:

frac{{partial J}}{{partial hat x}} =  - {y^T}H - {y^T}H + 2{{hat x}^T}{H^T}H
;;;;; = 0

解方程得到:

{H^T}y = {H^T}Hhat x
hat x = {({H^T}H)^{ - 1}}{H^T}y
;;; = {H^L}y

其中,{H^L}表示矩阵H的伪逆{({H^T}H)^{ - 1}}{H^T},也就是,如果观测数目k大于等于未知参数数目n,并且H满秩,那么它的伪逆一定存在。

至此我们就推导出了“最好”的估计hat x了,它就是最小二乘估计。

理解“最好”

我们在受噪声影响的测量值与参数真实值之间得到了一个“最好”的估计值,这里会有很多种疑问:

一种疑问是我们为什么要承认这是“最好”?为什么不说无限接近于真实值(近乎完全消除噪声),这样的估计值,我才认为它最好。另一种疑问是我们得到了最小二乘估计这种“最好”的估计值,那么有没有比它还好、还准的呢?

所以说,这个“最好”怎么来理解呢?

这里所谓的“最好”,仅仅是最小二乘法认为的最好,也就是高斯本人认为的最好。就像你我他一样,一个人认为一个东西极好,其他人未必认同,反过来也可能这样。最小二乘只是一种方法,就像一个人一样,人有很多个,求解最优估计的方法也有很多种。

那么,多种最优估计方法,各说各的好,把它们放在一起,在理论上不就可以进行比较了,进而选出一个理论上的、绝对的最好了吗?确实如此,超出了本文的范围,就不展开了(也不会展= =)。

示例

假设我们要估计的只是一个标量x,进行k次测量,那么测量方程为:

y1 = x + {v_1}
vdots
yk = x + {v_k}

合并为矩阵形式:

left[ {begin{array}{<em>{20}{c}}{{y_1}}\\ vdots \\{{y_k}}end{array}} right] = left[ {begin{array}{</em>{20}{c}}1\\ vdots \\1end{array}} right]x + left[ {begin{array}{*{20}{c}}{{v_1}}\\ vdots \\{{v_k}}end{array}} right]

我们直接带入前文的结论,也就是解出(hat x)的那一步:

hat x = {({H^T}H)^{ - 1}}{H^T}y
qquad qquad  = {left( {[1 cdots 1]left[ {begin{array}{<em>{20}{c}}1\\ vdots \\1end{array}} right]} right)^{ - 1}}[1 cdots 1]left[ {begin{array}{</em>{20}{c}}{{y_1}}\\ vdots \\{{y_k}}end{array}} right]
qquad qquad  = frac{1}{k}({y_1} +  cdots  + {y_k})

从本例中我们可以看出,对一个常数的受噪声的多组测量值,我们只要求取平均值,得到的就是最小二乘估计的解。