到底什么是最小二乘法

     http://blog.sina.com.cn/s/blog_7445c2940102wjz8.html#commentCommenthtml

最小二乘法,又是一个即熟悉又陌生的名字。对于学工科的我,简直就是听着最小二乘长大的(汗。。。)。可是,以前碰到要用最小二乘法的时候,我采起的办法都是拿来主义(抄。。。),并无系统的了解一下什么是最小二乘法。包括最小二乘这个叫法,也历来都不理解(一直觉得是一个外来词汇的音译翻译。。。)。因此,每次碰到最小二乘法,都是一脸懵bi。再加上拖延症(其实就是懒。。)做祟,最小二乘就像神通常的存在个人脑海中。直到有一天(此处省略500字。。。。),因而有了本篇文章。算法

​       再说个题外话,其实4个月前就在写最小二乘这篇文章。可是,当时是直接在网上写的,写着写着忽然看见新浪有个新功能,受到好奇心的驱使(实际上是手贱。。),就点了一下。接着,就神马都没了。。都没了。。。对此,我就想对新浪博客提个意见,能不能加个自动保存功能!!能不能!都尼玛什么年代了,这么基础的功能都没有!简直是辣鸡!辣鸡!机器学习

———————————————分割线—————————————————​函数

1.引言

       言归正传,在此先列举一下最小二乘家族成员。最小二乘法直线拟合,最小二乘法多项式(曲线)拟合,机器学习中线性回归的最小二乘法,系统辨识中的最小二乘辨识法,参数估计中的最小二乘法,等等。因而可知,咱们每次碰到的都是最小二乘法这个多面体的其中一个面。若是只从单个面研究,就看不到它的总体,也就不能理解它的内涵。所以,为了搞明白这个多面体,咱们就要从它的核心入手,剖析它最本质的内容。工具

       先从最小二乘的名字来看,所谓最小二乘,其实也能够叫作最小平方和。那么,是什么的平方和最小呢?那确定是偏差最小,那是什么的偏差呢?就是目标对象和拟合对象的偏差。连起来看,就是经过最小化偏差的平方和,使得拟合对象无限接近目标对象,这就是最小二乘的核心思想。能够看出,最小二乘解决的是一类问题,就是须要拟合现有对象的问题。这么看来,是否是也就能够理解为何最小二乘应用如此普遍了呢。学习

2.最小二乘法解析

       解释完了最小二乘的思想,下面就具体说一说最小二乘的方法(方法实际上是将思想具体化)。从最小二乘思想中,咱们能够提出如下几个问题。url

1. 怎么列出偏差方程?spa

2. 怎么最小化偏差方程?翻译

3. 怎么验证结果的准确性?3d

最小二乘法的核心,其实就是针对上述提出的三个问题的解法。​

除此以外,还有一个重要的内容:​

最小二乘应该说是一种思想,而只有结合了具体对象,才变成最小二乘法。这也就致使了多种多样的最小二乘公式、推导、证实等等。可是,其核心是最小二乘的思想,只是展现形式不一样。那么,这个不一样在哪里呢?​

用一句话来讲:基底不一样。​那么什么又是基底呢?​​

上式中的x1,x2,.....,xn就是基底。对于曲线拟合而言(见后面应用部分),x1=1,x2=x,x3=x^2.....。对于其余应用而言,x的含义又有所不一样。看到这里,可能你们有一个疑问:都说最小二乘求解的是线性问题,为何曲线拟合方程中出现幂次方这个非线性的环节了呢?​

这就又涉及到了一个重要概念,那就是:所谓线性方程,是有针对的对象的,也就是有所指的。就像一个坐标点(x,y),其含义是针对x坐标轴和y坐标轴而言的。那么这里,对于曲线拟合过程。虽然方程针对x是非线性的,可是针对各个参数θ而言,这个方程就是线性的了。​那么,若是所求是x,那么就没法用最小二乘法。换句话说,若是针对所求参数,方程是线性的,那么就可使用最小二乘法求解。

2.1.偏差方程

       先说偏差方程,就是用目标函数减去拟合函数,再取其平方便可。这里又涉及到一个问题,为何要取平方和?若是不取平方和,取偏差的绝对值之和,会有什么效果呢?能够从几个方面理解这个问题,先从几何的角度看这个问题。假设有一条直线y=ax+b,要在这条直线上找到一点,距离(x0,y0)这个点的距离最短。若是用绝对值的方法寻找,也就是取min(|y-y0|+|x-x0|),因为绝对值最小为0,因此最小的状况就是x=x0或者y=y0处,以下图1所示。

 

      若是用平方和的方法寻找,就是取 ,能够看出该式是两点间距离公式,也就是距离的概念。那么最短的距离,就是点到直线的垂线,以下图2所示。

   

注:忽略纵轴与横轴的比值,在此只是示意图。

       所以,相比于绝对值的方法,平方和的方法能够获得更短的距离,使得拟合函数更接近于目标函数。其实上述例子,就是从范数的角度考虑这个问题,绝对值对应的是1范数,最小二乘对应的就是2范数。此外,听说还能够从极大似然法中推导出平方和的公式,有兴趣的能够深刻探究一下,我再次就再也不赘述(其实我也没研究过。。哈哈。。)

2.2最小化偏差函数

       从高中咱们就学过如何取极值,只不过不一样于此的是,求取对象是一个一元二次方程。而最小二乘的偏差函数形式多样,但其解决方法与求一元二次方程极值的方法相同。无非就是将原来对变量求导,变成了对向量求偏导(就是在向量某一个维度上的导数)。若是不是对向量求导,而是对函数求导,就是复变函数的变分法(可见都是换汤不换药,思想不变,重要的区别是求导对象不一样)。求导以后,就是另求导的式子为0,解出极值点。再判断该极值点是极大值点仍是极小值点,这样就获得了使偏差函数最小化的向量值。到此,就完成了最小二乘法,是否是很简单呢。

2.3最小二乘的统计特性

       若是只考虑应用,这部分的内容就不须要了解了。由于最小二乘的统计特性是探讨,最小二乘结果可靠的缘由,须要用到随机过程这个工具,推导出最小二乘适用的原理。为了避免让你们迷惑,之后单独探讨这个问题。

3.最小二乘法证实举例

       已有N{xy}的数据,利用函数y=f(x;theta)去拟合数据,求当theta为什么值时,拟合的效果最佳。​

注:因为最小二乘法的应用场景多种多样,因此不少推导公式都是基于特定应用对象的。如遇到曲线拟合的问题,各参数基底是x的幂次方。在推导的过程当中,就会出现范德蒙德矩阵,常常让人一脸懵逼。为了更简便的学习最小二乘推理过程,建议你们采用本文中的所有用符号替代全部参数基地,这样反而使得推导过程更加清晰。

3.1偏差函数

 

3.2偏差函数求偏导

         针对偏差和求偏导,有以下方程:

此处使用线性方程f去拟合数据。将上式通过化简整理,写为矩阵形式以下:

再结合 ,将上式每一行展开,再纵向求和,代入化简(化简过程比较繁琐,不过本身推导一遍会加深理解,有兴趣的能够本身推导一下,居然能够将上式化简为很是简单的形式,很神奇)后能够获得以下方程:​

注:下面公式(2)应为公式(1)​

从以上计算能够看出,矩阵形式跟方程形式的最小二乘法是等价的,只不过是书写形式不一样。若是直接从矩阵形式推导,能够更简便的获得结果(6)。特别注意,不能够直接用以下方法:

 

貌似这样获得的结果与咱们计算获得的同样,可是实际上是错误的由于第一步Y=XA就是错误的,只有当偏差项为0的时候,才能够这么写,不然的话存在偏差项。​

4.最小二乘法应用分析

 4.1直线拟合

         若是将最小二乘法中向量的维数设置为2,即(xi,1),拟合函数为y=ax+b,参数theta2维,化简后的公式就是咱们在书本上常见的直线拟合公式。

4.2曲线拟合

若是将最小二乘法中x,设置为以下形式:

最小二乘法就变成了曲线拟合公式。

4.3线性回归

         机器学习中的线性回归算法,就是上面举例使用的公式。其中,线性表明的是拟合函数的形式,回归也能够称为拟合(起名问题都是历史遗留问题,哎。。)。在线性回归中,每每还常常听到一个名词,叫梯度降低。这种方法常常在以下状况使用,XTX的逆没法求得的,也就没法用矩阵形式获得最小二乘的解。那么,就能够利用梯度降低的方法逐步的逼近出最优解。梯度降低能够算做解最小二乘的方法,跟矩阵解法、方程解法并列。具体区别能够参看知乎上对该问题的解释:

https://www.zhihu.com/question/24900876

4.4系统辨识中的最小二乘

         就是将拟合函数用传递函数的时域表达式写出,经过输入输出数据,最终计算获得时域表达式中的各项参数,就实现了系统辨识。