梯度下降代码的矢量化

big*_*ree 15 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))
Run Code Online (Sandbox Code Playgroud)

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

有什么建议吗?

Mad*_*ist 35

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

theta = theta - (alpha/m) * (X' * (X*theta-y));
Run Code Online (Sandbox Code Playgroud)