梯度下降(Gradient descent) Matlab实现

这篇博客介绍了如何在Matlab中实现梯度下降法,用于优化机器学习中的成本函数。作者参照吴恩达的机器学习课程,给出了成本函数的公式,并详细说明了在有x0=1的情况下,梯度下降的迭代更新规则。

是跟随吴恩达机器学习课程学习的,具体的推导过程不再给出

求Cost Function:

假设函数h(x)=θ0+θ1x\displaystyle h(x) = \theta_0 + \theta_1 xh(x)=θ0+θ1x,样本数为nnn,特征值数为111,cost function为
J(θ0,θ1)=12n∑i=1n(h(xi)−yi)2\displaystyle J(\theta_0, \theta_1) = \frac{1}{2n}\sum^n_{i = 1}(h(x_i) - y_i)^2J(θ0,θ1)=2n1i=1n(h(xi)yi)2
由此很容易得到cost function

function J = costFunction(X, Y, theta)

% X  is the 'Design Mattix' containing our training examples
% Y  is the class labels

%number of training samples
m = size(X, 1);

%predictions
prediction = X * theta;

sqrErrors = (prediction - Y).^2;

J = 1 / (2 * m) * sum(sqrErrors);

end

这里的XXX为了方便运算加入x0=1x_0 = 1x0=1,也就是X=[1x11x2⋮⋮1xn]\displaystyle X = \left[\begin{matrix}1&x_1\\1&x_2\\\vdots&\vdots\\1&x_n\end{matrix}\right]X=111x1x2xn
梯度下降过程就是对θi\theta_iθi进行迭代:
θi:=θi−α⋅∂∂θiJ(θ)=θi−αn∑i=1n(h(xi)−yi)⋅xi\displaystyle \theta_i :=\theta_i - \alpha\cdot\frac{\partial}{\partial\theta_i}J(\theta) = \theta_i - \frac{\alpha}{n}\sum^n_{i = 1}(h(x_i) - y_i)\cdot x_iθi:=θiαθiJ(θ)=θinαi=1n(h(xi)yi)xi
α\alphaα为步长值

function theta = gradientDescent(X, y, theta, alpha, num_iters)

m = length(y); % 训练样本数

%迭代
for iter = 1:num_iters
    theta = theta - (alpha/m) * (X' * (X * theta - y ));
    
end

end

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值