2012-02-20 17 views
4

Matlabはmnrfitを使用してロジスティック回帰を構築しましたが、L2正規化を使用したロジスティック回帰を実装する必要があります。私は進歩する方法を完全に失っている。私はいくつかの優れた論文とウェブサイトの参考文献を一連の方程式で見つけましたが、最適化に必要な勾配降下アルゴリズムを実装する方法は不明です。MatlabのL2正規化によるロジスティック回帰の実装

これはMatlabに簡単に利用できるサンプルコードがありますか?私はいくつかのライブラリとパッケージを見つけましたが、それらはすべてより大きなパッケージの一部であり、非常に多くの複雑な関数を呼び出すので、トレースを通過するだけで失われる可能性があります。

+0

あなたはおそらく使用して方がいいでしょういくつかのプレ・ファブ・オプティマイザはあなた自身の実装よりも優れていますLBFGSと共役勾配は、バニラ勾配降下ではなく、LRモデルを正確に最適化するために最も広く使用されているアルゴリズムです。例えば、 [このツールボックス](http://www.di.ens.fr/~mschmidt/Software/minFunc.html)。 –

+0

質問に正しくタグを付けると(つまり、matlabタグで)、他の人がこの質問を見つけやすくなり、回答の可能性を高めることができます。 – tr9sh

+0

この質問は実際には統計スタック交換でより良い回答を得るかもしれません。 –

答えて

2

ロジスティック回帰の単純勾配降下のための注釈付きコードです。正則化を導入するには、コストと勾配方程式を更新する必要があります。このコードでは、シータのパラメータ、Xは、クラス予測因子である、yはクラスラベルとアルファされているが学習率

である私は、このことができます願ってい:)

function [theta,J_store] = logistic_gradientDescent(theta, X, y,alpha,numIterations) 

% Initialize some useful values 
m = length(y); % number of training examples 
n = size(X,2); %number of features 

J_store = 0; 
%J_store = zeros(numIterations,1); 


for iter=1:numIterations 

    %predicts the class labels using the current weights (theta) 
    Z = X*theta; 
    h = sigmoid(Z); 

    %This is the normal cost function equation 
    J = (1/m).*sum(-y.*log(h) - (1-y).*log(1-h)); 


    %J_store(iter) = J; 



    %This is the equation to obtain the given the current weights, without regularisation 
    grad = [(1/m) .* sum(repmat((h - y),1,n).*X)]'; 


    theta = theta - alpha.*grad; 


end 

end 
関連する問題