利用梯度下降法实现线性回归地算法及matlab实现

上传人:cn****1 文档编号:564931560 上传时间:2023-06-11 格式:DOCX 页数:20 大小:100.22KB
返回 下载 相关 举报
利用梯度下降法实现线性回归地算法及matlab实现_第1页
第1页 / 共20页
利用梯度下降法实现线性回归地算法及matlab实现_第2页
第2页 / 共20页
利用梯度下降法实现线性回归地算法及matlab实现_第3页
第3页 / 共20页
利用梯度下降法实现线性回归地算法及matlab实现_第4页
第4页 / 共20页
利用梯度下降法实现线性回归地算法及matlab实现_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《利用梯度下降法实现线性回归地算法及matlab实现》由会员分享,可在线阅读,更多相关《利用梯度下降法实现线性回归地算法及matlab实现(20页珍藏版)》请在金锄头文库上搜索。

1、利用梯度下降法实现线性回归的算法及matlab实现1. 线性回归算法概述线性回归属于监督学习,因此方法和监督学习应该是一样的,先给定一个训练集,根据这个训练集学习出一个线性函数,然后测试这个函数训练的好不好(即此函数是否足够拟合训练集数据),挑选出最好的函数(cost function最小)即可; 注意:(1)因为是线性回归,所以学习到的函数为线性函数,即直线函数;(2)线性回归可分为单变量线性回归和多变量线性回归;对于单变量线性回归而言,只有一个输入变量x;(1).单变量线性回归我们能够给出单变量线性回归的模型:he(x)二 + 內工我们常称x为feature, h(x)为hypothesi

2、s;上述模型中的6 和 6在代码中分别用theta0 和 thetal表示。01从上面“方法”中,我们肯定有一个疑问,怎么样能够看出线性函数拟合的好不好呢?我们需要使用到Cost Function (代价函 数),代价函数越小,说明线性回归地越好(和训练集拟合地越好),当然最小就是0,即完全拟合。cost Function的内部构造如 下面公式所述:m乡旳)=击亡(届(加何)罗)i=l其中:表示向量X中的第i个元素;表示向量y中的第i个元素;加表示已知的假设函数;m为训练集的数量;虽然给定一个函数,我们能够根据cost function知道这个函数拟合的好不好,但是毕竟函数有这么多,总不可能一

3、个一个试 吧?因此我们引出了梯度下降:能够找出cost function函数的最小值;梯度下降原理:将函数比作一座山,我们站在某个山坡上,往四周看,从哪个方向向下走一小步,能够下降的最快;当然解决问 题的方法有很多,梯度下降只是其中一个,还有一种方法叫Normal Equation;方法:(1) 先确定向下一步的步伐大小,我们称为Learning rate (alpha);(2) 任意给定一初始值:岛-二(用thetaO和theta1表示);(3) 确定一个向下的方向,并向下走预先规定的步伐,并更新“;(4) 当下降的高度小于某个定义的值,则停止下降;(1) 初始点不同,获得的最小值也不同,因

4、此梯度下降求得的只是局部最小值;(2) 越接近最小值时,下降速度越慢;梯度下降能够求出一个函数的最小值;function运用梯度下降,即将梯度下降和线性回归进行整合,如下图所示:% := Pn 上式中右边的公式推导过程如下:线性回归需要使得cost function的最小; 因此我们能够对costf.OTlVCrC?TK.2x(hdd 0 1 2m0i=1dh 1 (xa)-ya) = - eouom0i=1d1 fd h i f莎丿(%)=丽仝(h f)y)x =亦仝(h /m)-y)51i=l1i=l从上面的推导中可以看出,要想满足梯度下降的条件,则(h (x(f)-y(f)项后面必须乘以

5、对应的输入信号x(i)。e梯度下降是通过不停的迭代,而我们比较关注迭代的次数,因为这关系到梯度下降的执行速度,为了减少迭代次数,因此引入了Feature Seal ing。(2) . Feature Scaling此种方法应用于梯度下降,为了加快梯度下降的执行速度;思想:将各个feature的值标准化,使得取值范围大致都在-1二x=1之间;(3) 常用的方法是Mean Normalization(均值归一化处理):其中匚为训练集中当前feature的平均值,max为x能取的最大值,血n为x能取的最小值max - min或者:X-mean(X)/std(X);(4) 收获汇总学习速率的大小对于系

6、统是否收敛有决定性的影响。如果学习速率太大,那么可能导致系统震荡发撒;如果学习速率太小,那 么可能导致系统收敛速度变慢。(a) 根据给定数据架设预测函数h(x)(b) 计算代价函数J(e)计算各参数偏导(d) 更新参数(e) 重复24直到代价函数跟新的步长小于设定值或者是重复次数达到预设值。为了在相同学习速率的前提下加快相同收敛,可采用训练数据归一化的方法来对样本数据进行预处理。采用均值均值归二化处理 后,缩小了原来数据的变化幅度,从而可极大地提高学习速率,从而提高了梯度下降的执行速度。在第四部分的mat lab代码中,对 输入值向量进行归一化处理之后,将学习速率从0.01提高到1.9,从而将

7、获得系统收敛的epoch次数由10000次减少到300次。2. Mat lab实现单变量梯度下降的线性回归(1).Gradient descend code 1 clear allclc% training sample data;p0=3;p1=7;x=1:3;y=p0+p1*x;num_sample=size(y,2);% gradient descending process% initial values of parameters theta0=1;theta1=3;%learning ratealpha=0.02;% if alpha is too large, the final

8、 error will be much large.% if alpha is too small, the convergence will be slowepoch=500;for k=1:epoch v_k=k h_theta_x=theta0+theta1*x; % hypothesis functionJcost(k) = (h_theta_x(1)-y(1)八2+(h_theta_x(2)-y(2)八2+(h_theta_x(3)-y(3)八2)/ num_sample theta0=theta0-alpha*(h_theta_x(1)-y(1)+(h_theta_x(2)-y(2

9、)+(h_theta_x(3)-y(3)/num_sample;theta 1二theta1-alpha*(h_theta_x(1)-y(1)*x(1) + (h_theta_x(2)-y(2)*x(2) + (h_theta_x(3)-y(3)*x(3)/ num_sample; endplot(Jcost)(2).Gradient descend code 2clearall clc% training sample data;p0=26;p1=73;x=1:3;y=p0+p1*x;num_sample=size(y,2);% gradient descending process% in

10、itial values of parameterstheta0=1;theta1=3;%learning ratealpha=0.08;% if alpha is too large, the final error will be much large.% if alpha is too small, the convergence will be slowepoch=500;for k=1:epochv_k=kh_theta_x=theta0+theta1*x; % hypothesis functionJcost(k) = (h_theta_x(1)-y(1)八2+(h_theta_x

11、(2)-y(2)八2+(h_theta_x(3)-y(3)八2)/ nu m_sample; theta0=theta0-alpha*(h_theta_x(1)-y(1)+(h_theta_x(2)-y(2)+(h_theta_x(3)-y(3)/num_sample; theta1=theta1-alpha*(h_theta_x(1)-y(1)*x(1)+(h_theta_x(2)-y(2)*x(2)+(h_theta_x(3)-y(3)*x(3)/num_sample;% disp(*comp 1*);r1=(h_theta_x(1)-y(1)+(h_theta_x(2)-y(2)+(h_

12、theta_x(3)-y(3);r2=sum(h_theta_x-y);%disp(*comp 2*);r3=(h_theta_x(1)-y(1)八2+(h_theta_x(2)-y(2)八2+(h_theta_x(3)-y(3)八2);r4二sum(h_theta_x-y).八2);%disp(*comp 3*);r5=(h_theta_x(1)-y(1)*x(1)+(h_theta_x(2)-y(2)*x(2)+(h_theta_x(3)-y(3)*x(3); r6=sum(h_theta_x-y).*x);if(r1=r2)|(r3=r4)|(r5=r6)disp(*wrong resu

13、lt*)endendplot(Jcost)3. 线性回归与单神经元的对应关系单变量线性回归的模型:he (x)二 + 白工与单神经元模型具有对应的关系,可实现相同的功能。其中e相当于单神经元的偏置值bias值,x相当于单神经元的单个输0入,e相当于单神经元的权值w。如果 不包含e,那么则可能无法准确完成线性回归的功能。因此,对于单神经元结构而言,偏10置值bias是必不可少的。图 1. 单神经元单变量输入与线性回归的对应模型 对于双变量线性回归模型:=0。+ 0宀 + 02T而言,可实现双输入单神经元的功能。其偏置值对应e0。图 2. 单神经元双变量输入与线性回归的对应模型4. Matl ab

14、实现多变量梯度下降的线性回归未进行归一化处理之前的mat I ab代码 两个输入变量x1和x2.cI ear a I I% tra ini ng samp Ie data;pO二6;P仁7;p2 二2;% the f i rst group of inputsx仁7 9 12 5 4;x2二1 8 21 3 5;% the second group of inputsx仁7 9 12 5 4 3;x2二1 8 21 3 5 26;y=p0+p1*x1+p2*x2;num_samp I e二s i ze (y, 2);% grad i ent descending process % init i a I vaIues of parameters theta0=9;theta仁3;theta2=9;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号