2016-05-21 84 views
7

statsmodelのロジスティック回帰モデルの12ペナルティをパラメータなどで入力する方法はありますか?私はちょうどドキュメントのl1ペナルティを見つけましたが、l2ペナルティは何も見つかりませんでした。Python:l2-statsmodelsのロジスティック回帰モデルに対するペナルティ?

+0

見つけたドキュメントにリンクまたはアドレスを指定することはできますか? – piRSquared

+0

私はこのモデルをstatsmodelsから参照しています:http://statsmodels.sourceforge.net/0.6.0/generated/statsmodels.discrete.discrete_model.Logit.html モデルを正規化に適合させるには、おそらくこれを使用できますメソッド:http://statsmodels.sourceforge.net/0.6.0/generated/statsmodels.discrete.discrete_model.Logit.fit_regularized.html#statsmodels.discrete.discrete_model.Logit。fit_regularized パラメータメソッドでは、 '' l1 'または' l1_cvxopt_cp''というオプションが見つかりました。どちらもおそらく検索対象のオプションです – TheDude

+0

うわー!そのドキュメントは明確ではありません。申し訳ありませんが、私はそれについて明確な感覚をすることはできません。私はl2を扱うソルバーを書いた。コスト関数はどこでも微分可能であるため、勾配が存在するため、一般に12ペナルティで解く方が簡単です。私はそれがどこかにあると仮定しなければならない。私がもっと助けることを望みます。 – piRSquared

答えて

2

Logit、Poisson、MNLogitのようなstatsmodels.discreteのモデルでは、現在のところL1のペナルティ化しかありません。しかし、GLMや他のいくつかのモデルのための弾性ネットは最近、統計モデルマスターに統合されました。

バイナリ応答を持つ2項のGLMは、discreteと同じモデルです。実装は異なりますが、LOGIです。 L2ペナルティの私の答えを参照してくださいIs ridge binomial regression available in Python?

構造化されたペナルティマトリックスを使ったL2ペナルティは、一般化された加法モデル、GAM、スプラインフィッティングなどの粗さペナルティとして使われます。

0

ドキュメントについては、statsmodels.regression.linear_model.OLS.fit_regularizedを詳しく見てみると、現在のバージョンのstatsmodelsでは、基本的にはL1とL2のペナルティの凸型の組み合わせであるElastic Netの正規化が可能です(より堅牢な実装では)、ナイーブな実装の望ましくない行動を減らすの詳細については、ウィキペディアの「弾性ネット」を参照してくださいするには事後処理:

ElasticNet2

あなたは、ドキュメントのfit_regularizedのパラメータを見ている場合:

OLS.fit_regularized(method='elastic_net', alpha=0.0, L1_wt=1.0, start_params=None, profile_scale=False, refit=False, **kwargs)

L1_wtは、最初の式ではちょうどlambda_1であることがわかります。あなたが探しているL2ペナルティを得るには、関数を呼び出すときに引数としてL1_wt=0を渡すだけです。例として:

model = sm.OLS(y, X) 
results = model.fit_regularized(method='elastic_net', alpha=1.0, L1_wt=0.0) 
print(results.summary()) 

が入力Xからターゲットyを予測するあなたのL2罰せ回帰を与える必要があります。

希望に役立ちます!

P.S.最後の3つのコメント:

1)statsモデルは現在、method引数のオプションとしてelastic_netを実装しています。だから、L1とL2とそれらの線形結合が得られますが、それ以外のものはありません(少なくともOLSの場合)。

2)L1ペナルティド回帰= LASSO(最小絶対収縮および選択演算子)。 3)L2ペナルティリグレッション=リッジ回帰、Tikhonov-Miller法、Phillips-Twomey法、制約付き線形反転法、および線形正則化の方法を含む。

+0

クールですが、これはロジスティック回帰ではなくOLSです。 – user48956

+0

正規化ロジスティック回帰の場合:m = statsmodels.genmod.generalized_linear_model.GLM(y、X、family = families.Binomial(link = links.Logit)); m.fit_regularized(...)? – user48956

+0

あなたの例では、L1_wt = 0のときにL2 =アルファですか? (α= L1 + L2 ... L1 = 0、L2 = 10に設定したい場合はこれが機能しますか?) – user48956

関連する問題