梯度下降Gradient Descent matlab实现
文章参考:http://www.cnblogs.com/pinard/p/5970503.html
代码:
function theta = gradientDescent(x, y, a, acc)
% a 步长 acc 损失函数可满足的最小值
[h,w]=size(x);
theta=zeros(w+1,1);
temp=theta;
c=ones(h,1);
x=[c x];
J=Inf;
while(J>acc)
for j=1:w+1
sum=0;
for k=1:h
sum=sum+(x(k,:)*theta-y(k))*x(k,j);
end
%sum %
temp(j)=theta(j)-a*(sum)/h;
end
for j=1:w+1
theta(j)=temp(j);
end
J=0;
for i=1:h
J=J+(x(i,:)*theta-y(i))^2;
end
J=J/(2*h);
end
数据: