梯度下降算法的matlab实现

<<欢迎访问我的博客


NOTE:这是本人在学习斯坦福大学Andrew Ng教授的机器学习后,尝试练习的用matlab实现的梯度下降算法。


前言


本文是多元线性回归的练习,这里练习的是最简单的二元线性回归,参考斯坦福大学的教学网。本题给出的是97个数据样本点,现在的问题是要根据这97个训练样本,拟合得到一个线性方程。通过画出训练样本点的分布凭直觉可以发现这是一个典型的线性回归问题。


实验过程

  • 方法一

    使用一般方法,嵌套循环实现

    for j = 1:2
        for i = 1:m
        temp = temp + (theta(1)*X(i,1)+theta(2)*X(i,2)-y(i,1))*X(i,j);
        end
        theta(j) = theta(j) - alpha*temp/m;
    end
    

  • 方法二

    使用矩阵运算单独计算每个theta

    grad1 = (1/m).* X(:,1)' * ((X * theta) - y);
    theta(1) = theta(1) - alpha.*grad1;
    grad2 = (1/m).* X(:,2)' * ((X * theta) - y);
    theta(2) = theta(2) - alpha.*grad2;
    

  • 方法三

    使用矩阵直接得到theta的值

    % Here is the gradient
    grad = (1/m).* X' * ((X * theta) - y);
    
    % Here is the actual update
    theta = theta - alpha .* grad;
    


实验结果

  • 训练样本散点和回归曲线预测图:

1

  • 损失函数与参数之间的曲面图::

2

  • 损失函数的等高线图:

3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值