Large Hadron Collider und Odnoklassniki

Wir setzen das Thema der Wettbewerbe für maschinelles Lernen auf Habré fort und möchten den Lesern zwei weitere Plattformen vorstellen. Sie sind sicherlich nicht so riesig wie Kaggle, aber sie verdienen definitiv Aufmerksamkeit.

Large Hadron Collider und Odnoklassniki

Persönlich mag ich Kaggle aus mehreren Gründen nicht besonders:

  • Erstens dauern die Wettbewerbe dort oft mehrere Monate und die aktive Teilnahme erfordert viel Aufwand.
  • zweitens öffentliche Kernel (öffentliche Lösungen). Kaggle-Anhänger raten dazu, sie mit der Gelassenheit tibetischer Mönche zu behandeln, aber in Wirklichkeit ist es ziemlich schade, wenn etwas, auf das man ein oder zwei Monate lang hingearbeitet hat, plötzlich für alle auf dem Silbertablett liegt.

Glücklicherweise finden auf anderen Plattformen Wettbewerbe für maschinelles Lernen statt, und einige dieser Wettbewerbe werden wir besprechen.

IDAO SNA Hackathon 2019
Amtssprache: Englisch,
Veranstalter: Yandex, Sberbank, HSE
Offizielle russische Sprache,
Veranstalter: Mail.ru Group
Online-Runde: 15. Januar – 11. Februar 2019;
Finale vor Ort: 4.–6. April 2019
online - vom 7. Februar bis 15. März;
offline - vom 30. März bis 1. April.
Bestimmen Sie anhand eines bestimmten Datensatzes über ein Teilchen im Large Hadron Collider (Flugbahn, Impuls und andere recht komplexe physikalische Parameter), ob es sich um ein Myon handelt oder nicht
Aus dieser Aussage wurden 2 Aufgaben identifiziert:
— in einem mussten Sie nur Ihre Vorhersage senden,
- und andererseits den vollständigen Code und das Modell für die Vorhersage, und die Ausführung unterlag ziemlich strengen Einschränkungen hinsichtlich Laufzeit und Speichernutzung
Für den SNA-Hackathon-Wettbewerb wurden Protokolle der Inhaltsanzeigen von offenen Gruppen in Benutzer-Newsfeeds für Februar bis März 2018 gesammelt. Das Testset enthält die letzten anderthalb Märzwochen. Jeder Eintrag im Protokoll enthält Informationen darüber, was wem gezeigt wurde und wie der Benutzer auf diesen Inhalt reagiert hat: ihn bewertet, kommentiert, ignoriert oder aus dem Feed ausgeblendet.
Der Kern der Aufgaben des SNA-Hackathons besteht darin, jeden Benutzer des sozialen Netzwerks Odnoklassniki in seinem Feed zu bewerten und die Beiträge, die eine „Klasse“ erhalten, so weit wie möglich anzuheben.
In der Online-Phase wurde die Aufgabe in drei Teile unterteilt:
1. Ordnen Sie Beiträge nach verschiedenen Merkmalen der Zusammenarbeit
2. Ordnen Sie Beiträge basierend auf den darin enthaltenen Bildern
3. Ordnen Sie Beiträge nach dem Text, den sie enthalten
Komplexe benutzerdefinierte Metrik, etwa ROC-AUC Durchschnittlicher ROC-AUC pro Benutzer
Preise für die erste Etappe: T-Shirts für N Plätze, Zugang zur zweiten Etappe, wo Unterkunft und Verpflegung während des Wettbewerbs bezahlt wurden
Zweite Phase - ??? (Aus bestimmten Gründen war ich bei der Preisverleihung nicht anwesend und konnte am Ende nicht erfahren, was die Preise waren). Sie versprachen allen Mitgliedern des Gewinnerteams Laptops
Preise für die erste Etappe – T-Shirts für die 100 besten Teilnehmer, Eintritt in die zweite Etappe, wo die Reise nach Moskau, Unterkunft und Verpflegung während des Wettbewerbs bezahlt wurden. Gegen Ende der ersten Phase wurden außerdem Preise für die besten drei Aufgaben der ersten Phase bekannt gegeben: Jeder gewann eine RTX 3 TI-Grafikkarte!
Die zweite Phase war eine Teamphase, die Teams bestanden aus 2 bis 5 Personen, Preise:
1. Platz - 300 Rubel
2. Platz - 200 Rubel
3. Platz - 100 Rubel
Jurypreis - 100 Rubel
Offizielle Telegram-Gruppe, ~190 Teilnehmer, Kommunikation auf Englisch, Fragen mussten mehrere Tage auf eine Antwort warten Offizielle Gruppe im Telegramm, ~1500 Teilnehmer, aktive Diskussion der Aufgaben zwischen Teilnehmern und Organisatoren
Die Organisatoren stellten zwei grundlegende Lösungen zur Verfügung: einfache und fortgeschrittene. Simple benötigte weniger als 16 GB RAM und der erweiterte Speicher passte nicht in 16. Gleichzeitig konnten die Teilnehmer mit Blick auf die Zukunft die fortschrittliche Lösung nicht wesentlich übertreffen. Es gab keine Schwierigkeiten bei der Einführung dieser Lösungen. Es ist zu beachten, dass es im erweiterten Beispiel einen Kommentar mit einem Hinweis darauf gab, wo mit der Verbesserung der Lösung begonnen werden sollte. Für jede Aufgabe wurden grundlegende, primitive Lösungen bereitgestellt, die von den Teilnehmern problemlos übertroffen wurden. Zu Beginn des Wettbewerbs stießen die Teilnehmer auf mehrere Schwierigkeiten: Erstens wurden die Daten im Apache Parquet-Format bereitgestellt und nicht alle Kombinationen von Python und dem Parquet-Paket funktionierten fehlerfrei. Die zweite Schwierigkeit bestand darin, Bilder aus der Mail-Cloud herunterzuladen; derzeit gibt es keine einfache Möglichkeit, eine große Datenmenge auf einmal herunterzuladen. Infolgedessen verzögerten diese Probleme die Teilnehmer um einige Tage.

IDAO. Erste Stufe

Die Aufgabe bestand darin, Myon-/Nicht-Myon-Partikel nach ihren Eigenschaften zu klassifizieren. Das Hauptmerkmal dieser Aufgabe war das Vorhandensein einer Gewichtsspalte in den Trainingsdaten, was die Organisatoren selbst als Vertrauen in die Antwort für diese Zeile interpretierten. Das Problem bestand darin, dass etliche Zeilen negative Gewichtungen enthielten.

Large Hadron Collider und Odnoklassniki

Nachdem wir ein paar Minuten über die Linie mit dem Hinweis nachgedacht hatten (der Hinweis machte lediglich auf dieses Merkmal der Gewichtsspalte aufmerksam) und dieses Diagramm erstellt hatten, entschieden wir uns, drei Optionen zu prüfen:

1) Umkehren des Ziels von Linien mit negativer Gewichtung (und entsprechender Gewichtung)
2) Verschieben Sie die Gewichte auf den Minimalwert, sodass sie bei 0 beginnen
3) Verwenden Sie keine Saitengewichte

Die dritte Option erwies sich als die schlechteste, aber die ersten beiden verbesserten das Ergebnis, die beste war Option Nr. 1, die uns in der ersten Aufgabe sofort auf den aktuellen zweiten Platz und in der zweiten auf den ersten Platz brachte.
Large Hadron Collider und Odnoklassniki
Unser nächster Schritt bestand darin, die Daten auf fehlende Werte zu überprüfen. Die Organisatoren gaben uns bereits gekürzte Daten, bei denen einige Werte fehlten, und diese wurden durch -9999 ersetzt.

Wir haben fehlende Werte in den Spalten MatchedHit_{X,Y,Z}[N] und MatchedHit_D{X,Y,Z}[N] gefunden, und zwar nur, wenn N=2 oder 3. Soweit wir wissen, war dies bei einigen Partikeln nicht der Fall passiert alle 4 Detektoren und stoppt entweder auf der 3. oder 4. Platte. Die Daten enthielten auch Lextra_{X,Y}[N]-Spalten, die offenbar dasselbe beschreiben wie MatchedHit_{X,Y,Z}[N], jedoch unter Verwendung einer Art Extrapolation. Diese dürftigen Vermutungen legten nahe, dass Lextra_{X,Y}[N] die fehlenden Werte in MatchedHit_{X,Y,Z}[N] ersetzen könnte (nur für X- und Y-Koordinaten). MatchedHit_Z[N] war gut mit dem Median gefüllt. Diese Manipulationen ermöglichten es uns, in beiden Aufgaben den 1. Zwischenplatz zu erreichen.

Large Hadron Collider und Odnoklassniki

Wenn man bedenkt, dass sie nichts dafür gegeben haben, dass sie die erste Etappe gewonnen haben, hätten wir dort aufhören können, aber wir haben weitergemacht, einige schöne Bilder gezeichnet und uns neue Features ausgedacht.

Large Hadron Collider und Odnoklassniki

Wir haben beispielsweise herausgefunden, dass wir, wenn wir die Schnittpunkte eines Teilchens mit jeder der vier Detektorplatten grafisch darstellen, erkennen können, dass die Punkte auf jeder der Platten in 5 Rechtecke mit einem Seitenverhältnis von 4 zu 5 gruppiert sind und bei zentriert sind der Punkt (0,0) und im ersten Rechteck gibt es keine Punkte.

Plattennummer / Rechteckabmessungen 1 2 3 4 5
Platte 1 500 × 625 1000 × 1250 2000 × 2500 4000 × 5000 8000 × 10000
Platte 2 520 × 650 1040 × 1300 2080 × 2600 4160 × 5200 8320 × 10400
Platte 3 560 × 700 1120 × 1400 2240 × 2800 4480 × 5600 8960 × 11200
Platte 4 600 × 750 1200 × 1500 2400 × 3000 4800 × 6000 9600 × 12000

Nachdem wir diese Abmessungen ermittelt hatten, fügten wir für jedes Partikel vier neue kategoriale Merkmale hinzu – die Nummer des Rechtecks, in dem es jede Platte schneidet.

Large Hadron Collider und Odnoklassniki

Wir bemerkten auch, dass die Partikel von der Mitte aus zu den Seiten zu streuen schienen, und es entstand die Idee, die „Qualität“ dieser Streuung irgendwie zu bewerten. Im Idealfall wäre es wahrscheinlich möglich, je nach Startpunkt eine Art „ideale“ Parabel zu finden und die Abweichung davon abzuschätzen, wir haben uns jedoch auf die „ideale“ Gerade beschränkt. Nachdem wir für jeden Eintrittspunkt solche idealen Geraden konstruiert hatten, konnten wir die Standardabweichung der Flugbahn jedes Partikels von dieser Geraden berechnen. Da die durchschnittliche Abweichung für Ziel = 1 152 und für Ziel = 0 390 betrug, haben wir dieses Merkmal vorläufig als gut bewertet. Und tatsächlich hat es dieses Feature auf Anhieb an die Spitze der nützlichsten geschafft.

Wir waren begeistert und haben die Abweichung aller 4 Schnittpunkte für jedes Teilchen von der idealen Geraden als weitere 4 Features hinzugefügt (und das hat auch gut funktioniert).

Links zu wissenschaftlichen Artikeln zum Thema des Wettbewerbs, die uns von den Organisatoren zur Verfügung gestellt wurden, ließen vermuten, dass wir bei weitem nicht die Ersten sind, die dieses Problem lösen, und dass es möglicherweise eine Art spezielle Software gibt. Nachdem wir auf Github ein Repository entdeckt hatten, in dem die Methoden IsMuonSimple, IsMuon, IsMuonLoose implementiert waren, haben wir sie mit geringfügigen Änderungen auf unsere Website übertragen. Die Methoden selbst waren sehr einfach: Wenn die Energie beispielsweise einen bestimmten Schwellenwert unterschreitet, handelt es sich nicht um ein Myon, andernfalls um ein Myon. Solche einfachen Funktionen konnten bei Verwendung der Gradientenverstärkung offensichtlich keine Erhöhung bewirken, daher haben wir dem Schwellenwert einen weiteren signifikanten „Abstand“ hinzugefügt. Auch diese Funktionen wurden leicht verbessert. Vielleicht war es durch eine gründlichere Analyse bestehender Methoden möglich, stärkere Methoden zu finden und sie den Zeichen hinzuzufügen.

Am Ende des Wettbewerbs haben wir die „schnelle“ Lösung für das zweite Problem leicht angepasst; am Ende unterschied sie sich in folgenden Punkten von der Grundlinie:

  1. In Zeilen mit negativem Gewicht wurde das Ziel invertiert
  2. Fehlende Werte in MatchedHit_{X,Y,Z}[N] ausgefüllt
  3. Tiefe auf 7 reduziert
  4. Reduzierte Lernrate auf 0.1 (vorher 0.19)

Infolgedessen haben wir weitere Funktionen ausprobiert (nicht sehr erfolgreich), Parameter ausgewählt und Catboost, LightGBM und XGBoost trainiert, verschiedene Mischungen von Vorhersagen ausprobiert und vor dem Öffnen des Private die zweite Aufgabe souverän gewonnen, und bei der ersten waren wir unter den Führer.

Nach der Eröffnung des Privaten lagen wir bei der ersten Aufgabe auf dem 10. Platz und bei der zweiten auf dem 1. Platz. Alle Anführer gerieten durcheinander und die Geschwindigkeit im privaten Bereich war höher als auf dem Libboard. Es scheint, dass die Daten schlecht geschichtet waren (oder es gab beispielsweise keine Zeilen mit negativen Gewichtungen im privaten Bereich), und das war etwas frustrierend.

SNA Hackathon 2019 – Texte. Erste Stufe

Die Aufgabe bestand darin, Benutzerbeiträge im sozialen Netzwerk Odnoklassniki anhand des darin enthaltenen Textes zu bewerten. Zusätzlich zum Text gab es noch einige weitere Merkmale des Beitrags (Sprache, Eigentümer, Datum und Uhrzeit der Erstellung, Datum und Uhrzeit der Anzeige). ).

Als klassische Ansätze für die Arbeit mit Text möchte ich zwei Optionen hervorheben:

  1. Ordnen Sie jedes Wort einem n-dimensionalen Vektorraum zu, so dass ähnliche Wörter ähnliche Vektoren haben (weiterlesen in unser Artikel), dann entweder das durchschnittliche Wort für den Text finden oder Mechanismen verwenden, die die relative Position von Wörtern berücksichtigen (CNN, LSTM/GRU).
  2. Verwendung von Modellen, die sofort mit ganzen Sätzen arbeiten können. Zum Beispiel Bert. Theoretisch sollte dieser Ansatz besser funktionieren.

Da dies meine erste Erfahrung mit Texten war, wäre es falsch, es jemandem beizubringen, also werde ich es mir selbst beibringen. Das sind die Tipps, die ich mir zu Beginn des Wettbewerbs geben würde:

  1. Schauen Sie sich die Daten an, bevor Sie losrennen, um etwas zu lehren! Zusätzlich zum Text selbst verfügten die Daten über mehrere Spalten, aus denen man viel mehr herausholen konnte als ich. Am einfachsten ist es, für einige Spalten eine mittlere Zielkodierung vorzunehmen.
  2. Lernen Sie nicht aus allen Daten! Es gab viele Daten (ca. 17 Millionen Zeilen) und es war absolut nicht notwendig, alle zum Testen von Hypothesen zu verwenden. Das Training und die Vorverarbeitung verliefen ziemlich langsam, und ich hätte natürlich Zeit gehabt, interessantere Hypothesen zu testen.
  3. <Kontroverser Rat> Sie müssen nicht nach einem Killermodell suchen. Ich habe viel Zeit damit verbracht, Elmo und Bert herauszufinden, in der Hoffnung, dass sie mich sofort an eine hohe Stelle bringen würden, und habe daher vorab trainierte FastText-Einbettungen für die russische Sprache verwendet. Mit Elmo konnte ich keine bessere Geschwindigkeit erreichen und ich hatte immer noch keine Zeit, es mit Bert herauszufinden.
  4. <Kontroverser Rat> Sie müssen nicht nach einem Killer-Feature suchen. Bei der Betrachtung der Daten ist mir aufgefallen, dass rund 1 Prozent der Texte tatsächlich keinen Text enthalten! Aber es gab Links zu einigen Ressourcen, und ich habe einen einfachen Parser geschrieben, der die Site öffnete und den Titel und die Beschreibung herauszog. Es schien eine gute Idee zu sein, aber dann ließ ich mich hinreißen und beschloss, alle Links für alle Texte zu analysieren, und verlor wieder viel Zeit. All dies führte nicht zu einer wesentlichen Verbesserung des Endergebnisses (obwohl ich zum Beispiel Stemming herausgefunden habe).
  5. Klassische Funktionen funktionieren. Wir googeln zum Beispiel „Textfunktionen kaggle“, lesen und fügen alles hinzu. TF-IDF brachte eine Verbesserung, ebenso wie statistische Merkmale wie Textlänge, Wörter und die Anzahl der Satzzeichen.
  6. Wenn DateTime-Spalten vorhanden sind, lohnt es sich, diese in mehrere separate Funktionen (Stunden, Wochentage usw.) zu analysieren. Welche Merkmale hervorgehoben werden sollten, sollte anhand von Grafiken/einigen Metriken analysiert werden. Hier habe ich aus einer Laune heraus alles richtig gemacht und die notwendigen Features hervorgehoben, aber eine normale Analyse hätte nicht geschadet (wie wir es zum Beispiel beim Finale gemacht haben).

Large Hadron Collider und Odnoklassniki

Als Ergebnis des Wettbewerbs habe ich ein Keras-Modell mit Wortfaltung und ein weiteres auf Basis von LSTM und GRU trainiert. Beide verwendeten vorab trainierte FastText-Einbettungen für die russische Sprache (ich habe eine Reihe anderer Einbettungen ausprobiert, aber diese funktionierten am besten). Nachdem ich die Vorhersagen gemittelt hatte, belegte ich den 7. Platz unter 76 Teilnehmern.

Nach der ersten Phase wurde es veröffentlicht Artikel von Nikolai Anokhin, der den zweiten Platz belegte (er nahm außerhalb des Wettbewerbs teil), und seine Lösung wiederholte bis zu einem gewissen Grad meine Lösung, kam aber aufgrund des Abfrage-Schlüssel-Wert-Aufmerksamkeitsmechanismus noch weiter.

Zweite Stufe OK & IDAO

Die zweiten Etappen der Wettbewerbe fanden fast hintereinander statt, daher beschloss ich, sie gemeinsam zu betrachten.

Zuerst landeten ich und das neu gewonnene Team im beeindruckenden Büro der Firma Mail.ru, wo unsere Aufgabe darin bestand, die Modelle von drei Tracks aus der ersten Phase zu kombinieren – Text, Bilder und Zusammenarbeit. Dafür waren etwas mehr als 2 Tage vorgesehen, was sich als sehr wenig herausstellte. Tatsächlich konnten wir unsere Ergebnisse aus der ersten Phase nur wiederholen, ohne irgendwelche Gewinne aus der Fusion zu erzielen. Am Ende belegten wir den 5. Platz, konnten das Textmodell aber nicht nutzen. Nach Betrachtung der Lösungen anderer Teilnehmer scheint es sich gelohnt zu haben, die Texte zu gruppieren und in das Kollaborationsmodell aufzunehmen. Ein Nebeneffekt dieser Etappe waren neue Eindrücke, Treffen und Kommunikation mit coolen Teilnehmern und Organisatoren sowie starker Schlafmangel, der das Ergebnis der letzten Etappe von IDAO beeinflusst haben könnte.

Die Aufgabe in der Endphase von IDAO 2019 bestand darin, die Wartezeit für eine Bestellung für Yandex-Taxifahrer am Flughafen vorherzusagen. In Stufe 2 wurden 3 Aufgaben = 3 Flughäfen identifiziert. Für jeden Flughafen werden minutengenaue Daten zur Anzahl der Taxibestellungen für sechs Monate bereitgestellt. Und als Testdaten wurden der nächste Monat und minutengenaue Daten zu Bestellungen der letzten 2 Wochen angegeben. Die Zeit war knapp (1,5 Tage), die Aufgabe war recht konkret, nur eine Person aus dem Team kam zum Wettbewerb – und so war es gegen Ende traurig. Zu den interessanten Ideen gehörten Versuche, externe Daten zu nutzen: Wetter, Staus und Yandex-Taxibestellungsstatistiken. Obwohl die Organisatoren nicht sagten, um welche Flughäfen es sich handelte, gingen viele Teilnehmer davon aus, dass es sich um Scheremetjewo, Domodedowo und Wnukowo handelte. Obwohl diese Annahme nach dem Wettbewerb widerlegt wurde, verbesserten Features, beispielsweise aus Moskauer Wetterdaten, die Ergebnisse sowohl bei der Validierung als auch auf der Bestenliste.

Abschluss

  1. ML-Wettbewerbe sind cool und interessant! Hier kommen Fähigkeiten in der Datenanalyse sowie in raffinierten Modellen und Techniken zum Einsatz, und einfach gesunder Menschenverstand ist willkommen.
  2. ML ist bereits ein riesiger Wissensschatz, der exponentiell zu wachsen scheint. Ich habe mir zum Ziel gesetzt, mich mit verschiedenen Bereichen (Signale, Bilder, Tabellen, Texte) vertraut zu machen und habe bereits erkannt, wie viel es zu lernen gibt. Nach diesen Wettbewerben habe ich mich beispielsweise entschieden, Folgendes zu studieren: Clustering-Algorithmen, fortgeschrittene Techniken für die Arbeit mit Gradient-Boosting-Bibliotheken (insbesondere die Arbeit mit CatBoost auf der GPU), Kapselnetzwerke, den Abfrage-Schlüssel-Wert-Aufmerksamkeitsmechanismus.
  3. Nicht nur durch Kaggle! Bei vielen anderen Wettbewerben ist es einfacher, mindestens ein T-Shirt zu ergattern, und die Chancen auf andere Preise sind größer.
  4. Kommunizieren! Es gibt bereits eine große Community im Bereich maschinelles Lernen und Datenanalyse, es gibt thematische Gruppen in Telegram, Slack und seriöse Leute von Mail.ru, Yandex und anderen Unternehmen beantworten Fragen und helfen Anfängern und Fortgeschrittenen in diesem Bereich des Wissens.
  5. Ich rate jedem, der sich vom vorherigen Punkt inspirieren ließ, zu einem Besuch Datenfest — eine große kostenlose Konferenz in Moskau, die vom 10. bis 11. Mai stattfinden wird.

Source: habr.com

Kommentar hinzufügen