Herausforderungen zwischen Industrie und Kaggle. Ist es wichtiger, mehr Beobachtungen zu sammeln und Zugang zu mehr Variablen zu haben als ausgefallene Modelle?


56

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?


4
Es hängt ganz davon ab, ob Sie einen nützlichen verallgemeinerbaren Ablauf wünschen, der schnell umgeschult werden kann (oder auf einen neuen Datensatz oder neue Funktionen ausgerichtet werden kann), oder ob Sie einfach diesen spezifischen Kaggle-Wettbewerb gewinnen (auf diesem bestimmten statischen Datensatz, mit Leckagemöglichkeiten, "magischen Funktionen" und alle). Für den ersteren ist ein Algorithmus, der die gleiche Ballpark-Genauigkeit bei viel geringerer Trainingszeit und bei kleineren Datenmengen erzielt, "besser". Stellen Sie sich vor, Kaggle würde jemals anfangen, übermäßige Anforderungen an Rechenleistung / Arbeitsspeicher oder Trainingszeit zu bestrafen, oder dies als Teil der Einreichungsbewertung berücksichtigen (ich schlage vor, dies sollte bereits geschehen).
SMCI

2
Aus "Deep Learning auf reale Probleme anwenden " von Rasmus Rothe: "[…] In realen Szenarien geht es weniger darum zu zeigen, dass Ihr neuer Algorithmus im Vergleich zu einer anderen Methode die Leistung um 1% verringert. Stattdessen geht es darum, ein robustes System zu bauen, das die geforderte Aufgabe mit ausreichender Genauigkeit löst. "
Beatngu13

Antworten:


77

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 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).


4
@bendl, YMMV bedeutet, dass Ihr Kilometerstand variieren kann . Die Aussage des Satzes davor kann unter verschiedenen Umständen mehr oder weniger zutreffen.
Orphevs

2
Ich arbeite auch im Einzelhandel und mache SKU / Location Level Forecasting für ~ Zeitreihen :-). Aber ich habe mich gefragt, ob das, was wir tun, als "Big Data" gilt oder nicht. Obwohl die Gesamtdatensätze im Big-Data-Bereich liegen, werden die Prognosemodelle in der Regel auf kleinere Datengruppierungen (auch nach Verwendung hierarchischer Prognosemethoden) und auf die Techniken angewendet, die für eine echte Big-Data-Verarbeitung erforderlich sind (z. B. MapReduce, Daten-Hashing usw.). .) sind nie gefragt. Amazon DeepAR scheint echtes Big Data zu sein, und ich vermute, dass es genauso viel Hype ist wie Wissenschaft. 106
Skander H.

2
Egal, Erfahrung nur im Klassenzimmer. Es gibt viele Praktiker in der Industrie, die hauptsächlich mit Kontexten mit hohem Signal-Rausch-Verhältnis wie der Bilderkennung vertraut sind und versuchen, um Himmels willen die gleichen Methoden auf verrauschte soziale Prozesse wie die Rekrutierung anzuwenden.
Dreistes Gleichgewicht

2
@Orphevs Mit anderen Worten, diese Aussage passt möglicherweise zu meiner Situation und lässt sich nicht gut verallgemeinern. : P
JAD

2
(+1) In Bezug auf das Problem der Datenbereinigung mit neuen Absolventen ist es auch erwähnenswert, dass es während meiner offiziellen Ausbildung leicht herauskam, dass die Datenbereinigung eine schlechte Sache war. Das heißt, die Datenbereinigung kann die Fehlerraten von Typ I stark beeinflussen (insbesondere, wenn der Bereinigungsprozess verzerrt ist), und so wurden wir über die Gefahren der Datenbereinigung unterrichtet. Diese Lektionen waren nicht falsch, aber ich glaube nicht, dass meine formale Ausbildung die Vorteile der Datenbereinigung hervorhob, insbesondere im Fall der Vorhersagemodellierung.
Cliff AB

42

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:

  1. Die Feature-Namen wurden künstlich gehasht, um ihre Bedeutung zu verbergen
  2. Der "Trainingssatz" war künstlich auf weniger Zeilen als Spalten beschränkt, so dass die Auswahl von Merkmalen, die Robustheit und die Regularisierungstechnik für den Erfolg unabdingbar waren.
  3. Das sogenannte "Test" -Set hat eine deutlich andere Verteilung als das Trainingsset und die beiden sind eindeutig keine Zufallsstichproben aus derselben Population.

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.


Kleinere Anmerkung, ich denke, Ihr Aufzählungspunkt # 2 fehlt das Ende des Satzes?
mbrig

20

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.


2
Richtig, es könnte auch sein, dass sich der Datenerfassungsprozess ständig weiterentwickelt. Dies würde bedeuten, dass die derzeit verwendeten Algorithmen veraltet sind (zusätzlich zu den von Ihnen erwähnten Engineering-Kosten oder der Schulungszeit). Daher wären einfachere, schnellere und flexiblere Algorithmen erforderlich.
Tom

4
Ich hörte einen der Hauptpunkte dieses Beitrags, der als "gute Variablenauswahl wird immer die gute Modellauswahl
übertreffen

14

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.


1
Guter Punkt. Die Interpretierbarkeit ist in meinen Anwendungen von enormer Bedeutung (Geschäftsleiter möchten verstehen, warum die Prognose so ist, wie sie ist), sodass schwer zu interpretierende Modelle ein Problem haben.
S. Kolassa - Wiedereinsetzung von Monica

Danke für die persönlichen Einblicke Stephan. Während ich dachte, dass die Interpretierbarkeit mit zunehmender Komplexität des Modells leidet oder verschwindet, dachte ich nicht an die Zeitbeschränkungen, die in einem Unternehmen sicherlich dringlicher sind. Die ausgefallene Modellierung weist wahrscheinlich das schlechteste Verhältnis von (gewonnener Genauigkeit) zu (aufgewendeter Zeit) auf.
Tom

8

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:

  1. Schnell zu trainieren
  2. Schnell vorherzusagen (Auch ist oft eine Geschäftsanforderung)
  3. Einfach zu interpretieren

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.


7

Hier ist etwas, das bei Kaggle nicht besonders auffällt: das

  • Weitere Variablen, die Sie in Ihrem Modell haben, und
  • je komplexer die Beziehung zwischen diesen Variablen und der Ausgabe ist,

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.


3

Eine kurze Antwort, ein Zitat, das ich aus Gary Kasparovs Buch Deep Thinking mag

Ein kluger Prozess schlägt überlegenes Wissen und überlegene Technologie

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.