【发布时间】:2014-01-11 04:36:18
【问题描述】:
我正在 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) 术语)。
有什么建议吗?
【问题讨论】:
-
如果
X的大小为 m x 2,theta为 2 x 1,y为 m x 1,X*theta是如何定义的?你如何从中减去y?以及如何将结果乘以列向量X(:,i)? -
@LuisMendo。通过使用矩阵乘法的规则
-
@MadPhysicist 哦,我明白了。对不起
-
@LuisMendo 如果
X的大小为 mx2,theta为 2x1,则X*theta为 mx1,我们可以减去y(mx1)。X(:,i)的乘法是逐项乘法 (.*) -
@bigTree 对不起,我的错。我现在看到了