1

私はMatlabでロジスティック回帰を実装しています。データは標準化されています(平均と標準偏差)。私はあなたの学習率に応じて最適なポイントをオーバーシュートする可能性があることを理解しています。しかし、それはあなたのコストが上昇し始めることを意味しないのですか?私の場合、コストは負の領域になりますが、私は理由を理解できません。ここでなぜロジスティック回帰コストが負になり、正しくないのですか?

は、標準的な(?と思う)コストと重量更新規則

function J = crossEntropyError(w, x, y) 
    h = sigmoid(x*w); 
    J = (-y'*log(h) - (1-y')*log(1-h)); 
end 

重量アップデートです:

function w = updateWeights(alpha, w, x, y)  
    h = sigmoid(x*w); 
    gradient = x'*(h-y); 
    w = w - alpha*gradient; 
end 

これは私のコストで何が起こるかである、x軸は、反復です。 logistic regression cost

これは意味をなさない。 0を打ったときに、それは自己修正して、他の方向に行くとは思わない?つまり、微分値が最小値を指しているからです。私は学習率でプレーしました、ここではそれは0.0001に設定されています。しかし、同じパターンで違いはありません。問題は何ですか?ここに本当に間違った何かがあるはずですが、私はそれを見つけることはできません。

m = sieze(x) 

gradient = zeros(size(theta)); 

for i = 1:size(theta), 
    gradient(i)= (1/m)*sum((sigmoid(X*theta)-y).*X(:,i)); 

end; 

答えて

0

このコスト関数を試してみてください

J = -1/(m)*sum(y.*log(sigmoid(x*w))+(1-y).*log(1-sigmoid(x*w); 

だから私は私のミスを実現し、それは非常に愚かです。私はラベルがブール値(0または1)でないデータセットを使用していましたが、上記のクロスエントロピーエラーが発生しました。コードは正しいが、ブールでないデータのラベルには適していない。

質問は削除されますが、私のアカウントはブロックされたくありません。多分それは誰かを助けることができますか?

+0

私はまだ同じパターンを取得します。あなたが書き込んだコードでコストをグラフ化すると、どのように見えますか? – vega

+0

私は彼女がまだそこにいないと思うより多くの反復を追加 – Bilal

+0

彼女は混乱しています。下の私の答えをチェックしてください。乾杯。 – vega

1

として

+0

削除の必要はありません。あなたのヒントは役に立ちます! – vedrano

関連する問題