Matlab代码:
% parameter
% 梯度下降法, gradient descent
% heart_scale 数据,
% Iteration fuction: x(n+1)= x(n)- alpha*grad
% f(x)= 1/2*||y- Ax||^2, 让f(x)最小
% create data
A= rand(20);
y= rand(20, 1);
x= rand(20, 1); % initialize x
% parameter
alpha= 0.001;
iter= 1;
error= 1;
maxiter= 300;
while error> 1e-1 && iter< maxiter
f(iter)= 1/2*(norm(A*x- y))^2;
x_new= x- alpha*(A'*A*x- A'*y);
newf= 1/2*(norm(A*x_new- y))^2;
fprintf('The %dth iteration, f = %f, \n', iter, f(iter));
error= f(iter)- newf;
x= x_new;
iter= iter+ 1;
end
plot(f, 'r-')
xlabel('Number of iteration')
ylabel('Value of function')
legend('Gradient descent')
本文通过Matlab代码实现梯度下降法求解线性回归问题。使用随机生成的数据集,通过迭代更新参数来最小化损失函数,最终展示每次迭代后的函数值变化。
987

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



