




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本文会讲到:线性回归的定义(2)单变量线性回归(3)costfunction:评价线性回归是否拟合训练集的方法(4)梯度下降:解决线性回归的方法之一(5) featurescaling:加快梯度下降执行速度的方法(6)多变量线性回归LinearRegression注意一句话:多变量线性回归之前必须要FeatureScaling!方法:线性回归属于监督学习,因此方法和监督学习应该是一样的,先给定一个训练集,根据这个训练集学习出一个线性函数,然后测试这个函数训练的好不好(即此函数是否足够拟合训练集数据),挑选出最好的函数(costfunction最小)即可;注意:(1)因为是线性回归,所以学习到的
2、函数为线性函数,即直线函数;(2)因为是单变量,因此只有一个x;我们能够给出单变量线性回归的模型:=%十我们常称x为feature,h(x)为hypothesis;从上面方法”中,我们肯定有一个疑问,怎么样能够看出线性函数拟合的好不好呢?我们需要使用到CostFunction(代价函数),代价函数越小,说明线性回归地越好(和训练集拟合地越好),当然最小就是0,即完全拟合;举个实际的例子:我们想要根据房子的大小,预测房子的价格,给定如下数据集:Sizeinfeet2(x)Price($)inlOOO's(v)210446014162321534315852178<1根据以上的数据集
3、画在图上,如下图所示:HousingPrices(Portland,OR)Price(in10005cfdollars)Size(feet2)我们需要根据这些点拟合出一条直线,使得costFunction最小;虽然我们现在还不知道CostFunction内部到底是什么样的,但是我们的目标是:给定输入向量x,输出向量y,theta向量,输出Cost值;以上我们对单变量线性回归的大致过程进行了描述;CostFunctionCostFunction的用途:对假设的函数进行评价,costfunction越小的函数,说明拟合训练数据拟合的越好;下图详细说明了当costfunction为黑盒的时候,cos
4、tfunction的作用;vectorxvettoryvet.lorthdldccitvdlue崎?:亿2).(3,3).3ry=1商可如果偿金预则了国数为y=x,value=U;如聚僻设预则了用戳为y=2k9I方对85tvalue=1;如果蹴5莅意了函拣为y-.贝度观costvalue=2:剜绮3®331y=乂标osev前ue®/"作为掰咐hypothesis但是我们肯定想知道costFunction的内部构造是什么?因此我们下面给出公式:m9i=lI其中:步一人一主“表不向量x中的第i个兀素;IW)表示向量y中的第i个元素;茄)表示已知的假设函数;Im为训练集
5、的数量;比如给定数据集(1,1)、(2,2)、(3,3)则x=1;2;3,y=1;2;3(此处的语法为Octave语言的语法,表示3*1的矩阵)如果我们预测theta0=0,theta1=1,贝Uh(x)=x,贝Ucostfunction:J(0,1)=1/(2*3)*(h(1)-1)A2+(h(2)-2)A2+(h(3)-3)A2=0;如果我们预测theta0=0,theta1=0.5,贝Uh(x)=0.5x,贝Ucostfunction:J(0,0.5)=1/(2*3)*(h(1)-1)A2+(h(2)-2)A2+(h(3)-3)A2=0.58如果theta0一直为0,则theta1与J的
6、函数为:如果有theta0与thetal都不固定,则theta0、thetal、J的函数为:最小点;注意:如果是线性回归,则costfunctionJ的函数一定是碗状的,即只有一个以上我们讲解了costfunction的定义、公式;GradientDescent(梯度下降)但是又一个问题引出了,虽然给定一个函数,我们能够根据合的好不好,但是毕竟函数有这么多,总不可能一个一个试吧?costfunction知道这个函数拟因此我们引出了梯度下降:能够找出costfunction函数的最小值;梯度下降原理:将函数比作一座山,我们站在某个山坡上,往四周看,小步,能够下降的最快;从哪个方向向下走当然解决问
7、题的方法有很多,梯度下降只是其中一个,还有一种方法叫NormalEquation;方法:先确定向下一步的步伐大小,我们称为Learningrate;(2)任意给定一个初始值:(3)确定一个向下的方向,并向下走预先规定的步伐,并更新助/(4)当下降的高度小于某个定义的值,则停止下降;算法:rc)!?atuntil瓜01电1n。口二日彳终止条件J(仇Learningrate决定了下降的步伐大决定了下降的方向小(JsiiniiltaiicMinslyupdatej=(Iandj=tempO=%tempi=出狐:=tempo仇:-tempi<特点:(1)初始点不同,获得的最小值也不同,因此梯度下
8、降求得的只是局部最小值;(2)越接近最小值时,下降速度越慢;问题:如果%"1初始值就在localminimum的位置,则拆也会如何变化?答:因为如忸,已经在localminimum位置,所以derivative肯定是0,因此助当不会变化;如果取到一个正确的t值,则costfunction应该越来越小;问题:怎么取值?答:随时观察值,如果costfunction变小了,则ok,反之,则再取一个更小的值;卜图就详细的说明了梯度下降的过程:最小值从上面的图可以看出:初始点不同,获得的最小值也不同,因此梯度下降求得的只是局部最小值;注意:下降的步伐大小非常重要,因为如果太小,则找到函数最小值
9、的速度就很慢,如果太大,则可能会出现overshoottheminimum的现象;卜图就是overshootminimum现象:如果Learningrate取值后发现Jfunction增长了,则需要减小Learningrate的值;IntegratingwithGradientDescent&LinearRegression梯度下降能够求出一个函数的最小值;线性回归需要求出,使得costfunction的最小;因此我们能够对costfunction运用梯度下降,即将梯度下降和线性回归进行整合,如下图所示:GradientdescentalgorithmLinearRegressionM
10、odeln,inilr'1/iir'r(r”J佛,。力=*£8*(工)$.1%:=%口q_/网),执)(TUjTj=1andj=0)repeatuntilconvergence。口:=&)a*.的(/)。)i=l%:=的幺(%(£)一小)*i=l梯度下降是通过不停的迭代,而我们比较关注迭代的次数,因为这关系到梯度下降的执行速度,为了减少迭代次数,因此引入了FeatureScaling;FeatureScaling此种方法应用于梯度下降,为了加快梯度下降的执行速度思想:将各个feature的值标准化,使得取值范围大致都在-1<=x<=1之间
11、;常用的方法是MeanNormalization,即max-min其中;为训练集中当前风皿的平均值一皿为n能取的最大值,min为k能取的最小值或者:X-mean(X)/std(X);举个实际的例子,有两个Feature:size,取值范围02000;(2)#bedroom,取值范围05;贝U通过featurescaling后,sMe1000-2000-X2#bedrooms2练习题我们想要通过期中开始成绩预测期末考试成绩,我们希望得到的方程为:招(»=咐十员肛+仇犯给定以下训练集:midtermexam(midtermexam)2finalexam897921967251847494
12、883687694761784.申.我们想对(midtermexam)A2进彳了featurescaling,则2经过featurescaling后的值为多少?max=8836,min=4761,mean=6675.5,贝Ux=(4761-6675.5)/(8836-4761)=-0.47;多变量线性回归前面我们只介绍了单变量的线性回归,即只有一个输入变量,现实世界不可能这么简单,因此此处我们要介绍多变量的线性回归;举个例子:房价其实由很多因素决定,比如size、numberofbedrooms>numberoffloors、ageofhome等,这里我们假设房价由4个因素决定,如下图所
13、示:Size(feet1!NumberofbedroomsNumberaffloorsAgeofhomePrice(51DOO)210451454601416324023215343230315852213617S¥afl94V+我们前面定义过单变量线性回归的模型:h晨吟=仇)+仇黑这里我们可以定义出多变量线性回归的模型:加(N)=6。+6拼1+nxnCostfunction如下:mcjj(生,%)=熹三(M/)一时)i1如果我们要用梯度下降解决多变量的线性回归,则我们还是可以用传统的梯度下降算法进行Repeat|a:=%计算:r/W的。喙金=你一口白£(”)一严|冽、1匚
14、亘二曲:=。小工(加(,)一炉的)州,limiJltairheoulyupdate%forL'J=jJ"肉:=8士-吗c(加N,)-产)以,总练习题:1.我们想要根据一个学生第一年的成绩预测第二年的成绩,x为第一年得到A的数量,y为第二年得到A的数量,给定以下数据集:(1)训练集的个数是多少?4个;(2)J(0,1)的结果是多少?J(0,1)=1/(2*4)*(3-4)A2+(2-1)A2+(4-3)A2+(0-1)A2=1/8*(1+1+1+1)=1/2=0.5我们也可以通过vectorization的方法快速算出J(0,1):Z(加外=4=>*4=1/21)另一种线
15、性回归方法:NormalEquation;(2)GradientDescent与NormalEquation的优缺点;前面我们通过GradientDescent的方法进行了线性回归,但是梯度下降有如下特点:(1)需要预先选定Learningrate;(2)需要多次iteration;(3)需要FeatureScaling;因此可能会比较麻烦,这里介绍一种适用于Feature数量较少时使用的方法:NormalEquation;当Feature数量小于100000时使用NormalEquation;当Feature数量大于100000时使用GradientDescent;NormalEquatio
16、n的特点:简单、方便、不需要FeatureScaling;其中NormalEquation的公式:e=(XTX)XTy其中1/1心X=1/1人力vn)严)丁表示第i个trainingexample;表示第i个trainingexample里的第j个feature的值;mz#trainingexample;n为#£32m垣;举个实际的例子:Examples:m=5.gSizefeet2)为Numberofbedrooms£2Numberoffloors*31210451114163211534321852211300041Ageofhorn(years)X4454030363
17、812104514511416324()115343230185221361300()41380=(XTX尸XTy、算法实现由前面的理论,我们知道了用梯度下降解决线性回归的公式:repealuntilcuiiveigenue<m诙:=诙一疗2£(坊(了)一严)1=1氏=仇-口上£(如(钟)-严)yi=i梯度下降解决线性回归思路:rpppatuntilconvprgpnrp(即(£9)L严)'-严)1算法实现:ComputeCost函数:plainviewplaincopyfori-l:numiterstempi=theta(l)-(alpha/m)t
18、emp2=theta(2)-(alpha/m)theta(l)=tempi;theta(如=temp2;end1. functionJ=computeCost(X,y,theta)2.3. m=length(y);%numberoftrainingexamples4. J=0;5. predictions=X*theta;6. J=1/(2*m)*(predictions-y)'*(predictions-y);7.8. endgradientDescent函数:plainviewplaincopy1. functiontheta,J_history=gradientDescent(X
19、,y,theta,alpha,num_iters)2. %Xism*(n+1)matrix3. %yism*14. %thetais(n+1)*1matrix5. %alphaisanumber6. %num_itersisnumberofiterators7.8.9. m=length(y);%numberoftrainingexamples10. J_history=zeros(num_iters,1);%costfunction的值的变化过程11. %预先定义了迭代的次数12.13. foriter=1:num_iters14.15. temp1=theta(1)-(alpha/m)*s
20、um(X*theta-y).*X(:,1);16. temp2=theta(2)-(alpha/m)*sum(X*theta-y).*X(:,2);17. theta(1)=temp1;18. theta(2)=temp2;19. J_history(iter)=computeCost(X,y,theta);20.21. end22.23. end、数据可视化我们通过算法实现能够求出函数h(x),但是我们还需要将数据可视化:(1)画出训练集的散点图+拟合后的直线;(2)画出J(theta)为z轴,theta0为x轴,thetal为y轴的三维曲线;画出(2)的三维曲线的等高线图;1.画散点图+拟
21、合的直线描述:给定ex1data1.txt,文件中有两列数据,每一列代表一个维度,第一列代表X,第二列代表Y,用Octave画出散布图(ScalarPlot),数据的形式如下:6.1101,17.5925.5277,9.13028.5186,13.6627.0032,11.8545.8598,6.82338.3829,11.886答:(1)data=10ad('ex1data1.txt');%导入该文件,并赋予data变量(2)X=data(:,1);Y=data(:,2);%将两列分别赋予X和丫X=ones(size(X,1),1),X;%在X的左边添加一列1(4)p1ot(
22、X,Y,'rx','MarkerSize',4);%画图,将X向量作为X轴,丫向量作为丫轴,每个点用“炖示,r秣示红点,每个点的大小为4;axis(424-525);%调整x和y轴的起始坐标和最高坐标;(6)x1abe1('x');%给x轴标号为,x?;ylabel('y');%给y轴标号为,y?;最后见下图:一一35I1111加卜-格J3J!wIM,迂*IDpx-I“xxFxx”*_Tf一一Kml?yJ<5卜乂*,1*T小.笔,Xx.其族,“吊5ID152Di经过计算,算出theta值:theta,J_history=gr
23、adientDescent(X,y,theta,alpha,num_iters);即可通过:plot(X(:,2),X*theta);%画出最后拟合的直线口-5io13Pwiimine匚好mSiocoos2u以上呈现了线性回归的结果;以下两种都是可视化J(theta);2.SurfacePlot描述:数据如上一题一样,我们想要绘制出对于这些数据的costfunction,我们将绘制出三维图形和contourplot;我们如果要绘制costfunction,我们必须预先写好costfunction的公式:functionJ=computeCost(X,y,theta)m=length(y);J=
24、0;predictions=X*theta;J=1/(2*m)*sum(predictions-y).A2);end实现:(1)theta0_vals=linspace(-10,10,100);%从-10至U10之间取100个数组成一个向量(2)theta1_vals=linspace(-1,4,100);%从-1到4之间取100个数组成一个向量(3)J_vals=zeros(length(theta0_vals),length(theta1_vals);%初始化J_vals矩阵,对于某个theta0和theta1,J_vals都有对应的costfunction值;(4)计算每个(theta0
25、,theta1)所对应的J_vals;fori=1:length(theta0_vals)forj=1:length(theta1_vals)t=theta0_vals(i);theta1_vals(j);J_vals(i,j)=computeCost(X,y,t);endendfigure;%创建一个图(6)surf(theta0_vals,theta1_vals,J_vals);%x轴为theta0_vals,y轴为theta1_vals,z轴为J_vals;(7)xlabel('theta_0');%添力口x轴标志(8)ylabel('theta_1');
26、%添力口y轴标志此图而且可以转动;2 .ContourPlot实现:(1)theta0_vals=linspace(-10,10,100);%从-10到10之间取100个数组成一个向量(2)theta1_vals=linspace(-1,4,100);%从-1到4之间取100个数组成一个向量3 3)J_vals=zeros(length(theta0_vals),length(theta1_vals);%初始化J_vals矩阵,对于某个theta0和theta1,J_vals都有对应的costfunction值;(4)计算每个(theta0,theta1)所对应的J_vals;fori=1:l
27、ength(theta0_vals)forj=1:length(theta1_vals)t=theta0_vals(i);theta1_vals(j);J_vals(i,j)=computeCost(X,y,t);endendfigure;%创建一个图(6) contour(theta0_vals,theta1_vals,J_vals,logspace(-2,3,20);%画等高线图(7) xlabel('theta_0');ylabel('theta_1');如果我们想要在等高线图上画出线性回归的theta0与thetal的结果,则可以:plot(theta(
28、1),theta(2),'rx','MarkerSize',10,'LineWidth',2);10-505ID4.画图查看LearningRate是否合理我们在gradientDescent函数中返回的值里有J_history向量,此向量记录了每次迭代后costfunction的值,因此我们只需要将x轴为迭代的次数,y轴为costfunction的值,即可画图:(1)theta,J_history=gradientDescent(X,y,theta,alpha,num_iters);(2) figure;(3) plot(1:length(J_
29、history),J_history,'-b','LineWidth',2);(4)xlabel('Numberofiterations');(5)ylabel('CostJ');当然,我们也可以将不同的alpha值都画在一张图上,可以比较取各个alpha时,costfunction的变化趋势;(1)alpha=0.01;(2)theta,J1=gradientDescent(X,y,zeros(3,1),alpha,num_iters);(3)alpha=0.03;(4)theta,J2=gradientDescent(X,y,
30、zeros(3,1),alpha,num_iters);(5)alpha=0.1;(6)theta,J3=gradientDescent(X,y,zeros(3,1),alpha,num_iters);(7)plot(1:numel(J1),J1,'-b','LineWidth',2);(8)plot(1:numel(J2),J2,'-r','LineWidth',2);(9)plot(1:numel(J3),J3,'-k','LineWidth',2);-L-多元线性回归其实方法和单变量线性回归差不多,我们这里直接给出算法:computeCostMulti函数plainviewplaincopy1. functionJ=computeCostMulti(X,y,theta)2.3. m=length(y);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数据库的安全性与管理策略试题及答案
- 托儿所火灾应急预案范文(3篇)
- 软件设计师考试核心试题及答案解析
- 计算机软件考试常见错误分析
- 行政管理社会服务试题及答案总结
- 便捷复习的试题及答案高效利用
- 企业财务健康状况与战略制定的关系试题及答案
- 高考数学难题攻略与答案
- 法学概论的重要概念归纳与试题及答案
- 2025年网络安全架构与运营考察试题及答案
- 康复医疗复习题及参考答案
- 高血压科普基础知识培训-2025世界高血压日
- 2025春季学期国开电大专科《理工英语1》一平台在线形考(综合测试)试题及答案
- 混凝土预制构件项目可行性研究报告
- 无人机拍摄培训课件
- 电力调度自动化系统预案
- 透析患者高钾血症饮食护理
- 搜索三力测试题及答案
- 高分子化学材料结构与性能试题及答案
- 特种设备操作人员培训管理制度
- 2025年湖北省孝感市中考物理模拟试卷(3月份)(含解析)
评论
0/150
提交评论