Machine_learning_cs229线性回归 Linear regression(2)

这篇博客针对的AndrewNg在公开课中未讲到的,线性回归梯度下降的学习率进行讨论,并且结合例子讨论梯度下降初值的问题。

线性回归梯度下降中的学习率

上一篇博客中我们推导了线性回归,并且用梯度下降来求解线性回归中的参数。但是我们并没有考虑到学习率的问题。

我们还是沿用之前对于线性回归形象的理解:你站在山顶,环顾四周,寻找一个下山最快的方向走一小步,然后再次环顾四周寻找一个下山最快的方向走一小步,在多次迭代之后就会走到最低点。那么在这个理解中,学习率其实是什么呢?学习率就是你走的步子有多长。

所以太大的学习率可能会导致你一步跨的太大,直接跨过了我们想要的最小均值;太小的学习率又会造成你跨的步子太小,可能你走了好多步,其实离你目标点还有很大的距离。

学习率的调整是我们梯度下降算法的关键。

笔者在神经网络的相关书籍里看到,1996年Hayjin证明,只要学习率α满足下式,LMS算法就会收敛。(P.S.笔者暂时还没有阅读相关的论文所以只能暂时给出结论)

,其中是输入向量x(n)组成的自相关矩阵R的最大特征值。由于常常不可知,因此往往使用自相关矩阵R的迹(trace)表示。

,所以,且tr(R)为各输入向量的均方值之和。

我们现在至少得到了学习率α的最大值,这个值能保证梯度下降收敛。

下面我自己写了一段程序分别用批量梯度下降,随机梯度下降对于学习率,梯度下降的初值进行了测试。

我利用了Mathematical Algorithms for Linear Regression, Academic Press, 1991, page 304,ISBN 0-12-656460-4.中的一组数据。

这组数据包括了30不同年龄的人的收缩压,每组数据包括4行

I,  the index;
A0, 1,
A1, the age;
B,  the systolic blood pressure.

其中x表示年龄,y表示对应的收缩压。

同时我们求得学习率  

接下来我会对三种方法拟合出来的结果进行展示,其中:

红色的线表示批量梯度下降结果

绿色的线表示随机梯度下降结果

蓝色的线表示直接计算参数的结果

第一组测试数据是在初始值  学习率 的情况下,迭代10000次得到

可以看出批量梯度下降,与直接得到参数基本吻合,可见批量梯度下降基本成功收敛到了mse的最小值,然而随机梯度下降的结果却不佳。

第二组测试数据是在初始值  学习率 的情况下,迭代10000次得到

可以看出此时批量梯度下降还未完全收敛,随机梯度下降基本完全收敛,而且与第一组测试数据得到的值差不多。

第二组测试数据是在初始值  学习率 的情况下,迭代10000次得到

这组测试数据由于学习率过大,θ不再收敛,而变得非常大了。

由此我们可以看到批量梯度下降与随机梯度下降优缺点。

批量梯度下降,优点:得到的参数非常准确,不太容易陷入局部最小值;

缺点:收敛速度慢

随机梯度下降,优点:收敛速度快

缺点:得到的参数不是非常准确,容易陷入局部最小值。

附代码(写matlab比较少,最后基本强行写成了c。。。)

%datax(:,1)=1;x(:,2)=a(:,1);y=a(:,2);b=figure;set(b,‘name‘,‘样本图像‘);plot(x(:,2),y,‘*‘);axis([10,70,100,230]);%求各输入向量的均方值之和。mm=0;for i=1:30    mm=x(i,1)^2+x(i,2)^2;endmm=2/(mm);%批量梯度下降mse=100;m=0.1;theta=[100,1];alpha=0.0001;times=0;while  mse>m && times<10000   times=times+1;   tot1=0;   tot2=0;   mse=0;   for i=1:30       tot1=tot1+(y(i)-(theta(1)*x(i,1)+theta(2)*x(i,2)))*x(i,1);       tot2=tot2+(y(i)-(theta(1)*x(i,1)+theta(2)*x(i,2)))*x(i,2);       mse=mse+(y(i)-(theta(1)*x(i,1)+theta(2)*x(i,2)))^2/2;   end   theta(1)=theta(1)+alpha*tot1/30*2;   theta(2)=theta(2)+alpha*tot2/30*2;   mse=mse/30;endhold on;y=theta(1)+theta(2)*x;plot(x,y,‘Color‘,[1,0,0]);%随机梯度下降x(:,1)=1;x(:,2)=a(:,1);y=a(:,2);mse=100;m=0.1;theta=[100,1];alpha=0.0001;times=0;while  mse>m && times<10000   times=times+1;   tot1=0;   tot2=0;   mse=0;   for i=1:30       tot1=0;       tot2=0;       tot1=tot1+(y(i)-(theta(1)*x(i,1)+theta(2)*x(i,2)))*x(i,1);       tot2=tot2+(y(i)-(theta(1)*x(i,1)+theta(2)*x(i,2)))*x(i,2);       theta(1)=theta(1)+alpha*tot1*2;       theta(2)=theta(2)+alpha*tot2*2;   end   for i=1:30       mse=mse+(y(i)-(theta(1)*x(i,1)+theta(2)*x(i,2)))^2/2;   end   mse=mse/30;endhold on;y=theta(1)+theta(2)*x;plot(x,y,‘Color‘,[0,1,0]);%公式法求theta%datax(:,1)=1;x(:,2)=a(:,1);y=a(:,2);theta0=inv(x‘*x)*x‘*y;hold on;y=theta0(1)+theta0(2)*x;plot(x,y,‘Color‘,[0,0,1]);
时间: 2024-12-26 08:23:08

Machine_learning_cs229线性回归 Linear regression(2)的相关文章

Machine_learning_cs229线性回归 Linear regression(1)

本系列内容均来自Standford公开课machine learning中Andrew老师的讲解,附加自己的一些编程实现和学习笔记. 第一章 Linear regression 1.线性回归 线性回归是一种监督学习的方法. 线性回归的主要想法是给出一系列数据,假设数据的拟合线性表达式为: 如何求得参数θ成为这个方法唯一的问题,为此我们需要定义损失函数: ,其中m表示样本个数,表示第i组样本,所以J表示总的m个样本的损失函数. 这个损失函数的表达式我们一定很熟悉,方差?最小二乘法?没错,这就是我们

Ng第二课:单变量线性回归(Linear Regression with One Variable)

二.单变量线性回归(Linear Regression with One Variable) 2.1  模型表示 2.2  代价函数 2.3  代价函数的直观理解 2.4  梯度下降 2.5  梯度下降的直观理解 2.6  梯度下降的线性回归 2.7  接下来的内容 2.1  模型表示 之前的房屋交易问题为例,假使我们回归问题的训练集(Training Set)如下表所示: 我们将要用来描述这个回归问题的标记如下: m                代表训练集中实例的数量 x          

机器学习方法(一):线性回归Linear regression

开一个机器学习方法科普系列,也做基础回顾之用.学而时习之. content: linear regression, Ridge, Lasso Logistic Regression, Softmax Kmeans, GMM, EM, Spectral Clustering Dimensionality Reduction: PCA.LDA.Laplacian Eigenmap. LLE. Isomap(修改前面的blog) SVM C3.C4.5 Apriori,FP PageRank minH

Stanford机器学习---第二讲. 多变量线性回归 Linear Regression with multiple variable

原文:http://blog.csdn.net/abcjennifer/article/details/7700772 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学习系统设计.SVM(Support Vector Machines 支持向量机).聚类.降维.异常检测.大规模机器学习等章节.所有内容均来自Standford公开课machine

多元线性回归(Linear Regression with multiple variables)与最小二乘(least squat)

1.线性回归介绍 X指训练数据的feature,beta指待估计得参数. 详细见http://zh.wikipedia.org/wiki/%E4%B8%80%E8%88%AC%E7%BA%BF%E6%80%A7%E6%A8%A1%E5%9E%8B 使用最小二乘法拟合的普通线性回归是数据建模的基本方法. 令最小二乘项的偏导为0(为0时RSS项最小),求Beta估计值,得到最小二乘的向量形式. 最小二乘其实就是找出一组参数beta使得训练数据到拟合出的数据的欧式距离最小.如下图所示,使所有红点(训练

机器学习方法:回归(一):线性回归Linear regression

开一个机器学习方法科普系列:做基础回想之用.学而时习之:也拿出来与大家分享.数学水平有限,仅仅求易懂,学习与工作够用.周期会比較长.由于我还想写一些其它的,呵呵. content: linear regression, Ridge, Lasso Logistic Regression, Softmax Kmeans, GMM, EM, Spectral Clustering Dimensionality Reduction: PCA.LDA.Laplacian Eigenmap. LLE. Is

机器学习 Machine Learning(by Andrew Ng)----第二章 单变量线性回归(Linear Regression with One Variable)

第二章 单变量线性回归(Linear Regression with One Variable) <模型表示(Model Representation)>                                                             <代价函数(Cost Function)>                                                          <梯度下降(Gradient Descent)

Stanford公开课机器学习---2.单变量线性回归(Linear Regression with One Variable)

单变量线性回归(Linear Regression with One Variable) 2.1 模型表达(Model Representation) m 代表训练集中实例的数量 x 代表特征/输入变量 y 代表目标变量/输出变量 (x,y) 代表训练集中的实例 (x(i),y(i) ) 代表第 i 个观察实例 h 代表学习算法的解决方案或函数也称为假设(hypothesis) 单变量线性回归:只含有一个特征/输入变量 x hθ=θ0+θ1x 2.2 代价函数(Cost Function) 目标

机器学习 (一) 单变量线性回归 Linear Regression with One Variable

文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang和 JerryLead 的个人笔记,为我做个人学习笔记提供了很好的参考和榜样. § 1.  单变量线性回归 Linear Regression with One Variable 1. 代价函数Cost Function 在单变量线性回归中,已知有一个训练集有一些关于x.y的数据(如×所示),当我们的预测值