私はしばらくの間、MATLABでロジスティック回帰を実装しようとしています。私はすでにそれを行っていますが、私にはわからないreasionsについては、fminuncを使用して1回の反復を実行することができません。関数が呼び出されると、プログラムは無期限に待機モードに入ります。コードに何か問題がありますか、または私のデータが大きくなっていますか?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
どれでも '正しい方向に向い' を大幅に高く評価されます! P.P.私はcostFunctionRegを実行することができました。それはこの関数だと仮定しています。
@Rasman質問に答えるために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)';
を要求されるように:
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を実行している私ですが。
あなたは 'costFunctionReg'を表示することができますか?問題はそれである可能性があります。また、MaxFunEvalsを設定することもできます。多分、繰り返しごとに非常に多くの計算が必要です。 – bdecaf
デバッガでコードを開始し、コスト関数にブレークポイントを設定して、到達しているかどうかを確認してください。 – silvado
ねえ、簡単な質問です。まだ機械学習に新しいです。私は実際に分類問題を解決しようとしています。それが私の問題の原因かもしれませんか? – cubearth