2016-03-29 10 views
4

私はラッセルと弾性ネットの代わりに正則回帰としてこのメ​​ソッドを試しています。私は40kのデータポイントと40のフィーチャーを持っています。ラッソーは5つのフィーチャーを選択し、直交マッチングの追求は1つだけを選択します。直交マッチング追求回帰 - 間違って使用していますか?

これを引き起こす原因は何ですか? ompを間違った方法で使用していますか?おそらく、それは回帰として使われることを意図していません。私が間違っているかもしれない何かのことができるかどうか教えてください。

+1

scikit-learnについて私には分かりませんが、いくつかの詳細を教えてください。実行しているコードは何ですか?あなたの問題を再現する小さなデータセットを私たちに提供できますか? – andrechalom

+2

あなたはhttp://stats.stackexchange.com/の方がはるかに良い推測です - 幸運を祈る! – Framester

+1

完全に実行可能なコードとデータセットを投稿してください。そうでなければ答えは不可能です。 –

答えて

2

直交マッチングは、scikit-learnで実装されているように、少し壊れているか、少なくとも入力データに非常に敏感であるようです。

例:

import sklearn.linear_model 
import sklearn.datasets 
import numpy 

X, y, w = sklearn.datasets.make_regression(n_samples=40000, n_features=40, n_informative=10, coef=True, random_state=0) 

clf1 = sklearn.linear_model.LassoLarsCV(fit_intercept=True, normalize=False, max_n_alphas=1e6) 
clf1.fit(X, y) 

clf2 = sklearn.linear_model.OrthogonalMatchingPursuitCV(fit_intercept=True, normalize=False) 
clf2.fit(X, y) 

# this is 1e-10, LassoLars is basically exact on this data 
print numpy.linalg.norm(y - clf1.predict(X)) 

# this is 7e+8, OMP is broken 
print numpy.linalg.norm(y - clf2.predict(X)) 

楽しい実験:

  • 缶詰のデータセットの束がsklearn.datasetsにあります。 OMPはすべてで失敗しますか?明らかに、糖尿病のデータセットで問題なく動作します。

  • make_regressionには、OMPが動作するデータを生成するパラメータはありますか? 100 x 100と100 x 10は同じ方法で失敗します。

+0

これは、[scikit-learn github](https://github.com/scikit-learn/scikit-learn) –

+0

@JoãoAlmeidaで問題として投稿する必要があります。はい、おそらく。私はそれがバグであり、OMPがどのように動作するはずではないことを確認したい。私はより単純な合成データを最初に試してみたいと思います。 –

+1

@BaronYugovich:これについてもう質問はありますか?あなたの質問に回答したことがある場合は、賞金を受け取り賞を授与してください。 –

関連する問題