线性回归

线性回归部分(Linear Regression)主要分为三部分:一元线性回归(Linear Regression with one variable)、多元线性回归(Linear Regression with multiple variables)和逻辑回归(Logistic Regression).主要就前两个部分就重要的概念进行一个总结:

首先,是成本函数,即cost function。基本的形式我不再赘述,还是参数θ乘以x的形式。使用了最小二乘法来定义了线性回归的cost function,如下所示:


最小二乘法是非常常用的方法,用在这里也是浅显易懂的。下面是成本函数的matlab实现:

  1. J = sum((X * theta - y).^2)/(2*m);  

但是如何根据这个成本函数,求出最优化的θ呢?最优化的θ肯定是成本函数取值最小的时候的θ,如何调整θ使得成本函数不断收敛于最小值呢?

这就是我们接下来要讲的,梯度下降,即Gradient Descent。首先,我们要弄清楚什么是梯度:在向量微积分中,标量场的梯度是一个向量场。标量场中某一点上的梯度指向标量场增长最快的方向,梯度的长度是这个最大的变化率。比如我们的向量θ,写成向量形式,就是(θ0,θ1.....θn),如果我们求J(θ)在θ2方向上的梯度,那么就是J(θ)在θ2上的偏微分,乘以θ2方向的单位向量,即(0,0,1,0.....0),即αJ(θ)/α(θ2)。

那么如何进行梯度下降呢?对于F(x),在a点的梯度是F(x)增长最快的方向,那么它的相反方向则是该点下降最快的方向,因此,梯度下降算法的形式如下:


这个按照微积分的思想,想一下便明白了,如果F(x)在下降最快的方向,移动一小段距离,也就是γ,那么得到的F(x)肯定比在a值的时候要小。这里,γ被称为学习率,通常取值是0.01,0.05,0.1.如果你这里能看明白,那也就应该明白学习类的取值要合适才能得到最优解,因为梯度反应的也是局部的上升速率,如果学习率太大,也就是每次移动的步子太大,那么很有可能越过局部最优解而走向其他位置,从而无法得到最优解。这里,梯度是用来控制方向的,γ反映了每次迭代的步长。

把成本函数代入梯度下降的公式中,我们可以得到如下公式:


使用matlab实现如下,注意转置矩阵在计算过程中的应用:

  1. for iter = 1:num_iters  
  2.     % Save the cost J in every iteration      
  3.     theta = theta - alpha * (X' * (X * theta - y)) / m;  
  4.     J_history(iter) = computeCost(X, y, theta);  
  5. end  
还有一种方法计算最优的θ,就是使用normal equation。

由于X*θ=Y,则可以通过矩阵的变换,求出θ的取值:

θ = (XTX)-1XTY

normal equation的出现是因为当X的scale过于大的时候,如果使用Gradient Descent方法的话,会导致椭圆变得很窄很长,而出现梯度下降困难,甚至无法下降梯度(因为导数乘上步长后可能会冲出椭圆的外面)。但是,如果用Normal Equation方法的话,就不用担心这个问题了。因为它是纯粹的矩阵算法。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值