梯度下降代码的矢量化

时间:2013-12-22 23:59:05

标签: matlab gradient-descent

我正在Matlab上实现批量梯度下降。我对theta的更新步骤有疑问。 theta是两个组件(两行)的向量。 X是一个包含m行(训练样本数)和n=2列(要素数)的矩阵。 Y是m行向量。

在更新步骤中,我需要将每个theta(i)设置为

theta(i) = theta(i) - (alpha/m)*sum((X*theta-y).*X(:,i))

这可以通过for循环完成,但我无法弄清楚如何对其进行矢量化(因为X(:,i)项)。

有什么建议吗?

2 个答案:

答案 0 :(得分:33)

看起来你正在尝试做一个简单的矩阵乘法,MATLAB应该是最好的。

theta = theta - (alpha/m) * (X' * (X*theta-y));

答案 1 :(得分:4)

除了Mad Physicist给出的答案外,还可以应用以下内容。

theta = theta - (alpha/m) * sum( (X * theta - y).* X )';