Algorithmen für maschinelles Lernen erklärt

Maschinelles Lernen und tiefes Lernen sind weit verbreitet und werden noch häufiger missverstanden. In diesem Artikel möchte ich einen Schritt zurücktreten und sowohl maschinelles Lernen als auch tiefes Lernen in grundlegenden Begriffen erläutern, einige der gängigsten Algorithmen für maschinelles Lernen diskutieren und erläutern, wie sich diese Algorithmen auf die anderen Teile des Puzzles zur Erstellung von Vorhersagemodellen beziehen aus historischen Daten.

Was sind Algorithmen für maschinelles Lernen?

Denken Sie daran, dass maschinelles Lernen eine Klasse von Methoden zum automatischen Erstellen von Modellen aus Daten ist. Algorithmen für maschinelles Lernen sind die Motoren des maschinellen Lernens, dh es sind die Algorithmen, die einen Datensatz in ein Modell verwandeln. Welche Art von Algorithmus am besten funktioniert (überwacht, unbeaufsichtigt, Klassifizierung, Regression usw.), hängt von der Art des zu lösenden Problems, den verfügbaren Rechenressourcen und der Art der Daten ab.

Wie maschinelles Lernen funktioniert

Gewöhnliche Programmieralgorithmen teilen dem Computer auf einfache Weise mit, was zu tun ist. Zum Beispiel wandeln Sortieralgorithmen ungeordnete Daten in Daten um, die nach bestimmten Kriterien geordnet sind, häufig nach der numerischen oder alphabetischen Reihenfolge eines oder mehrerer Felder in den Daten.

Lineare Regressionsalgorithmen passen eine gerade Linie oder eine andere Funktion, deren Parameter linear sind, wie z. B. ein Polynom, an numerische Daten an, indem typischerweise Matrixinversionen durchgeführt werden, um den quadratischen Fehler zwischen der Linie und den Daten zu minimieren. Der quadratische Fehler wird als Metrik verwendet, da es Ihnen egal ist, ob die Regressionslinie über oder unter den Datenpunkten liegt. Sie kümmern sich nur um den Abstand zwischen der Linie und den Punkten.

Nichtlineare Regressionsalgorithmen, die Kurven anpassen, deren Parameter nicht linear sind, sind etwas komplizierter, da sie im Gegensatz zu linearen Regressionsproblemen nicht mit einer deterministischen Methode gelöst werden können. Stattdessen implementieren die nichtlinearen Regressionsalgorithmen eine Art iterativen Minimierungsprozess, häufig eine Variation der Methode des steilsten Abstiegs.    

Der steilste Abstieg berechnet im Wesentlichen den quadratischen Fehler und seinen Gradienten bei den aktuellen Parameterwerten, wählt eine Schrittgröße (auch als Lernrate bezeichnet), folgt der Richtung des Gradienten „bergab“ und berechnet dann den quadratischen Fehler und seinen Gradienten beim neuen Parameterwerte. Mit etwas Glück konvergiert der Prozess schließlich. Die Varianten beim steilsten Abstieg versuchen, die Konvergenzeigenschaften zu verbessern.

Algorithmen für maschinelles Lernen sind noch weniger einfach als nichtlineare Regression, auch weil maschinelles Lernen auf die Einschränkung der Anpassung an eine bestimmte mathematische Funktion wie ein Polynom verzichtet. Es gibt zwei Hauptkategorien von Problemen, die häufig durch maschinelles Lernen gelöst werden: Regression und Klassifizierung. Die Regression bezieht sich auf numerische Daten (z. B. Was ist das wahrscheinliche Einkommen für jemanden mit einer bestimmten Adresse und einem bestimmten Beruf?) Und die Klassifizierung bezieht sich auf nicht numerische Daten (z. B. Wird der Antragsteller mit diesem Darlehen in Verzug geraten?).

Vorhersageprobleme (z. B. Wie hoch wird der Eröffnungskurs für Microsoft-Aktien morgen sein?) Sind eine Teilmenge der Regressionsprobleme für Zeitreihendaten. Klassifizierungsprobleme werden manchmal in binäre (Ja oder Nein) und Mehrkategorieprobleme (Tier, Gemüse oder Mineral) unterteilt.

Überwachtes Lernen vs. unbeaufsichtigtes Lernen

Unabhängig von diesen Abteilungen gibt es zwei weitere Arten von Algorithmen für maschinelles Lernen: überwacht und unbeaufsichtigt. Beim überwachten Lernen stellen Sie einen Trainingsdatensatz mit Antworten bereit, z. B. eine Reihe von Tierbildern sowie die Namen der Tiere. Das Ziel dieses Trainings wäre ein Modell, das ein Bild (von einer Art Tier, das im Trainingssatz enthalten war), das es zuvor nicht gesehen hatte, korrekt identifizieren könnte.

Beim unbeaufsichtigten Lernen durchläuft der Algorithmus die Daten selbst und versucht, aussagekräftige Ergebnisse zu erzielen. Das Ergebnis könnte beispielsweise eine Reihe von Clustern von Datenpunkten sein, die innerhalb jedes Clusters in Beziehung stehen könnten. Das funktioniert besser, wenn sich die Cluster nicht überlappen.

Training und Evaluierung verwandeln überwachte Lernalgorithmen in Modelle, indem sie ihre Parameter optimieren, um den Wertesatz zu finden, der am besten zur Grundwahrheit Ihrer Daten passt. Die Algorithmen stützen sich häufig auf Varianten des steilsten Abstiegs für ihre Optimierer, beispielsweise den stochastischen Gradientenabstieg (SGD), bei dem es sich im Wesentlichen um den steilsten Abstieg handelt, der mehrfach von zufälligen Startpunkten aus durchgeführt wird. Übliche Verbesserungen bei SGD fügen Faktoren hinzu, die die Richtung des Gradienten basierend auf dem Impuls korrigieren oder die Lernrate basierend auf dem Fortschritt von einem Durchgang durch die Daten (als Epoche bezeichnet) zum nächsten anpassen.

Datenbereinigung für maschinelles Lernen

In freier Wildbahn gibt es keine sauberen Daten. Um für maschinelles Lernen nützlich zu sein, müssen Daten aggressiv gefiltert werden. Zum Beispiel möchten Sie:

  1. Sehen Sie sich die Daten an und schließen Sie alle Spalten aus, in denen viele Daten fehlen.
  2. Sehen Sie sich die Daten noch einmal an und wählen Sie die Spalten aus, die Sie für Ihre Vorhersage verwenden möchten. (Dies ist etwas, das Sie möglicherweise ändern möchten, wenn Sie iterieren.)
  3. Schließen Sie alle Zeilen aus, in denen noch Daten in den verbleibenden Spalten fehlen.
  4. Korrigieren Sie offensichtliche Tippfehler und führen Sie gleichwertige Antworten zusammen. Beispielsweise sollten USA, USA, USA und Amerika in einer einzigen Kategorie zusammengefasst werden.
  5. Schließen Sie Zeilen mit Daten aus, die außerhalb des Bereichs liegen. Wenn Sie beispielsweise Taxifahrten innerhalb von New York City analysieren, möchten Sie Zeilen mit Breiten- und Längengraden zum Aufnehmen oder Abgeben herausfiltern, die außerhalb des Begrenzungsrahmens der Metropolregion liegen.

Sie können noch viel mehr tun, dies hängt jedoch von den gesammelten Daten ab. Dies kann mühsam sein, aber wenn Sie einen Datenbereinigungsschritt in Ihrer Pipeline für maschinelles Lernen einrichten, können Sie ihn nach Belieben ändern und wiederholen.

Datencodierung und Normalisierung für maschinelles Lernen

Um kategoriale Daten für die Maschinenklassifizierung zu verwenden, müssen Sie die Textbeschriftungen in ein anderes Formular codieren. Es gibt zwei gängige Codierungen.

Eine davon ist die Beschriftungscodierung , was bedeutet, dass jeder Textbeschriftungswert durch eine Zahl ersetzt wird. Die andere ist die One-Hot-Codierung , dh jeder Textbeschriftungswert wird in eine Spalte mit einem Binärwert (1 oder 0) umgewandelt. Die meisten Frameworks für maschinelles Lernen verfügen über Funktionen, die die Konvertierung für Sie durchführen. Im Allgemeinen wird eine One-Hot-Codierung bevorzugt, da die Label-Codierung den Algorithmus für maschinelles Lernen manchmal verwirren kann, wenn man denkt, dass die codierte Spalte geordnet ist.

Um numerische Daten für die Maschinenregression zu verwenden, müssen Sie die Daten normalerweise normalisieren. Andernfalls können die Zahlen mit größeren Bereichen dazu neigen, den euklidischen Abstand zwischen Merkmalsvektoren zu dominieren , ihre Auswirkungen können auf Kosten der anderen Felder vergrößert werden, und die Optimierung des steilsten Abstiegs kann Schwierigkeiten beim Konvergieren haben. Es gibt eine Reihe von Möglichkeiten, Daten für ML zu normalisieren und zu standardisieren, einschließlich Min-Max-Normalisierung, mittlerer Normalisierung, Standardisierung und Skalierung auf Längeneinheit. Dieser Vorgang wird häufig als Feature-Skalierung bezeichnet .

Was sind Funktionen für maschinelles Lernen?

Da ich im vorherigen Abschnitt Merkmalsvektoren erwähnt habe, sollte ich erklären, was sie sind. Zuallererst ist ein Merkmal eine einzelne messbare Eigenschaft oder Eigenschaft eines beobachteten Phänomens. Das Konzept eines „Merkmals“ bezieht sich auf das einer erklärenden Variablen, die in statistischen Techniken wie der linearen Regression verwendet wird. Merkmalsvektoren kombinieren alle Merkmale für eine einzelne Zeile zu einem numerischen Vektor.

Ein Teil der Kunst bei der Auswahl von Features besteht darin, einen Mindestsatz unabhängiger Variablen auszuwählen , die das Problem erklären. Wenn zwei Variablen stark korreliert sind, müssen sie entweder zu einem einzigen Feature kombiniert werden oder eine sollte gelöscht werden. Manchmal führen Menschen eine Hauptkomponentenanalyse durch, um korrelierte Variablen in einen Satz linear nicht korrelierter Variablen umzuwandeln.

Einige der Transformationen, mit denen Benutzer neue Features erstellen oder die Dimensionalität von Feature-Vektoren reduzieren, sind einfach. Subtrahieren Sie beispielsweise Year of Birthvon Year of Deathund konstruieren Sie Age at Death, was eine unabhängige Hauptvariable für die Lebenszeit- und Mortalitätsanalyse ist. In anderen Fällen ist die Merkmalskonstruktion möglicherweise nicht so offensichtlich.

Gängige Algorithmen für maschinelles Lernen

Es gibt Dutzende von Algorithmen für maschinelles Lernen, deren Komplexität von linearer Regression und logistischer Regression bis hin zu tiefen neuronalen Netzen und Ensembles (Kombinationen anderer Modelle) reicht. Einige der gebräuchlichsten Algorithmen sind jedoch:

  • Lineare Regression, auch bekannt als Regression der kleinsten Quadrate (für numerische Daten)
  • Logistische Regression (zur binären Klassifizierung)
  • Lineare Diskriminanzanalyse (zur Klassifizierung in mehrere Kategorien)
  • Entscheidungsbäume (sowohl für die Klassifizierung als auch für die Regression)
  • Naive Bayes (sowohl für die Klassifizierung als auch für die Regression)
  • K-Nearest Neighbors, auch bekannt als KNN (sowohl für die Klassifizierung als auch für die Regression)
  • Learning Vector Quantization, auch bekannt als LVQ (sowohl für die Klassifizierung als auch für die Regression)
  • Support Vector Machines, auch bekannt als SVM (zur binären Klassifizierung)
  • Random Forests, eine Art "Bagging" -Ensemble-Algorithmus (sowohl für die Klassifizierung als auch für die Regression)
  • Boosting-Methoden, einschließlich AdaBoost und XGBoost, sind Ensemble-Algorithmen, die eine Reihe von Modellen erstellen, bei denen jedes neue Modell versucht, Fehler aus dem vorherigen Modell zu korrigieren (sowohl für die Klassifizierung als auch für die Regression).

Wo sind die neuronalen Netze und tiefen neuronalen Netze, von denen wir so viel hören? Sie sind in der Regel so rechenintensiv, dass GPUs oder andere spezielle Hardware benötigt werden. Sie sollten sie daher nur für spezielle Probleme wie Bildklassifizierung und Spracherkennung verwenden, die für einfachere Algorithmen nicht gut geeignet sind. Beachten Sie, dass „tief“ bedeutet, dass das neuronale Netzwerk viele verborgene Schichten enthält.

Weitere Informationen zu neuronalen Netzen und Deep Learning finden Sie unter „Was Deep Learning wirklich bedeutet“.

Hyperparameter für Algorithmen für maschinelles Lernen

Algorithmen für maschinelles Lernen trainieren Daten, um den besten Satz von Gewichten für jede unabhängige Variable zu finden, die den vorhergesagten Wert oder die vorhergesagte Klasse beeinflusst. Die Algorithmen selbst haben Variablen, sogenannte Hyperparameter. Sie werden im Gegensatz zu Parametern als Hyperparameter bezeichnet, da sie eher die Funktionsweise des Algorithmus als die zu bestimmenden Gewichte steuern.

Der wichtigste Hyperparameter ist häufig die Lernrate, die die Schrittgröße bestimmt, die verwendet wird, um den nächsten Satz von Gewichten zu finden, der bei der Optimierung versucht werden soll. Wenn die Lernrate zu hoch ist, kann der Gradientenabstieg schnell auf einem Plateau oder einem suboptimalen Punkt konvergieren. Wenn die Lernrate zu niedrig ist, kann der Gradientenabstieg ins Stocken geraten und niemals vollständig konvergieren.

Viele andere gängige Hyperparameter hängen von den verwendeten Algorithmen ab. Die meisten Algorithmen haben Stoppparameter, wie z. B. die maximale Anzahl von Epochen oder die maximale Ausführungszeit oder die minimale Verbesserung von Epoche zu Epoche. Bestimmte Algorithmen haben Hyperparameter, die die Form ihrer Suche steuern. Zum Beispiel hat ein Random Forest Classifier Hyperparameter für minimale Proben pro Blatt, maximale Tiefe, minimale Proben bei einer Teilung, minimale Gewichtsfraktion für ein Blatt und ungefähr 8 weitere.

Hyperparameter-Tuning

Mehrere maschinelle Lernplattformen für die Produktion bieten jetzt eine automatische Abstimmung der Hyperparameter. Im Wesentlichen teilen Sie dem System mit, welche Hyperparameter Sie variieren möchten und möglicherweise welche Metrik Sie optimieren möchten, und das System durchsucht diese Hyperparameter über so viele Läufe, wie Sie zulassen. (Die Optimierung der Hyperparameter von Google Cloud extrahiert die entsprechende Metrik aus dem TensorFlow-Modell, sodass Sie sie nicht angeben müssen.)

Es gibt drei Suchalgorithmen zum Durchsuchen von Hyperparametern: Bayes'sche Optimierung, Rastersuche und Zufallssuche. Die Bayes'sche Optimierung ist in der Regel am effizientesten.

Sie würden denken, dass Sie die beste Antwort erhalten, wenn Sie so viele Hyperparameter wie möglich einstellen. Dies kann jedoch sehr teuer sein, es sei denn, Sie arbeiten mit Ihrer eigenen Hardware. In jedem Fall gibt es sinkende Renditen. Mit der Erfahrung werden Sie herausfinden, welche Hyperparameter für Ihre Daten und die Auswahl der Algorithmen am wichtigsten sind.

Automatisiertes maschinelles Lernen

Wenn Sie von der Auswahl von Algorithmen sprechen, gibt es nur einen Weg zu wissen, welcher Algorithmus oder welches Ensemble von Algorithmen Ihnen das beste Modell für Ihre Daten liefert, und das ist, sie alle auszuprobieren. Wenn Sie auch alle möglichen Normalisierungen und Auswahlmöglichkeiten von Funktionen ausprobieren, stehen Sie vor einer kombinatorischen Explosion.

Es ist unpraktisch, alles manuell zu versuchen, daher haben Anbieter von Tools für maschinelles Lernen natürlich große Anstrengungen unternommen, um AutoML-Systeme freizugeben. Die besten kombinieren Feature-Engineering mit Sweeps über Algorithmen und Normalisierungen. Die Hyperparameter-Abstimmung des besten Modells oder der besten Modelle wird häufig für später belassen. Feature Engineering ist jedoch ein schwer zu automatisierendes Problem, und nicht alle AutoML-Systeme handhaben es.

Zusammenfassend sind Algorithmen für maschinelles Lernen nur ein Teil des Puzzles für maschinelles Lernen. Zusätzlich zur Algorithmusauswahl (manuell oder automatisch) müssen Sie sich mit Optimierern, Datenbereinigung, Funktionsauswahl, Funktionsnormalisierung und (optional) Hyperparameter-Optimierung befassen.

Wenn Sie all dies erledigt und ein Modell erstellt haben, das für Ihre Daten funktioniert, ist es an der Zeit, das Modell bereitzustellen und es dann zu aktualisieren, wenn sich die Bedingungen ändern. Das Verwalten von Modellen für maschinelles Lernen in der Produktion ist jedoch eine ganz andere Dose Würmer.