【发布时间】:2014-01-11 06:05:54
【问题描述】:
我在 matlab 中编码梯度下降。 对于两个功能,我得到了更新步骤:
temp0 = theta(1,1) - (alpha/m)*sum((X*theta-y).*X(:,1)); temp1 = theta(2,1) - (alpha/m)*sum((X*theta-y).*X(:,2)); theta(1,1) = temp0; theta(2,1) = temp1;
但是,我想将此代码矢量化并能够将其应用于任意数量的功能。 对于矢量化部分,shows 我想做的是矩阵乘法
theta = theta - (alpha/m) * (X' * (X*theta-y));
这很好看,但是当我尝试时,我意识到它不适用于梯度下降,因为参数不会同时更新。
那么,我怎样才能对这段代码进行矢量化,并确保参数和更新同时进行呢?
【问题讨论】:
-
为什么?这是同时更新所有功能的
theta。 -
然而,当我尝试 2 个功能时,我在第一个实现(使用临时变量)和第二个实现中得到了不同的结果......我不明白
-
我找到了梯度下降的实现here。我想不可能“矢量化更多”
标签: java python matlab machine-learning linear-algebra