数据建模与分析:线性回归小论文

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

-1-上海住房面积和房价的线性回归分析王明黔(上海大学机电工程与自动化学院,上海200444)摘要:在数据构建统计模型的学习中,统计学习是其一种基础的学习方法。本文针对城市人口数目与饮品连锁店利润的关系,就已有的数据进行线性回归分析,利用Matlab工具进行数据的线性回归模拟,进而得出城市人口数目与饮品连锁店利润的散点图、拟合直线图和三维等高线图。为了分析上海地区的住房面积和房价的关系,收集最近的售房成交数据,将数据导入到Matlab进行分析,得出上海房价与住房面积的线性关系。关键词:Matlab;线性回归;目标函数;梯度下降;统计学习基于数据的机器学习是现代智能技术中十分重要的一个方面,主要研究如何从一些观测数据(样本)出发,得出目前尚不能通过原理性分析得到的规律,并用以对未来数据或无法观测的数据进行预测。现实生活中大量存在我们尚无法准确认识但却可以进行观测的事件。因此,这种机器学习在从现代科学、技术到社会、经济等各领域中都有着十分重要的应用[1]。使用线性回归方法可以对一些观测数据进行分析,把预测事件中一些因素作为自变量,另一些随自变量变化而变化的变量作为因变量,研究它们之间的非确定性因果关系,以便预测因变量的未来发展趋势。根据若干观测数据寻找描述变量之间的函数或统计相关关系的最佳数学表达式,或者匹配数据之间相关关系的最佳拟合曲线,来表达随机性变量间的规律[2]。利用线性回归通过多变量机器学习的方法,可以建立上海住房面积和价格的线性关系,建立数学模型并评估其中的未知参数。1案例分析1.1目标函数的建立根据已知给出的城市人口数目与饮品连锁店利润的一些数据,可以得到一个样本集,如图1,为样本在Matlab软件加载数据图,第一列表示城市人口数目,第二列表示饮品连锁店利润。图1城市人口数目与饮品连锁店利润的样本集Fig1Urbanpopulationandbeveragechainprofitsofsampleset-2-针对样本集,我们可以假设一个线性模型:01()hxx(1)式中:()hx——假设的线性模型;x——样本/特征;01、——参数。其中,i为模型参数,因此问题就可以转换为,求出01和的值。为了得到较为准确的回归线,应该满足一个前提,即各样本点尽可能分布在所建立的线性模型周围,因此我们建立目标函数:()()20111(,)(())2miiiJhxym(2)式中:()ix——向量x中的第i个元素;()iy——向量y中的第i个元素;()hx——模型假设;m——训练集的数量。因此,我们只要求得使上述函数的值最小时的01和的值。1.2目标函数的求解我们首先从一组01和开始,利用最速下降法不断改变01和的值来减小01J(,),直到达到我们希望得到的最小值[3]。对于最速下降法,可利用以下公式而来求解:jj01j=-J:(,)(3)式中:——学习速率(步长);01(,)jJ——下降方向。其中α为修正学习速率,即搜索的步长,当α过小,会延长搜索的时间,当α过大,可能会错过极值点,导致不收敛。还有要注意最速下降法会收敛到局部最小值的情况,这种情况即便修正学习速率也不会改变结果,并且接近局部最小值时,因为斜率的减小最速下降法会自动减少每步的补偿[4]。因此,我们要现注意目标函数的极小值情况,如果有局部最小值可通过调节α参数的大小来跳过局部最小值情况,否则,就不需跳过,最终通过多次迭代可以得到最终的理想结果。-3-2Matlab求解2.1最速下降法的循环语句在Matlab程序中,最速下降法是一个不断迭代循环的过程,且01和确保同时更新,具体循环如下:0010temp0=-J:(,)1011temp1=-J:(,)01=temp0=temp1::2.2ComputeCost函数的定义J函数即目标函数,m代表数据的个数,具体程序如下:functionJ=computeCost(X,y,theta)m=length(y);J=0;predictions=X*theta;J=1/(2*m)*(predictions-y)'*(predictions-y);end2.3gradientDescent函数的定义GradientDescent函数就是最速下降法的迭代与循环过程[5],具体如下:function[theta,J_history]=gradientDescent(X,y,theta,alpha,num_iters)m=length(y);J_history=zeros(num_iters,1);foriter=1:num_iterstemp1=theta(1)-(alpha/m)*sum((X*theta-y).*X(:,1));temp2=theta(2)-(alpha/m)*sum((X*theta-y).*X(:,2));theta(1)=temp1;theta(2)=temp2;J_history(iter)=computeCost(X,y,theta);endend2.4散点图的绘制具体的数据已经根据一定格式记录在txt文件中,因此只需调取其中的数据并将散点绘制到图中[6],具体程序如下:functionplotData(x,y)figure;data=load('ex1data1.txt');X=data(:,1);Y=data(:,2);X=[ones(size(X,1),1),X];plot(X,Y,'rx','MarkerSize',4);-4-axis([424-525]);xlabel('x');ylabel('y');end运行程序后得到散点图如图2所示:图2散点图Fig.2scatterdiagram2.5回归线的绘制通过机器统计学习后得到线性回归线,如图3所示:图3回归线fig.3Theregressionline运行主程序中的语句计算出01和和J的最小值,程序如下:[theta,J_history]=gradientDescent(X,y,theta,alpha,num_iters);-5-Matlab程序运行后结果报告如图4所示:图4报告窗口fig.4Thereportwindow其中ans结果为Matlab运行的最后一步结果,下面为模型参数值。假设模型参数值:895781.30,193034.112.6等高线及三维图的绘制将01和和J的值绘制在三维图上,将01和的值以J为高度绘制绘制成等高线图,并将中心点即优化的参数用红色点标记,如下图5所示:图5三维图和等高线图Fig.5Graphicmodelandcontourmap等高线图中点红点代表了目标函数最小是对应的模型参数值,该参数值下的直线到每一个统计数据点的距离最短,最能代表离散统计数据的线性回归特性。2.7结论根据已经给定的城市人口数目与饮品连锁店利润的关系,通过建立目标函数,由Matlab软件进行迭代求解,求解后的线性回归模型函数如下:xxh193034.1895781.3)((4)3实际问题中国人多地少,土地不可再生,土地的稀缺性导致土地价格在未来城市发展中看涨,因此,房价也自然总体趋涨[7]。对于一些在沪求学的异地研究生们,在毕业后会存在是否留沪的选择。而房价是我们选择留沪的主要因素。为了了解上海的住房面积和价格的情况,我从链家网随机查找了120组不同区域以及不同面积的售房交易数据,将这些数据进行整理,并且希望通过统计学习的手段得出一般住房面积和价格的线性回归关系,通过设定两个期望住房面积来估计对应面积下的购房价格。-6-3.1程序的设计首先,通过EXCEL表格将收集的数据进行整理,得出了上海地区售房面积和价格对应表格,120组数据具体可见于附录。将120组数据通过TXT文件进行编辑后导入到Matlab软件中,其部分数据在软件中的表现形式如图6所示:图6售房面积和价格数据在Matlab中表现形式Fig.6ThedataexpressionformofhouseareaandpriceonsaleinMatlab将这些数据以txt的格式保存,文件名为house,以便在主程序加载数据调用。该最速下降统计学习程序主要分为调用数据、绘制离散图、梯度下降和拟合直线、可视化显示目标函数、目标函数值与迭代次数关系函数这五个部分。3.1.1调用数据程序将house.txt文件中的数据加载到data矩阵中,将data矩阵中的第一列中所有值组成一个向量储存在X向量中,将data矩阵中的第二列中所有值组成一个向量储存在y向量中,然后在y向量中计算训练样本数量存储到变量m中。其相关程序段如下:data=load('house.txt');%调用数据X=data(:,1);y=data(:,2);%向量存储m=length(y);%计算训练样本数量3.1.2绘制离散图程序该过程主要包括主程序的调用以及调用函数的定义,定义函数首先要打开一个绘图窗口,然后定义数值范围,最终附上标签绘制图形或者点。通过这样的方式处理,我们可以清晰的看到上海售房面积和价格的离散分布关系。主程序部分:plotData(X,y);fprintf('Programpaused.Pressentertocontinue.\n');定义调用函数plotData(X,y)functionplotData(x,y)figure;%openanewfigurewindowplot(x,y,'rx','MarkerSize',10);ylabel('ShanghaiCommercialHousingPriceinRMBonemillion');xlabel('ShanghaiCommercialHousingAreain10squaremeters');end-7-3.1.3梯度下降和拟合直线程序此处先对参数进行初始化设置,然后设置初始的迭代次数和计算步长(学习速率),接着进行目标函数的迭代计算,并且不断将模型参数显示在屏幕上,接着画出拟合的直线,在屏幕上显示显示“数据训练和直线拟合”,最后根据拟合的直线估计80㎡和160㎡的商品房所对应的价格。主程序部分:fprintf('RunningGradientDescent...\n')X=[ones(m,1),data(:,1)];%Addacolumnofonestoxtheta=zeros(2,1);%initializefittingparametersiterations=1000;%Somegradientdescentsettingsalpha=0.01;%computeanddisplayinitialcostcomputeCost(X,y,theta)%rungradientdescenttheta=gradientDescent(X,y,theta,alpha,iterations);%printthetatoscreenfprintf('Thetafoundbygradientdescent:');fprintf('%f%f\n',theta(1),theta(2));%Plotthelinearfitholdon;%keeppreviousplotvisibleplot(X(:,2),X*theta,'-')legend('Trainingdata','Linearregression')holdoff%don'toverlayanymoreplotsonthisfigurepredict1=[1,8]*theta;%Predictvaluesforhouseareaof35,000and70,000fprintf('Forhousearea=80,wepredictapriceof%f\n',...predict1*1000000);predict2=[1,16]*theta;fprintf('Forhousearea=160,wepredictapriceof%f\n',...p

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功