您的位置:首页 > 编程语言 > MATLAB

梯度下降算法(Gradient descent)

2015-07-14 16:04 656 查看


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 算法