您的位置:首页 > 其它

机器学习实验报告——Linear Regression

2014-06-30 23:16 996 查看
机器学习实验报告——Linear Regression

一、 实验要求

要求用梯度下降法对给定的数据X,Y进行线性拟合。给出迭代次数,拟合曲线。

二、 实验思路

模型的建立:

估计函数的假设:



其中,X为输入变量,θ为参数。

假设误差估计函数(error function)为J,我们的目标便是寻找合适的参数θ,使得误差函数J最小化。



调整θ以使得J(θ)取得最小值有很多方法,其中有最小二乘法(min square),梯度下降法(gradient descent),牛顿法(Newton’s Method)等,每种方法都有各自的优缺点。

三、 梯度下降法

在选定线性回归模型后,只需要确定参数θ,就可以将模型用来预测。然而θ需要在J(θ)最小的情况下才能确定。因此问题归结为求极小值问题,使用梯度下降法。梯度下降法最大的问题是求得有可能是全局极小值,这与初始点的选取有关。

梯度下降法步骤:

(1)初始化θ;

(2)改变θ的值,使得J(θ)按梯度下降的方向进行减少。

梯度方向由J(θ)对θ的偏导数确定,由于求的是极小值,因此梯度方向是偏导数的反方向。结果为



所以θ的更新公式为:



其中a为步长因子,其取值要适中,太小的时收敛速度太慢,太大时有可能跳过最优解。

四、 算法实现

1. 选取参数theta0=0.75 theta1=1.65作为初始值。

2. 步长因子alpha=0.001(以上选取经试验验证有更好的收敛效果)

3. 按照梯度下降算法步骤更新theta值,设置循环次数为500次,当前j值与上一次循环得到的j值的欧式距离小于0.001时认为算法收敛,跳出循环。

4. 带入假设函数可得回归曲线。

五、 试验结果



theta0=0.8284

theta1=2.0404

j=0.1457

实际迭代次数4

回归曲线如图:



六、 实验代码

clc;

clear;

load shuju.mat;

plot(X,Y,'.');

hold;

syms theta0 theta1 alpha;

theta0=0.75;

theta1=1.65;

alpha=0.001;

j=0;

for q=1:500

J=j;

j=0;

for i=1:21

j=j+0.5*(theta0+theta1*X(i)-Y(i))^2;

end

j=j/21;

if sqrt((j-J)^2)<0.001

break;

end

theta0=theta0-alpha*0.5*(theta0*theta1*X(i)-Y(i));

theta1=theta1-alpha*0.5*(theta0*theta1*X(i)-Y(i))*X(i);

end

y=theta0+theta1*X;

plot(X,y)

j

theta0

theta1

J
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: