Maschinelles Lernen für Java-Entwickler: Algorithmen für maschinelles Lernen

Maschinelles Lernen für Java-Entwickler: Algorithmen für maschinelles Lernen

Gregor Roth untersucht in seinem Artikel den Gradientenabstieg und dessen Anwendung zur Minimierung der Kostenfunktion. Innerhalb jeder Iteration wird ein neuer, besserer Wert für jeden einzelnen θ-Parameter des Theta-Vektors berechnet. Die Lernrate α kontrolliert die Größe des Berechnungsschritts innerhalb jeder Iteration. Dieser Vorgang wird wiederholt, bis eine Kombination von Theta-Werten gefunden wird, die gut passt. Ein Beispiel hierfür ist die lineare Regressionsfunktion mit drei θ-Parametern.

Der Gradientenabstieg-Algorithmus in Java wird in Listing 3 dargestellt. Dieser trainiert die Theta-Parameter der Regressionsfunktion mit Trainingsdaten, Datenlabels und der Lernrate α. Das Ergebnis ist eine verbesserte Ziel funktion mit neuen Theta-Parametern. Die Methode train() wird immer wieder aufgerufen, bis die Kosten der Ziel Funktion ein minimales Plateau erreichen.

Um zu validieren, dass die Kosten kontinuierlich abnehmen, wird die Kostenfunktion J(θ) nach jedem Trainingsschritt ausgeführt. Wenn die Kosten nicht mit jeder Iteration abnehmen, ist die Lernratenparameter zu groß und der Algorithmus wird am Minimum vorbeischießen, was ein Scheitern des Gradientenabstiegsalgorithmus bedeutet.

Bei einem Modell, das unterfitting zeigt, passt die Ziel Funktion nicht optimal zu den Daten. Hierbei wird aufgrund einer zu einfachen Modellstruktur das zugrunde liegende Trend der Daten nicht erfasst. Um underfitting zu korrigieren, können mehr Features in den Feature-Vektor aufgenommen werden.

Die Implementierung von Polynom-Features ist eine Möglichkeit, das Modell zu verbessern. Durch Feature-Skalierung werden verschiedene Features in einen standardisierten Wertebereich gebracht, um eine Dominanz einzelner Features und damit Overfitting zu vermeiden. Overfitting tritt auf, wenn das Modell die Trainingsdaten zu genau abbildet und daher bei unbekannten Daten schlecht abschneidet. Kreuzvalidierung wird genutzt, um Overfitting zu erkennen und zu vermeiden.