K-means: Fokus auf diesen Clustering & Machine Learning Algorithmus (2024)

Zurück zu den Artikeln
  • 14. Dezember 2022

-

4

Minuten Lesezeit

-

  • Data Science
K-means: Fokus auf diesen Clustering & Machine Learning Algorithmus (1)

Clustering ist eine spezielle Disziplin von Machine Learning, mit dem Ziel, deine Daten in hom*ogene Gruppen mit gemeinsamen Merkmalen aufzuteilen. Dies ist z. B. ein beliebtes Gebiet im Marketing, wo oft versucht wird, Kundenstämme zu segmentieren, um bestimmte Verhaltensweisen zu erkennen. Der K-Mittelwert-Algorithmus (K-means) ist ein sehr bekannter unüberwachter Algorithmus für das Clustering.

In diesem Artikel werden wir detailliert beschreiben, wie es funktioniert und welche nützlichen Mittel es gibt, um es zu optimieren.

Dieser Algorithmus wurde 1957 in den Bell Laboratorien von Stuart P. Lloyd als Pulscodemodulations-Technik (PCM) entwickelt. Er wurde erst 1982 der breiten Öffentlichkeit vorgestellt. Im Jahr 1965 hatte Edward W. Forgy einen fast ähnlichen Algorithmus veröffentlicht, weshalb K-Means oft als Lloyd-Forgy-Algorithmus bezeichnet wird.

Die Anwendungsbereiche sind vielfältig: Kundensegmentierung, Datenanalyse, Segmentierung eines Bildes, semi-überwachtes Lernen…

Das Prinzip des k-means-Algorithmus

Wenn Punkte und eine ganze Zahl k gegeben sind, zielt der Algorithmus darauf ab, die Punkte in k hom*ogene und kompakte Gruppen, sogenannte Cluster, zu unterteilen. Schauen wir uns das folgende Beispiel an:

K-means: Fokus auf diesen Clustering & Machine Learning Algorithmus (2)

K-means: Fokus auf diesen Clustering & Machine Learning Algorithmus (3)

Bei diesem 2D-Datensatz wird deutlich, dass er in drei Gruppen unterteilt werden kann.

Wie geht man konkret vor?

Die Idee ist ziemlich einfach und intuitiv. Der erste Schritt besteht darin, drei Zentroiden zufällig zu definieren, denen wir drei Bezeichnungen zuordnen, z. B. 0, 1, 2. Dann schauen wir uns für jeden Punkt die Entfernung zu den drei Zentroiden an und verbinden den Punkt mit dem nächstgelegenen Zentroiden und dem entsprechenden Label. Dies entspricht einer Beschriftung unserer Daten.

Schließlich berechnen wir drei neue Zentroiden, die die Schwerpunkte jeder beschrifteten Punktwolke sein werden. Diese Schritte werden so lange wiederholt, bis die neuen Zentroide sich nicht mehr von den vorherigen unterscheiden. Das Endergebnis ist in der Abbildung rechts zu sehen.

Begriff der Entfernung und Initialisierung

In diesem Algorithmus sind zwei Punkte entscheidend: Welche Metrik wird verwendet, um die Entfernung zwischen den Punkten und den Zentroiden zu bewerten? Wie viele Cluster müssen ausgewählt werden? Im k-Mittelwert-Algorithmus wird normalerweise die euklidische Distanz verwendet, d.h. p = (p1,….,pn) und q = (q1,….,qn).

K-means: Fokus auf diesen Clustering & Machine Learning Algorithmus (4)

Sie ermöglicht es, die Entfernung zwischen jedem Punkt und den Zentroiden zu schätzen. Für jeden Punkt wird die euklidische Distanz zwischen diesem Punkt und jedem Zentroiden berechnet und dann dem nächstgelegenen Zentroiden zugeordnet, d.h. demjenigen mit der geringsten Distanz.

Im vorherigen Beispiel war es einfach, die ideale Anzahl von Clustern zu finden, indem man sie grafisch darstellte. Normalerweise haben Datensätze mehr als zwei Dimensionen und es ist daher schwierig, die Punktwolke zu visualisieren und die optimale Anzahl von Clustern schnell zu identifizieren. Nehmen wir im vorherigen Beispiel an, dass wir die Daten nicht vorher visualisiert haben und beschließen, verschiedene Male mit einer unterschiedlichen Anzahl an anfänglichen Clustern zu testen. Hier sind die erhaltenen Ergebnisse:

K-means: Fokus auf diesen Clustering & Machine Learning Algorithmus (5)

Die Partitionierung ist ungenau, da die Anzahl der anfänglichen Cluster viel höher ist als die ideale Anzahl, in diesem Fall 3. Es gibt Methoden, um die ideale Anzahl von Clustern zu bestimmen. Die bekannteste ist die Ellbogenmethode. Sie stützt sich auf den Begriff der Trägheit.

Diese wird wie folgt definiert: die Summe der euklidischen Abstände zwischen jedem Punkt und seinem zugehörigen Zentroid. Je höher die anfängliche Anzahl der Cluster ist, desto geringer ist die Trägheit: Die Punkte haben eine größere Chance, neben einem Zentroid zu liegen. Schauen wir uns an, wie das in unserem Beispiel aussieht:

K-means: Fokus auf diesen Clustering & Machine Learning Algorithmus (6)

Es fällt auf, dass die Trägheit ab 3 Clustern stagniert. Diese Methode ist schlüssig. Man kann sie mit einem präziseren Ansatz verbinden, der jedoch mehr Rechenzeit erfordert: dem Silhouettenkoeffizienten. Er wird wie folgt definiert:

K-means: Fokus auf diesen Clustering & Machine Learning Algorithmus (7)

  • a der durchschnittliche Abstand zu anderen Beobachtungen im selben Cluster (cad der Durchschnitt innerhalb des Clusters).
  • b die durchschnittliche Entfernung zum nächstgelegenen Cluster.

Dieser Koeffizient kann zwischen -1 und +1 variieren. Ein Koeffizient nahe +1 bedeutet, dass die Beobachtung gut innerhalb ihres eigenen Clusters liegt, während ein Koeffizient nahe 0 bedeutet, dass sie nahe einer Grenze liegt; schließlich bedeutet ein Koeffizient nahe -1, dass die Beobachtung mit dem falschen Cluster in Verbindung gebracht wird.

Wie bei der Trägheit ist es sinnvoll, die Entwicklung des Koeffizienten in Abhängigkeit von der Anzahl der Cluster wie folgt anzuzeigen:

K-means: Fokus auf diesen Clustering & Machine Learning Algorithmus (8)

Diese Methode hilft auch dabei, die ideale Anzahl von Clustern zu finden, d.h. 3. Zusätzlich zu diesen beiden Methoden ist es wichtig, eine gründliche Analyse der erstellten Cluster durchzuführen. Darunter verstehe ich eine genaue und gründliche beschreibende Analyse, um die gemeinsamen Merkmale jedes Clusters zu bestimmen. Dies wird dir helfen, die typischen Profile jedes Clusters zu verstehen.

Und nun die Praxis in Python

Das Workout eines K-Mittelwert-Algorithmus wird durch die Bibliothek Sci-Learning erleichtert Scikit-Learn. Unser Beispieldatensatz lässt sich leicht mit der Funktion make_blobs von Scikit-Learn erstellen. Hier ist, wie sie in Code implementiert wird:

K-means: Fokus auf diesen Clustering & Machine Learning Algorithmus (9)

Jetzt, da wir unseren Datensatz haben, können wir mit der Implementierung eines K-means weitermachen. Wir benutzen die Scikit-Learn Bibliothek und sehen uns das Ergebnis an:

K-means: Fokus auf diesen Clustering & Machine Learning Algorithmus (10)

Das Attribut n_clusters der KMeans-Klasse von Scikit-Learn ermöglicht es, die Anzahl der gewünschten Zentroiden festzulegen. Daher legt es auch die Anzahl der anfänglichen Zentroiden fest. Diese Klasse verwendet standardmäßig keine zufällige Initialisierungsmethode, sondern eine Methode, die 2007 von David Arthur und Sergei Vassilvitskii entwickelt wurde und K-MEANS ++ heißt. Bei dieser Methode werden Zentroide ausgewählt, die sich voneinander unterscheiden, wodurch das Risiko einer Konvergenz zu einer nicht-optimalen Lösung verringert wird. Die Standarddistanz ist natürlich die oben definierte euklidische Distanz.

Wo liegen die Grenzen des k-means-Algorithmus?

Wie wir gesehen haben, muss der Algorithmus zunächst die Anzahl der Partitionen festlegen. Dies erfordert eine genaue Vorstellung davon, und obwohl wir zwei komplementäre Methoden zur Optimierung für bestimmte Datensätze gesehen haben, sind sie nicht unfehlbar.

Das liegt daran, dass Datensätze mit z. B. elliptischen Formen problematisch sein können. Im folgenden Beispiel siehst du deutlich zwei Gruppen, die zwei Ellipsen ähneln. Die rechte Abbildung zeigt das Ergebnis nach der Anwendung des k-Mittelwert-Algorithmus. Es ist klar, dass der Algorithmus nicht in der Lage war, unsere beiden Ellipsen zu identifizieren.

K-means: Fokus auf diesen Clustering & Machine Learning Algorithmus (11)

Die Verwendung eines Clustering-Algorithmus wie der k-means-Algorithmus ist nicht einfach, je nachdem, welche Daten du zur Verfügung hast. Die Daten müssen oftmals überarbeitet werden.

Bei Datascientest lernst du, die wichtigsten Clustering-Algorithmen zu beherrschen und sie in Datensätzen zu interpretieren.

Erkunde unsere Kursangebote und bewirb dich für einen Kurs, um mehr über Clustering, aber auch über viele andere Bereiche des Machine Learning zu erfahren.

K-means: Fokus auf diesen Clustering & Machine Learning Algorithmus (12)

DataScientest News

Melde Dich jetzt für unseren Newsletter an, um unsere Guides, Tutorials und die neuesten Entwicklungen im Bereich Data Science direkt per E-Mail zu erhalten.

Weiterlesen

Wie funktioniert meinNOW: Starte Deine Karriere dank einer geförderten Data-Weiterbildung durch die Bundesagentur für Arbeit

DanielApril 16, 2024

Entdecke die Rust Programmiersprache

MelanieApril 12, 2024

Webentwickler Kurs: Wie werde ich so schnell wie möglich zum Experten?

MelanieApril 11, 2024

Google Kubernetes Engine (GKE): Was ist das?

MelanieApril 10, 2024

Möchtest Du informiert bleiben?

Schreib uns Deine E-Mail-Adresse, damit wir Dir die neuesten Artikel zum Zeitpunkt der Veröffentlichung zusenden können!

K-means: Fokus auf diesen Clustering & Machine Learning Algorithmus (17)

K-means: Fokus auf diesen Clustering & Machine Learning Algorithmus (2024)
Top Articles
Latest Posts
Article information

Author: Zonia Mosciski DO

Last Updated:

Views: 6466

Rating: 4 / 5 (51 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Zonia Mosciski DO

Birthday: 1996-05-16

Address: Suite 228 919 Deana Ford, Lake Meridithberg, NE 60017-4257

Phone: +2613987384138

Job: Chief Retail Officer

Hobby: Tai chi, Dowsing, Poi, Letterboxing, Watching movies, Video gaming, Singing

Introduction: My name is Zonia Mosciski DO, I am a enchanting, joyous, lovely, successful, hilarious, tender, outstanding person who loves writing and wants to share my knowledge and understanding with you.