我正在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)
项)。
有什么建议吗?
答案 0 :(得分:33)
看起来你正在尝试做一个简单的矩阵乘法,MATLAB应该是最好的。
theta = theta - (alpha/m) * (X' * (X*theta-y));
答案 1 :(得分:4)
除了Mad Physicist给出的答案外,还可以应用以下内容。
theta = theta - (alpha/m) * sum( (X * theta - y).* X )';