0

しばらくの間、matlab でロジスティック回帰を実装しようとしています。私はすでにそれを行っていますが、私には不明な理由で、fminunc を使用して単一の反復を実行することができません。関数が呼び出されると、プログラムは無期限に待機モードになります。コードに問題がありますか、それともデータ セットが大きすぎますか?

function [theta J] = logisticReg(initial_theta, X, y, lambda, iter)

% Set Options
options = optimset('GradObj', 'on', 'MaxIter', iter);

% Optimize
[theta, J, exit_flag] = fminunc(@(t)(costFunctionReg(t, X, y, lambda)), initial_theta, options);

end

どこ

X is a [676,6251] matrix
y is a [676,1] vector
lambda = 1
initial_theta is [6251, 1] vector of zeros
iter = 1

「正しい方向を指している」ことは大歓迎です!PS と私は costFunctionReg を実行できました。だから、それがこの機能であると仮定しています。

要求された costFunctionReg

function [J, grad] = costFunctionReg(theta, X, y, lambda)

m = length(y); % number of training examples

J = 0;
grad = zeros(size(theta));

hyp = sigmoid(X * theta);
cost_reg = (lambda / (2*m)) * sum(theta(2:end).^2);

J = 1/m * sum((-y .* log(hyp)) - ((1-y) .* log(1-hyp))) + cost_reg;


grad(1) = 1/m * sum((hyp - y)' * X(:,1));
grad(2:end) = (1/m * ((hyp - y)' * X(:,2:end))) + (lambda/m)*theta(2:end)';

@Rasman の質問に答えるには:

Cost at initial theta: NaN
press any key to continue 
Performing Logistic Regrestion
Error using sfminbx (line 28)
Objective function is undefined at initial point. fminunc cannot continue.

Error in fminunc (line 406)
   [x,FVAL,~,EXITFLAG,OUTPUT,GRAD,HESSIAN] = sfminbx(funfcn,x,l,u, ...

Error in logisticReg (line 8)
[theta, J, exit_flag] = fminunc(@(t)(costFunctionReg(t, X, y, lambda)),
initial_theta, options);

Error in main (line 40)
[theta J] = logisticReg(initial_theta, X, y, lambda, iter);

最初の行は、initial_theta で costFunctionReg を実行しています。

4

1 に答える 1

0

このリンクを既に検索しようとしている可能性があります: http://www.mathworks.com/matlabcentral/newsreader/view_thread/290418

一般的な弧(上記のサイトからテキストをコピーして貼り付け/編集しました)は次のとおりです。

このエラー メッセージは、目的関数 "obj" がエラーを起こしているか、ポイント x0 で評価したときに Inf、NaN、または複素数などの無効な値を返したことを示しています。

関数が適切に定義されているかどうかを確認するために、fmincon (またはあなたの場合は fminunc) を呼び出す前に x0 で関数を評価することをお勧めします。

  costFunctionReg(initial_theta)

また、関数 (costFunctionReg) が複素数値の結果を返す場合は、real() を使用してそれを取り除きます。

于 2012-05-05T19:08:37.027 に答える