2017-01-27 25 views
2

私は、100を超える係数と数千のエントリを含む実質的に大きなデータセットを持っています。したがって、モデルトレーニングにLassoのアプローチを使用したいと考えています。私は現在のためにSCI-キットのドキュメントに探していますPython LASSO非ゼロ係数の最大数

:実装はまっすぐ進むと思われるが

、私は可能に入力引数を見つけることができませんでした非ゼロ係数の最大数を制限する。

さらに明確になるように、in the MatLab implementation of Lassoのパラメータ「DFMax」によって上記が可能になります。

Pythonの実装にこのようなオプションはありますか?

+1

+1(http://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.OLS.fit_regularized.html#statsmodels-regression-linear-model-ols-fit- [statsmodels]なぜなら正規化された)もDFMaxパラメータを持っていないようです。 – gerowam

+0

Hmm。単なる理論 - 発言:non-zero coeffの数に対する厳密な制約は、この簡単な問題(複雑さPクラスにある)を一般的に解くのは実行不可能な難しいもの(NP-hard)に変換します。 Matlabがこれをどのように扱っているか分かりません(ブランチとバインディング以外にはあまりありません)。私はそれから巨大なパフォーマンス低下を見て驚くことはありません。たとえば、cvxpyでこの問題を混合整数計画問題として簡単に定義することができます。 – sascha

答えて

0

非ゼロ係数の数を直接制限することは、NP困難な問題です。これは、このNP困難な問題を漸近的に解決するLASSOの美しさの1つです。

私はMATLABでDFMaxの実装知らないが、私の提案は、次の操作を行います:最高のアルファ値を見つけるために

  1. 使用LassoCVを。
  2. 0以外の係数の数が上限より小さい場合は、このアルファ値をとってください。
  3. 0以外の係数の数が上限より大きい場合は、LassoとLassoCVのアルファを増加するアルファのリストを最小値として使用し、非ゼロ係数の数がしきい値以下になると停止します。