本文为转载,原文链接:最小二乘法 (Least Squares) - mathwater的文章 - 知乎
https://zhuanlan.zhihu.com/p/128083562
最小二乘法,为什么叫二乘法?
二乘其实是指平方的意思,为什么用平方呢?因为平方可以消除误差正负方向上的差异,单纯的只比较长度。
另一种通俗的说法叫距离(学术一点叫欧氏距离),距离不分上下、左右,只有大小,所以可以用来衡量目标与估计的所有方向偏差累积。
啰嗦的分析一下,若您善用程序员if-else思维。定义:估计在目标正方向上为正,负方向上为负。计算时只要加一个if-else判断就行了,并不一定非要用平方来代表距离,还可以用绝对值、三次方、次方.......等。何为数学技巧?此处的平方(二乘)是谓也!最简单的负负得正计算规则让二乘法这个名字得以发扬光大,名垂青史,成为一切拟和法追宗溯源的“鼻屎“(鼻始)。至于最小,这个任务就传到微积分最优化同学的头上了,暂且不表。

如上图所示:蓝点是真实数据,黄点是每个真实数据的估计值,红线的长短即代表真实与估计距离,目标就是找到一条直线(模型)使得所有红线累和最短,推广到多维空间,就是找到一个超平面,而这个超平面是有数学公式解的!以下就是该公式一般化的推导过程,需要点儿耐心看,若有不明白的,请大胆的留言指出。
最小二乘法 通用数学公式解
误差方程为:


其中X为mxn的样本输入矩阵:

y为mx1列向量,一般称为labels,对应于简单函数,其实就是指函数值f(x)

w为nx1列向量,就是待求的拟合权重参数。

最优解的详细推导过程
误差方程展开

因为,对于两个任意两个列向量

它的极值在对

整理得:

为什么?
为什么对列向量求导可以得到上面的等式呢?
假设有以向量为参数的函数,对向量求导等价于对向量的每个分量求偏导二形成新的向量:

把向量表达式展开:

对每一分量求偏导有:





按同样的方法,我们把

先看第二部分(第三部分为0忽略)

对每一个分量求偏导

合并整理后可得:

同理展开第一部分有(利用到是对称阵的信息):

所以可得

网友评论