背景:
记得在高中的时候,课本上有一个拟合直线的例子,当时并没有怎么放在心上,到了大学之后,在校比赛和工作学习需要用到,现在做一下记录,也算是温习以前学过的知识,帮助自己加深理解。
正文:
最小二乘法在求解最优化问题时,经常是作为一种有效的数据分析方法,本文主要是阐述线性最小二乘法,我们首先引入一个最经典的例子——拟合直线。
方便计算,给出三个点集合(1, 1),B(2, 1),C(3, 2),很明显这三个点不在一条直线上,按照维基百科的定义是,每个残差项的平方和最小时,此时对应的参数即为最优化参数。
假设直线的方程是: ,那么残差方程 : ,
带入三个点数据化解 , 哈哈,这就进入三维空间找最低点过程了,(有兴趣的可以在maltab做图看看),对其微分求导:, (如此表达是有原因的,后面矩阵运算揭晓!哈哈),即:,
为了验证答案是否正确,下图是使用 Microsoft Office Excel.exe拟合的图片,
可以看到上图,一毛一样!(从侧面也反映Excel也是通过最小二乘法拟合直线的)。
上面结束了以求导方式来解决做优化问题,在实际应用中,一般数据量都比较庞大,而且也不是拟合直线那么简单,那么矩阵方式就变得很重要了,而且编程也容易实现。
首先表达线性方程组: ,
简写成表达: AX = b,其中A= ,X = ,b = ,
首先我们要明确一点,上面的这个线性方程组是没有解的,所以描述一个解不存在的方程组,实际应用的常出现这类不相容问题,尽管不会出现如此的系数矩阵,当方程组的解不存在但又要求解时,最好的方法是寻求X,是的AX尽可能接近b。
考虑AX作为b的一个近似,从b到AX的距离越小,||b - AX||近似程度越好,一般的最小二乘问题就是找出使||b-AX||尽量小的X,术语“最小二乘”来源这样的事实,||b - AX||是平方和的平方根。
下面,是摘自《线性代数及其应用》原书第四版,(想打字的,想一想,太多了),该书以图形化方式解释最小二乘的一般矩阵表达式,容易理解,直接上图吧(每次干这种侵权坏事,心里总是胆战心惊)。
图片最后一行公式中 就是最小二乘解,可以带入A和b,解出 = 与微分求导一样的结果。
这其中蕴涵的数学原理是非常奇妙的,已惊艳到了作者我。
可以在麻省理工学院的线性代数视频课上观看最小二乘该节内容,加深理解!
链接: http://open.163.com/movie/2010/11/P/U/M6V0BQC4M_M6V2AOJPU.html
上面介绍的是线性最小二乘法,工程中也可能遇到非线性问题,一般用梯度下降法找到高维空间最优化解,网上有许多这方面的优化库,可以下载来参考使用。