为什么要了解最小二乘法?因为在机器学习中,求解最优化问题是很重要的数学部分,而最小二乘法又是求解最优化问题中非常有名和有效的方法之一。相信即使来自于不同的学科,但是只要属于理工科专业的同学,很多人都学习过回归,而学习回归的过程中应该听说过最小二乘法。不过,我也相信,大部分非数学,统计专业的同学对最小二乘法的数学原理可能并不熟悉(比如我)。
在具体介绍最小二乘法之前,我们需要一个先导知识:导数和偏导数。不过我假定导数的基本知识大部分同学是具有的。。。(要是没有,查一下资料也蛮简单的),所以只补充一下偏导数的知识(好吧,主要是我不会。。。)。
偏导数
我们以一个例子来了解偏导数。首先,举一个一元二次函数Y=ax2+b为例。大部分同学应该都知道对于这个函数来说y对x求导,dx/dy得到的是这条曲线的斜率,函数的极值点处dx/dy为0。但是如果我们的函数是二元函数,该如何求导数呢。对于给定函数
f = x2 + xy + y2
我们可以绘制出它的函数图像。
对于这样的函数来说,我们只能分别求函数f(x,y)对x的导数或f(x,y)对y的导数。例如,我们想要求函数在点
(1,1,3)对x的导数。这时的做法是切出一个平面,这个平面上所有的y值均为1,可以直观地想象到这个平面
一定平行于xoz平面(垂直于y轴)。将y=1的平行于xoz平面切出的函数图像提取出来,可以得到下图。
图中的切线斜率就是我们要求的对x的偏导数。这一点的斜率是3,我们把它记做:
同理,如果我们求对y的偏导数,只要用一个平行于yoz的平面去切这个函数就可以了。
有了偏导数的知识之后,我们就可以开始了解最小二乘法的思想了。
对于一元线性回归模型, 假设从总体中获取了n组观察值(X1,Y1),(X2,Y2), …,(Xn,Yn)。
对于平面中的这n个点,可以使用无数条曲线来拟合。要求样本回归函数尽可能好地拟合这组值。综合起来看,
这条直线处于样本数据的中心位置最合理。 选择最佳拟合曲线的标准可以确定为:使总的拟合误差(即总残差)达到最小。有以下三个标准可以选择:
(1)用“残差和最小”确定直线位置是一个途径。但很快发现计算“残差和”存在相互抵消的问题。
(2)用“残差绝对值和最小”确定直线位置也是一个途径。但绝对值的计算比较麻烦。
(3)最小二乘法的原则是以“残差平方和最小”确定直线位置。用最小二乘法除了计算比较方便外,得到的估计量还具有优良特性。这种方法对异常值非常敏感。
最常用的是普通最小二乘法( Ordinary Least Square,OLS):所选择的回归模型应该使所有观察值的残差平方和达到最小。(Q为残差平方和)- 即采用平方损失函数。这里的损失函数就是机器学习中的损失函数,明显地,我们希望损失函数最小,这样函数拟合(机器学习中称之为“模型”)的效果最好。而求解最小损失函数可以转换为最优化问题。关于损失函数,未来在机器学习的部分中还会讲到。
具体来讲,假设上述样本的回归模型为:
ei为样本(Xi,Yi)的误差。
其平方损失函数为
在这个函数中,我们要把参数看作是变量,目标函数Q是关于这两个变量的二元二次函数。当Q取最小值
时原函数的误差平方和最小,拟合效果最好。求这样一个函数的极值就要用到刚才所学到的偏导数的知识了,分别对
两个变量求偏导数,因为我们要求得极值点处的变量值,极值点处导数为0,所以列出如下方程组
求解这个方程组,就可以用观察值来计算最优参数值了
这就是最小二乘法的解法:求得平方损失函数的极值点。