【发布时间】:2014-12-07 07:04:47
【问题描述】:
我试图实现梯度下降(一个变量的线性回归)。我对下面的代码有一些疑问。
在附件 ex1data1 中,第 1 列和第 2 列分别代表 X 和 y。 最初我试图实现如下算法
for iter=i:iterations
for i=1:2
h=(theta'*X')';
s=sum((h-y).*X(i));
s1=s*alpha/m;
theta(i)=theta(i)-s1;
end
..
end
但我无法得出 theta 的最佳值。
然后我尝试了矢量化
for iter=i:iterations
h=(theta'*X')';
theta = theta -((1/m) * (h - y)' * X)' * alpha;
end
并得到最优值。
你能解释一下这两个代码有什么区别吗?我发现它一样。有人告诉它矢量化比循环更可取,但只是出于好奇而想知道。在寻找向量公式时,我需要特别注意什么吗?
【问题讨论】:
标签: matlab machine-learning octave