是跟随吴恩达机器学习课程学习的,具体的推导过程不再给出
求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=1∑n(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=⎣⎢⎢⎢⎡11⋮1x1x2⋮xn⎦⎥⎥⎥⎤
梯度下降过程就是对θ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−α⋅∂θi∂J(θ)=θi−nαi=1∑n(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

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

5677

被折叠的 条评论
为什么被折叠?



