机器学习(二)——Multivation Linear Regression

版权声明: https://blog.csdn.net/Godsolve/article/details/83958533

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

根据所给数据,给出使用梯度下降算法的多元线性回归模型,并能够正确绘制出J(θ)的图像。

实验步骤与内容:

  1. 数据处理
    在这里插入图片描述

  2. 使用J(θ)选择学习率
    实验文件中给出了学习率的大致范围为0.0001<=α<=10,而更精确的学习率就需要自己去运行梯度下降、观察成本函数,并进行相应的调整了。
    在这里插入图片描述

  3. 将成本函数变为可执行代码
    在这里插入图片描述
    其中
    在这里插入图片描述
    而我们在上一个实验中,已经在theta0和theta1网格上计算出了J(θ),现在可以参考上个实验的数据,来进行梯度下降的控制。

  4. 调整学习率进行绘图
    α=0.01
    在这里插入图片描述
    α=0.04
    在这里插入图片描述
    α=0.07
    在这里插入图片描述
    α=0.11
    在这里插入图片描述
    α=0.15
    在这里插入图片描述
    最终感觉α=0.07的时候与预期结果最为相似。

在回归分析中,如果有两个或两个以上的自变量,就称为多元回归。事实上,一种现象常常是与多个因素相联系的,由多个自变量的最优组合共同来预测或估计因变量,比只用一个自变量进行预测或估计更有效,更符合实际。

不过和一元线性回归相比,难度也上升了一些,例如对J(θ)的处理,以及梯度下降的循环,都让我花费了大量的时间,不过结果还算可以,较为良好的找到了适合的学习率。


程序源代码:

clc,clear
x=load('ex2x.dat');
y=load('ex2y.dat');
sigma = std ( x ) ;
mu = mean( x ) ;
m=length(y);
n=size(x,2)+1;
for i=1:m%数据处理
    x(i,:)=(x(i,:)-mu)./sigma;
end
x = [ones(m, 1) x];
theta = zeros ( size ( x ( 1 , : ) ) )' ; % initialize fitting parameters
alpha =0.15; % Your initial learning rate 
J = zeros (50 , 1 ) ;
iterations = 50;%设置迭代次数

for num_iterations = 1:50
    H=x*theta;
    T=zeros(n,1);
    for i=1:m
        T=T+(H(i)-y(i))*x(i,:)';
    end
J ( num_iterations ) =sum((x*theta - y).^2)/(2*m); % 成本函数 
theta = theta-alpha*T/m;% 梯度下降更新 
end
% now plot J
% technically , the first J starts at the zero-eth iteration
% but Matlab/Octave doesn ' t have a zero index
figure ;
plot ( 0 : 49 , J ( 1 : 50 ) , '-' )
xlabel ( 'Number of iterations ' )
ylabel ( ' Cost J ' 

猜你喜欢

转载自blog.csdn.net/Godsolve/article/details/83958533