Frage

Ich habe ein Big Data -Problem mit einem großen Datensatz (zum Beispiel 50 Millionen Zeilen und 200 Spalten). Der Datensatz besteht aus etwa 100 numerischen Spalten und 100 kategorialen Spalten und einer Antwortspalte, die ein Binärklassenproblem darstellt. Die Kardinalität der einzelnen kategorialen Spalten beträgt weniger als 50.

Ich möchte a priori wissen, ob ich mich für methodenbasierte Methoden basieren (z. Gibt es einige explorative Datenanalysen oder andere Techniken, mit denen ich mich für eine Methode über die andere entscheiden kann?

War es hilfreich?

Lösung

Warum beschränken Sie sich auf diese beiden Ansätze? Weil sie cool sind? Ich würde immer mit einem einfachen linearen Klassifizierer Regressor beginnen. In diesem Fall eine lineare SVM oder eine logistische Regression, vorzugsweise mit einer Algorithmus -Implementierung, die aufgrund der Größe der Daten die Sparsamkeit nutzen kann. Es wird lange dauern, einen DL -Algorithmus auf diesem Datensatz auszuführen, und ich würde normalerweise nur ein tiefes Lernen für spezialisierte Probleme versuchen, bei denen die Daten in den Daten wie Bilder oder Text eine hierarchische Struktur enthält. Es ist übertrieben für viele einfachere Lernprobleme und braucht viel Zeit und Fachwissen, um zu lernen, und auch DL -Algorithmen sind sehr langsam zu trainieren. Nur weil Sie 50 Mio. Zeilen haben, müssen Sie nicht den gesamten Datensatz verwenden, um gute Ergebnisse zu erzielen. Abhängig von den Daten können Sie mit einer Stichprobe von einigen 100.000 Zeilen oder einigen Millionen gute Ergebnisse erzielen. Ich würde einfach mit einer kleinen Probe und einem linearen Klassifikator anfangen und von dort aus komplizierter werden, wenn die Ergebnisse nicht zufriedenstellend sind. Zumindest so bekommen Sie eine Grundlinie. Wir haben oft einfache lineare Modelle gefunden, um anspruchsvollere Modelle bei den meisten Aufgaben auszuführen, sodass Sie immer dort beginnen möchten.

Andere Tipps

Zusätzlich zu anderen Antworten (und es gibt einen guten Link in den Kommentaren) hängt davon ab, was das Problem ist oder welche Arten von Fragen, die Sie beantworten möchten. Wie ich nur auf der Grundlage meiner eigenen Erfahrung vorschlagen kann, können die möglichen Methoden im Falle einer Klassifizierungsaufgabe aufgrund der Klassenausgleich im Datensatz stark eingeschränkt werden.

Sobald Sie zu einem Ungleichgewicht zwischen 1:10 Klassen gehen, hören die meisten Klassifizierungsmethoden einfach auf zu arbeiten. Sie haben Methoden, die auf zufälligen Wäldern und vielleicht noch nicht ausprobiert wurden). Ich arbeite mit der Klassenbilanz im Bereich von 1: 500 bis 1: 1000 und habe festgestellt, dass weder Down- noch Up-Sampling funktioniert. Glücklicherweise ist mein Datensatz "nur" 6mln -Beobachtungen von 200 Variablen, und ich kann in der angemessenen Zeit in den gesamten Satz gestiegene Bäume ausführen.

Um Ihre Frage direkt zu beantworten:

  • Sie sollten eine Reihe von Fragen stellen, die Sie beantworten möchten, und im Falle einer Klassifizierung die Klassenbilanzen der Zielvariablen überprüfen.

  • Sie sollten die Verteilung (nicht im mathematischen Sinne) der fehlenden Werte in all Ihren Daten überprüfen und dokumentieren, was Sie finden. Einige ML -Methoden sind mit fehlenden Werten in Ordnung, während andere nicht der Fall sind und Sie die Datenimputation untersuchen (die ihre eigenen Regeln und Richtlinien und Probleme haben).

Aus meiner Sicht benötigen Sie für 5 Millionen Fälle viele Bäume, um eine gute Verallgemeinerung zu erhalten (ein gutes Modell im Laienbegriff). Wenn dies kein Problem ist, dann entscheiden Sie sich, selbst die genaue Antwort stützt sich auf die Art Ihres Problems. GBT ist eine gute Methode, insbesondere wenn Sie gemischte Funktionstypen wie kategorisch, numerisch und so haben. Darüber hinaus hat es im Vergleich zu neuronalen Netzwerken eine geringere Anzahl von Hyperparametern, die abgestimmt sind. Daher ist es schneller, ein bestes Einstellungsmodell zu haben. Eine weitere Sache ist die Alternative des parallelen Trainings. Sie können mehrere Bäume gleichzeitig mit einer guten CPU trainieren. Wenn Sie mit den Ergebnissen nicht zufrieden sind, entscheiden Sie sich für neuronale Netze, da dies bedeutet, dass Ihr Modell umfangreicher sein sollte und über Ihre Daten Informationen höherer Ordnung lernen sollte. Das ist die Schuld an NNS im Vergleich zu anderen Lernalgorithmen.

Nach dem, was @simon bereits gesagt hat:

  1. Deep Learning -Ansätze waren besonders nützlich, um Probleme in Bezug auf Seh-, Sprach- und Sprachmodellierung zu lösen, bei denen Feature Engineering schwierig ist und viel Mühe unternimmt.
  2. Für Ihre Anwendung, die nicht der Fall zu sein scheint, da Sie genau definierte Funktionen haben und nur Interaktionen usw. Feature usw. benötigen.
  3. Angesichts der Tatsache, dass Deep Learning-Modelle derzeit viele Computerressourcen und Wissenschaftler benötigen, um Dinge zu kodieren, würde ich empfehlen, mich für einen nicht tiefen Lernansatz zu entscheiden.

Für Ihr Problem die Aufwand gegen Nutzen Kompromiss scheint nicht zugunsten von Deep Learning zu sein. DL wäre ein Overkill

Wenn Sie einen so großen Datensatz haben, können Sie mit einer der statistischen und maschinellen Lernmodellierungstechniken spielen, und das wird sehr gefördert. Wie andere vorgeschlagen haben, würde ich auch empfehlen, ein paar Millionen zufällige Stichproben aus Daten zu nehmen und damit zu spielen. Da dies ein Klassifizierungsproblem ist, würde ich zuerst einfache Klassifizierungstechniken befolgen und später mit komplexeren. Die logistische Regression ist zunächst großartig.

Ich wollte das hinzufügen Generative Modelle muss auch ausprobiert werden. Naiver Bayes -Klassifikator ist einer der einfachsten probabilistischen Klassifizierer und übertrifft viele komplexe Methoden wie die Unterstützung von Vektormaschinen bei vielen Aufgaben. Sie können sich ansehen Dies einfache Implementierung von NB und A Dies Link zum Vergleich von NB mit logistischer Regression.

Man kann einen naiven Bayes (NB) -Klassifikator als Basismodell erstellen und dann für jede maschinelle Lerntechnik wie Support Vector Machines (SVM) oder Multilayer Perceptrons (MLP) entscheiden. Ein Kompromiss hier ist, dass NB rechnerisch günstiger ist als MLP, sodass eine bessere Leistung von MLP erwünscht ist.

Zu Ihrer genauen Abfrage kommen: Deep Learning und Gradient Tree Boosting sind sehr leistungsstarke Techniken, die jede Art von Beziehung zu den Daten modellieren können. Aber was ist, wenn in Ihrem Fall eine einfache logistische Regression oder NB die gewünschte Genauigkeit angibt. Es ist also immer besser, zuerst die einfachen Techniken auszuprobieren und eine Basisleistung zu erzielen. Dann kann man sich für die komplexen Modelle entscheiden und sich mit der Grundlinie vergleichen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit datascience.stackexchange
scroll top