Wie führe ich eine logistische Regression mit einer großen Anzahl von Funktionen durch?

10

Ich habe einen Datensatz mit 330 Stichproben und 27 Merkmalen für jede Stichprobe mit einem Binärklassenproblem für die logistische Regression.

Gemäß der "Regel wenn zehn" benötige ich mindestens 10 Ereignisse für jedes Feature, um eingeschlossen zu werden. Ich habe jedoch einen unausgeglichenen Datensatz mit 20% positiver Klasse und 80% negativer Klasse.

Das gibt mir nur 70 Ereignisse, so dass ungefähr nur 7/8 Funktionen in das Logistikmodell aufgenommen werden können.

Ich möchte alle Funktionen als Prädiktoren bewerten, ich möchte keine Funktionen von Hand auswählen.

Was würden Sie vorschlagen? Sollte ich alle möglichen 7 Funktionskombinationen machen? Sollte ich jedes Feature alleine mit einem Assoziationsmodell bewerten und dann nur die besten für ein endgültiges Modell auswählen?

Ich bin auch neugierig auf den Umgang mit kategorialen und kontinuierlichen Features. Kann ich sie mischen? Wenn ich eine kategoriale [0-1] und eine kontinuierliche [0-100] habe, sollte ich normalisieren?

Ich arbeite derzeit mit Python.

Vielen dank für Deine Hilfe!

LucasRamos
quelle
"Ich bin auch neugierig auf den Umgang mit kategorialen und kontinuierlichen Merkmalen" Ich glaube, das würde eine separate Frage stellen. In der Tat ist es schon gefragt worden , hier .
E_net4 der Downvoter
2
Es gibt einen Unterschied zwischen nicht genügend Samples und irrelevanten Merkmalen. Ich würde mich wegen einer vereinfachenden Regel nicht zu sehr darauf konzentrieren, genau 7 Features
auszuwählen
1
Tun Sie, was Sie sowieso tun würden: Verwenden Sie die Kreuzvalidierung, um die Regularisierung zu optimieren. Ich schlage ein elastisches Netz vor (L1 + L2).
Emre

Antworten:

6

Um Ihr Modell auf 7 Variablen zu reduzieren, können Sie einige Ansätze wählen:

  1. PCA (unbeaufsichtigt): Dadurch werden "neue" lineare Kombinationen Ihrer Daten erstellt, wobei jede prozedurale Komponente so viel Varianz in den Daten wie möglich erklärt. Die ersten 7 Komponenten (von 27) sollten also in der Lage sein, einen guten Prozentsatz der Abweichungen in Ihren Daten zu erklären. Sie können diese sieben Komponenten dann in Ihre logistische Regressionsgleichung einfügen. Der Nachteil hierbei ist, dass Sie aufgrund der Kombination der Komponenten Ihrer ursprünglichen Variablen die Interpretierbarkeit Ihres Regressionsmodells verlieren. Es sollte jedoch eine sehr gute Genauigkeit ergeben. Dieselbe Technik wurde auf andere Dimensionsreduktionsmethoden angewendet, wie z
  2. Eine andere gängige Methode bei der Regression ist die schrittweise Vorwärtsbewegung, bei der Sie mit einer Variablen beginnen und bei jedem Schritt eine weitere hinzufügen, die nach bestimmten Kriterien (normalerweise einem BIC- oder AIC-Score) entweder beibehalten oder gelöscht wird. Die schrittweise Rückwärtsregression ist dasselbe, aber Sie beginnen mit allen Variablen und entfernen sie jedes Mal anhand einiger Kriterien erneut. Basierend auf einer kurzen Suche scheint es nicht so zu sein, dass Python eine schrittweise Regression aufweist, aber sie führen einen ähnlichen Algorithmus zur Eliminierung von Merkmalen durch, der in diesem Data Science-Beitrag beschrieben wird .
  3. L.1L.1

Wie @ E_net4 kommentierte, wird Ihre fortlaufende Frage in einem anderen Beitrag behandelt.

bnorm
quelle
5

Sie nehmen die "10er-Regel" zu ernst. Es ist eine sehr grobe Faustregel. Es ist nicht dazu gedacht, so verwendet zu werden, wie Sie es verwenden.

Es hört sich so an, als würden Sie denken: "Ich habe nur 70 positive Instanzen. Nach der 10er-Regel darf ich also nur 7 Funktionen verwenden. Wie wähle ich die 7 zu verwendenden Funktionen aus?"

Das bedeutet die 10er-Regel nicht. Es ist keine Regel, die angibt, wie viele Funktionen Sie verwenden dürfen. Die 10er-Regel ist beschreibend, nicht vorschreibend und eine ungefähre Richtlinie: Wenn die Anzahl der Instanzen viel weniger als das Zehnfache der Anzahl der Features beträgt, besteht ein besonders hohes Risiko einer Überanpassung, und Sie erhalten möglicherweise schlechte Ergebnisse.

Was solltest du also tun? Sie sollten sowieso das tun, was Sie tun würden: Regularisierung verwenden und Kreuzvalidierung verwenden, um die Hyperparameter für die Regularisierung auszuwählen. Außerdem ist es wichtig, ein Hold-Out-Test-Set zu haben, das Sie erst berühren, wenn Sie alles über den Klassifikator fertiggestellt haben, um eine Überanpassung und verzerrte Genauigkeitsschätzungen zu vermeiden.

Und wenn Sie mehr Daten erhalten können, würde das wirklich helfen.

Da Sie Klassen unausgeglichen haben, können Sie schließlich über Klassenungleichgewichte und Methoden für den Umgang damit lesen.

DW
quelle