前一篇文章《正交投影》中我们讲述了正交投影,现在我们来从正交投影的角度来看看我们熟悉的最小二乘法。我记得最早知道最小二乘法是在大一上高数课的时候,我们首先回顾一下什么是最小二乘法。
1、最小二乘法
最近机器学习比较火,机器学习中的许多算法都是对信息进行分类,比如说支持向量机就是根据已知信息来分类,神经网络可以找到输入输出的关系(当然,不能给出具体的数学表达式),这两种算法都能找到输入与输出的关系,分类和回归总是相辅相成的。以后有时间也准备写写关于机器学习方面的算法。 言归正传,最小二乘法的作用也是从一组数据中找到输入与输出之间的关系。
原理:
设经验方程是y=F(x),方程中含有一些待定系数an,给出真实值{(xi,yi)|i=1,2,...n},将这些x,y值代入方程然后作差,可以描述误差:yi-F(xi),为了考虑整体的误差,可以取平方和,之所以要平方是考虑到误差可正可负直接相加可以相互抵消,所以记误差(注意误差函数的选择有很多种,我们选用典型的误差函数)为:
E=∑(yi-F(xi))^2
它是一个多元函数,有an共n个未知量,现在要求的是最小值。所以必然满足对各变量的偏导等于0,于是得到n个方程:
n个方程确定n个未知量为常量是理论上可以解出来的。用这种误差分析的方法进行回归方程的方法就是最小二乘法。
2、最小二乘与投影
我这个人不喜欢看这些理论,公式推导,而更喜欢用例子来展示算法的思想。例如,在二维坐标系中,有三点,(1,1),(2,2),(3,2),那如何用一条直线来拟合这些点呢?
首先,我们可以假设直线表达式如下所示:
然后计算误差函数:
在求得误差函数E对系数a,b的偏导,并使之为0:
由上式得到系数a,b的值,并得到拟合直线表达式:
通过最小二乘法得到的曲线如下:
线性代数角度看最小二乘法:
同样假设拟合直线的表达式设为:
拟合的目的就是使得数据点都满足上述函数表达式,即:
用矩阵形式表示如下:
上面的式子通过高斯消元后,可以发现是无解的!
我们可以发现等式的左边Aa的值是矩阵A中各个列向量的线性组合,若Aa=b有解的话,则b一定在矩阵A的列空间内。上面的例子中,右边的向量显然不在其列空间中,因此方程无解。最小二乘法的思想就是在矩阵A的列空间中找到一个向量p,使得p与b的误差最小。下面我们就来求b:
Aa=p是肯定有解的,因为p在矩阵A的列空间中。要使得e向量的长度最短,当且仅当p为b在矩阵列空间上的投影!有上一篇《正交投影》中投影矩阵的通式可得:
那么将p代入公式Aa=p可得:
将具体数值代入得:
则可以得到:
b,p,e向量分别可以表示如下:
p,b在图中的表示如下: