私はMachine Learningに関するAndrew Ngの講義をしています。私は、複数の変数のベクトル化された実装コース。"sum"を使用してOctaveで複数の変数のグラデーションディセントを実装する
これは(hereから取られた)問題のアルゴリズムです:
私はちょうどかかわらず、sum
を使ってオクターブでこれを行うことができない、私はの仮説の合計を乗算するかどうかはわかりませんx(i)-y(i)をすべての変数xj(i)で除算する。線形代数の初心者へ(
theta = theta - alpha/m * sum(X * theta - y) * X;
正しい答えは、しかし、完全に非自明である:私は、次のコードの異なる繰り返しを試みたが、無駄(寸法は右ではないか、答えが間違っているのいずれか)に)hereから、とにかく私のように:
theta = theta - (alpha/m * (X * theta-y)' * X)';
は、上記のような変換を支配するsum
が関与する場合の目安はありますか?
もしそうなら、単一の変数の勾配降下のためにsum
を使用して正しい実装を思い付くことができたので、上記の反対のバージョンがあります(すなわち、sum
ベースのソリューションから一般的な乗算になります)。 (1つの非常にエレガントではないが):
temp0 = theta(1) - (alpha/m * sum(X * theta - y));
temp1 = theta(2) - (alpha/m * sum((X * theta - y)' * X(:, 2)));
theta(1) = temp0;
theta(2) = temp1;
これだけ関心が実装をベクトル化し、SOこれがどのように行われるかにように、私の質問は主にアルゴリズムの実装と懸念している上のいくつかの質問がありますがあることに注意してくださいオクターブでsum
を使用してください。
可能な複製(http://stackoverflow.com/questions/32274474/machine-learning-linear-regression- – rayryeng
重複したリンク、特に 'sum'を使った2番目のアプローチを見てください。 – rayryeng