Wie Meta Learning dazu beigetragen hat, einen Hackathon / Sudo Null zu gewinnen IT News

Die Geschichte von drei schlaflosen Nächten voller Forschung und Fülle an Wissen

Gottes Plan von ML :)Gottes Plan von ML 🙂

In diesem Artikel werde ich darüber sprechen, wie wir am Digital Breakthrough Hackathon im Northwestern Federal District teilgenommen haben, und Ihnen das Meta-Learning-Konzept vorstellen, das es uns ermöglicht hat, einen anständigen Algorithmus zu entwickeln und zu gewinnen!

Inhalt:

Fallschilderung

Wir haben einen Fall der Zentralbank zur Prognose makroökonomischer Indikatoren ausgewählt bzw. wir haben uns mit der Prognose von Zeitreihen beschäftigt.

Daten Beschreibung:

  • Der Zugteil bestand aus 69 markierten Reihen mit je 200 Punkten.

  • Der Testteil bestand aus ~ 4500 kleinen Dateien, in denen es 3 bis 6 Reihen gab, für die es notwendig war, eine individuelle Anzahl von Punkten im Voraus vorherzusagen. Es wurde uns nur für die letzten 3 Stunden des Hackathons gegeben, in denen wir aktiv an der Vorhersage und Aufzeichnung der Ergebnisse beteiligt waren.

Zusätzlich enthielt der Zugteil ein Blatt mit Quartalswerten, sodass in einigen Testdateien auch Quartalswerte vorhergesagt werden mussten.

Die Fragen drehten sich um zwei Dinge:

  1. Eine magere Menge an Zugdaten

  2. Unsicherheit bei Merkmalen in Testdatensätzen

Ich erkläre den zweiten Punkt: Wenn wir für den Zugdatensatz wüssten, welche Indikatoren uns gegeben wurden (BIP, Inflationsrate usw.), dann wurden im Testteil die Spalten verschlüsselt. Wir, die es gewohnt sind, eher klassische überwachte Probleme zu lösen, waren von dieser Tatsache ein wenig verwirrt, aber die Lösung fand sich von selbst.

Was ist Meta-Lernen?

In einführenden englischsprachigen Artikeln findet sich am häufigsten eine informelle Definition des Typs „learning to learn“.

Das menschliche Gehirn braucht keine riesigen Datenmengen, um schnell und effizient zu lernen, wie man eine unbekannte Aufgabe löst (z. B. um eine zuvor unbekannte Hunderasse zu bestimmen, nachdem man ihr nur wenige Male begegnet ist).

Man kann damit argumentieren – schließlich hatte eine Person zumindest eine Evolution für die Entwicklung von Intelligenz, aber wir werden nicht auf eine Diskussion eingehen. Wir wollen natürlich in eine glänzende Zukunft gehen und bestehende Algorithmen weiterentwickeln, und es wäre sehr cool, Modellen beizubringen, sich mit kleinen Datensätzen an ungewohnte Aufgaben anzupassen.

Was mich betrifft, erinnert es etwas an die Idee des Feintunings (Transfer Learning), aber ich möchte anmerken, dass wir mit diesem Ansatz immer noch den grundlegenden Algorithmus auf riesigen Datenfeldern trainieren und eine Vorstellung davon haben möchten die Ähnlichkeit der Aufgabe, auf die wir umschulen werden, mit der Aufgabe, die wir bereits lösen müssen. Meta Learning verlangt dies nicht immer von uns.

Wenn Sie mehr in dieses Konzept einsteigen möchten, dann sind hier die Artikel, die ich empfehlen kann:

Eine sanfte Einführung in das Meta-Lernen von Edward Ma

(https://pub.towardai.net/a-gentle-introduction-to-meta-learning-8e36f3d93f61)

Von Null auf Forschung – Eine Einführung in das Meta-Lernen von Thomas Wolf

(https://medium.com/huggingface/from-zero-to-research-an-introduction-to-meta-learning-8e16e677f78a)

Ich erzähle Ihnen, was wir konkret gemacht haben.

Unsere Lösung

Wir dachten, dass es cool wäre, nicht nur ein Modell zu trainieren, das versucht, alle Zeilen aus dem Test vorherzusagen, sondern das optimale Modell für jede neue Zeile aus der Testprobe auszuwählen.

Es klingt logisch: Es gibt viele Zeilen für die Vorhersage (mehr als 20.000), jede hat ihre eigenen Besonderheiten, sodass ein einzelnes Modell kaum in der Lage wäre, mit den Daten, die wir hatten, gut zu trainieren.

Aber wie kann man verstehen, welcher Algorithmus in jedem einzelnen Fall verwendet werden soll?

Wir und unsere Zeit sind nicht endlos, also wählen wir N Modelle aus, die passen könnten. Dazu haben wir (relativ) schnell eine Kreuzvalidierung für Zug und mit PyCaret durchgeführt (mehr als 60 Algorithmen miteinander verglichen und 6 (Prophet, ARIMA, SARIMA, Theta, Holt-Winters, STLF) als die erfolgreichsten ausgewählt.

Schauen wir uns nun die Reihen an, die wir im Zugteil haben, extrahieren Sie die wichtigsten ökonometrischen Merkmale aus jeder (Anzahl der Punkte, Mittelwert, Standard, Entropie, Grad der Linearität usw.), validieren Sie N Modelle, die wir vergleichen möchten, und Mal sehen, welche Metrik die beste Arbeit geleistet hat!

So erhalten wir einen Meta-Zug-Datensatz, in dem es nicht mehr die Zeilen selbst gibt, sondern deren Meta-Features (ca. 40 Stück); die Art des Modells, das am besten abgeschnitten hat; seine Parameter und durchschnittliche Metrik (R-Squared) nach CV.

Dann werden wir das Hauptmetamodell in das Spiel einführen, das gemäß den oben erhaltenen Daten lernt, wie das klassische Problem der Klassifizierung in N Klassen gelöst wird (in unserem Fall ist jede Klasse ein bestimmtes Modell).

Wie kann man mit diesem Wissen Vorhersagen treffen?

Jetzt ist alles einfach: Wenn wir eine neue Serie bekommen, extrahieren wir ihre Meta-Features und geben sie an das Meta-Modell, das entscheidet (auch bekannt als Sakhipzadovna Ilvira Nabiullina), welchen Vorhersagealgorithmus wir verwenden werden.

Wir validieren an einem bekannten Teil des Testsets und passen die Hyperparameter an und machen eine lang erwartete Vorhersage.

Ideal wäre es, den Zugsatz mit Daten aus dem Internet zu erweitern, aber wir haben fast die ganze erste Nacht Meta-Zugdatensatz gemacht. Mit seiner mehrfachen Steigerung hätten wir ihn am Ende des Hackathons erhalten).

Daher musste ich die Metamodelle sorgfältiger abstimmen. Standardmäßig schlägt Kats vor, einen RandomForestClassifier mit 500 Bäumen zu verwenden. Für diesen Teil war ich persönlich verantwortlich. Meiner Meinung nach ist ein solcher Wald bei 69 Stichproben sehr einfach umzutrainieren, daher habe ich mit einfacheren Modellen (RandomTreeClaffier, LogisticRegression, KNN, NaiveBayes) experimentiert.

Aus den erhaltenen Schritten haben wir eine Pipeline geschrieben, die wir in den letzten 3 Stunden gestartet haben.

Bei der Umsetzung der beschriebenen Schritte hat uns die wunderbare Open-Source-Bibliothek Kats geholfen, die gerade das Meta-Learning-Konzept zur Zeitreihenvorhersage verwendet.

Link zu GiHub: (tutorials Verzeichnis wärmstens empfehlen) ****

https://github.com/facebookresearch/kats

Endlich

Ich denke, bei diesem ganzen Hackathon ging es darum, wie wichtig es ist, offen für Neues zu sein. Anfangs hatten wir andere Ideen, aber der beste Ansatz war einer, von dem wir vor Beginn des Wettbewerbs noch nicht einmal gehört hatten.

Der Auftrag, etwas grundlegend Neues für uns persönlich zu lernen und auszuprobieren, hat sich voll und ganz bestätigt. Seien Sie offen für Menschen und Ideen!

Similar Posts

Leave a Reply

Your email address will not be published.