线性最小二乘和非线性最小二乘

本文基于下面的博客,结合自己第一次看的时候的一些问题,重新梳理总结一下

https://blog.csdn.net/wsj998689aa/article/details/41558945

一:什么是最小二乘

最小二乘:就是最小化,

其中:是第i个实际观测到的值,也可以叫做真实值或者目标值;

          则可以看作是通过x这个参数预测得到的第i个值,是对的一个预测(估计)。

最小二乘就是为了使得观测值(真实值)和估计值之间的差距最小。

二:什么是线性最小二乘

所谓线性,指的是是x的线性函数,。

那么对于整个可以表示为图一:

图一

写成矩阵形式,为图二

图二

此时,我们有,此时最小二乘形式变为求x使得最小化。(这里A是固定的,是需要自己寻找的,这也是线性的前提)

三:如何求解线性最小二乘

对于线性最小二乘,我们要求解,那么最理想的情况是求x使得,这样也就是最小了(别问我为什么0是最小的,因为平方和,当然0是最小值)

此时,问题转换为求解,最终得到的解析解形式,一步求解,不需要迭代,完美~

这个具体的证明过程参考下面这篇博客,我就不当搬运工了:

https://blog.csdn.net/u013007900/article/details/45933435

四:什么是非线性最小二乘

所谓非线性,就是无法表示为的线性关系,即:无法表示为这种线性的关系,而是这种非线性关系(当然这里也不一定是指数形式,对数啥的,或者什么奇奇怪怪表示不出来的形式也有可能)

当是的非线性关系时,此时最小二乘就变为:非线性最小二乘

五:如何求解非线性最小二乘

非线性最小二乘问题无法构造出来一个矩阵线性方程组的,没有办法求一步求得解析解,那么我们怎么求解呢?

思路:既然是非线性的,那么我们可不可以将其转换为线性的呢?或者近似线性的?

答案当然是可以啦~~~~

这就是大名鼎鼎的一阶泰勒展开:

(一定要一阶泰勒展开,不能采用二阶以上,因为只有一阶泰勒展开才是线性函数,才能转换为线性最小二乘问题来直接求解。)

此时变成了

我们在将前两项合并就变成了

其中如果将看作,将看作一个矩阵的第i行(其实这里本来就是一个矩阵的第i行,也就是大名鼎鼎的雅各比矩阵的第i行)

那么就变成了对应着线性最小二乘的形式

此时,我们该怎么做呢~~当然是模仿线性最小二乘的解鸭:

求解:

照着抄:

最终:

这样子我们就得到了关于当前的一个更新值,这样,我们只需要不停的迭代更新x的值,直到e达到某一个精度即可~~是不是很简单呢^_^

六:结语

看到这里,你就入坑了鸭,你以为就这么好求解么~~

这里有几个难点:

1. J不会求~~肿么办?(这点我不知道,我只会逆运动学得求雅各比的方法)

2.注意到了这一项么,哼哼,谁告诉你这东西一定有逆矩阵的?那么没有逆矩阵肿么办,这就是一个ill-condition的问题,他的condition number非常大。这时候,我们通常引入正则项来降低condition number,也可以理解为强行让这个逆矩阵存在。那就是~~直接加入一个带权重的单位矩阵就好了。

3. 至于什么是ill condition 和condition number,等我后续有空了更新,或者大家自己搜一搜吧~我懒。

你可能感兴趣的:(线性最小二乘和非线性最小二乘)