数据建模与分析线性回归小论文Word文档格式.docx

上传人:b****5 文档编号:20617558 上传时间:2023-01-24 格式:DOCX 页数:28 大小:554.56KB
下载 相关 举报
数据建模与分析线性回归小论文Word文档格式.docx_第1页
第1页 / 共28页
数据建模与分析线性回归小论文Word文档格式.docx_第2页
第2页 / 共28页
数据建模与分析线性回归小论文Word文档格式.docx_第3页
第3页 / 共28页
数据建模与分析线性回归小论文Word文档格式.docx_第4页
第4页 / 共28页
数据建模与分析线性回归小论文Word文档格式.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

数据建模与分析线性回归小论文Word文档格式.docx

《数据建模与分析线性回归小论文Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据建模与分析线性回归小论文Word文档格式.docx(28页珍藏版)》请在冰豆网上搜索。

数据建模与分析线性回归小论文Word文档格式.docx

的值。

为了得到较为准确的回归线,应该满足一个前提,即各样本点尽可能分布在所建立的线性模型周围,因此我们建立目标函数:

(2)

——向量

中的第

个元素;

——模型假设;

——训练集的数量。

因此,我们只要求得使上述函数的值最小时的

1.2目标函数的求解

我们首先从一组

开场,利用最速下降法不断改变

的值来减小

,直到到达我们希望得到的最小值[3]。

对于最速下降法,可利用以下公式而来求解:

(3)

——学习速率〔步长〕;

——下降方向。

其中α为修正学习速率,即搜索的步长,当α过小,会延长搜索的时间,当α过大,可能会错过极值点,导致不收敛。

还有要注意最速下降法会收敛到局部最小值的情况,这种情况即便修正学习速率也不会改变结果,并且接近局部最小值时,因为斜率的减小最速下降法会自动减少每步的补偿[4]。

因此,我们要现注意目标函数的极小值情况,如果有局部最小值可通过调节α参数的大小来跳过局部最小值情况,否那么,就不需跳过,最终通过屡次迭代可以得到最终的理想结果。

2Matlab求解

2.1最速下降法的循环语句

在Matlab程序中,最速下降法是一个不断迭代循环的过程,且

确保同时更新,具体循环如下:

2.2puteCost函数的定义

J函数即目标函数,m代表数据的个数,具体程序如下:

functionJ=puteCost(X,y,theta)

m=length(y);

J=0;

predictions=X*theta;

J=1/(2*m)*(predictions-y)'

*(predictions-y);

end

2.3gradientDescent函数的定义

GradientDescent函数就是最速下降法的迭代与循环过程[5],具体如下:

function[theta,J_history]=gradientDescent(X,y,theta,alpha,num_iters)

J_history=zeros(num_iters,1);

foriter=1:

num_iters

temp1=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)=puteCost(X,y,theta);

2.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);

axis([424-525]);

xlabel('

x'

ylabel('

y'

运行程序后得到散点图如图2所示:

图2散点图

Fig.2scatterdiagram

2.5回归线的绘制

通过机器统计学习后得到线性回归线,如图3所示:

图3回归线

fig.3Theregressionline

运行主程序中的语句计算出

和J的最小值,程序如下:

[theta,J_history]=gradientDescent(X,y,theta,alpha,num_iters);

Matlab程序运行后结果报告如图4所示:

图4报告窗口

fig.4Thereportwindow

其中ans结果为Matlab运行的最后一步结果,下面为模型参数值。

假设模型参数值:

2.6等高线及三维图的绘制

和J的值绘制在三维图上,将

的值以J为高度绘制绘制成等高线图,并将中心点即优化的参数用红色点标记,如下列图5所示:

图5三维图和等高线图

Fig.5Graphicmodelandcontourmap

等高线图中点红点代表了目标函数最小是对应的模型参数值,该参数值下的直线到每一个统计数据点的距离最短,最能代表离散统计数据的线性回归特性。

2.7结论

根据已经给定的城市人口数目与饮品连锁店利润的关系,通过建立目标函数,由Matlab软件进展迭代求解,求解后的线性回归模型函数如下:

(4)

3实际问题

中国人多地少,土地不可再生,土地的稀缺性导致土地价格在未来城市开展中看涨,因此,房价也自然总体趋涨[7]。

对于一些在沪求学的异地研究生们,在毕业后会存在是否留沪的选择。

而房价是我们选择留沪的主要因素。

为了了解XX的住房面积和价格的情况,我从链家网随机查找了120组不同区域以及不同面积的售房交易数据,将这些数据进展整理,并且希望通过统计学习的手段得出一般住房面积和价格的线性回归关系,通过设定两个期望住房面积来估计对应面积下的购房价格。

3.1程序的设计

首先,通过EXCEL表格将收集的数据进展整理,得出了XX地区售房面积和价格对应表格,120组数据具体可见于附录。

将120组数据通过TXT文件进展编辑后导入到Matlab软件中,其局部数据在软件中的表现形式如图6所示:

图6售房面积和价格数据在Matlab中表现形式

Fig.6ThedataexpressionformofhouseareaandpriceonsaleinMatlab

将这些数据以txt的格式保存,文件名为house,以便在主程序加载数据调用。

该最速下降统计学习程序主要分为调用数据、绘制离散图、梯度下降和拟合直线、可视化显示目标函数、目标函数值与迭代次数关系函数这五个局部。

3.1.1调用数据程序

将house.txt文件中的数据加载到data矩阵中,将data矩阵中的第一列中所有值组成一个向量储存在X向量中,将data矩阵中的第二列中所有值组成一个向量储存在y向量中,然后在y向量中计算训练样本数量存储到变量m中。

其相关程序段如下:

house.txt'

%调用数据

X=data(:

1);

y=data(:

2);

%向量存储

%计算训练样本数量

3.1.2绘制离散图程序

该过程主要包括主程序的调用以及调用函数的定义,定义函数首先要翻开一个绘图窗口,然后定义数值范围,最终附上标签绘制图形或者点。

通过这样的方式处理,我们可以清晰的看到XX售房面积和价格的离散分布关系。

主程序局部:

plotData(X,y);

fprintf('

Programpaused.Pressentertocontinue.\n'

定义调用函数plotData(X,y)

%openanewfigurewindow

plot(x,y,'

'

10);

ShanghaimercialHousingPriceinRMBonemillion'

ShanghaimercialHousingAreain10squaremeters'

3.1.3梯度下降和拟合直线程序

此处先对参数进展初始化设置,然后设置初始的迭代次数和计算步长〔学习速率〕,接着进展目标函数的迭代计算,并且不断将模型参数显示在屏幕上,接着画出拟合的直线,在屏幕上显示显示“数据训练和直线拟合〞,最后根据拟合的直线估计80㎡和160㎡的商品房所对应的价格。

RunningGradientDescent...\n'

X=[ones(m,1),data(:

1)];

%Addacolumnofonestox

theta=zeros(2,1);

%initializefittingparameters

iterations=1000;

%Somegradientdescentsettings

alpha=0.01;

%puteanddisplayinitialcost

puteCost(X,y,theta)%rungradientdescent

theta=gradientDescent(X,y,theta,alpha,iterations);

%printthetatoscreen

Thetafoundbygradientdescent:

'

%f%f\n'

theta

(1),theta

(2));

%Plotthelinearfit

holdon;

%keeppreviousplotvisible

plot(X(:

2),X*theta,'

-'

legend('

Trainingdata'

Linearregression'

holdoff%don'

toverlayanymoreplotsonthisfigure

predict1=[1,8]*theta;

%Predictvaluesforhouseareaof35,000and70,000

Forhousearea=80,wepredictapriceof%f\n'

...

predict1*1000000);

predict2=[1,16]*theta;

Forhousearea=160,wepredictapriceof%f\n'

predict2*1000000);

Programpaused.Pressentertocontinue.\n'

pause;

定义梯度下降调用函数:

%numberoftrainingexamples

%最速下降发的迭代循环

temp2=theta

(2)-(alpha/m)*sum((X*theta-y).*X(:

theta

(1)=temp1;

theta

(2)=temp2;

%同时更新theta1和theta2

J_history(iter)=puteCost(X,y,theta);

3.1.4可视化显示目标函数

该处Matlab程序主要将目标函数和两模型参数的对应关系通过空间平面和等高线的形式表达出来,根据空间平面我们可以清晰看出目标函数的具体极值分布形式。

根据等高线图可以看出最终迭代计算结果是否为最优解,倘假设红色的点位于等高线的最中间,那么该情况为最优解,否那么,不是最优解。

VisualizingJ(theta_0,theta_1)...\n'

theta0_vals=linspace(-10,10,100);

theta1_vals=linspace(-1,4,100);

J_vals=zeros(length(theta0_vals),length(theta1_vals));

fori=1:

length(theta0_vals)

forj=1:

length(theta1_vals)

t=[theta0_vals(i);

theta1_vals(j)];

J_vals(i,j)=puteCost(X,y,t);

J_vals=J_vals'

;

surf(theta0_vals,theta1_vals,J_vals)

\theta_0'

ylabel('

\theta_1'

contour(theta0_vals,theta1_vals,J_vals,logspace(-2,3,20))

plot(theta

(1),theta

(2),'

10,'

LineWidth'

10);

定义目标函数:

3.2确定计算步长

我们在这里迭代计算时,并不是一开场就能迭代成功,正如前面所说步长过小,会延长搜索的时间,步长过大,可能会错过极值点,导致不收敛。

故我们可通过建立目标函数值和迭代次数的关系函数,将不同的步长以一定的数量级排列,分别作出目标函数值和已运算迭代次数的关系函数曲线。

为了更好的展示目标函数值和已运算迭代次数的对应关系,可以设置足够的迭代次数,设定足够的迭代次数为3000。

目标函数值与迭代次数关系函数程序段:

iterations=3000;

alpha=α1;

%输入第一个步长

[theta,J1]=gradientDescent(X,y,zeros(2,1),alpha,iterations);

alpha=α2;

%输入第二个步长

[theta,J2]=gradientDescent(X,y,zeros(2,1),alpha,iterations);

alpha=α3;

%输入第三个步长

[theta,J3]=gradientDescent(X,y,zeros(2,1),alpha,iterations);

plot(1:

numel(J1),J1,'

-k'

%第一条线显示连续线

numel(J2),J2,'

--k'

%第二条线显示虚线

numel(J3),J3,'

-.k'

%第三条线显示点画线

axis([03000015]);

%限定坐标值显示范围

迭代次数'

J的值'

alpha=α1'

alpha=α2'

alpha=α3'

holdoff

现在选取步长α为1,通过Matlab作出目标函数值和已运算迭代次数的关系函数曲线,判断目标函数值的收敛性。

3.2.1第一组迭代运算判断敛散性

目标函数值与迭代次数关系函数程序段中进展运算作图,为了让图形表示清晰,其坐标值可再一次限定其范围,其运行结果如图7所示。

根据图中结果可知:

步长为1和0.1时,J的函数是发散的,而步长为0.01时,J的函数是收敛的。

图7第一组步长中目标函数值的敛散性

Fig.7Theconvergencecurvesoffirstgroupalpha

3.2.2第二组迭代运算判断敛散性

目标函数值与迭代次数关系函数程序段中进展运算作图,为了让图形表示清晰,其坐标值可再一次限定其范围,其运行结果如图8所示。

在该组所有步长下,J的函数都是收敛的。

图8第二组步长中目标函数值的敛散性

Fig.8Theconvergencecurvesofsecondgroupalpha

3.2.3综合步长分析

在第一组步长分析过程中,当步长为0.01时,J的函数虽然判断是收敛的,但是其具体在多少次迭代下已经收敛到最小值我们不能从图7中看出。

在第二组步长分析过程中,虽然3个步长下均能保证目标函数值能收敛,但是当步长为0.00001时,其所需的迭代次数需到达5000才收敛,其计算时间太长,故不能算是最速下降。

如图9所示,该图在不同的迭代次数尺度下表现不同步长对应目标函数J的收敛特性。

图9综合目标函数收敛特性分析

Fig.9Theconvergencecurvesofpositealpha

根据上图和Matlab迭代计算结果的最小值和对应最小值所需的最少迭代次数填入下表,如下表1。

表1步长和目标函数值

Tab.1ThealphaandJ

步长alpha

目标函数最小值

到达最小值时所需最少迭代次数

0.01

2.495929

1498

0.001

14988

0.0001

149892

由上表可知选用步长数量级为0.01,可实现最速梯度下降。

此处,不再讨论0.01附近的步长所对应的目标函数迭代次数关系。

3.3计算假设模型参数

上面已经得到比拟适合的迭代参数,现在可将步长α为0.01,迭代次数iterations为1500带入到程序中进展计算,其运算结果如下:

ans=

14.2726

-0.7152370.590743

运算结果中ans代表了Matlab软件最后一步运算的结果,gradientdescent代表了模型参数值,即模型参数值,即参数

以下为可视化的点图、拟合直线图、目标函数与模型参数的立体图以及等高线图。

通过plot函数作图可以得出售房面积和售房价格的离散数据图。

如图10所示,从离散图可以看出数据整体是呈现售房价格与售房面积线性递增的趋势。

图10离散点图

Fig.10Thediscretepointdiagram

接下来通过统计学习的方法拟合直线,如图11所示,从拟合直线可以看出拟合后的售房房价与售房面积的线性关系,直线以上数据差不多为市中心售房价位,直线以下大概为郊区售房价位,直线上大概为市中心与郊区的普遍价位。

图11.线性拟合图

Fig11.Linearregressionfigure

接下来可以通过surf函数和contour函数绘制目标函数与模型参数的立体图以及等高线图。

如图12所示,从曲面图可以看出目标函数随模型参数的变化关系,可以明显看出该目标函数只有一个极小值,因此该处不会出现局部最小值情况。

根据目标函数等高线图可以看出迭代计算后的参数值位于等高线的中间区域,因此可以判断出以上适宜步长优化分析过程是正确的。

图12实际问题三维图和等高线图

Fig.12Graphicmodelandcontourmapinpracticalproblem

通过上面的分析,这里的迭代过程显然是合理的,我们可以直接得出模型的线性回归方程:

在程序中我们添加了预测情况计算,其具体主程序段如下:

Forhousearea=80,wepredictahousepriceof%f\n'

predict1*1000000);

predict2=[1,120]*theta;

Forhousearea=120,wepredictahousepriceof%f\n'

predict2*1000000);

程序运算结果解释如下,当我们考虑购置XX商品房面积为80平方和120平方时,根据所求的线性方程计算所得的房价为4010703.397050元和70173870.477535元。

Matlab中具体输出结果如下:

Forhousearea=80,wepredictahousepriceof4010703.397050

Forhousearea=120,wepredictahousepriceof70173870.477535

3.4步长与迭代次数的可视化分析

上面已经找到适宜的步长和迭代次数,现在我们使用控制变量法对步长和迭代次数进一步分析,通过等高线图的可视

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 环境科学食品科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1