Ich habe einen Datensatz von rund 5000 Funktionen. Für diese Daten habe ich zuerst den Chi-Quadrat-Test zur Merkmalsauswahl verwendet. Danach erhielt ich ungefähr 1500 Variablen, die eine signifikante Beziehung zur Antwortvariablen zeigten.
Jetzt muss ich die logistische Regression darauf abstimmen. Ich verwende das glmulti-Paket für R (das glmulti-Paket bietet eine effiziente Auswahl von Teilmengen für vlm), kann jedoch nur 30 Funktionen gleichzeitig verwenden. Andernfalls nimmt die Leistung ab, da die Anzahl der Zeilen in meinem Datensatz etwa 20000 beträgt.
Gibt es einen anderen Ansatz oder andere Techniken, um die oben genannten Probleme zu lösen? Wenn ich die oben beschriebene Methode verwende, dauert es zu lange, bis das Modell passt.
sklearn
'sLogisticRegression
und es löst ein Problem mit 4000 Funktionen und 20.000 Zeilen in ungefähr einer Minute auf meinem Laptop.Antworten:
Es ist nicht angebracht, ein Feature-Screening durchzuführen und dann überlebende Features in eine Methode einzuspeisen, die nicht versteht, wie viel Datenfolter zuvor durchgeführt wurde. Es ist besser, eine Methode zu verwenden, die alle potenziellen Merkmale (z. B. elastisches Netz) handhabt. Die Vorschläge anderer zur Verwendung der Datenreduktion sind ebenfalls hervorragende Ideen.
quelle
Ein erster Ansatz ist die Verwendung von PCA, um die Dimensionalität des Datensatzes zu reduzieren. Versuchen Sie, ~ 97% der Gesamtvarianz beizubehalten. Dies kann sehr hilfreich sein.
Eine andere Möglichkeit ist die Verwendung eines stochastischen Gradientenabfalls. Dies kann ein viel schnellerer Algorithmus sein und in den Speicher von R passen.
BEARBEITEN: Ein Problem mit R ist, dass Sie nur Ihren RAM verwenden können. Wenn Sie also nur 8 GB Speicher haben, sind Sie darauf beschränkt. Ich bin damit auf viele Probleme gestoßen und habe seitdem Pythons Scikit-Learn verwendet, das größere Datensätze viel besser zu handhaben scheint.
Ein sehr schönes Diagramm, das anhand Ihrer Datensatzgröße eine Vorstellung von den Startpunkten gibt, finden Sie hier: http://3.bp.blogspot.com/-dofu6J0sZ8o/UrctKb69QdI/AAAAAAAADfg/79ewPecn5XU/s1600/scikit-learn-flow -chart.jpg
quelle
Wie @Frank Harrell bereits erwähnt hat, wäre die Verwendung eines elastischen Netzes oder LASSO zur Durchführung einer bestraften Regression mit allen 5000 Merkmalen ( p ) ein guter Anfang für die Merkmalsauswahl (man kann 3500 Variablen nicht einfach entfernen, da sie mit dem nicht "statistisch signifikant" sind abhängige interessierende Variable). Jede dieser Methoden kann mit dem R-Paket ausgeführt werden
glmnet
.Um die Beziehungen zu berücksichtigen, die zwischen den potenziellen interessierenden Prädiktorvariablen geteilt werden ( p = 5000), würde ich empfehlen, eine zufällige Gesamtstruktur mit dem
randomForest
Paket und / oder eine Gradientenverstärkung mit demgbm
Paket auszuführen, um die relative Bedeutung der potenziellen Prädiktorvariablen zu bewerten in Bezug auf das binäre Ergebnis. Mit diesen Informationen sind Sie viel besser darauf vorbereitet, ein sparsameres logistisches Regressionsmodell zu erstellen.quelle
Ich gehe davon aus, dass Sie nicht auf R beschränkt sind, da dies ein Big-Data-Problem ist, das Sie wahrscheinlich nicht sein sollten. Sie können MLlib ausprobieren , die skalierbare Bibliothek für maschinelles Lernen von Apache Spark.
Apache Spark wiederum ist eine schnelle und allgemeine Engine für die speicherinterne Verarbeitung großer Datenmengen. Diese arbeiten mit einem Hadoop-Framework, das die verteilte Verarbeitung großer Datenmengen über Computercluster mithilfe einfacher Programmiermodelle ermöglicht. Es wurde entwickelt, um von einzelnen Servern auf Tausende von Computern zu skalieren, von denen jeder lokale Berechnungen und Speicher bietet.
Beachten Sie, dass "Tausende von Computern" optional (!) Ist. Sie können es auch auf Ihrem lokalen Arbeits- / Heim-Desktop einrichten.
Zurück zu MLlib: Die folgenden Algorithmen sind sofort einsatzbereit:
Wenn Sie regelmäßig mit Big Data arbeiten, müssen Sie möglicherweise eine Hadoop-Lösung verwenden.
quelle
Sie können Vowpal Wabbit: Vowpal Wabbit ausprobieren . Es funktioniert gut mit sehr großen Datenmengen und einer sehr großen Anzahl von Funktionen.
laut der Website:
quelle