Was ich durch die Teilnahme an Wettbewerben für maschinelles Lernen auf Kaggle gelernt habe

Kürzlich habe ich beschlossen, mich ernsthafter mit meinen Data-Science-Fähigkeiten zu beschäftigen. Also beschloss ich, meine Fähigkeiten zu üben, was mich dazu führte Kaggle.

Die Erfahrung ist sehr positiv.

Als ich bei Kaggle ankam, war ich verwirrt darüber, was zu tun ist und wie alles funktioniert. Dieser Artikel wird Ihnen helfen, die Verwirrung zu überwinden, die ich erlebt habe.

Ich schloss mich dem an Krebsbehandlung neu definieren Wettbewerb, weil es für eine edle Sache war. Außerdem waren die Daten besser handhabbar, da sie textbasiert waren.

Wo codieren

Was Kaggle großartig macht, ist, dass Sie keinen Cloud-Server benötigen, der Ergebnisse für Sie erstellt. Kaggle hat eine Funktion, mit der Sie Skripte und Notebooks kostenlos in Kaggle ausführen können, solange sie innerhalb einer Stunde ausgeführt werden. Ich habe Kaggles Notizbücher für viele meiner Einsendungen verwendet und mit vielen Variablen experimentiert.

Insgesamt war es eine tolle Erfahrung.


Dieser neue Kernels-Button ist Ihr Freund!

Für die Wettbewerbe müssen Sie Bilder verwenden oder einen großen Textkorpus haben. Und Sie benötigen einen schnellen Personal Computer (PC) oder einen Cloud-Container. Mein PC ist beschissen, also habe ich die c4.2xlarge-Instanz von Amazon Web Services (AWS) verwendet. Es war stark genug für den Text und kostete nur 0,40 $ pro Stunde. Ich hatte auch ein kostenloses Guthaben von 150 $ aus dem GitHub Student Developer Pack, also musste ich mir keine Gedanken über die Kosten machen.

Später, als ich an der teilnahm Identifizierung der Hunderasse Spielplatzwettbewerb, ich habe viel mit Bildern gearbeitet, also musste ich meine Instanz auf g2.2xlarge upgraden. Es kostete 0,65 US-Dollar pro Stunde, verfügte jedoch über eine Grafikprozessorleistung (GPU), sodass Tausende von Bildern in nur wenigen Minuten berechnet werden konnten.

Die Instanz g2.2xlarge war immer noch nicht groß genug, um alle Daten zu speichern, mit denen ich gearbeitet habe, also habe ich die Zwischendaten als Dateien zwischengespeichert und die Daten aus dem RAM gelöscht. Ich habe dies getan, indem ich verwendet habe del <variable name> vermeiden ResourceExhaustionError oder MemoryError . Beide waren gleichermaßen entmutigend.

Erste Schritte mit Kaggle-Wettbewerben

Es ist nicht so beängstigend, wie es klingt. Die Registerkarten „Diskussion“ und „Kernel“ für jeden Wettbewerb sind ein wunderbarer Einstieg. Ein paar Tage nach Beginn eines Wettbewerbs sehen Sie mehrere Starter-Kernel auf der Registerkarte „Kernel“. Sie können diese verwenden, um loszulegen.

Anstatt sich mit dem Laden und Erstellen von Einreichungen zu befassen, kümmern Sie sich einfach um die Manipulation von Daten. Ich bevorzuge die XGBoost-Starter-Kernel. Ihre Codes sind immer kurz und stehen in den Bestenlisten ganz oben.

Extreme Gradientenverstärkung (XGBoost) basiert auf der Entscheidungsbaummodell. Es ist sehr schnell und erstaunlich genau, selbst bei Standardvariablen. Für große Datenmengen verwende ich lieber Light Gradient Boosting-Maschine (LightGBM). Es ähnelt im Konzept dem XGBoost, geht das Problem jedoch etwas anders an. Es gibt einen Haken, es ist nicht so genau. Sie können also mit LightGBM experimentieren, und wenn Sie wissen, dass es großartig funktioniert, wechseln Sie zu XGBoost (sie haben eine ähnliche API).

Überprüfen Sie alle paar Tage die Diskussionen, ob jemand einen neuen Ansatz gefunden hat. Wenn jemand dies tut, verwenden Sie es in Ihrem Skript und testen Sie, ob Sie davon profitieren.

Wie man in der Rangliste aufsteigt

Du hast also deinen Startercode gekocht und willst höher steigen? Es gibt viele mögliche Vorgehensweisen:

  • Kreuzvalidierung (CV): Teilen Sie die Trainingsdaten immer in 80 % und 20 % auf. Auf diese Weise können Sie, wenn Sie mit 80 % der Daten trainieren, 20 % der Daten manuell gegenprüfen, um zu sehen, ob Sie ein gutes Modell haben. Um das Diskussionsforum auf Kaggle zu zitieren: „Vertraue deinem Lebenslauf immer mehr als dem Leaderboard.“ Die Rangliste enthält 50 % bis 70 % des tatsächlichen Testsets, sodass Sie sich anhand der Prozentsätze nicht sicher sein können, wie gut Ihre Lösung ist. Manchmal ist Ihr Modell insgesamt großartig, aber schlecht in Bezug auf die Daten, insbesondere in der öffentlichen Testreihe.
  • Cachen Sie Ihre Zwischendaten: Dadurch machen Sie sich das nächste Mal weniger Arbeit. Konzentrieren Sie sich auf einen bestimmten Schritt, anstatt alles von Anfang an auszuführen. Fast alle Python-Objekte können sein pickled aber aus Effizienzgründen immer verwenden .save() und .load() Funktionen der Bibliothek, die Sie für Ihren Code verwenden.
  • Verwenden GridSearchCV : Es ist ein großartiges Modul, mit dem Sie eine Reihe von Variablenwerten bereitstellen können. Es wird alle möglichen Kombinationen ausprobieren, bis es den optimalen Wertesatz findet. Dies ist eine großartige Automatisierung für die Optimierung. Ein fein abgestimmter XGBoost kann ein generisches neuronales Netzwerk in vielen Problemen schlagen.
  • Verwenden Sie das für das Problem geeignete Modell: Die Verwendung eines Messers in einer Schießerei ist keine gute Idee. Ich habe einen einfachen Ansatz: Verwenden Sie für Textdaten XGBoost oder Keras LSTM. Verwenden Sie für Bilddaten das vortrainierte Keras-Modell (ich verwende Beginn meistens) mit einigen benutzerdefinierten Engpass-Layern.
  • Modelle kombinieren: Es reicht nicht aus, ein Küchenmesser für alles zu verwenden. Du brauchst ein Schweizer Taschenmesser. Versuchen Sie, verschiedene Modelle zu kombinieren, um noch genauere Informationen zu erhalten. Zum Beispiel Inception plus die AusnahmeModell eignet sich hervorragend für Bilddaten. Kombinierte Modelle benötigen viel RAM, was g2.2xlarge möglicherweise nicht bietet. Vermeiden Sie sie also, es sei denn, Sie möchten diesen Genauigkeitsschub wirklich erhalten.
  • Merkmalsextraktion: Erleichtern Sie dem Modell die Arbeit, indem Sie mehrere einfachere Features aus einem Feature extrahieren oder mehrere Features zu einem Feature kombinieren. Beispielsweise können Sie die Landes- und Ortsvorwahl aus einer Telefonnummer extrahieren. Modelle sind nicht sehr intelligent, sie sind nur Algorithmen, die Daten anpassen. Stellen Sie also sicher, dass die Daten für eine optimale Passform geeignet sind.

Was sonst noch auf Kaggle zu tun ist

Kaggle ist nicht nur eine Wettbewerbsplattform für Data Science, sondern auch eine Plattform zum Erkunden von Datensätzen und zum Erstellen von Kerneln, die Einblicke in die Daten gewinnen.

Sie können also einen beliebigen Datensatz aus den fünf besten auswählen, die auf der angezeigt werden Datensatzseite, und mach einfach mit. Die Daten könnten seltsam sein, und Sie könnten als Anfänger Schwierigkeiten haben. Was zählt, ist, dass Sie Daten analysieren und Visualisierungen darauf beziehen, was zu Ihrem Lernen beiträgt.

Welche Bibliotheken für die Analyse verwendet werden sollen

Zum Visualisierungen erforschen seegeboren und matplotlib Bibliotheken
Zum Datenmanipulation, erforschen NumPy und Pandas
Zum Datenvorverarbeitung, erforschen sklearn.preprocessing Modul

Die Pandas-Bibliothek hat auch einige grundlegende Plot-Funktionen, und sie sind äußerst praktisch.
intel_sorted[“Instruction_Set”].value_counts().plot(kind=’pie’)

Die obige Codezeile hat ein Tortendiagramm mit „Instruction_Set“ erstellt. Und das Beste ist, dass es noch hübsch aussieht.


Dieses Tortendiagramm zeigt, dass Intel viele 64-Bit-Prozessoren hat

Warum das alles tun

Maschinelles Lernen ist ein schönes Gebiet, in dem viele Entwicklungen im Gange sind. Die Teilnahme an diesen Wettbewerben wird Ihnen helfen, viel über Algorithmen und die verschiedenen Herangehensweisen an Daten zu lernen. Ich selbst habe viele dieser Dinge von Kaggle gelernt.

Außerdem ist es ziemlich cool, sagen zu können: „Meine KI ist unter den besten 15 % für “.


Damals, als ich in den Top 5 war… zumindest für ein paar Stunden 😛

Die folgende Grafik stellt die Erkundung meines Kernels dar Intel-CPU-Datensatz auf Kaggle:


Ein Diagramm, das die abnehmende Dicke eines Chips zeigt

Meine Lösung für die Krebsbehandlung neu definieren Wettbewerb:


Ich habe im Wettbewerb Platz 217 belegt.


Das war’s Leute.

Danke fürs Lesen. Ich hoffe, ich habe Ihnen bei der Teilnahme an den Wettbewerben von Kaggle mehr Selbstvertrauen gegeben.

Wir sehen uns auf den Bestenlisten.

Similar Posts

Leave a Reply

Your email address will not be published.