梯度下降法的matlab实现

这篇博客介绍了如何使用MATLAB实现线性回归的梯度下降算法,包括单变量和多变量的情况。作者通过注释解释了代码中的关键部分,如`fminunc`函数的使用、梯度下降的迭代过程以及数据处理。博客还提到了均值归一化的重要性,并给出了计算成本函数和更新参数的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NOTE:这是本人在学习NG课程后,尝试练习的用matlab实现的梯度下降算法。具体的梯度下降法的知识点不在赘述。
请参考线性回归 梯度下降知识点
一、线性回归(Linear Regression)
方法一利用公式 :(懂了)
这里写图片描述

function [ theta ] = linearReg()
%线性回归。
X=[1 1;1 2;1 3;1 4];  %注意第一列全为1,即x0=1,第二列才为x1
Y=[1.1;2.2;2.7;3.8];
A=inv(X'*X);
theta=A*X'*Y;   %根据公式theta=(X'*X)^(-1)*X'*Y;
end

注释:
1.这种方法最简单,但是公式推导过程很复杂
2.inv() 求逆
3. X ’是求X的转置
方法二:使用梯度下降法迭代(代码不懂)

function theta=linearRegression()
%   梯度下降法寻找最合适的theta,使得J最小
options=optimset('GradObj','on','MaxIter',100);
inittheta=[1 1]';
theta=fminunc(@costFunc,inittheta,options);
end

%%
function  [J,gradient]= costFunc(theta)
%J为代价函数。
%y=theta(0)*x0+theta(1)*x1; 找出最好的theta来拟合曲线。
%使得J最小的theta就是最好的theta
x=[1;2;3;4];
y=[1.1;2.2;2.7;3.8];
m=size(x,1);
hypothesis=theta(1)+theta(2)*x;
delta=hypothesis-y;
J=sum(delta.^2)/(2*m);
gradient(1)=sum(delta.*1)/m;  %x0=1;
gradient(2)=sum(delta.*x)/m;
end

注释:
1.Matlab中fminunc函数的意义 以及options函数的初级用法
2.
function theta=linearRegression()
% 梯度下降法寻找最合适的theta,使得J最小
options=optimset(‘GradObj’,’on’,’MaxIter’,100);
inittheta=[1 1]’;
theta=fminunc(@costFunc,inittheta,options);
end
结合注释1,这个目前看不懂,先记住,这是梯度下降算法的一个小套路吧!
3.这两种方法,都采用数据:

x=[1;2;3;4];
y=[1.1;2.2;2.7;3.8];

当然,用的时候可以换成其它数据,两种方法得出的结果都是

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值