您好,欢迎访问三七文档
实验三线性回归分析一、实验学时4学时(课内2学时,课外2学时)二、实验类型验证性实验三、实验目的1、熟悉matlab的开发环境2、掌握线性回归分析的基本理论3、线性回归公式推导4、用matlab实现线性回归分析四、所需设备及软件1、安装了windowsxp/win7/win8/win10的计算机2、matlab开发工具五、实验基本原理1、回归分析基本概述利用数理统计中的回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。分析按照自变量和因变量之间的关系类型,可分为线性回归分析和非线性回归分析。本实验主要针对线性回归。在统计学中,线性回归(LinearRegression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归。回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。线性回归是回归分析中第一种经过严格研究并在实际应用中广泛使用的类型。用作预测、识别冗余信息等。2、线性回归模型利用线性回归分析来解决实际问题,关键需要计算这个回归模型,根据模型进行预测。例子:以一简单数据组来说明什么是线性回归。假设有一组数据型态为y=y(x),其中x={0,1,2,3,4,5},y={5,25,50,78,88,110},如果要以一个最简单的方程式来近似这组数据,则用一阶的线性方程式最为适合:y=bx+a,需要根据已知的数据,来计算出a和b的值。如果有新的x,即可根据这个模型预测其对应的y。见下图问题是如何估计a、b的值,使得y=bx+a能比较精确的刻画已知的数据,使之成为理想的线性方程。针对多元线性回归,则有形如:h(x)=θ0+θ1x1+θ2x2+...+θnxn如何估计θi的值?3、模型训练思路可以要求误差平方的总和最小,作为确定理想的线性方程的训练目标,这样的方法称为最小平方误差(leastsquareserror)或是线性回归。这也是机器学习方法中常采用的思路:设置训练目标,构建目标函数,然后根据已知数据对模型进行不断地修改,直到满足要求为止(固定的训练次数、数值变化很小等)。对于h(x)=θ0+θ1x1+θ2x2+...+θnxn目标函数:minJ(θ)=刻画真实值y与拟合值h(x)之间的距离要计算最小值,则使用梯度下降法,调用上面的目标函数进行不断迭代,直到最大迭代次数达到给定标准或者目标函数返回值不再减小。梯度下降包括两个方面:1)梯度的计算:计算偏导2)梯度下降法,更新公式θi=θi-4、算法1)初始化2)指定训练次数3)循环执行循环体“训练次数”θi=θi-4)绘制图形(用plot)5)进行预测六、实验内容1、一元线性回归模型的建立程序编写:有两组数据ex2x.dat和ex2y.dat,通过线性回归分析方法,求解回归分析方程。要求显示训练后的theta值,绘制实际数据和回归方程的图形。plot绘制图形。附:plot的用法简单格式plot(x,y,'*')x=load('ex2x.dat');y=load('ex2y.dat');m=length(y);x=[ones(m,1),x];plot(x(:,2),y,'*');theta=rand(2,1);alpha=0.05;iterations=1500;foriter=1:iterationsgrad=x'*(y-x*theta);theta=theta+alpha*grad./m;endfprintf('thetafoundbygradientdescent:');fprintf('%f,%f\n',theta(1),theta(2));holdon;plot(x(:,2),x*theta,'-');legend('Trainingdata','Linearregression');holdoff;fprintf('VisualizingJ(theta_0,theta_1)…\n');theta0_vals=linspace(-3,3,100);theta1_vals=linspace(-1,1,100);thetafoundbygradientdescent:0.750078,0.0638962、多元线性回归模型的建立和对模型测试1)程序编写:有一个数据集housing.txt,要求将数据分成两个部分:训练数据和测试数据,用训练数据对回归模型进行创建,再用测试数据对建立的回归模型进行测试。要求显示训练后的theta值,显示训练数据集和测试数据集的root-mean-squared(RMS)。并用图形显示测试数据集的预测值和实际值。求解思路:a、将数据装载的工作区中。b、数据分成训练数据集和测试数据集(可以分成400,105,同学们也可自己设置)c、对数据进行归一化处理(简单的方式就是0均值,1方差,同学们用其他方式)d、为了将偏置的更新在一起计算,可以在数据集中增加一维全1的数据e、参数的初始化f、梯度计算,并更新参数g、显示训练后的theta参数h、计算训练数据集和测试数据及的RMSi、图形显示测试数据中的预测值和实际值。均值:mean方差:stdRMS的计算:train_rms=sqrt(mean((predicted_prices-actual_prices).^2));图形显示程序如下:plot(predicted_prices,'bx');legend('ActualPrice','PredictedPrice');xlabel('House#');ylabel('Houseprice($1000s)');2)参数调整:设置不同参数(学习率,迭代次数等),观察其对结果的影响,并给出各组参数值对应的结果(theta的值和RMS值)和图形。data=load('housing_data.txt');data=data(randperm(size(data,1)),:);train_x=data(1:400,1:end-1);train.y=data(1:400,end);test_x=data(401:end,1:end-1);test.y=data(401:end,end);fprintf('NormalizingFeatures…\n');train_mu=mean(train_x);train_sigma=std(train_x);train.X=(train_x-repmat(train_mu,size(train_x,1),1))./repmat(train_sigma,size(train_x,1),1);test_mu=mean(test_x);test_sigma=std(test_x);test.X=(test_x-repmat(test_mu,size(test_x,1),1))./repmat(test_sigma,size(test_x,1),1);train.X=[ones(size(train.X,1),1)train.X];test.X=[ones(size(test.X,1),1)test.X]fprintf('Runninggradientdesceng….\n');alpha=0.05;iterations=100;theta=rand(size(train.X,2),1);foriter=1:iterationstheta=theta-alpha/size(train.X,1)*train.X'*(train.X*theta-train.y);endfprintf('thetafoundbyfradientdesceng:\n');fori=1:size(train.X,2)fprintf('%f\n',theta(i));endfprintf('\n');actual_prices=train.y;predicted_prices=train.X*theta;train_rms=sqrt((mean(predicted_prices-actual_prices).^2));fprintf('RMStrainingerrors:%f\n',train_rms);actual_prices=test.y;predicted_prices=test.X*theta;test_rms=sqrt(mean((predicted_prices-actual_prices).^2));fprintf('RMStrainingerror:%f\n',test_rms);plot_prices=true;if(plot_prices)[actual_prices,I]=sort(actual_prices);predicted_prices=predicted_prices(I);plot(actual_prices,'rx');holdon;plot(predicted_prices,'bx');legend('ActualPrice','PredictedPrice');xlabel('House#');ylabel('Houseprice($1000s)');endNormalizingFeatures…test=y:[105x1double]X:[105x14double]Runninggradientdesceng….thetafoundbyfradientdesceng:22.004457-0.7654760.676395-0.1133870.872230-1.0463032.4607150.261008-1.7141840.928139-0.517072-1.7496980.737440-3.858885RMStrainingerrors:0.125543RMStrainingerror:5.081213七、实验结果1)将“六”中每个内容认真完成以后,运行结果和图形复制到对应部分。2)将程序文件“.m”保存到文件夹“实验三+学号+姓名”中。3)实验报告保存到文件夹中,压缩并命名“实验三+学号+姓名”
本文标题:实验三线性回归分析
链接地址:https://www.777doc.com/doc-2458352 .html