その手順を使用することはお勧めしません。私の推奨事項:このプロジェクトを放棄します。あきらめて、立ち去ってください。これが機能する望みはありません。
画像のソース
段階的な選択に関する標準的な問題は別として(ここを参照)、あなたの場合、そのような高次元の空間での分離のために完全な予測を持つ可能性が非常に高くなります。
あなたの状況に関する詳細はありませんが、あなたは「ほんの数十のサンプルしか持っていない」と述べています。慈善活動をして、90を持っているとしましょう。さらに、「数千の機能」があると言います。2,000人しか「いない」と想像してみましょう。簡単にするために、すべての機能がバイナリであるとしましょう。「クラスラベルはいくつかの機能のみを使用して正確に予測できると考えています」、最大で9つまでの機能のセットを検索するとします。最後に、関係が決定論的であり、真の関係が常にデータに完全に存在することを想像してみましょう。(これらの数値と仮定は変更できますが、それは問題を悪化させるだけです。)これらの(寛大な)条件下でその関係をどれだけうまく回復できますか?つまり、正しいセットが完全な精度をもたらす唯一のセットになる頻度はどれくらいですか?または、別の言い方をすれば、偶然だけで9つの機能のセットがいくつ適合するのでしょうか?
いくつかの(過度に)単純な数学とシミュレーションは、この質問への手がかりを提供するはずです。最初に、9個の変数があり、それぞれが0または1である可能性があり、観測が示すパターンの数はですが、90個の観測しかありません。したがって、9個のバイナリ変数の特定のセットについて、すべての観測値に異なる予測値のセットがあることは完全に可能です。つまり、複製はありません。一部がy = 0で一部がy = 1である同じ予測値を持つ複製がない場合、すべての観測の完全な分離と完全な予測が可能になります。 29= 512
以下に、0と1の両方を持つx値のパターンがない頻度を確認するためのシミュレーション(Rでコーディング)を示します。動作する方法は、可能なパターンを表す1から512までの数字のセットを取得し、最初の45のパターン(0の場合もある)のいずれかが2番目の45のパターンのいずれかに一致するかどうかを確認することです(それが1である可能性があります)。これは、完全にバランスの取れた応答データがあることを前提としているため、この問題に対して可能な限り最良の保護が提供されます。異なるy値を持ついくつかの複製されたxベクトルを持っているからといって森から抜け出すことはできないことに注意してください。ここで使用しています。
set.seed(7938) # this makes the simulation exactly reproducible
my.fun = function(){
x = sample.int(512, size=90, replace=TRUE)
return(sum(x[1:45]%in%x[46:90])==0)
}
n.unique = replicate(10000, my.fun())
mean(n.unique) # [1] 0.0181
シミュレーションでは、9つのx変数のセットの約1.8%でこの問題が発生することが示唆されています。さて、9のセットはいくつありますか?厳密には、選択します (真の9つの決定論的因果変数がセットに含まれていると規定しているため)。ただし、これらのセットの多くは重複します。あるでしょう1991年の/ 9 ≈ 221(可能な多くのそのようなパーティションで)あなたの変数の指定されたパーティション内の9の非オーバーラップセット。このように、いくつかの特定のパーティション内で、我々はそこだろう予想221 × 0.018 ≈ 41991 9 = 1.3 × 10を 選択 241991年の/ 9 ≈ 221221 × 0.018 ≈ 4 データセット内のすべての観測値を完全に予測する9つのx変数のセット。
これらの結果は、比較的大きなデータセット(「数十」内)、比較的少数の変数(「数千」内)がある場合のみであり、すべての単一の観測値が完全に予測できる場合のみを探します(あるでしょう、多くの実際の場合は、「このほか」をうまくすることはほとんどありませんほぼ完璧です以上のセット)、など。さらに、関係は完全に決定論的であると規定しました。関係にランダムなノイズがあるとどうなりますか?その場合、データを完全に予測する〜4(null)セットがまだありますが、正しいセットはそれらの中にない可能性があります。
Tl; dr、ここでの基本的なポイントは、変数のセットが大きすぎる/高次元であり、データの量が少なすぎるため、何でも可能になるということです。「数十」のサンプル、「数千」の変数があり、どの変数が正しいのかという世俗的な考えがまったくないというのが本当なら、どの手順でもどこにでも行ける見込みはありません。あなたの時間で何か他のことをしてください。