Gesunde schrittweise Regression?

14

Angenommen, ich möchte einen binären Klassifikator erstellen. Ich habe mehrere tausend Features und nur ein paar 10er Samples. Ich habe einen guten Grund zu der Annahme, dass die Klassenbezeichnung mit nur wenigen Funktionen genau vorhergesagt werden kann, aber ich habe keine Ahnung, welche . Ich möchte auch, dass die endgültige Entscheidungsregel einfach zu interpretieren / erklären ist, was eine kleine Anzahl von Funktionen erforderlich macht. Bestimmte Untergruppen meiner Funktionen sind stark korreliert, sodass die Auswahl der aussagekräftigsten Funktionen unabhängig voneinander nicht funktioniert. Ich möchte auch in der Lage sein, Hypothesentests für meine Funktionen sinnvoll durchzuführen.

Ist das folgende schrittweise Regressionsverfahren unter diesen Bedingungen sinnvoll:

  1. Wählen Sie unter Berücksichtigung der bereits im Modell vorhandenen Features (oder nur des Abschnitts bei der ersten Iteration) das Feature aus, das beim Hinzufügen zum Modell das größte Log-Likelihood-Verhältnis erzeugt. Verwenden Sie den Likelihood-Ratio-Chi-Quadrat-Test, um einen nominalen P-Wert für jeden in dieser Auswahl durchgeführten Hypothesentest zu berechnen. Die Null hier ist, dass das Hinzufügen der zusätzlichen Variablen zum Modell keine zusätzliche Vorhersagefähigkeit bietet. Die Alternative ist, dass sie die Vorhersagefähigkeit erhöht

  2. Behandle die in Schritt 1 jeder Iteration getesteten Hypothesen als eine Familie und berechne die Rate falscher Entdeckungen für den kleinsten P-Wert (für das ausgewählte Merkmal) mit etwas wie Benjamini-Hochberg.

  3. Springe zu 1, es sei denn, einige Stoppkriterien sind erfüllt.

  4. Geben Sie die falschen Erkennungsraten für die einzelnen Features an, jedoch nicht den P-Wert für das gesamte Modell (da dieser Wert massiv erhöht wird). Jeder dieser mehrfach testkorrigierten P-Werte repräsentiert die statistische Signifikanz dieses Merkmals bei allen zuvor zum Modell hinzugefügten Merkmalen.

Vermeidet man so etwas unter diesen Umständen erfolgreich alle typischen Kritikpunkte der schrittweisen Regression? Sind die auf diese Weise berechneten Falscherkennungsraten angemessen?

dsimcha
quelle
3
Gibt es einen Grund, sich nicht für eine bestrafte Regression zu entscheiden (Lasso, Elastiknetz usw.)?
Ben Bolker

Antworten:

11

Ich würde Ihnen dieses Verfahren nicht empfehlen. Meine Empfehlung lautet: Dieses Projekt abbrechen. Gib einfach auf und geh weg. Sie haben keine Hoffnung, dass dies funktioniert.

Dore Illustration von Dantes Inferno "Hoffnung aufgeben" Quelle für Bild

Abgesehen von den Standardproblemen bei der schrittweisen Auswahl (siehe hier ) haben Sie in Ihrem Fall sehr wahrscheinlich perfekte Vorhersagen aufgrund der Trennung in einem so hochdimensionalen Raum.

Ich habe keine genauen Angaben zu Ihrer Situation, aber Sie geben an, dass Sie "nur wenige Zehnerproben" haben. Lassen Sie uns gemeinnützig sein und sagen, Sie haben 90. Sie sagen weiter, Sie haben "mehrere tausend Funktionen". Stellen wir uns vor, Sie haben "nur" 2.000. Nehmen wir der Einfachheit halber an, dass alle Ihre Funktionen binär sind. Sie "glauben, dass die Klassenbezeichnung mit nur wenigen Features genau vorhergesagt werden kann", nehmen wir an, dass Sie nach Sätzen mit maximal 9 Features suchen. Zuletzt stellen wir uns vor, dass die Beziehung deterministisch ist, sodass die wahre Beziehung in Ihren Daten immer perfekt vorhanden ist. (Wir können diese Zahlen und Annahmen ändern, aber das sollte das Problem nur verschlimmern.) Nun, Wie gut könnten Sie diese Beziehung unter diesen (großzügigen) Bedingungen wiederherstellen? Das heißt, wie oft würde der richtige Satz der einzige sein, der eine perfekte Genauigkeit ergibt? Oder anders ausgedrückt, wie viele Sätze von neun Features passen auch zufällig alleine?

Einige (zu) einfache Berechnungen und Simulationen sollten Hinweise auf diese Frage liefern. Erstens, mit 9 Variablen, von denen jede 0 oder 1 sein kann, könnte eine Beobachtung Muster zeigen , aber Sie werden nur 90 Beobachtungen haben. Somit ist es durchaus möglich, dass für eine gegebene Menge von 9 Binärvariablen jede Beobachtung eine andere Menge von Prädiktorwerten aufweist - es gibt keine Wiederholungen. Ohne Wiederholungen mit denselben Prädiktorwerten, bei denen einige y = 0 und einige y = 1 haben, haben Sie eine vollständige Trennung, und eine perfekte Vorhersage jeder Beobachtung ist möglich. 29=512

Unten habe ich eine Simulation (in R codiert), um zu sehen, wie oft Sie möglicherweise keine Muster von x-Werten mit sowohl 0 als auch 1 haben. Die Art und Weise, wie es funktioniert, ist, dass ich eine Reihe von Zahlen von 1 bis 512 erhalte, die die möglichen Muster darstellen, und sehe, ob eines der Muster in der ersten 45 (das können die Nullen sein) mit einem der Muster in der zweiten 45 übereinstimmt (das könnte die 1 sein). Dies setzt voraus, dass Sie über perfekt ausgewogene Antwortdaten verfügen, die Ihnen den bestmöglichen Schutz gegen dieses Problem bieten. Beachten Sie, dass einige replizierte x-Vektoren mit unterschiedlichen y-Werten Sie nicht wirklich aus dem Wald bringen, sondern nur bedeuten, dass Sie nicht jede einzelne Beobachtung in Ihrem Datensatz perfekt vorhersagen können, was der sehr strenge Standard I ist benutze hier.

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

Die Simulation schlägt vor, dass Sie dieses Problem mit ungefähr 1,8% der Sätze von 9 x-Variablen haben würden. Wie viele 9er-Sets gibt es? Streng genommen wäre das (da wir festgelegt haben, dass die wahren 9 deterministischen Kausalvariablen in Ihrer Menge sind). Viele dieser Sätze werden sich jedoch überlappen. Es wird nicht überlappende 9er-Sätze in einer bestimmten Partition Ihrer Variablen geben (wobei viele solcher Partitionen möglich sind). Daher können wir innerhalb einer bestimmten Partition Sätze von 9 x-Variablen erwarten , die jede Beobachtung in Ihrem Datensatz perfekt vorhersagen. 1991 / 9 221 221 × 0,018 41991 choose 9=1.3×10241991/9221221×0.0184

Beachten Sie, dass diese Ergebnisse nur für Fälle gelten, in denen Sie einen relativ größeren Datensatz haben (innerhalb der "Zehner"), eine relativ kleinere Anzahl von Variablen (innerhalb der "Tausender"), und nur nach Fällen suchen, in denen jede einzelne Beobachtung perfekt vorhergesagt werden kann ( Es wird noch viele weitere Sets geben, die nahezu perfekt sind. Es ist unwahrscheinlich, dass Ihr tatsächlicher Fall "so gut" ausfällt. Darüber hinaus haben wir festgelegt, dass die Beziehung vollkommen deterministisch ist. Was würde passieren, wenn in der Beziehung zufälliges Rauschen auftritt? In diesem Fall haben Sie immer noch ~ 4 (null) Sätze, die Ihre Daten perfekt vorhersagen, aber der richtige Satz ist möglicherweise nicht darunter .

Tl; dr , der grundlegende Punkt hier ist, dass Ihr Variablensatz viel zu groß / hochdimensional und Ihre Datenmenge viel zu klein ist, als dass irgendetwas möglich wäre. Wenn es wirklich stimmt, dass Sie "Dutzende" von Samples, "Tausende" von Variablen und absolut keine Ahnung haben, welche Variablen richtig sein könnten, haben Sie keine Hoffnung, mit irgendeiner Prozedur irgendwohin zu gelangen. Mach noch etwas mit deiner Zeit.

gung - Wiedereinsetzung von Monica
quelle
1
Das ist ein originelles Intro zu einer Antwort, ich liebe es.
Łukasz Grad
1
Ein Projekt aufzugeben ist oft eine vernünftige Option. Während sicherlich ein kleiner Teil der Fälle, habe ich Kunden mehr als einmal darauf hingewiesen, dass die Projekte, an die sie denken, nicht umsetzbar sind.
gung - Reinstate Monica
1

Für die Zwecke meiner Antwort bezeichne ich die interessierende binäre Variable als und die Prädiktoren X i j  ; ( j = 1 , , p ) und nehme an, dass Y Werte von Y = 0 und Y = 1 hat . Es ist auch zweckmäßig, γ m zu definieren , um das Modell m anzuzeigen  ; ( m = 1Yi ;(i=1,,n)Xij ;(j=1,,p)YY=0Y=1γm , so dass & ggr; T m X i j gleich X i j ist, wenn sich diej-teVariable imm-tenModell befindet, undandernfalls 0 .m ;(m=1,..,M)γmTXijXij0

Ich würde eine Änderung an Ihrer Methode vornehmen und eine Begründung geben. Sie verwenden ein Klassifikatormodell, das heißt, Sie möchten den Wert einer kategorialen Variablen für die Zukunft vorhersagen. Daher sollten Sie wirklich eine Vorhersageregel definieren (wenn Sie eine neue Menge von Prädiktoren , wie werden Sie vorhersagen, ob Y = 1 ist oder Y = 0 ).XjY=1Y=0

Daher würde ich vorschlagen, die Vorhersage direkt zu bewerten und nicht das Wahrscheinlichkeitsverhältnis. Die vorhergesagte Beobachtung sollte jedoch nicht in die Schätzung des Modells einbezogen werden (da dies genau die Situation ist, mit der Sie konfrontiert sind, wenn Sie Ihr Modell tatsächlich verwenden). Also mach einen neuen Schritt 1) ​​(fett ist mein Änderungsvorschlag). 1) Wählen Sie unter Berücksichtigung der bereits im Modell vorhandenen Features (oder nur des Abschnitts bei der ersten Iteration) das Feature aus, das beim Hinzufügen zum Modell die besten Vorhersagen liefert .

Jetzt musst du dich entscheiden

  1. was du willst "am besten" mathematisch bedeuten
  2. wie Sie Ihre Daten in "passende" und "vorhersagende" Teile aufteilen

Ich werde für jedes einen Vorschlag machen:

  1. Eine intuitive Definition für einen "guten" Klassifizierer (und auch rechnerisch einfach) ist der Anteil der korrekten Klassifizierungen, die er vornimmt. Möglicherweise haben Sie jedoch zusätzliche Kenntnisse über die spezifischen Konsequenzen einer korrekten oder inkorrekten Klassifizierung (z. B. die korrekte Vorhersage, wenn doppelt so wichtig ist wie Y = 0 ). In diesem Fall sollten Sie dieses Wissen in die Definition von "gut" einbeziehen. Aber für die Gleichungen in meiner Antwort werde ich F = C verwendenY=1Y=0 als Kriterium (F= "Bruch" oder "Häufigkeit"C= "richtig"I= "falsch")F=CC+IFCI
  2. Da Sie nicht über viele Daten verfügen, benötigen Sie so viel wie möglich, um das Modell anzupassen, sodass ein einfaches Drop-One-Jacknife-Verfahren verwendet werden kann. Sie lassen Beobachtung aus, passen das Modell mit Beobachtungen 2 , , n an und verwenden dies, um Beobachtung 1 vorherzusagen . Dann lassen Sie die Beobachtung 2 aus, passen das Modell mit den Beobachtungen 1 , 3 , , n an und verwenden diese, um die Beobachtung 2 vorherzusagen . und so weiter, bis jede Beobachtung "ausgelassen" und vorhergesagt wurde. Sie haben dann n Vorhersagen und können nun F = C berechnen12,,n121,3,,n2n ist der Bruchteil der richtig vorhergesagten Werte für das bestimmte Modell. Indexiere dies für das bestimmte ModellFm.F=CnFm

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

sthMs=p+1XjXj

Schrittweise kann es riskant sein, "lokale Maxima" anstelle von "globalen Maxima" zu finden, insbesondere, weil Sie über eine so große Anzahl von Prädiktoren verfügen (dies ist ein großer "Optimierungsbereich", der wahrscheinlich multimodal ist - das heißt, es gibt viele "beste" Modelle)

100F

Ich denke, Sie werden es viel einfacher finden, Ihre Wahl des endgültigen Modells einem Nicht-Statistiker zu rechtfertigen, als zu erklären, warum der p-Wert anzeigt, dass das Modell gut ist.

Y

Zwei abschließende Bemerkungen:

  1. Sie können diese Maschinerie auch verwenden, um zu entscheiden, ob die schrittweise Auswahl besser ist als die Vorwärtsauswahl (nur Variablen hinzufügen) oder die Rückwärtsauswahl (vom vollständigen Modell ausgehend und nur Variablen entfernen).
  2. pnXTXXTWX(XTX+λI)1XTY(XTWX+λI)1XTWYλλ
Wahrscheinlichkeitslogik
quelle
Danke für den Hinweis. Dabei gibt es jedoch drei Probleme: 1. Es geht mir darum, die Unsicherheit meiner Vorhersagen und den Beitrag jeder Variablen zu quantifizieren, nicht nur die Genauigkeit der binären Vorhersage. 2. Aufgrund der Art meines Datensatzes ist er viel zu rechenintensiv. 3. Ausgehend von der Kenntnis der Domäne glaube ich, dass das lokale Optima-Problem nicht wichtig ist.
Dsimcha
100nF
Eigentlich hast du recht. Diese Prozedur wäre Teil einer größeren Codebasis, und ich habe vergessen, dass ein Teil des restlichen Codes nicht bei jeder Jackknife-Iteration erneut ausgeführt werden muss. Die beiden anderen Punkte gelten jedoch weiterhin.
Dsimcha
FFFchosenF(j)Variable für die Vorhersagegenauigkeit aufgrund jeder Variablen)
Wahrscheinlichkeitsrechnung
F