算法:
特点:
(1)初始点不同,获得的最小值也不同,因此梯度下降求得的只是局部最小值;(2)越接近最小值时,下降速度越慢;
问题:如果答:因为
初始值就在localminimum的位置,则会如何变化?
已经在localminimum位置,所以derivative肯定是0,因此
不会变化;
如果取到一个正确的值,则costfunction应该越来越小;问题:怎么取值?
答:随时观察值,如果costfunction变小了,则ok,反之,则再取一个更小的值;
下图就详细的说明了梯度下降的过程:
从上面的图可以看出:初始点不同,获得的最小值也不同,因此梯度下降求得的只是局部最小值;
注意:下降的步伐大小非常重要,因为如果太小,则找到函数最小值的速度就很慢,如果太大,则可能会出现overshoottheminimum的现象;下图就是overshootminimum现象:
如果Learningrate取值后发现Jfunction增长了,则需要减小Learningrate的值;
梯度下降能够求出一个函数的最小值;线性回归需要求出使得得costfunction的最小;因此我们能够对costfunction运用梯度下降,即将梯度下降和线性回归进行整合,如下图所示:
梯度下降是通过不停的迭代,而我们比较关注迭代的次数,因为这关系到梯度下降的执行速度,为了减少迭代次数,因此引入了FeatureScaling;此种方法应用于梯度下降,为了加快梯度下降的执行速度;
思想:将各个feature的值标准化,使得取值范围大致都在-1<=x<=1之间;
常用的方法是MeanNormalization,即
或者:
[X-mean(X)]/std(X);
举个实际的例子,有两个Feature:
(1)size,取值范围0~2000;(2)#bedroom,取值范围0~5;则通过featurescaling后,
2、4多变量线性回归
前面我们只介绍了单变量的线性回归,即只有一个输入变量,现实世界不可能这么简单,因此此处我们要介绍多变量的线性回归;举个例子:
房价其实由很多因素决定,比如size、numberofbedrooms、numberoffloors、ageofhome等,这里我们假设房价由4个因素决定,如下图所示:
我们前面定义过单变量线性回归的模型:
这里我们可以定义出多变量线性回归的模型:
Costfunction如下:
如果我们要用梯度下降解决多变量的线性回归,则我们还是可以用传统的梯度下降算法进行计算:
例如:
1.我们想要根据一个学生第一年的成绩预测第二年的成绩,x为第一年得到A的数量,y为第二年得到A的数量,给定以下数据集:
x3240
(1)训练集的个数是多少?4个(2)J(0,1)的结果是多少?
J(0,1)=1/(2*4)*[(3-4)^2+(2-1)^2+(4-3)^2+(0-1)^2]=1/8*(1+1+1+1)=1/2=0.5;
我们也可以通过vectorization的方法快速算出J(0,1):
y4131