c++椭圆最小二乘法原理_最小二乘法原理详解

本文是 Least squares approximation 的学习笔记。这个视频从线性代数的角度,对最小二乘法的原理讲解的通俗易懂。

1 提出问题

如上图所示:

A: 是一个n行k列的矩阵,每行可以看作是一个观测数据(或者一个训练样本)的输入(features);

b: 是一个n维的列向量,每项表示一个观测数据的目标值(ground truth target value);

x: 是一个k维的列向量,是需要构建的线性模型的参数。

我们希望通过已知的A和b,求解出一个x,使得Ax = b。 但是,一般情况下,不存在满足这个等式的x。 怎么办?

2 分析问题

Ax = b这个等式的左边,可以看作是一个矩阵A的列空间(Column space of A)。 这个等式没有解,可以理解为向量b不在矩阵A的列空间上。 如下图所示: 

A的列空间可以抽象成一个超平面,b可以抽象成一个向量。b不在超平面上。

解决办法是:在超平面上,找一个最接近b的向量。假设这个最接近b的向量是Ax*(其中x* 就是最优的参数解),那么,向量b和向量Ax*之间的距离应该是最小的。所以,可以通过最小化b和Ax*之间的距离,来求出x*,如下图所示:

这个就是最小二乘(least square estimate、least square solution、least square approximation)的含义。结合上图中的公式,最小二乘计算的是:求一个近似的x*,使b和Ax*各项的差的平方的和最小。

3 解决问题

 从上图可以看出,在超平面上,距离b最近的向量是b向量在超平面上的投影向量v。所以,Ax*其实就是这个投影向量v。所以:Ax* - b 得到的向量, 与矩阵A的列空间正交;

矩阵A的列空间正交的向量,正好是矩阵A的转置的零空间中的向量;

Ax* - b 是矩阵A的转置的零空间的一个向量,所以Ax - b 乘 A的转置 得到一个0向量

如下图所示:

 根据上面的等式,可以得出:

总结整个最小二乘的逻辑:已知A,b,根据等式Ax = b求解x;

但是,以上等式没有解,只能求一个最优的近似的解;

根据最小二乘算法,可以求出一个x*,就是 Ax = b的最优解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值