Algorithmen zur automatischen Modellauswahl

193

Ich möchte einen Algorithmus zur automatischen Modellauswahl implementieren. Ich denke über eine schrittweise Regression nach, aber alles wird funktionieren (es muss jedoch auf linearen Regressionen basieren).

Mein Problem ist, dass ich keine Methodik oder Open-Source-Implementierung finden kann (ich woke in Java). Die Methodik, die ich vorhabe, wäre ungefähr so:

  1. Berechnen Sie die Korrelationsmatrix aller Faktoren
  2. Wählen Sie die Faktoren aus, die eine geringe Korrelation zueinander aufweisen
  3. entfernen Sie die Faktoren, die einen niedrigen t-stat haben
  4. fügen Sie andere Faktoren hinzu (immer noch basierend auf dem niedrigen Korrelationsfaktor in 2.).
  5. Wiederholen Sie dies mehrmals, bis ein Kriterium (z. B. AIC) einen bestimmten Schwellenwert überschreitet oder keinen größeren Wert finden kann.

Mir ist klar, dass es dafür eine R-Implementierung gibt (stepAIC), aber ich finde den Code ziemlich schwer zu verstehen. Ich konnte auch keine Artikel finden, die die schrittweise Regression beschreiben.

S4M
quelle
72
Ehrlich gesagt halte ich dies für eine katastrophale Idee, die garantiert zu vielen falschen Schlussfolgerungen führt.
gung
4
@gung: Ich stimme zwar zu, dass es eine schlechte Idee ist, dem Ergebnis einer Modellauswahl blind zu folgen, aber ich denke, dass dies als Ausgangspunkt für eine Analyse nützlich sein kann. In meinem Fall stehen mir mehrere hundert Faktoren zur Verfügung, und ich möchte die 5 bis 10 wichtigsten auswählen. Ich verstehe nicht, wie ich das ohne automatische Modellauswahl (die später manuell geändert wird) machen könnte.
S4M,
12
Alle Modellauswahlverfahren unterliegen den Problemen, die ich in meiner Antwort unten diskutiere. Je größer die Anzahl der möglichen Faktoren ist, nach denen Sie suchen möchten, desto extremer werden diese Probleme, und die Zunahme ist nicht linear. Es gibt zwar einige bessere Ansätze (von @Zach besprochen), die in Verbindung mit der Kreuzvalidierung (von @JackTanner besprochen) verwendet werden sollten, die Auswahl nach t, ​​r und AIC gehört jedoch nicht dazu. Bei Hunderten von Faktoren kann die benötigte Datenmenge leicht in Millionenhöhe liegen. Leider haben Sie eine sehr schwierige Aufgabe vor sich.
gung
7
Was ist der Zweck der Modellauswahl? Ist es für ein Vorhersage- / Prognosemodell oder suchen Sie nach den wichtigen Variablen? Wie groß ist der Datensatz, den Sie verwenden - wie viele Beobachtungen und wie viele Variablen?
Wahrscheinlichkeitsrechnung
6
Interessante Ansichten hier, aber ich denke, die negative Ansicht zu algorithmischen Modellauswahlverfahren ist etwas veraltet. Nehmen wir zum Beispiel die jüngste Arbeit von David Hendry auf dem Gebiet der Ökonometrie, insbesondere seine Arbeit an der PcGive-Software und den Sättigungsmethoden. Eine Vorlesung mit einem Überblick über seine Vorgehensweise finden Sie hier . Wie @MichaelChernick betont hat (und Hendry auch!), Ist Fachwissen (äußerst) wichtig. Deshalb ist es für Fachspezialisten von Wert, die Algorithmen allein wirken zu lassen, ist der Fehler.
Graeme Walsh

Antworten:

333

Ich denke, dieser Ansatz ist falsch, aber vielleicht ist er hilfreicher, wenn ich erkläre, warum. Es ist durchaus verständlich, das beste Modell mit einigen Informationen zu einer großen Anzahl von Variablen kennenzulernen. Darüber hinaus ist es eine Situation, in der Menschen sich regelmäßig zu finden scheinen. Darüber hinaus behandeln viele Lehrbücher (und Kurse) zur Regression schrittweise Auswahlmethoden, was impliziert, dass sie legitim sein müssen. Leider ist dies nicht der Fall, und es ist ziemlich schwierig, diese Situation und dieses Ziel miteinander in Einklang zu bringen. Das Folgende ist eine Liste von Problemen mit automatisierten schrittweisen Modellauswahlverfahren (Frank Harrell zugeschrieben und von hier kopiert ):

  1. Es ergibt R-Quadrat-Werte, die stark auf hoch eingestellt sind.
  2. Die F- und Chi-Quadrat-Tests, die auf dem Ausdruck neben jeder Variablen angegeben sind, haben nicht die angegebene Verteilung.
  3. Die Methode liefert Konfidenzintervalle für fälschlicherweise enge Effekte und vorhergesagte Werte. siehe Altman und Andersen (1989).
  4. Es liefert p-Werte, die nicht die richtige Bedeutung haben, und die richtige Korrektur für sie ist ein schwieriges Problem.
  5. Es gibt voreingenommene Regressionskoeffizienten, die schrumpfen müssen (die Koeffizienten für verbleibende Variablen sind zu groß; siehe Tibshirani [1996]).
  6. Bei Kollinearität treten schwerwiegende Probleme auf.
  7. Es basiert auf Methoden (z. B. F-Tests für verschachtelte Modelle), die zum Testen vorgegebener Hypothesen verwendet werden sollten.
  8. Das Erhöhen der Stichprobengröße hilft nicht viel. siehe Derksen und Keselman (1992).
  9. Es erlaubt uns, nicht über das Problem nachzudenken.
  10. Es wird viel Papier verwendet.

Die Frage ist, was ist so schlimm an diesen Prozeduren? Warum treten diese Probleme auf? Die meisten Personen, die einen Grundkurs zur Regression absolviert haben, sind mit dem Konzept der Regression bis zum Mittelwert vertraut. Daher erkläre ich diese Probleme anhand dieses Konzepts . (Auch wenn dies auf den ersten Blick als unnatürlich erscheint, ich verspreche, dass es relevant ist.)

Stellen Sie sich einen High School Track Coach am ersten Probetag vor. Dreißig Kinder tauchen auf. Diese Kinder verfügen über eine gewisse Grundkompetenz, auf die weder der Trainer noch andere Personen direkten Zugriff haben. Infolgedessen kann der Trainer nur 100 m weit rennen. Die Zeiten sind vermutlich ein Maß für ihre inneren Fähigkeiten und werden als solche angesehen. Sie sind jedoch probabilistisch; Ein Teil davon, wie gut jemand abschneidet, basiert auf seinen tatsächlichen Fähigkeiten und ein Teil ist zufällig. Stellen Sie sich vor, die wahre Situation ist die folgende:

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

Die Ergebnisse des ersten Rennens sind in der folgenden Abbildung zusammen mit den Kommentaren des Trainers zu den Kindern dargestellt.

erstes Rennen

Beachten Sie, dass die Unterteilung der Kinder nach ihren Rennzeiten Überschneidungen bei ihren Fähigkeiten hinterlässt - diese Tatsache ist entscheidend. Nachdem er einige gelobt und andere angeschrien hat (wie es Trainer tun), lässt er sie wieder laufen. Hier sind die Ergebnisse des zweiten Rennens mit den Reaktionen des Trainers (nach dem gleichen Modell oben simuliert):

zweites Rennen

Beachten Sie, dass ihre intrinsische Fähigkeit identisch ist, die Zeiten jedoch relativ zum ersten Rennen sprangen. Aus der Sicht des Trainers tendierten diejenigen, die er angeschrien hatte, dazu, sich zu verbessern, und diejenigen, die er gelobt hatte, dazu, sich zu verschlechtern (ich habe dieses konkrete Beispiel aus dem Kahneman-Zitat auf der Wiki-Seite angepasst), obwohl die Regression zum Mittelwert eigentlich eine einfache mathematische Methode ist Folge der Tatsache, dass der Trainer Athleten für die Mannschaft auf der Grundlage einer Messung auswählt, die teilweise zufällig ist.

Was hat dies nun mit automatisierten (z. B. schrittweisen) Modellauswahltechniken zu tun? Das Entwickeln und Bestätigen eines Modells auf der Grundlage desselben Datensatzes wird manchmal als Datenbaggerung bezeichnet. Obwohl zwischen den Variablen eine gewisse Beziehung besteht und von stärkeren Beziehungen stärkere Punktzahlen erwartet werden (z. B. höhere t-Statistiken), handelt es sich um Zufallsvariablen, und die realisierten Werte enthalten Fehler. Wenn Sie also Variablen basierend auf höheren (oder niedrigeren) realisierten Werten auswählen, können diese aufgrund ihres zugrunde liegenden wahren Werts, Fehlers oder beider Werte ausgewählt werden. Wenn Sie so vorgehen, werden Sie genauso überrascht sein wie der Trainer nach dem zweiten Rennen. Dies gilt unabhängig davon, ob Sie Variablen auswählen, die auf einer hohen t-Statistik oder niedrigen Interkorrelationen basieren. Die Verwendung des AIC ist zwar besser als die Verwendung von p-Werten, da hierdurch das Modell für Komplexität benachteiligt wird. Der AIC selbst ist jedoch eine Zufallsvariable alles andere). Unglücklicherweise,

Ich hoffe das ist hilfreich.

gung
quelle
43
Phänomenale Erklärung der Datenbaggerung.
Frank Harrell
17
2L+kpPr(χ12>k)
7
pk2logN2L
9
(2L1+2p0+2)(2L0+2p0)=2(L1L0)+2. Der erste Term ist nun die Wahrscheinlichkeitsverhältnis-Statistik, auf der der p-Wert basiert. Wir fügen also den zusätzlichen Parameter hinzu, wenn die Statistik des Wahrscheinlichkeitsverhältnisses größer als ein Cutoff ist. Dies entspricht dem p-Wert-Ansatz. Hier gibt es nur einen konzeptionellen Unterschied
Wahrscheinlichkeitslogik
2
Zur Veranschaulichung, warum AIC das Problem nicht löst, siehe: Mundry, R. (2011). Fragen der informationstheoretischen statistischen Inferenz - ein Kommentar aus Sicht eines Frequentisten. Verhaltensökologie und Soziobiologie, 65 (1), 57-68.
21.
70

Schauen Sie sich das Caret- Paket in R an. Es hilft Ihnen , schrittweise Regressionsmodelle (mit method='lmStepAIC'oder method='glmStepAIC') zu validieren und zu verstehen, wie diese Modelltypen tendenziell eine schlechte Prognoseleistung aufweisen. Darüber hinaus können Sie die findCorrelationFunktion in Caret verwenden, um kollineare Variablen zu identifizieren und zu eliminieren, und die rfeFunktion in Caret, um Variablen mit einer niedrigen t-Statistik zu eliminieren (verwenden rfeControl=rfeControl(functions=lmFuncs)).

Wie in den vorherigen Antworten erwähnt, können diese Methoden der Variablenauswahl jedoch Probleme bereiten, insbesondere wenn Sie sie iterativ ausführen. Stellen Sie unbedingt sicher, dass Sie Ihre Leistung an einem VOLLSTÄNDIG ausgegebenen Testgerät bewerten. Schauen Sie sich das Test-Set erst an, wenn Sie mit Ihrem Algorithmus zufrieden sind!

Schließlich ist es möglicherweise besser (und einfacher), ein Vorhersagemodell mit "eingebauter" Merkmalsauswahl zu verwenden, z. B. Kammregression, Lasso oder elastisches Netz. Versuchen Sie insbesondere das method=glmnetArgument für Caret und vergleichen Sie die kreuzvalidierte Genauigkeit dieses Modells mit dem method=lmStepAICArgument. Ich gehe davon aus, dass ersteres zu einer wesentlich höheren Genauigkeit außerhalb der Stichprobe führt und Sie sich nicht um die Implementierung und Validierung Ihres benutzerdefinierten Variablenauswahlalgorithmus kümmern müssen.

Zach
quelle
1
log(λ2+β2)
2
@probabilityislogic Kennen Sie gute Implementierungen der doppelten Pareto-Strafe in einer Sprache wie roder python? Ich würde es gerne ausprobieren.
Zach
1
Soweit ich weiß, ist die Modellauswahl durch AIC und die einmalige Kreuzvalidierung im Wesentlichen dasselbe (asymptotische Äquivalenz, siehe Stone, 1977) , sodass AIC und einige Arten der Kreuzvalidierung wahrscheinlich zu sehr ähnlichen Ergebnissen führen Ergebnisse. Ich habe das Caret-Paket jedoch nicht verwendet, und aus den Methodenaufrufen geht hervor, dass AIC in einigen Fällen tatsächlich verwendet wird.
fileunderwater
38

Ich stimme den von @gung beschriebenen Problemen voll und ganz zu. Aus realistischer Sicht ist die Modellauswahl jedoch ein echtes Problem, das einer echten Lösung bedarf. Folgendes würde ich in der Praxis anwenden.

  1. Teilen Sie Ihre Daten in Trainings-, Validierungs- und Testsätze auf.
  2. Trainieren Sie Modelle auf Ihrem Trainingsset.
  3. Messen Sie die Modellleistung anhand des Validierungssatzes mit einer Metrik wie z. B. Vorhersage-RMSE und wählen Sie das Modell mit dem niedrigsten Vorhersagefehler aus.
  4. Entwickeln Sie nach Bedarf neue Modelle. Wiederholen Sie die Schritte 2-3.
  5. Geben Sie an, wie gut das Modell mit dem Testset abschneidet.

Als Beispiel für die Verwendung dieser Methode in der realen Welt glaube ich, dass sie beim Netflix-Preis-Wettbewerb verwendet wurde.

Jack Tanner
quelle
15
n>20000
5
@Frank: Warum denkst du, muss N so hoch sein?
Rolando2
14
Wegen mangelnder Präzision. Wenn Sie erneut aufteilen, können Sie sehr unterschiedliche Ergebnisse erzielen. Aus diesem Grund werden 100 Wiederholungen der 10-fachen Kreuzvalidierung oder des Bootstrapping durchgeführt.
Frank Harrell
10
@FrankHarrell Wovon hängt die Zahl n> 20000 ab? Basiert es auf dem Kommentar des ursprünglichen Posters über " mehrere hundert Faktoren "? Oder ist es unabhängig von irgendeinem Aspekt der Daten?
Darren Cook
33
Die Art der Einstellung, mit der ich die Datenaufteilung teste, war n = 17000, wobei ein Bruchteil von 0,3 ein Ereignis aufwies und ungefähr 50 Parameter untersucht oder in ein binäres logistisches Modell eingepasst wurden. Ich habe einen zufälligen 1: 1-Split verwendet. Der validierte ROC-Bereich im Testmuster hat sich grundlegend geändert, als ich die Daten erneut aufteilte und von vorne anfing. Weitere Informationen zu Simulationsstudien und verwandten Veröffentlichungen finden Sie unter Studien zu Methoden, die im Text in biostat.mc.vanderbilt.edu/rms verwendet werden .
Frank Harrell
15

Um die Frage zu beantworten, gibt es mehrere Möglichkeiten: 1) Alle Teilmengen nach AIC / BIC 2) Schrittweise nach p-Wert 3) Schrittweise nach AIC / BIC 4) Regularisierung wie LASSO (kann entweder auf AIC / BIC oder CV basieren 5) genetischer Algorithmus (GA) 6) andere? 7) Verwendung einer nicht-automatischen, theoretisch ("Fachwissen") orientierten Auswahl

Die nächste Frage wäre, welche Methode besser ist. Diese Veröffentlichung (doi: 10.1016 / j.amc.2013.05.016) gibt an, dass "alle möglichen Regressionen" die gleichen Ergebnisse für ihre vorgeschlagene neue Methode erbrachten und schrittweise schlechter sind. Eine einfache GA ist zwischen ihnen. In diesem Artikel (DOI: 10.1080 / 10618600.1998.10474784) wird die bestrafte Regression (Bridge, Lasso usw.) mit "jump-and-bounds" (scheint ein erschöpfender, aber schnellerer Suchalgorithmus zu sein) verglichen und außerdem festgestellt, dass "das Brückenmodell mit dem besten Modell von" übereinstimmt die Auswahl der Teilmenge nach der Sprungmethode “. Dieses Papier (doi: 10.1186 / 1471-2105-15-88) zeigt, dass GA besser ist als LASSO. In dieser Veröffentlichung (DOI: 10.1198 / jcgs.2009.06164) wurde eine Methode vorgeschlagen - im Wesentlichen ein Ansatz mit allen Teilmengen (basierend auf BIC), der jedoch die Rechenzeit auf clevere Weise verkürzt. Sie zeigen, dass diese Methode besser ist als LASSO. Interessanterweise ist dieses Papier (DOI: 10.1111 / j.1461-0248.2009.01361.

Insgesamt sind die Ergebnisse also gemischt, aber ich habe den Eindruck, dass GA sehr gut erscheint, obwohl schrittweise nicht allzu schlecht sein kann und es schnell geht.

Wie zu 7), die Verwendung von nicht-automatischen, theoretisch ("Fachwissen") orientierten Auswahl. Es ist zeitaufwändig und nicht unbedingt besser als die automatische Methode. Tatsächlich ist es in der Zeitreihenliteratur bekannt, dass automatisierte Verfahren (insbesondere kommerzielle Software) menschliche Experten "um ein erhebliches Maß übertreffen" (doi: 10.1016 / S0169-2070 (01) 00119-4, Seite 561, z. B. Auswahl verschiedener exponentieller Glättungen und ARIMA Modelle).

heran_xp
quelle
6
Beachten Sie, dass Sie bei Simulationsstudien verschiedener Auswahlalgorithmen eine unterschiedliche Leistung erzielen können, indem Sie den Datenerzeugungsprozess ändern, um (auch wenn nicht absichtlich) eine bestimmte Routine zu bevorzugen. Die Frage, welcher Ansatz schneller oder langsamer sein wird, ist eindeutig, aber möglicherweise immer noch wichtig.
gung
2
Tatsächlich veranschaulichen die Beispiele in Tibshiranis Originalarbeit über LASSO @ gungs Standpunkt gut. Gleiches gilt für vergleichende Untersuchungen verschiedener Methoden an realen Daten. Übrigens, ist Ihre letzte Referenz richtig? Das Papier von Clements & Hendry mit dem von Ihnen angegebenen DOI erhebt nicht den Anspruch, dass automatisierte Methoden menschliche Experten übertreffen oder die Worte "um ein Vielfaches" überhaupt verwenden. (Es wäre schön, wenn Sie alle Referenzen
angeben würden
Gefunden: Goodrich (2001), "Kommerzielle Software im M3-Wettbewerb", Int. J. Forecast., 17, S. 560–565. Es steht unter der gleichen "Commentaries on the M3-Competition" -Kollektion wie das Clements & Hendry-Paper, weshalb mich Googling the DOI dorthin geschickt hat.
Scortchi
Wie auch immer, es ist nicht klar , dass Goodrichs Kommentar etwas mit dem zu tun hat , Gegenstand Know - how.
Scortchi
1
@Scortchi Auf den Artikel ab Seite 581 in dieser Ausgabe der Zeitschrift wird möglicherweise deutlicher hingewiesen. Es ist eher mit "M2-Wettbewerb" verwandt, bei dem automatische Prognosemethoden mit eingeladenen menschlichen Experten (einschließlich einiger großer Namen in der Zeitreihenliteratur) verglichen wurden, die den wirtschaftlichen / industriellen Kontext kannten und sogar zusätzliche Informationen von den Unternehmen anfordern konnten, die diese zur Verfügung stellten die Daten.
heran_xp
6

Hier ist eine Antwort aus dem linken Feld: Verwenden Sie anstelle der linearen Regression einen Regressionsbaum (rpart package). Dies ist für die automatische Modellauswahl geeignet, da Sie mit ein wenig Arbeit die Auswahl von cp automatisieren können, dem Parameter, der verwendet wird, um eine Überanpassung zu vermeiden.

JenSCDC
quelle
3

Das lineare Modell kann durch Implementierung eines genetischen Algorithmus zur Auswahl der wertvollsten unabhängigen Variablen optimiert werden. Die Variablen werden im Algorithmus als Gene dargestellt, und das beste Chromosom (Satz von Genen) wird dann nach Kreuzungs-, Mutations- usw. Operatoren ausgewählt. Es basiert auf natürlicher Selektion - dann kann die beste 'Generation' überleben, mit anderen Worten, der Algorithmus optimiert die Schätzfunktion, die vom jeweiligen Modell abhängt.

Mäusespeck
quelle
2
Das würde die "besten" Variablen in den Daten auswählen , nicht unbedingt die besten Variablen in dem Datenerzeugungsprozess / der Datenpopulation, da es nur Zugriff auf die Daten hat. Es ist nicht wirklich so verschieden von der schrittweisen Methode, die das OP wollte.
gung
0

Wir haben eine Funktion im R-Basisstatistikpaket, step (), die die Vorwärts-, Rückwärts- oder schrittweise Auswahl von Modellen basierend auf dem niedrigsten AIC vornimmt. Dies funktioniert auch für Faktorvariablen. Servert dies hier nicht den Zweck?

Praveen
quelle
-51

Ich sehe, dass meine Frage großes Interesse und eine interessante Debatte über die Gültigkeit des Ansatzes der automatischen Modellauswahl ausgelöst hat. Ich bin damit einverstanden, dass die Annahme des Ergebnisses einer automatischen Auswahl riskant ist, kann aber als Ausgangspunkt verwendet werden. Also hier ist, wie ich es für mein spezielles Problem implementiert habe, nämlich die besten n Faktoren zu finden, um eine gegebene Variable zu erklären

  1. Mache alle Regressionen variabel gegen einzelne Faktoren
  2. die Regression nach einem bestimmten Kriterium sortieren (sagen wir AIC)
  3. Entfernen Sie die Faktoren, die einen niedrigen t-stat haben: Sie sind für die Erklärung unserer Variablen unbrauchbar
  4. Versuchen Sie bei der in 2. angegebenen Reihenfolge, die Faktoren nacheinander zum Modell hinzuzufügen, und behalten Sie sie bei, wenn sie unser Kriterium verbessern. Iterieren Sie für alle Faktoren.

Auch dies ist sehr rau, es kann Möglichkeiten geben, die Methodik zu verbessern, aber das ist mein Ausgangspunkt. Ich poste diese Antwort in der Hoffnung, dass sie für jemand anderen nützlich sein kann. Kommentare sind willkommen!

S4M
quelle
47
(1) Ich habe in diesem Thread keine "Debatte" gesehen: Alle Antworten und Kommentare enthalten dieselbe grundlegende Botschaft. (2) Ihre Implementierung scheint eine Ad-hoc- Version der schrittweisen Regression zu sein . Ich bin damit einverstanden, dass es als Ausgangspunkt nützlich sein kann, vorausgesetzt, es wird nicht automatisch als Selbstzweck akzeptiert.
Whuber
28
Sie haben tatsächlich Ihre eigene Antwort akzeptiert, die sich gegen jedes Argument der Community richtet. Kein Wunder, dass hier die Negative zu sehen sind ...
21.
23
Ich glaube, es ist das erste Mal, dass ich so viele Abstimmungen sehe. @SAM, warum akzeptierst du nicht einfach einige der anderen hervorragenden Antworten und löschst deine "Antwort"?
Marbel
Ist dies die am schlechtesten bewertete Antwort der SE?
mkt
2
Sie scheinen die wichtige Frage von @probabilityislogic mit dem Ziel beantwortet zu haben, "die besten n Faktoren zu finden, um eine gegebene Variable zu erklären". Modellbildung zur Erklärung (um die Kausalität zu verstehen) muss gezielter und in der Regel viel intensiver durchgeführt werden als Modellbildung zur Vorhersage.
Rolando2