15

Matlab でバッチ勾配降下法を実装しています。の更新手順に問題がありthetaます。 theta2 つの成分 (2 行) のベクトルです。 行 (トレーニング サンプルの数)と列 (特徴の数)Xを含む行列です。Yは行ベクトルです。mn=2m

更新ステップ中に、それぞれtheta(i)を次のように設定する必要があります

theta(i) = theta(i) - (alpha/m)*sum((X*theta-y).*X(:,i))

これはforループで実行できますが、ベクトル化する方法がわかりません (X(:,i)用語のため)。

なにか提案を?

4

2 に答える 2

39

単純な行列の乗算を実行しようとしているように見えますが、これは MATLAB が最も優れていると思われるものです。

theta = theta - (alpha/m) * (X' * (X*theta-y));
于 2013-12-23T00:12:27.277 に答える