Bei den im vorherigen Abschnitt beschriebenen Beispielen handelte es sich immer darum, ein Klassifikationsproblem zu lösen. Also unbekannte Datenpunkte, Bilder, Texte einer Klasse zuzuordnen. Dabei sind aber die Klassen bereits vorgegeben.

Beim unüberwachten Lernen ist es anders: Hier gibt es keine vorgegebenen Klassen oder „richtigen Lösungen“. Das Modell erhält nur die Eingabedaten und muss selbst Muster, Strukturen oder Zusammenhänge in den Daten finden.

Wie können wir uns das vorstellen? Gehen wir noch einmal zurück zu einem Beispiel aus dem ersten Teil dieses Kurses.

Die folgende Abbildung zeigt, wie sich Lebensmittel anhand ihres Zucker- und ihres Fettgehaltes in ein Koordinatensystem als Datenpunkte eingezeichnet werden können:

Wenn wir mehrere Lebensmittel dort einzeichnen, stellen wir fest, dass "ähnliche" Lebensmittel wie Gemüse und fetthaltige Süßigkeiten dicht beienander stehen:

K-Means-Clustering

Stellen wir uns nun vor, wir arbeiten in einem Lebensmittellabor, haben aber keine Ahnung von möglichen "Klassen" wie Obst, Gemüse und Süßspeisen, wollen aber trotzdem unsere Daten einteilen. Das funktioniert, und zwar allein über die räumliche Nähe von Datenpunkten in unserem Koordinatensystem.

Ein Verfahren, mit dem diese Einteilung gelingt, heißt k-means-Clustering.

Means = Mittelwert
Cluster = Haufen
Clustering = Haufenbildung

Grob gesagt geht es dabei darum, Datenpunkte in Gruppen (also Cluster) einzuteilen, sodass Punkte innerhalb eines Clusters möglichst nah beieinander liegen und Punkte aus verschiedenen Clustern möglichst weit voneinander entfernt sind.

Das gelingt wie folgt:

  1. Entscheide zunächst, wie viele Cluster du bilden willst. Dafür steht übrigens das k. Sagen wir, du hast dich für k = 3 entschieden.
  2. Lege dann drei zufällig gewählte Datenpunkte als Startwerte für die Zentren der drei Cluster fest.
  3. Ordne anschließend sämtliche Datenpunkte dem jeweils nächstgelegenen Clusterzentrum zu.
  4. Dann berechne die Zentren der drei Cluster neu, indem du jeweils den Mittelwert sämtlicher darin befindlicher Datenpunkte bestimmst.
  5. Mach bei Schritt 3. weiter.

Brich ab, wenn sich in Schritt 3. keine Zuordnungen mehr ändert.

Das folgende Bild zeigt das Verfahren anhand eines einfachen Beispiels, indem das k-means-Clustering Verfahren die drei Cluster in wenigen Schritten erkennt. 

Übrigens ist das Verfahren nicht perfekt, wie diese Lösung zeigt:

Es gibt auch Anordnungen von Datenpunkten, die mit diesem Verfahren überhaupt nicht sinnvoll in Cluster eingeteilt werden können (Spoiler: künstliche neuronale Netze können das!):

Das Beispielprogramm Wetterdaten gruppieren

Das folgende Beispielprogramm zeigt das k-means-Clustering Verfahren in Aktion.

Hier werden meteorologische Messungen gruppiert. Genauer gesagt: Messungen der durchschnittlichen Temperatur (In Grad Celsius) und Niederschlagsmengen (in Millimeter).

Die Daten sehen unsortiert so aus, der erste Wert steht jeweils für eine Temperatur, der zweite für eine Niederschlagsmenge...

let datenpunkte =  [
[17.6, 0.0], 
[20.2, 0.0],
[20.3, 0.8], 
[-35.8, 0.0],
[20.5, 1.0],
[21.0, 0.1],
[-6.0, 19.2]
[20.3, 0.9],
[-14.3, 6.8],
[20.9, 0.1],
[2.0, 31.0],
[1.3, 59.0],
[-9.4, 0.0], 
[-3.6, 21.0], 
[1.7, 83.0],
[2.2, 68.0], 
[-0.1, 4.0],
[-18.5, 1.0],
...

Zuletzt geändert: Mittwoch, 5. Februar 2025, 15:25