




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 利用梯度下降法实现线性回归的算法及matlab实现1.线性回归算法概述线性回归属于监督学习,因此方法和监督学习应该是一样的,先给定一个训练集,根据这个训练集学习出一个线性函数,然后测试这个函数训练的好不好(即此函数是否足够拟合训练集数据),挑选出最好的函数(costfunction最小)即可;(1)因为是线性回归,所以学习到的函数为线性函数,即直线函数;(2)线性回归可分为单变量线性回归和多变量线性回归;对于单变量线性回归而言,只有一个输入变量x;(1).单变量线性回归我们能够给出单变量线性回归的模型:如)=我们常称x为feature,h(x)为hypothesis;上述模型中的30和31在
2、代码中分别用thetaO和thetal表示。从上面“方法”中,我们肯定有一个疑问,怎么样能够看出线性函数拟合的好不好呢?我们需要使用到CostFunction(代价函数),代价函数越小,说明线性回归地越好(和训练集拟合地越好),当然最小就是0,即完全拟合。costFunction的内部构造如下面公式所述:m.乡旳)=击丈(咖(加何)妙i=l其中:表示向量X中的第i个元素打表示向量y中的第i个元素;加川表示已知的假设函数;m为训练集的数量;虽然给定一个函数,我们能够根据costfunction知道这个函数拟合的好不好,但是毕竟函数有这么多,总不可能一个一个试吧?因此我们引出了梯度下降:能够找出c
3、ostfunction函数的最小值;梯度下降原理:将函数比作一座山,我们站在某个山坡上,往四周看,从哪个方向向下走一小步,能够下降的最快;当然解决问题的方法有很多,梯度下降只是其中一个,还有一种方法叫NormalEquation;方法:先确定向下一步的步伐大小,我们称为Learningrate(alpha);任意给定一个初始值:叽”(用thetaO和thetal表示);确定一个向下的方向,并向下走预先规定的步伐,并更新“;当下降的高度小于某个定义的值,则停止下降;初始点不同,获得的最小值也不同,因此梯度下降求得的只是局部最小值;越接近最小值时,下降速度越慢;梯度下降能够求出一个函数的最小值;线
4、性回归需要使得costfunction的最小;因此我们能够对costfunction运用梯度下降,即将梯度下降和线性回归进行整合,如下图所示hgXj=闵+血:E上式中右边的公式推导过程如下:GradientdescentalaorithrriLinearRegressionModeluntilrepeatuntil%:=Ui些=1叫諾=(尤)一ya)12x(h0(x(i)y(i)xl=lg)ye)XX(i)0i=i莎丿耳)=Q2x(幅Z)一歹)xdeL=m111i=11i=1从上面的推导中可以看出,要想满足梯度下降的条件,贝i(hd(x(i)-y(t)项后面必须乘以对应的输入信号xd)。梯度下
5、降是通过不停的迭代,而我们比较关注迭代的次数,因为这关系到梯度下降的执行速度,为了减少迭代次数,因此引入了FeatureScaling。(2).FeatureScaling此种方法应用于梯度下降,为了加快梯度下降的执行速度;思想:将各个feature的值标准化,使得取值范围大致都在-lv=xv=l之间;.常用的方法是MeanNormalization(均值归一化处理)其中二为训练集中当feature的平均值,max为x能取的最大值,加口为x能取的最小值max-min或者:X-mean(X)/std(X);.收获汇总学习速率的大小对于系统是否收敛有决定性的影响。如果学习速率太大,那么可能导致系统
6、震荡发撒;如果学习速率太小,那么可能导致系统收敛速度变慢。根据给定数据架设预测函数h(x)计算代价函数J计算各参数偏导更新参数(e)重复24直到代价函数跟新的步长小于设定值或者是重复次数达到预设值。为了在相同学习速率的前提下加快相同收敛,可采用训练数据归一化的方法来对样本数据进行预处理。采用均值均值归二化处理后,缩小了原来数据的变化幅度,从而可极大地提高学习速率,从而提高了梯度下降的执行速度。在第四部分的matlab代码中,对输入值向量进行归一化处理之后,将学习速率从0.01提高到1.9,从而将获得系统收敛的epoch次数由10000次减少到300次。2.Matlab实现单变量梯度下降的线性回
7、归(1).Gradientdescendcode1clearallclc%trainingsampledata;p0=3;p1=7;x=1:3;y=p0+p1*x;num_sample=size(y,2);%gradientdescendingprocess%initialvaluesofparameterstheta0=1;theta1=3;%learningratealpha=0.02;%ifalphaistoolarge,thefinalerrorwillbemuchlarge.%ifalphaistoosmall,theconvergencewillbeslowepoch=500;fo
8、rk=1:epochv_k=kh_theta_x=theta0+theta1*x;%hypothesisfunctionJcost(k)=(h_theta_x(l)-y(l)人2+(h_theta_x(2)-y(2)人2+(h_theta_x(3)-y(3)人2)/num_sampletheta0=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)+(
9、h_theta_x(3)-y(3)*x(3)/num_sample;endplot(Jcost)(2).Gradientdescendcode2clearallclc%trainingsampledata;p0=26;p1=73;x=1:3;y=p0+p1*x;num_sample=size(y,2);%gradientdescendingprocess%initialvaluesofparameterstheta0=1;theta1=3;%learningratealpha=0.08;%ifalphaistoolarge,thefinalerrorwillbemuchlarge.%ifalp
10、haistoosmall,theconvergencewillbeslowepoch=500;fork=1:epochv_k=kh_theta_x=theta0+theta1*x;%hypothesisfunctionJcost(k)=(h_theta_x(l)-y(l)人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)+(h_theta_x(3)-y(3)/num_sample;thetal=thetal-alpha
11、*(h_theta_x(l)-y(l)*x(l)+(h_theta_x(2)-y(2)*x(2)+(h_theta_x(3)-y(3)*x(3)/num_sample;%disp(*compl*);rl=(h_theta_x(l)-y(l)+(h_theta_x(2)-y(2)+(h_theta_x(3)-y(3);r2=sum(h_theta_x-y);%disp(*comp2*);r3=(h_theta_x(1)-y(1)A2+(h_theta_x(2)-y(2)A2+(h_theta_x(3)-y(3)A2);r4=sum(h_theta_x-y).人2);%disp(*comp3*);
12、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(*wrongresult*)endendplot(Jcost)3.线性回归与单神经元的对应关系单变量线性回归的模型:he(x)=%+Oix与单神经元模型具有对应的关系,可实现相同的功能。其中30相当于单神经元的偏置值bias值,x相当于单神经元的单个输入,31相当于单神经元的权值w。如果如不包含0,那么则可能无法准确完成线性回归的功能。因此
13、,对于单神经元结构而言,偏置值bias是必不可少的。图1.单神经元单变量输入与线性回归的对应模型对于双变量线性回归模型:(刃=00+01“1+02“2而言,可实现双输入单神经元的功能。其偏置值对应如图2.单神经元双变量输入与线性回归的对应模型4.Matlab实现多变量梯度下降的线性回归(1).未进行归一化处理之前的matlab代码两个输入变量xl和x2.clearallclc%trainingsampledata;p0=6;pl=7;p2=2;%thefirstgroupofinputsxl=791254;x2=l82135;%thesecondgroupofinputsxl=7912543;
14、x2=l8213526;y=pO+p1*X1+p2*x2;num_sample=size(y,2);%gradientdescendingprocess%initialvaluesofparameterstheta0=9;theta1=3; theta2=9;%theta0=19;theta1=23;theta2=91;%theta0=0;theta1=0;theta2=0;%learningratealpha=0.01;%goodforthesystemwiththefirstgroupofinputsalpha=0.005;%goodforthesystemthesecondgroupof
15、inputs%alpha=0.02;%badforthesystem.thesystemwillbeunstable%ifalphaistoolarge,thefinalerrorwillbemuchlarge.%ifalphaistoosmall,theconvergencewillbeslowepoch=10000;fork=1:epochv_k=kh_theta_x=theta0+theta1*x1+theta2*x2;%hypothesisfunctionJcost(k)=(h_theta_x(l)-y(l)人2+(h_theta_x(2)-y(2)人2+(h_theta_x(3)-y
16、(3)人2+(h_theta_x(4)-y(4)人2+(h_theta_x(5)-y(5)人2)/num_sample;theta0=theta0-alpha*(h_theta_x(1)-y(1)+(h_theta_x(2)-y(2)+(h_theta_x(3)-y(3)+(h_theta_x(4)-y(4)+(h_theta_x(5)-y(5)/num_sample;thetal=thetal-alpha*(h_theta_x(l)-y(l)*xl(l)+(h_theta_x(2)-y(2)*xl(2)+(h_theta_x(3)-y(3)*xl(3)+(h_theta_x(4)-y(4)*
17、xl(4)+(h_theta_x(5)-y(5)*xl(5)/num_sample;theta2=theta2-alpha*(h_theta_x(l)-y(l)*x2(l)+(h_theta_x(2)-y(2)*x2(2)+(h_theta_x(3)-y(3)*x2(3)+(h_theta_x(4)-y(4)*x2(4)+(h_theta_x(5)-y(5)*x2(5)/num_sample;%disp(*compl*);rl=(h_theta_x(l)-y(l)+(h_theta_x(2)-y(2)+(h_theta_x(3)-y(3);r2=sum(h_theta_x-y);fl*/1*1
18、Ax.t*.tAx-tttX*1*X*1、diQTI于苓吞不于*OOTTIT丿于吞吞*不苓不苓不苓不于苓)r3=(h_theta_x(1)-y(1)A2+(h_theta_x(2)-y(2)A2+(h_theta_x(3)-y(3)A2);%r4=sum(h_theta_x-y).人2);t*/1X*X*X*X*X*1*X*1*X*1*X*1*X*1*X*1*ldisp(*comp3*);%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
19、(r1=r2)|(r3=r4)|(r5=r6)%disp(*wrongresult*)%endendyt=theta0+theta1*x1+theta2*x2plot(Jcost)上述matlab代码中,当学习速率alpha小于等于0.01时,系统能收敛;但是,如果学习速率alpha越小,系统收敛的速度越慢。当学习速率alpha大于等于0.02时,系统发散,无法收敛。为了使得系统尽快收敛下一步采用归一化的方法来加速系统收敛。(2)对表达式进行简化后的matlab代码clearallclc%trainingsampledata;p0=6;p1=7;p2=2;x1=791254;x2=182135
20、;y=p0+p1*x1+p2*x2;num_sample=size(y,2);%gradientdescendingprocess%initialvaluesofparameterstheta0=9;theta1=3;theta2=9;%theta0=19;theta1=23;theta2=91;%theta0=0;theta1=0;theta2=0;%learningratealpha=0.005;%goodforthesystemalpha=0.01;%goodforthesystem%alpha=0.02;%badforthesystem.thesystemwillbeunstable%
21、ifalphaistoolarge,thefinalerrorwillbemuchlarge.%ifalphaistoosmall,theconvergencewillbeslowepoch=10000;fork=1:epochv_k=kh_theta_x=theta0+theta1*x1+theta2*x2;%hypothesisfunctionJcost(k)=sum(h_theta_x-y).人2)/num_sample;r0=sum(h_theta_x-y);theta0=theta0-alpha*r0/num_sample;r1=sum(h_theta_x-y).*x1);theta
22、1=theta1-alpha*r1/num_sample;r2=sum(h_theta_x-y).*x2);theta2=theta2-alpha*r2/num_sample;%Jcost(k)=(h_theta_x(l)-y(l)人2+(h_theta_x(2)-y(2)人2+(h_theta_x(3)-y(3)人2+(h_theta_x(4)-y(4)人2+(h_theta_x(5)-y(5)人2)/num_sample;%theta1=theta1-alpha*(h_theta_x(1)-y(1)*x1(1)+(h_theta_x(2)-y(2)*x1(2)+(h_theta_x(3)-
23、y(3)*x1(3)+(h_theta_x(4)-y(4)*x1(4)+(h_theta_x(5)-y(5)*x1(5)/num_sample;%theta2=theta2-alpha*(h_theta_x(1)-y(1)*x2(1)+(h_theta_x(2)-y(2)*x2(2)+(h_theta_x(3)-y(3)*x2(3)+(h_theta_x(4)-y(4)*x2(4)+(h_theta_x(5)-y(5)*x2(5)/num_sample;%|XIT*KiKiKiKiKiKiKiKiKiKiKiKiKiIdisp(*comp1*);r1=(h_theta_x(1)-y(1)+(h
24、_theta_x(2)-y(2)+(h_theta_x(3)-y(3);r2=sum(h_theta_x-y);1*/1*A*1.tz*.!*1!i-t*1*Aik!*1I、riio-rf,苓不苓苓吞乍不苓吞COTTir丿苓个乍于苓苓不不不不不否吞乍r3=(h_theta_x(l)-y(l)人2+(h_theta_x(2)-y(2)人2+(h_theta_x(3)-y(3)人2);r4=sum(h_theta_x-y).人2);disp(*comp3*);r5=(h_theta_x(l)-y(l)*x(l)+(h_theta_x(2)-y(2)*x(2)+(h_theta_x(3)-y(3)*
25、x(3);r6=sum(h_theta_x-y).*x);if(rl=r2)|(r3=r4)|(r5=r6)disp(*wrongresult*)endendyt=theta0+thetal*xl+theta2*x2plot(Jcost)(3).进行归一化处理之后的matlab代码clearallclc%trainingsampledata;p0=6;pl=7;p2=2;xl=79l254;x2=l82135;x1_mean=mean(x1)x1_max=max(x1)x1_min=min(x1)x2_mean=mean(x2)x2_max=max(x2)x2_min=min(x2)xl=(x
26、l-xl_mean)/(x1_max-x1_min)x2=(x2-x2_mean)/(x2_max-x2_min)%xl=7912543;%x2=l8213526;y=pO+p1*X1+p2*x2;num_sample=size(y,2);%gradientdescendingprocess%initialvaluesofparameterstheta0=9;theta1=3;theta2=9;%thetaO=19;thetal=23;theta2=91;%theta0=0;theta1=0;theta2=0;14%learningratealpha=1.9;%goodforthesystem
27、%ifalphaistoolarge,thefinalerrorwillbemuchlarge.%ifalphaistoosmall,theconvergencewillbeslowepoch=300;fork=l:epochv_k=kh_theta_x=thetaO+theta1*x1+theta2*x2;%hypothesisfunctionJcost(k)=sum(h_theta_x-y).A2)/num_sample;rO=sum(h_theta_x-y);thetaO=thetaO-alpha*rO/num_sample;rl=sum(h_theta_x-y).*xl);theta1
28、=theta1-alpha*1/num_sample;r2=sum(h_theta_x-y).*x2);theta2=theta2-alpha*r2/num_sample;endyt=thetaO+theta1*xl+theta2*x2plot(Jcost)(4).进行归一化处理之后的matlab代码2三个个输入变量xl、x2和x3.clearallclc%trainingsampledata;p0=6;pl=7;15p2=2;p3=9;xl=791254;x2=l82135;x3=321148;x1_mean=mean(x1)x1_max=max(x1)x1_min=min(x1)xl=(xl-xl_mean)/(x1_max-x1_min)x2_mean=mean(x2)x2_max=max(x2)x2_min=min(x2)x2=(x2-x2_mean)/(x2_max-x2_min)x3_mean=mean(x3)x3_max=m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地形与人类活动的关联试题及答案
- 华山美容知识偶像
- 按需开展幼儿园特色活动计划
- 班级经济管理与活动资金发展计划
- 品牌战略与公司战略的致性计划
- 第3课《“飞天”凌空》教学设计 2023-2024学年统编版语文八年级上册
- 品牌战略在复杂市场中的适应性计划
- 课堂教学示范活动计划
- 年度营销计划的创新思路
- 品德教育在小学课程中的重要性计划
- 窦桂梅介绍教学课件
- 三废环保管理培训
- 微型断路器知识培训课件
- T-CAAMTB 116-2023 汽车车门锁扣性能要求和试验方法
- 《静电的危害及消除》课件
- Booking a room at the hotel(入住酒店英语)
- 员工身心健康情况排查表
- 《私募股权投资基金基础知识》教材知识要点精讲
- 幼儿园安全教育课件:《私自离园危险多》
- 23秋国家开放大学《液压气动技术》形考任务1-3参考答案
- 泸西电解铝厂施工方案
评论
0/150
提交评论