Ich hoffe der Titel ist selbsterklärend. In Kaggle verwenden die meisten Gewinner das Stapeln mit manchmal Hunderten von Basismodellen, um ein paar Prozent mehr MSE und Genauigkeit zu erzielen. Generell ist es Ihrer Erfahrung nach wichtig, ausgefallene Modelle wie das Stapeln und nicht nur mehr Daten und Features zu erfassen für die Daten?
56
Antworten:
Als Hintergrund mache ich seit 12 Jahren Prognosen für Store Times-Zeitreihen für Einzelhandelsverkäufe. Zehntausende Zeitreihen in Hunderten oder Tausenden von Geschäften. Ich sage gerne, dass wir Big Data bereits vor der Verbreitung des Begriffs betreiben.×
Ich habe immer wieder festgestellt, dass es am wichtigsten ist, Ihre Daten zu verstehen . Wenn Sie wichtige Fahrer wie Ostern oder Werbeaktionen nicht verstehen, sind Sie zum Scheitern verurteilt. Oftmals kommt es darauf an , das spezifische Geschäft so gut zu verstehen , dass die richtigen Fragen gestellt und bekannte Unbekannte von unbekannten Unbekannten erzählt werden .
Sobald Sie Ihre Daten verstanden haben, müssen Sie arbeiten, um saubere Daten zu erhalten. Ich habe eine ganze Reihe von Junioren und Praktikanten beaufsichtigt, und das einzige, was sie in all ihren Statistik- und Data Science-Kursen noch nie erlebt haben, war, wie viel Blödsinn in Ihren Daten stecken kann. Dann müssen Sie entweder zur Quelle zurückkehren und versuchen, gute Daten zu erhalten, oder versuchen, sie zu bereinigen, oder auch nur ein paar Dinge wegzuwerfen. Das Ändern eines laufenden Systems, um bessere Daten zu erhalten, kann überraschend schwierig sein.
Sobald Sie Ihre Daten verstanden haben und tatsächlich einigermaßen saubere Daten haben, können Sie damit experimentieren. Leider habe ich zu diesem Zeitpunkt oft zu wenig Zeit und Ressourcen.
Ich persönlich bin ein großer Fan von Modellkombinationen ("Stapeln"), zumindest im abstrakten Sinne , weniger von ausgefallenem Feature-Engineering, das oft die Grenze zu übermäßigem Terrain überschreitet - und selbst wenn Ihr schickeres Modell im Durchschnitt etwas besser abschneidet. Man findet oft, dass sich die wirklich schlechten Vorhersagen mit einem komplexeren Modell verschlechtern. Dies ist ein Dealbreaker in meiner Branche. Eine einzige wirklich schlechte Prognose kann das Vertrauen in das gesamte System ziemlich vollständig zerstören, daher ist die Robustheit in meiner Prioritätenliste extrem hoch. Ihr Kilometerstand kann variieren.
Nach meiner Erfahrung kann eine Modellkombination die Genauigkeit verbessern. Die wirklich großen Gewinne werden jedoch mit den ersten beiden Schritten erzielt: Verstehen Ihrer Daten und Bereinigen (oder erstens Bereinigen von Daten).
quelle
Ich kann natürlich nicht für die gesamte Branche sprechen, aber ich arbeite in der Industrie und habe an Kaggle teilgenommen, damit ich meine POV teilen kann.
Erstens haben Sie zu Recht den Verdacht, dass Kaggle nicht genau dem entspricht, was die Leute in der Industrie tun. Es ist ein Spiel und unterliegt der Spielkunst, mit vielen verrückten Einschränkungen. Zum Beispiel im aktuell laufenden Santander- Wettbewerb:
Wenn mir jemand bei der Arbeit einen Datensatz wie diesen geben würde, würde ich sofort anbieten, mit ihm am Feature-Engineering zu arbeiten, damit wir nützliche Features erhalten. Ich würde vorschlagen, dass wir Domänenwissen verwenden, um über wahrscheinliche Interaktionsterme, Schwellenwerte, Strategien für die Codierung kategorialer Variablen usw. zu entscheiden. Eine solche Herangehensweise an das Problem wäre eindeutig produktiver als der Versuch, eine Bedeutung aus einer Auslassdatei zu extrahieren, die von einem Datenbankingenieur mit der Nummer 0 erstellt wurde Ausbildung in ML.
Wenn Sie beispielsweise erfahren, dass eine bestimmte numerische Spalte überhaupt keine numerische Spalte, sondern eine Postleitzahl ist, können Sie Daten aus Datenquellen von Drittanbietern wie der US-Volkszählung abrufen, um Ihre Daten zu erweitern. Oder wenn Sie einen Termin haben, geben Sie möglicherweise den Schlusskurs des S & P 500 für diesen Tag an. Solche externen Erweiterungsstrategien erfordern detaillierte Kenntnisse des spezifischen Datensatzes und signifikante Domänenkenntnisse, haben jedoch gewöhnlich die viel größeren Gewinne als reine algorithmische Verbesserungen.
Der erste große Unterschied zwischen der Industrie und Kaggle besteht darin, dass in der Industrie Features (im Sinne von Eingabedaten) verhandelbar sind.
Eine zweite Klasse von Unterschieden ist die Leistung. Häufig werden Modelle auf zwei Arten für die Produktion bereitgestellt: 1) Modellvorhersagen werden für jede Zeile in einer sehr großen Datenbanktabelle vorberechnet, oder 2) eine Anwendung oder Website übergibt dem Modell eine einzelne Datenzeile und brauche eine Vorhersage in Echtzeit zurückgegeben. Beide Anwendungsfälle erfordern eine gute Leistung. Aus diesen Gründen sieht man nicht oft Modelle, die sich nur langsam vorhersagen lassen oder die viel Speicher belegen, wie z. B. K-Nearest-Neighbours oder Extra Random Forests. Im Gegensatz dazu kann eine logistische Regression oder ein neuronales Netzwerk eine Reihe von Datensätzen mit wenigen Matrixmultiplikationen erzielen, und die Matrixmultiplikation kann mit den richtigen Bibliotheken in hohem Maße optimiert werden .Auch wenn ich möglicherweise +0.001 AUC erzielen könnte, wenn ich ein weiteres nicht parametrisches Modell aufbaue, würde ich dies nicht tun, da der Vorhersagedurchsatz und die Latenz zu stark sinken würden.
Dies hat auch eine Zuverlässigkeitsdimension: Wenn Sie vier verschiedene hochmoderne Bibliotheken von Drittanbietern stapeln , z. B. LightGBM , xgboost , catboost und Tensorflow ( natürlich auf GPUs ), können Sie die MSE um 0,01% reduzieren gewinnt Kaggle-Wettbewerbe, aber es sind vier verschiedene Bibliotheken zum Installieren, Bereitstellen und Debuggen, wenn etwas schief geht. Es ist großartig, wenn Sie all das auf Ihrem Laptop zum Laufen bringen können, aber es ist eine ganz andere Geschichte, wenn es in einem Docker-Container läuft, der unter AWS läuft. Die meisten Unternehmen möchten kein kleines Entwicklerteam stellen, nur um diese Art von Bereitstellungsproblemen zu lösen.
Das heißt, das Stapeln an sich ist nicht unbedingt eine große Sache. In der Tat ist es eine gute Möglichkeit, ein paar verschiedene Modelle zu stapeln, die alle gleich gut funktionieren, aber sehr unterschiedliche Entscheidungsgrenzen haben. Werfen Sie einfach nicht so viele Küchenspülen in Ihr heterogenes Ensemble, dass Sie anfangen, Probleme mit der Bereitstellung zu haben.
quelle
Nach meiner Erfahrung sind mehr Daten und mehr Funktionen wichtiger als das schickste, am meisten gestapelte und am besten abgestimmte Modell, das man sich vorstellen kann.
Schauen Sie sich die Online-Werbewettbewerbe an, die stattgefunden haben. Erfolgreiche Modelle waren so komplex, dass die Schulung eine ganze Woche in Anspruch nahm (bei einem im Vergleich zum Industriestandard sehr kleinen Datensatz). Darüber hinaus ist die Vorhersage in einem gestapelten Modell länger als in einem einfachen linearen Modell. Denken Sie zum selben Thema daran, dass Netflix seinen 1-Millionen-Dollar-Algorithmus aufgrund von Engineering-Kosten nie verwendet hat .
Ich würde sagen, dass Online-Data-Science-Wettbewerbe eine gute Möglichkeit für ein Unternehmen sind, anhand der gesammelten Daten (zu einem bestimmten Zeitpunkt) zu wissen, "welche Genauigkeit (oder Leistungsmetrik) am höchsten ist". Beachten Sie, dass dies tatsächlich ein schweres Problem ist, das gerade gelöst wird! In der Industrie raten Fachkenntnisse, Hardware- und Geschäftsbeschränkungen jedoch in der Regel von der Verwendung von "Fancy Modeling" ab.
quelle
Das Stapeln erhöht die Komplexität erheblich und verringert die Interpretierbarkeit. Die Gewinne sind normalerweise relativ gering, um dies zu rechtfertigen. Während Ensembling wahrscheinlich weit verbreitet ist (z. B. XGBoost), denke ich, dass Stacking in der Industrie relativ selten ist.
quelle
Nach meiner Erfahrung ist das Sammeln guter Daten und Funktionen viel wichtiger.
Die Kunden, mit denen wir gearbeitet haben, haben normalerweise viele Daten und nicht alle in einem Format, das problemlos exportiert oder bearbeitet werden kann. Der erste Datenstapel ist normalerweise nicht sehr nützlich. Es ist unsere Aufgabe, gemeinsam mit dem Kunden herauszufinden, welche Daten wir benötigen, um das Modell nützlicher zu machen. Dies ist ein sehr iterativer Prozess.
Es wird viel experimentiert und wir brauchen Modelle, die:
Punkt 3) ist besonders wichtig, da Modelle, die leicht zu interpretieren sind, dem Kunden leichter mitgeteilt werden können und es einfacher ist, zu erkennen, wenn wir etwas falsch gemacht haben.
quelle
Hier ist etwas, das bei Kaggle nicht besonders auffällt: das
das mehr Risiko werden Sie die Lebensdauer dieses Modells Gesicht über. In Kaggle-Wettbewerben ist die Zeit normalerweise entweder eingefroren, oder es gibt ein kurzes Zeitfenster für die Zukunft, in dem die Test-Set-Werte eingegeben werden. In der Industrie läuft dieses Modell möglicherweise über Jahre. Und alles, was es braucht, ist, dass eine Variable verrückt wird, damit Ihr gesamtes Modell zur Hölle fährt, selbst wenn es fehlerfrei gebaut wurde. Ich verstehe, niemand möchte einen Wettbewerb sehen, bei dem die Konkurrenten die Komplexität des Modells sorgfältig gegen das Risiko abwägen, aber da draußen in einem Job leiden Ihr Unternehmen und Ihre Lebensqualität, wenn bei einem Modell, für das Sie verantwortlich sind, etwas schief geht. Selbst extrem kluge Leute sind nicht immun. Nehmen Sie zum Beispiel den Fehler bei der Vorhersage von Google Grippe-Trends . Die Welt veränderte sich und sie sahen es nicht kommen.
Auf die Frage von OP: „ Wie wichtig ist Ihrer Erfahrung nach eine ausgefallene Modellierung wie das Stapeln im Vergleich zum einfachen Sammeln von mehr Daten und mehr Funktionen für die Daten? “ Nun, ich bin offiziell alt, aber meine Antwort lautet, dass, es sei denn, Sie haben eine Sehr robuste Modellierungsinfrastruktur. Es ist besser, einfache Modelle mit einem minimalen Satz von Variablen zu haben, bei denen das Verhältnis von Eingabe zu Ausgabe relativ einfach ist. Wenn eine Variable Ihre Verlustmetrik kaum verbessert, lassen Sie sie weg. Denken Sie daran, dass es ein Job ist. Holen Sie sich Ihre Tritte außerhalb der Arbeit an Kaggle-Wettbewerben, bei denen es den Anreiz gibt, groß rauszukommen oder nach Hause zu gehen.
Eine Ausnahme wäre, wenn die Geschäftslage eine bestimmte Modellleistung erfordert, z. B. wenn Ihr Unternehmen die Leistung eines Konkurrenten erreichen oder übertreffen muss, um einen Vorteil zu erzielen (wahrscheinlich im Marketing). Wenn jedoch eine lineare Beziehung zwischen der Modellleistung und dem Geschäftsgewinn besteht, rechtfertigt die zunehmende Komplexität normalerweise nicht den finanziellen Gewinn (siehe " Netflix hat seinen 1-Millionen-Dollar-Algorithmus aufgrund von Engineering-Kosten nie verwendet " - entschuldigt sich bei @ RUser4512, dass Sie sich darauf berufen haben Artikel). In einem Kaggle-Wettbewerb kann dieser zusätzliche Gewinn Sie jedoch um Hunderte von Rängen erhöhen, wenn Sie an Lösungen in der Nähe vorbeikommen.
quelle
Eine kurze Antwort, ein Zitat, das ich aus Gary Kasparovs Buch Deep Thinking mag
Ich arbeite hauptsächlich mit Finanzdaten aus Zeitreihen und dem Prozess, bei dem Daten gesammelt, bereinigt, verarbeitet und dann mit den Problembesitzern zusammengearbeitet werden, um herauszufinden, was sie tatsächlich tun möchten, und um dann Features und Modelle zu erstellen, mit denen sie sich befassen das Problem und schließlich den Prozess nachträglich zu untersuchen, um für das nächste Mal zu verbessern.
Dieser ganze Prozess ist größer als die Summe seiner Teile. Ich neige dazu, mit einer linearen / logistischen Regression eine „akzeptable“ Generalisierungsleistung zu erzielen und mit Domain-Experten zu sprechen, um Features zu generieren, viel mehr Zeit, als Zeit damit zu verbringen, mein Modell an die Daten anzupassen, die ich habe.
quelle