Ich habe ein Problem mit großen Datenmengen (z. B. 50 Millionen Zeilen und 200 Spalten). Das Dataset besteht aus ungefähr 100 numerischen Spalten und 100 kategorialen Spalten sowie einer Antwortspalte, die ein Binärklassenproblem darstellt. Die Kardinalität jeder der kategorialen Spalten beträgt weniger als 50.
Ich möchte a priori wissen, ob ich Deep-Learning-Methoden oder Ensemble-Tree-basierte Methoden (z. B. Gradient Boosting, Adaboost oder Random Forest) wählen soll. Gibt es eine explorative Datenanalyse oder andere Techniken, die mir helfen können, mich für eine Methode gegenüber der anderen zu entscheiden?
Antworten:
Warum beschränken Sie sich auf diese beiden Ansätze? Weil sie cool sind? Ich würde immer mit einem einfachen linearen Klassifikator / Regressor beginnen. In diesem Fall also eine lineare SVM oder logistische Regression, vorzugsweise mit einer Algorithmusimplementierung, die aufgrund der Datengröße die Sparsamkeit ausnutzen kann. Es wird lange dauern, bis ein DL-Algorithmus für dieses Dataset ausgeführt ist. Normalerweise würde ich mich nur mit Spezialproblemen befassen, bei denen die Daten eine hierarchische Struktur aufweisen, z. B. Bilder oder Text. Es ist zu viel des Guten für viele einfachere Lernprobleme und es braucht viel Zeit und Fachwissen, um es zu lernen, und auch DL-Algorithmen sind sehr langsam zu trainieren. Nur weil Sie über 50 Millionen Zeilen verfügen, müssen Sie nicht den gesamten Datensatz verwenden, um gute Ergebnisse zu erzielen. Abhängig von den Daten, Mit einer Stichprobe von einigen 100.000 Zeilen oder einigen Millionen erhalten Sie möglicherweise gute Ergebnisse. Ich würde einfach mit einer kleinen Stichprobe und einem linearen Klassifikator beginnen und von dort aus komplizierter werden, wenn die Ergebnisse nicht zufriedenstellend sind. Zumindest auf diese Weise erhalten Sie eine Grundlinie. Wir haben oft einfache lineare Modelle gefunden, mit denen bei den meisten Aufgaben anspruchsvollere Modelle ausgeführt werden können. Sie möchten also immer dort beginnen.
quelle
Neben anderen Antworten (und einigen guten Links in den Kommentaren) hängt es davon ab, um welches Problem es sich handelt oder welche Art von Fragen Sie beantworten möchten. Da ich nur aufgrund meiner eigenen Erfahrung vorschlagen kann, können die möglichen Methoden im Fall einer Klassifizierungsaufgabe aufgrund der Klassenbalance im Datensatz stark eingeschränkt sein.
Sobald Sie ein größeres Ungleichgewicht als 1:10 erreichen, funktionieren die meisten Klassifizierungsmethoden nicht mehr. Ihnen bleiben Methoden, die auf zufälligen Gesamtstrukturen und möglicherweise neuronalen Netzen basieren (noch nicht ausprobiert). Ich arbeite mit der Klassenbalance im Bereich von 1: 500 bis 1: 1000 und habe festgestellt, dass weder Down- noch Upsampling funktionieren. Glücklicherweise besteht mein Datensatz aus "nur" 6-ml-Beobachtungen mit 200 Variablen und ich bin in der Lage, geboostete Bäume im gesamten Satz in angemessener Zeit auszuführen.
Um Ihre Frage direkt zu beantworten:
Sie sollten sich eine Reihe von Fragen überlegen, die Sie beantworten möchten, und im Falle einer Klassifizierung die Klassenbalancen der Zielvariablen überprüfen.
Sie sollten die Verteilung (nicht im mathematischen Sinne) fehlender Werte in all Ihren Daten überprüfen und dokumentieren, was Sie finden. Einige ML-Methoden eignen sich gut für fehlende Werte, andere dagegen nicht, und Sie müssen sich mit der Datenimputation befassen (die über eigene Regeln, Richtlinien und Probleme verfügt).
quelle
Aus meiner Sicht braucht man für 5 Millionen Instanzen viele Bäume, um eine gute Verallgemeinerung zu erhalten (ein gutes Modell im Laienbegriff). Wenn dies kein Problem ist, dann versuchen Sie es, auch die genaue Antwort hängt von der Art Ihres Problems ab. GBT ist eine gute Methode, insbesondere wenn Sie unterschiedliche Feature-Typen wie kategorial, numerisch usw. verwenden. Darüber hinaus muss im Vergleich zu neuronalen Netzen eine geringere Anzahl von Hyperparametern eingestellt werden. Daher ist es schneller, ein optimales Einstellungsmodell zu haben. Eine weitere Alternative ist das parallele Training. Mit einer guten CPU können Sie mehrere Bäume gleichzeitig trainieren. Wenn Sie mit den Ergebnissen nicht zufrieden sind, entscheiden Sie sich für Neuronale Netze, da dies bedeutet, dass Ihr Modell umfangreicher sein und Informationen höherer Ordnung anhand Ihrer Daten erhalten sollte. Das liegt an den NNs im Vergleich zu anderen Lernalgorithmen.
quelle
Nach dem, was @Simon bereits gesagt hat:
Für Ihr Problem scheint der Kompromiss zwischen Aufwand und Nutzen nicht zu Gunsten von Deep Learning zu sein. DL wäre ein Overkill
quelle
Wenn Sie über einen so großen Datenbestand verfügen, können Sie mit einer der statistischen und maschinellen Lernmodellierungstechniken spielen, und dies wird dringend empfohlen. Wie andere vorgeschlagen haben, würde ich auch empfehlen, ein paar Millionen Stichproben von Daten zu nehmen und damit zu spielen. Da es sich um ein Klassifizierungsproblem handelt, würde ich zunächst einfache Klassifizierungstechniken anwenden und später komplexere anwenden. Die logistische Regression ist anfangs großartig.
Ich wollte hinzufügen, dass auch generative Modelle ausprobiert werden müssen. Der Naive Bayes-Klassifikator ist einer der einfachsten Wahrscheinlichkeitsklassifikatoren und übertrifft bei vielen Aufgaben viele komplexe Methoden wie die Unterstützung von Vektormaschinen. Sie können sich diese einfache Implementierung von NB und diesen Link ansehen, um NB mit der logistischen Regression zu vergleichen.
Man kann einen Naive Bayes (NB) -Klassifikator als Basismodell erstellen und dann eine beliebige maschinelle Lernmethode wie SVM (Support Vector Machines) oder MLP (Multilayer Perceptrons) anwenden. Ein Nachteil hierbei ist, dass NB weniger rechenintensiv ist als MLP, sodass eine bessere Leistung von MLP gewünscht wird.
Um genau zu Ihrer Frage zu kommen: Deep Learning und Gradient Tree Boosting sind sehr leistungsfähige Techniken, die jede Art von Beziehung in den Daten modellieren können. Was aber, wenn in Ihrem Fall eine einfache logistische Regression oder NB die gewünschte Genauigkeit liefert? Daher ist es immer besser, zuerst die einfachen Techniken auszuprobieren und eine Grundleistung zu erzielen. Dann kann man sich für die komplexen Modelle entscheiden und mit der Grundlinie vergleichen.
quelle