自動モデル選択のアルゴリズム


193

自動モデル選択のアルゴリズムを実装したいと思います。私は段階的な回帰を行うことを考えていますが、何でもできます(ただし、線形回帰に基づいている必要があります)。

私の問題は、方法論やオープンソースの実装を見つけることができないことです(Javaで目が覚めています)。私が念頭に置いている方法論は次のようなものです。

  1. すべての因子の相関行列を計算する
  2. 互いに相関の低い要因を選択する
  3. t-statが低い因子を削除する
  4. 他の要素を追加します(2。
  5. いくつかの基準(AICなど)が特定のしきい値を超えるか、それ以上にならないか、より大きな値が見つからなくなるまで、何度も繰り返します。

このためのR実装(stepAIC)があることはわかっていますが、コードを理解するのは非常に困難です。また、段階的回帰を説明する記事を見つけることができませんでした。


72
率直に言って、これは悲惨なアイデアであり、多くの誤った結論を導くことがほぼ保証されていると思います。
GUNG

4
@gung:モデル選択の結果を盲目的にたどることは悪い考えであることに同意しますが、分析の出発点として役立つと思います。私の場合、利用可能な数百の要因があり、最も適切な5〜10を選択します。自動モデル選択なしでこれを行う方法はわかりません(後で手動で修正します)。
S4M

12
すべてのモデル選択手順は、以下の回答で説明する問題の影響を受けます。さらに、検索する可能性のある要因の数が多いほど、それらの問題は極端になり、増加は線形ではありません。いくつかのより良いアプローチ(@Zachで説明)がありますが、クロス検証(@JackTannerで説明)と組み合わせて使用​​する必要がありますが、t、rおよびAICに基づく選択はそれらの中にはありません。さらに、数百の要因により、必要なデータの量は数百万になります。残念ながら、あなたの前には非常に難しい仕事があります。
GUNG

7
モデル選択を行う目的は何ですか?予測/予測モデル用ですか、それとも重要な変数を探していますか?また、使用しているデータセットの大きさ-オブザベーションと変数の数を教えてください。
確率論的

6
ここで興味深い見解がありますが、アルゴリズムモデルの選択手順に対する否定的な見解は少し時代遅れだと思います。たとえば、計量経済学の分野での最近のDavid Hendryの研究、特にPcGiveソフトウェアと飽和法に関する彼の研究を見てみましょう。彼のアプローチの概要を提供する講義はここで見つけることができます。@MichaelChernickが指摘したように(そしてHendryもそうです!)、主題の知識は(非常に)重要です。これが主題の専門家に価値がある理由です-アルゴリズムを単独で動作させるのは間違いです。
グレアムウォルシュ

回答:


333

このアプローチは間違っていると思いますが、おそらくその理由を説明すればもっと役立つでしょう。多数の変数に関するいくつかの情報が与えられた場合、最良のモデルを知りたいのは非常に理解できます。さらに、それは人々が定期的に自分自身を見つけるように見える状況です。さらに、回帰に関する多くの教科書(およびコース)は、段階的な選択方法をカバーしています。これは、それらが合法でなければならないことを意味します。ただし、残念ながらそうではなく、この状況と目標の組み合わせをうまくナビゲートすることは非常に困難です。以下は、自動化された段階的なモデル選択手順に関する問題のリストです(Frank Harrellに起因し、ここからコピーされています)。

  1. 大きくバイアスがかけられているRの2乗値が生成されます。
  2. プリントアウトの各変数の隣に引用されているFおよびカイ2乗検定には、主張された分布がありません。
  3. この方法では、誤って狭い効果と予測値の信頼区間が得られます。Altman and Andersen(1989)を参照してください。
  4. 適切な意味を持たないp値が生成され、それらの適切な修正は難しい問題です。
  5. 収縮を必要とする偏りのある回帰係数を提供します(残りの変数の係数が大きすぎます。Tibshirani[1996]を参照)。
  6. 共線性が存在すると、深刻な問題が発生します。
  7. これは、事前に指定された仮説をテストするために使用されることを目的としたメソッド(ネストされたモデルのFテストなど)に基づいています。
  8. サンプルサイズを大きくしても、あまり役に立ちません。Derksen and Keselman(1992)を参照してください。
  9. 問題について考えないようにすることができます。
  10. 多くの紙を使用します。

問題は、これらの手順の何がそれほど悪いのか、なぜこれらの問題が発生するのか?基本的な回帰コースを受講したほとんどの人は、平均へ回帰の概念に精通しているため、これらの問題を説明するためにこれを使用します。(これは最初はトピックから外れているように思えるかもしれませんが、私は耐えてください。関連があると約束します。)

トライアウトの初日に高校のトラックコーチを想像してください。30人の子供が現れます。これらの子供には、コーチも他の誰も直接アクセスできない本質的なレベルの基本的な能力があります。その結果、コーチは彼ができる唯一のことをします。それは彼ら全員が100mのダッシュを走らせることです。時間はおそらくその本質的な能力の尺度であり、そのように解釈されます。ただし、それらは確率的です。誰かがどれだけうまくやっているかのある割合は実際の能力に基づいており、ある割合はランダムです。本当の状況は次のとおりだと想像してください。

set.seed(59)
intrinsic_ability = runif(30, min=9, max=10)
time = 31 - 2*intrinsic_ability + rnorm(30, mean=0, sd=.5)

最初のレースの結果は、子供たちへのコーチのコメントとともに次の図に表示されます。

最初のレース

子供をレース時間で分割すると、本来の能力が重複することに注意してください。この事実は非常に重要です。一部を賞賛し、他の一部をコーチした後(コーチがそうする傾向があるため)、彼は彼らを再び走らせます。以下は、コーチの反応を伴う第2レースの結果です(上記の同じモデルからシミュレートされています)。

第2レース

それらの本質的な能力は同じですが、最初のレースに比べて時間が跳ね返ります。コーチの観点から、彼が叫んだ人は改善する傾向があり、彼が賞賛した人は悪化する傾向がありました(ウィキページにリストされているカーネマンの引用からこの具体例を適合させました)が、実際には平均への回帰は単純な数学的コーチが部分的にランダムな測定に基づいてチームの選手を選択しているという事実の結果。

さて、これは自動化された(例えば、段階的な)モデル選択技術と何の関係があるのでしょうか?同じデータセットに基づいたモデルの開発と確認は、データdrと呼ばれることもあります。変数間には何らかの基礎的な関係があり、より強い関係はより強いスコア(たとえば、より高いt統計量)をもたらすと予想されますが、これらはランダム変数であり、実現値にはエラーが含まれます。したがって、より高い(またはより低い)実現値を持つことに基づいて変数を選択する場合、それらの基になる真の値、エラー、またはその両方が原因である可能性があります。この方法で進むと、コーチが第2レースを終えたときと同じように驚くでしょう。これは、t統計量が高いか、相互相関が低いかに基づいて変数を選択する場合にも当てはまります。確かに、AICを使用するとp値を使用するよりも複雑になるため、モデルにペナルティが課せられますが、AIC自体はランダム変数です(スタディを複数回実行して同じモデルに適合させると、AICは次のように跳ね返ります)ほかのすべて)。残念ながら、

これがお役に立てば幸いです。


43
データdrの驚異的な説明。
フランクハレル

17
これは非常によく考えられた答えですが、線形モデル選択のコンテキストでは、aicがp値(またはbicまたは類似のもの)の改善であるという考えには完全に同意しません。の形式のaicのようなペナルティは、p値をに設定することと同等です(入口と出口の両方)。aicは基本的にp値の選択方法を示します。PのR χ 2 1 > K 2L+kpPr(χ12>k)
確率の

7
私のコメントは、段階的または類似のアルゴリズムにaicを使用することに関するものでした。私のコメントも短すぎました。注変数の数であり、ペナルティである( AICため BICため)、および倍最大化対数尤度負です。Aicとbicは概念的に異なりますが、非ゼロ係数の収縮なしで「サブセット」スタイルの選択を行う場合、p値とは動作しません。k 2 log N 2 Lpk2logN2L
確率論的

9
@gung-1つのパラメーターが異なる2つのモデルの差を取ると、ます。ここで、最初の項は、p値の基礎となる尤度比統計です。そのため、尤度比統計がカットオフよりも大きい場合、追加のパラメーターを追加しています。これは、p値アプローチが行っていることと同じです。ここには概念的な違いのみがあります(2L1+2p0+2)(2L0+2p0)=2(L1L0)+2
確率は

2
AICが問題を解決しない理由の説明については、Mundry、R.(2011)を参照してください。情報理論に基づいた統計的推論の問題-頻繁な視点からの解説。行動生態学および社会生物学、65(1)、57-68。
2013年

70

R のキャレットパッケージを確認してください。ステップワイズ回帰モデル(またはを使用)の相互検証に役立ちます。また、これらの種類のモデルの予測パフォーマンスが低い傾向を理解するのに役立ちます。さらに、キャレット内の関数を使用して同一直線上の変数を識別および削除し、キャレット内の関数を使用してt統計量が低い変数を削除できます(使用)。method='lmStepAIC'method='glmStepAIC'findCorrelationrferfeControl=rfeControl(functions=lmFuncs)

ただし、前の回答で述べたように、変数を選択するこれらの方法は、特に繰り返し実行する場合に問題が発生する可能性があります。完全にテスト済みのテストセットでパフォーマンスを評価することを絶対に確認してください。アルゴリズムに満足するまでテストセットを見ないでください!

最後に、リッジ回帰、なげなわ、エラスティックネットなどの「組み込み」の機能選択を備えた予測モデルを使用する方が良い(そしてより簡単な)場合があります。具体的には、method=glmnetキャレットの引数を試して、そのモデルの交差検証された精度を引数と比較しmethod=lmStepAICます。私の推測では、前者はサンプル外の精度がはるかに高くなり、カスタム変数選択アルゴリズムの実装と検証について心配する必要はありません。


1
log(λ2+β2)

2
@probabilityislogic rまたはのような言語で、二重パレートペナルティの適切な実装を知っていますかpython?私はそれを試してみたいです。
ザック

1
私が理解から、AICによるモデル選択と去る-1をアウトクロスバリデーションは、基本的に同じこと(漸近同値、見ている石、1977)ので、AICと相互検証のいくつかの種類が非常によく似につながる可能性があります結果。ただし、キャレットパッケージは使用していません。メソッド呼び出しからは、場合によってはAICが実際に使用されているようです。
fileunderwater

38

@gungで概説した問題に完全に同意します。とはいえ、現実的に言えば、モデルの選択は実際の解決策を必要とする実際の問題です。これが実際に使用するものです。

  1. データをトレーニング、検証、テストセットに分割します。
  2. トレーニングセットでモデルをトレーニングします。
  3. 予測RMSEなどのメトリックを使用して、検証セットでモデルのパフォーマンスを測定し、予測誤差が最小のモデルを選択します。
  4. 必要に応じて新しいモデルを考案し、手順2〜3を繰り返します。
  5. テストセットでのモデルのパフォーマンスを報告します。

実世界でのこの方法の使用例については、Netflix Prizeのコンテストで使用されたと思います。


15
n>20000

5
@フランク:なぜNをそれほど高くする必要があると思いますか?
rolando2

14
精度が低いため。再度分割すると、非常に異なる結果を得ることができます。だからこそ、人々は10回の交差検証またはブートストラップを100回繰り返します。
フランクハレル

10
@FrankHarrellそのn> 20000の数値は何に依存していますか?「数百の要因」についての元のポスターのコメントに基づいていますか?または、データのどの側面からも独立していますか?
ダレン・クック

33
データの分割をテストする設定の種類はn = 17000で、0.3の端数にはイベントがあり、バイナリロジスティックモデルで約50個のパラメーターが検査または適合されていました。ランダムな1:1分割を使用しました。データを再分割して最初からやり直すと、テストサンプルの検証済みROCエリアが実質的に変更されました。詳細な情報を提供するシミュレーション研究および関連論文については、biostat.mc.vanderbilt.edu / rmsのテキストで使用されている方法の研究をご覧ください。
フランクハレル

15

質問に答えるには、いくつかのオプションがあります:1)AIC / BICによるすべてのサブセット2)p値による段階的3)AIC / BICによる段階的4)LASSOなどの正則化(AIC / BICまたはCVに基づくことができます) 5)遺伝的アルゴリズム(GA)6)その他?7)非自動の理論(「主題知識」)指向の選択の使用

次の質問は、どちらの方法が良いかということです。この論文(doi:10.1016 / j.amc.2013.05.016)は、「すべての可能な回帰」が提案された新しい方法に同じ結果を与え、段階的に悪いことを示しています。単純なGAがそれらの間にあります。このペーパー(DOI:10.1080 / 10618600.1998.10474784)は、ペナルティ付き回帰(ブリッジ、ラッソなど)を「跳躍」と比較し(徹底的な検索アルゴリズムのようですが、より高速です)、「ブリッジモデルは跳躍法によるサブセット選択」。このペーパー(doi:10.1186 / 1471-2105-15-88)は、GAがLASSOよりも優れていることを示しています。この論文(DOI:10.1198 / jcgs.2009.06164)は、基本的にはすべてのサブセット(BICに基づく)アプローチですが、計算時間を賢く短縮する方法を提案しました。彼らは、この方法がLASSOよりも優れていることを実証しています。興味深いことに、このペーパー(DOI:10.1111 / j.1461-0248.2009.01361。

全体的に結果はまちまちですが、GAは非常に良いように見えますが、ステップワイズはそれほど悪くないかもしれませんし、速いです。

7)に関しては、非自動の理論(「主題知識」)指向の選択の使用。これには時間がかかり、自動方式よりも必ずしも優れているとは限りません。実際、時系列の文献では、自動化された方法(特に商用ソフトウェア)が「かなりのマージン」で人間の専門家より優れていることが確立されています(doi:10.1016 / S0169-2070(01)00119-4、561ページ、例えば、さまざまな指数平滑化の選択およびARIMAモデル)。


6
特定のルーチンを(意図的ではないにしても)データ生成プロセスを変更することにより、異なる選択アルゴリズムのシミュレーション研究で異なるパフォーマンスを得ることができることに注意してください。どのアプローチがより速くまたは遅くなるかという問題は明確ですが、潜在的には依然として重要です。
グン

2
実際、LASSOに関する Tibshiraniの元の論文の例は、@ gungのポイントをよく示しています。同じことは、実際のデータに対するさまざまな方法の比較研究にも当てはまります。ところで、最後の参照は正しいですか?Clements&HendryによるDOIの論文は、自動化された方法が人間の専門家をしのぐ、または「かなりのマージンで」という言葉を使用するという主張をしていません。(完全な参考文献を提供していただければ幸いです。)
Scortchi

それを見つけました:Goodrich(2001)、「M3-Competitionの商用ソフトウェア」、Int。J. Forecast。、17、pp 560–565。これは、Clements&Hendryの論文と同じ「M3コンペティションのコメント」コレクションに含まれているため、DOIのGooglingがそこに送ってくれました。
スコルチ

とにかく、Goodrichのコメントが主題の専門知識関係があるかどうかはまったく明らかではありません。
スコルチ

1
@Scortchiは、ジャーナルのその問題に関する581ページから始まる記事でより明確になるかもしれません。これは、「M2コンペティション」に関連しており、自動予測方法が、経済/業界のコンテキストを知っており、提供した企業から追加情報を求めることのできる招待された人間の専門家(時系列文学の有名人を含む)と比較されましたデータ。
heran_xp

6

左のフィールドからの答えは次のとおりです。線形回帰を使用する代わりに、回帰ツリー(rpartパッケージ)を使用します。これは自動モデル選択に適しています。これは、わずかな作業で、過剰適合を避けるために使用されるパラメーターcpの選択を自動化できるためです。


3

最も価値のある独立変数を選択する方法で遺伝的アルゴリズムを実装することにより、線形モデルを最適化できます。変数はアルゴリズムで遺伝子として表され、その後、最適な染色体(遺伝子のセット)がクロスオーバー、突然変異などの演算子の後に選択されます。それは自然selectionに基づいています-そして、最良の「世代」は生き残るかもしれません、言い換えれば、アルゴリズムは特定のモデルに依存する推定関数を最適化します。


2
それはデータにアクセスするだけなので、データ生成プロセス/母集団で必ずしも最適な変数ではなく、データで「最適な」変数を選択します。OPが望んでいた段階的な方法と実際にはそれほど似ていません。
グング

0

Rベースの統計パッケージには、step()と呼ばれる関数があります。この関数は、AICの最小値に基づいてモデルを前方、後方、または段階的に選択します。これは因子変数でも機能します。これはここで目的を提供しませんか?


-51

私の質問が多くの関心と、自動モデル選択アプローチの有効性に関する興味深い議論を生み出したと思います。自動選択の結果を当然のこととして取るのは危険であることに同意しますが、それは出発点として使用できます。特定の問題に対してこれを実装する方法は次のとおりです。これは、特定の変数を説明するための最良のn因子を見つけることです。

  1. すべての回帰変数と個々の要因を行う
  2. 与えられた基準で回帰をソートします(AICなど)
  3. t-statが低い要因を削除します。変数の説明には役に立たない
  4. 2.で指定された順序で、モデルに因子を1つずつ追加し、基準を改善するときにそれらを保持するようにします。すべての要因について繰り返します。

繰り返しますが、これは非常に大雑把で、方法論を改善する方法があるかもしれませんが、それが私の出発点です。私はこの回答を他の誰かに役立つことを期待して投稿しています。コメントを歓迎します!


47
(1)私はこのスレッドで「議論」を目撃していません。すべての返信とコメントは同じ基本的なメッセージを提示します。(2)実装は、段階的回帰のアドホックバージョンのようです。それ自体が目的として自動的に受け入れられない限り、出発点として有用であることに同意します。
whuber

28
コミュニティによって提起されたすべての議論に反対する独自の答えを実際に受け入れました。ここでネガを見るのは驚くことではありません
...-

23
たくさんのダウン投票を見るのは初めてだと思います。@SAM他の優れた回答の一部を受け入れて、「回答」を削除してみませんか。
マーベル14年

このSEで最も落胆した答えはありますか?
mkt

2
@probabilityislogicの重要な質問に答えて、「与えられた変数を説明するのに最適なn個の要因を見つける」という目標を立てているようです。(因果関係を理解するための)説明のためのモデル構築は、予測のためのモデル構築よりも意図的に、通常ははるかに集中的に行う必要があります。
-rolando2
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.