健全な段階的回帰?


14

バイナリ分類子を作成するとします。私は数千の機能と数十のサンプルしか持っていません。ドメインの知識から、クラスラベルは少数の機能のみを使用して正確に予測できると信じるに十分な理由がありますが、どの機能かはわかりません。また、最終決定ルールを解釈/説明しやすくし、さらにいくつかの機能を必要とします。私の機能の特定のサブセットは高度に相関しているため、最も予測の少ない少数を個別に選択しても機能しません。また、自分の機能に対して仮説検定を有意義に実行できるようにしたいと考えています。

これらの条件下で、次の段階的な回帰手順は妥当ですか?

  1. モデルに既に存在する特徴(または最初の反復での切片のみ)が与えられると、モデルに追加されたときに最大の対数尤度比を生成する特徴を選択します。尤度比カイ二乗検定を使用して、この選択で実行された各仮説検定の名目P値を計算します。ここでのヌルは、追加の変数をモデルに追加しても追加の予測機能が提供されないことです。代替手段は、予測能力を高めることです

  2. 各反復のステップ1でテストされた仮説を家族として扱い、Benjamini-Hochbergのようなものを使用して、最小のP値(選択した特徴)の誤検出率を計算します。

  3. いくつかの停止基準が満たされない限り、1に移動します。

  4. 個々のフィーチャの誤検出率を報告しますが、モデル全体のP値は報告しません(これは大幅に膨張するため)。これらの複数のテストで修正されたP値のそれぞれは、以前にモデルに追加されたすべての機能を考慮して、その機能の統計的有意性を表します。

これらの状況下でこのようなことをすることで、ステップワイズ回帰の典型的な批判をすべてうまく回避できますか?この方法で誤検出率は合理的に計算されていますか?


3
ペナルティ付きの回帰アプローチ(lasso、elasticnetなど)を使用しない理由はありますか?
ベンボルカー

回答:


11

その手順を使用することはお勧めしません。私の推奨事項:このプロジェクトを放棄します。あきらめて、立ち去ってください。これが機能する望みはありません。

ダンテのインフェルノ「希望を捨てる」のDoreイラスト 画像のソース

段階的な選択に関する標準的な問題は別として(ここを参照)、あなたの場合、そのような高次元の空間での分離のために完全な予測を持つ可能性が非常に高くなります。

あなたの状況に関する詳細はありませんが、あなたは「ほんの数十のサンプルしか持っていない」と述べています。慈善活動をして、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×10241991/9221221×0.0184 データセット内のすべての観測値を完全に予測する9つのx変数のセット。

これらの結果は、比較的大きなデータセット(「数十」内)、比較的少数の変数(「数千」内)がある場合のみであり、すべての単一の観測値が完全に予測できる場合のみを探します(あるでしょう、多くの実際の場合は、「このほか」をうまくすることはほとんどありませんほぼ完璧です以上のセット)、など。さらに、関係は完全に決定論的であると規定しました。関係にランダムなノイズがあるとどうなりますか?その場合、データを完全に予測する〜4(null)セットがまだありますが、正しいセットはそれらの中にない可能性があります

Tl; dr、ここでの基本的なポイントは、変数のセットが大きすぎる/高次元であり、データの量が少なすぎるため、何でも可能になるということです。「数十」のサンプル、「数千」の変数があり、どの変数が正しいのかという世俗的な考えがまったくないというのが本当なら、どの手順でもどこにでも行ける見込みはありません。あなたの時間で何か他のことをしてください。


1
今、それは答えへのオリジナルの紹介です、私はそれが大好きです。
ルカシュGradの

1
多くの場合、プロジェクトを放棄することは合理的なオプションです。確かにごく一部のケースですが、私は、クライアントが念頭に置いているプロジェクトが実行できないことをクライアントに何度もアドバイスしました。
GUNG -復活モニカ

1

Y ;=1nバツj ;j=1pYY=0Y=1γmm ;(m=1,..,M)γmTXijXij0

私はあなたの方法に変更を加え、根拠を示します。分類子モデルを使用しているため、カテゴリ変数の値を将来に向けて予測する必要があるため、予測ルールを実際に定義する必要があります(新しい予測子のセットが与えられた場合)XjY=1Y=0

したがって、尤度比ではなく、予測を直接評価することをお勧めします。ただし、予測された観測値をモデルの推定に含めるべきではありません(これは、実際にモデルを使用するときに直面する状況であるためです)。新しいステップ1)があります(太字は私の提案する変更です)。 1)モデルにすでに存在する機能(または最初の反復でのインターセプト)が与えられたら、モデル に追加されたときに最適な予測 を生成する機能を選択します

今、あなたは決める必要があります

  1. 「最高」に数学的に意味させたいもの
  2. データを「適合」部分と「予測」部分に分割する方法

それぞれについて提案します。

  1. 「良い」分類器の直感的な定義(および計算も単純)は、正しい分類の割合です。ただし、正しい分類または誤った分類を行った場合の具体的な結果についての追加知識がある場合があります(たとえば、場合に正しく予測するY=1Y=0F=CC+IFCI
  2. 12,,n121,3,,n2nF=CnFm

Fm(m=1,,M)m=argmaxmMFm

sthMs=p+1XjXj

「グローバルな最大値」ではなく「ローカルな最大値」を見つける可能性があるため、ステップワイズは危険です。特に、非常に多くの予測変数があるため(これは最適化するための大きな「スペース」であり、おそらくマルチモーダルです-多くの「最良の」モデルがあることを意味します)

100F

最終的なモデルの選択を非統計学者に正当化する方が、p値がモデルが良いことを示す理由を説明するよりもはるかに簡単だと思います。

Y

最後の2つの発言:

  1. この機構を使用して、ステップワイズが前方選択(変数の追加のみ)または後方選択(完全なモデルから開始し、変数のみを削除)よりも優れているかどうかを判断することもできます。
  2. pnXTXXTWX(XTX+λI)1XTY(XTWX+λI)1XTWYλベータの二乗和が特定の値より小さくなるように制限し、の値を増やしますλ

アドバイスをありがとう。ただし、これには3つの問題があります。1.バイナリ予測の精度だけでなく、予測の不確実性と各変数の寄与を定量化することに関心があります。2.データセットの性質を考えると、計算負荷が大きすぎます。3.ドメインの知識から、ローカルの最適化問題は重要ではないと考えています。
dsimcha

100nF

実際、あなたは正しいです。この手順は、より大きなコードベースの一部であり、残りのコードの一部をジャックナイフの反復ごとに再実行する必要がないことを忘れていました。ただし、他の2つのポイントは引き続き適用されます。
dsimcha

@dsimcha-あなたがしているのがバイナリ分類器を構築することだけなら、なぜそれがする予測以外のものに関心があるのですか?確かにこれは最優先事項でなければならず、各変数からの貢献は理解を助けるためだけに必要です。FFFchosenF(j)各変数による予測精度の変数)
確率

F
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.