ロジスティック回帰を実装する際に、私は段階的にどのように進めるべきかという面でいくつかの困難を抱えています。私がこれまで行ったことによると、私は次のようにそれを実装しています:ロジスティック回帰の実装
まず機能の数に等しい
theta
を取り、そのゼロのn*1
ベクトル作ります。今すぐ勾配
grad = (1/m) * sum ((sigmoid(X*theta) - y')*X);
を計算最後に
J= 1/m *((sum(-y*log(htheta))) - (sum((1-y) * log(1 - htheta)))) + lambda/(2*m) * sum(theta).^2
コスト関数を計算するための最初のステップで計算
theta
を用いて、以下のhtheta = sigmoid(theta' * X');
theta = theta - (alpha/m) * sum (htheta' - y)'*X
を計算するために、この
theta
を使用
私はtheta
をゼロにしています。私はベクトル全体でJ
の同じ値を得ています、これは正しい出力ですか?
ダミーデータなどを使用して、最小の実例を提供できますか。 'y = randi(2、[10,1]) - 1'&' X = [ones(10,1)randn([10,1]) 'のように生成することができます。私が見ることができるところから、「シータ」を更新するとコスト関数が変わるはずです。しかし、グラジエントを2回計算する理由(すなわち、 'theta'の更新時と最終ステップで1回)が不明瞭です。 – zundertj
@zundertj実際には私も不明な部分です。あなたが最初に何を計算するのか、なぜそれができるのかを教えてもらえれば、それができます。 –