15

我正在 Matlab 上实现批量梯度下降。我的更新步骤有问题thetatheta是两个分量(两行)的向量。 X是一个包含m行(训练样本数)和n=2列(特征数)的矩阵。Y 是m行向量。

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

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

这可以通过for循环来完成,但我不知道如何对其进行矢量化(因为这个X(:,i)术语)。

有什么建议吗?

4

2 回答 2

39

看起来你正在尝试做一个简单的矩阵乘法,这是 MATLAB 最擅长的。

theta = theta - (alpha/m) * (X' * (X*theta-y));
于 2013-12-23T00:12:27.277 回答
4

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

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

于 2018-05-11T19:46:22.550 回答