我们以最简单的一元线性模型来解释最小二乘法。什么是一元线性模型呢?监督学习中,如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机等),如果预测的变量是连续的,我们称其为回归。回归分析中,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。对于二维空间线性是一条直线;对于三维空间线性是一个平面,对于多维空间线性是一个超平面...
对于一元线性回归模型, 假设从总体中获取了n组观察值(X1,Y1),(X2,Y2),…,(Xn,Yn)。对于平面中的这n个点,可以使用无数条曲线来拟合。要求样本回归函数尽可能好地拟合这组值。综合起来看,这条直线处于样本数据的中心位置最合理。选择最佳拟合曲线的标准可以确定为:使总的拟合误差(即总残差)达到最小。有以下三个标准可以选择:
(1)用“残差和最小”确定直线位置是一个途径。但很快发现计算“残差和”存在相互抵消的问题。
(2)用“残差绝对值和最小”确定直线位置也是一个途径。但绝对值的计算比较麻烦。
(3)最小二乘法的原则是以“残差平方和最小”确定直线位置。用最小二乘法除了计算比较方便外,得到的估计量还具有优良特性。这种方法对异常值非常敏感。
最常用的是普通最小二乘法( Ordinary Least Square,OLS):所选择的回归模型应该使所有观察值的残差平方和达到最小。(Q为残差平方和)-即采用平方损失函数。
样本回归模型:
平方损失函数:
则通过Q最小确定这条直线,即确定为变量,把它们看作是Q的函数,就变成一个求极值的问题,通过求导数可以得到,求Q对两个待估参数的偏导数:
根据数学知识可知,函数的极值点为偏导数为0的点。由此可得
1.基本概念
梯度下降法,就是利用负梯度方向来决定每次迭代的新的搜索方向,使得每次迭代能使待优化的目标函数逐步减小。梯度下降法是2范数下的最速下降法。 最速下降法的一种简单形式是:x(k+1)=x(k)-a*g(k),其中a称为学习速率,可以是较小的常数。g(k)是x(k)的梯度。
2.导数
(1)定义
设有定义域和取值都在实数域中的函数 y=f(x),若f(x)在点x0的某个邻域内有定义,则当自变量x在x0处取得增量△x(点x0+△x仍在该邻域内)时,相应地函数y取得增量
△y=f(x0+△x)-f(x0),如果△y与△x之比在△x →0时的极限存在,则称函数y=f(x)在x0可导,并称这个极限为函数y=f(x)在点x0处的导数,记为f’(x0),即:
也可记做
对于一般的函数,如果不使用增量的概念,函数f(x) 在点 x0 处的导数也可以定义为:当定义域内的变量 x 趋近于 x0 时,的极限,也就是说
导数反应的变化率:
一个函数在某一点的导数描述了这个函数在这一点附近的变化率。导数的本质是通过极限的概念对函数进行局部的线性逼近。当函数f的自变量在一点x0 上产生一个增量h时,函数输出值的增量与自变量增量h的比值在h趋于0时的极限如果存在,即为f在x0 处的导数,记作
(2)几何意义
一个实值函数的图像曲线。函数在一点的导数等于它的图像上这一点处之切线的斜率,导数是函数的局部性质。不是所有的函数都有导数,一个函数也不一定在所有的点上都有导数。若某函数在某一点导数存在,则称其在这一点可导,否则称为不可导。如果函数的自变量和取值都是实数的话,那么函数在某一点的导数就是该函数所代表的曲线在这一点上的切线斜率。
具体来说:当函数定义域和取值都在实数域中的时候,导数可以表示函数的曲线上的切线斜率。如下图所示,设P0为曲线上的一个定点,P为曲线上的一个动点。当P沿曲线逐渐趋向于点P0时,并且割线P P0的极限位置P0T存在,则称P0 T为曲线在P0处的切线
若曲线为一函数y=f(x)的图像,那么割线P P0(蓝色)的斜率为:
当P0处的切线P0 T(红色),即P P0的极限位置存在时,此时△x→0,φ→α,则P0T的斜率tanα为:
上式与一般定义中的导数定义完全相同,也就是说,因此,导数的几何意义即曲线y=f(x)在点P0(x0,f(x0))处切线的斜率.
(3)导函数
导数是一个数,是指函数f(x)在点x0 处导函数的函数值,若函数f(x)在其定义域包含的某区间I内每一个点都可导,那么也可以说函数f(x)在区间I内可导,这时对于I内每一个确定的x 值,都对应着f 的一个确定的导数值,如此一来就构成了一个新的函数x→f’(x),这个函数称作为原来函数f(x)的导函数,记作:y’,f’(x)或者,通常也可以说导函数为导数
(4)梯度
1、相关概念
假如一个空间中的每一点的属性都可以以一个标量来代表的话,那么这个场就是一个标量场。
假如一个空间中的每一点的属性都可以以一个向量来代表的话,那么这个场就是一个向量场
标量场中某一点上的梯度指向标量场增长最快的方向,梯度的长度是这个最大的变化率。
梯度一词有时用于斜度,也就是一个曲面沿着给定方向的倾斜程度。
2、计算
一个标量函数φ的梯度记为:▽φ或grad φ,其中▽表示矢量微分算子
在三维情况,该表达式在直角坐标中扩展为
(5)梯度下降法
梯度下降法,基于这样的观察:如果实值函数F(x)在点a处可微且有定义,那么函数 F(x)在a点沿着梯度相反的方向-▽F(a)下降最快。因而,如果b=a-γ▽F(a)对于γ>0为一个足够小数值时成立,那么F(a)≥F(b)
考虑到这一点,我们可以从函数F 的局部极小值的初始估计x0出发,并考虑如下序列x0, x1, x2,…使得xn+1=xn-γn▽F(n), n≥0
因此可以得到F(x0) ≥F(x1) ≥F(x2) ≥….
如果顺利的话序列(xn)收敛到期望的极值。注意每次迭代步长 γ可以改变。
实例:
假设一个估计函数:
表示特征,为参数,在这儿的意思是调整feature中每个分量的影响力,为了如果我们令x0= 1,就可以用向量的方式来表示了:
我们程序也需要一个机制去评估我们θ是否比较好,所以说需要对我们做出的h函数进行评估,一般这个函数称为损失函数(lossfunction)或者错误函数(errorfunction),描述h函数不好的程度,在下面,我们称这个函数为J函数
在这儿我们可以做出下面的一个错误函数:
这个错误估计函数是去对x(i)的估计值与真实值y(i)差的平方和作为错误估计函数,前面乘上的1/2是为了在求导的时候,这个系数就不见了。
如何调整θ以使得J(θ)取得最小值有很多方法,其中有最小二乘法(minsquare),是一种完全是数学描述的方法,在stanford机器学习开放课最后的部分会推导最小二乘法的公式的来源,这个来很多的机器学习和数学书上都可以找到,这里就不提最小二乘法,而谈谈梯度下降法。
梯度下降法是按下面的流程进行的:
1)首先对θ赋值,这个值可以是随机的,也可以让θ是一个全零的向量。
2)改变θ的值,使得J(θ)按梯度下降的方向进行减少。
为了更清楚,给出下面的图:
这是一个表示参数θ与误差函数J(θ)的关系图,红色的部分是表示J(θ)有着比较高的取值,我们需要的是,能够让J(θ)的值尽量的低。也就是深蓝色的部分。θ0,θ1表示θ向量的两个维度。在上面提到梯度下降法的第一步是给θ给一个初值,假设随机给的初值是在图上的十字点。然后我们将θ按照梯度下降的方向进行调整,就会使得J(θ)往更低的方向进行变化,如图所示,算法的结束将是在θ下降到无法继续下降为止。
当然,可能梯度下降的最终点并非是全局最小点,可能是一个局部最小点,可能是下面的情况:
上面这张图就是描述的一个局部最小点,这是我们重新选择了一个初始点得到的,看来我们这个算法将会在很大的程度上被初始点的选择影响而陷入局部最小点.下面我将用一个例子描述一下梯度减少的过程,对于我们的函数J(θ)求偏导J:(求导的过程如果不明白,可以温习一下微积分)
下面是更新的过程,也就是θi会向着梯度最小的方向进行减少。θi表示更新之前的值,-后面的部分表示按梯度方向减少的量,α表示步长,也就是每次按照梯度减少的方向变化多少。
一个很重要的地方值得注意的是,梯度是有方向的,对于一个向量θ,每一维分量θi都可以求出一个梯度的方向,我们就可以找到一个整体的方向,在变化的时候,我们就朝着下降最多的方向进行变化就可以达到一个最小点,不管它是局部的还是全局的。用更简单的数学语言进行描述是这样的:
最小二乘法跟梯度下降法都是通过求导来求损失函数的最小值,那它们有什么区别呢。相同点:
1.本质相同:两种方法都是在给定已知数据(independent & dependent variables)的前提下对dependent variables算出出一个一般性的估值函数。然后对给定新数据的dependent variables进行估算。
2.目标相同:都是在已知数据的框架内,使得估算值与实际值的总平方差尽量更小(事实上未必一定要使用平方),估算值与实际值的总平方差的公式为:
其中为第i组数据的independentvariable,为第i组数据的dependentvariable,为系数向量。
不同点
1实现方法和结果不同:最小二乘法是直接对△求导找出全局最小,是非迭代法。而梯度下降法是一种迭代法,先给定一个β,然后向△下降最快的方向调整β,在若干次迭代之后找到局部最小。梯度下降法的缺点是到最小点的时候收敛速度变慢,并且对初始点的选择极为敏感,其改进大多是在这两方面下功夫。