最小二乘法,为什么叫二乘法?
二乘其实是指平方的意思,为什么用平方呢?因为平方可以消除误差正负方向上的差异,单纯的只比较长度。
另一种通俗的说法叫距离(学术一点叫欧氏距离),距离不分上下、左右,只有大小,所以可以用来衡量目标与估计的所有方向偏差累积。
啰嗦的分析一下,若您善用程序员if-else思维。
定义:估计在目标正方向上为正,负方向上为负。计算时只要加一个if-else判断就行了,并不一定非要用平方来代表距离,还可以用绝对值、三次方、次方.......等。
何为数学技巧?此处的平方(二乘)是谓也!最简单的负负得正计算规则让二乘法这个名字得以发扬光大,名垂青史,成为一切拟和法追宗溯源的“鼻屎“(鼻始)。
至于最小,这个任务就传到微积分最优化同学的头上了,暂且不表。
如上图所示:蓝点是真实数据,黄点是每个真实数据的估计值,红线的长短即代表真实与估计距离,目标就是找到一条直线(模型)使得所有红线累和最短,推广到多维空间,就是找到一个超平面,而这个超平面是有数学公式解的!以下就是该公式一般化的推导过程,需要点儿耐心看,若有不明白的,请大胆的留言指出。
最小二乘法 通用数学公式解
误差方程为:
其最优解为:
其中
为
的样本输入矩阵:
为
列向量,一般称为
, 对应于简单函数,其实就是指函数值
。
为
列向量,就是待求的拟和权重参数。
最优解的详细推导过程
误差方程展开
因为,对于两个任意两个列向量
,所以上式继续等于
, 它的极值(小)在对
求导为零处,所以有
整理得:
为什么?
为什么对列向量求导可以得到上面的等式呢?
假设有以向量为参数的函数
,对向量求导等价于以对向量的每个分量求偏导而形成新的向量:
把向量表达式展开:
对每一分量求偏导有:
所以有
按同样的方法,我们把
展开分别对
的每个分量求偏导(先看第二部分,第三部分为零忽略)
对每一个分量求偏导
合并整理后可得
同理展开第一部分有(利用到
是对称阵的信息)
所以可得