Clustering ist eine Technik des maschinellen Lernens, bei der versucht wird, Gruppen oder Cluster von Beobachtungen innerhalb eines Datensatzes zu finden.

Ziel ist es, Cluster so zu finden, dass die Beobachtungen in jedem Cluster einander sehr ähnlich sind, während Beobachtungen in verschiedenen Clustern sehr unterschiedlich sind.

Clustering ist eine Form des unüberwachtes Lernens, da wir lediglich versuchen, eine Struktur innerhalb eines Datensatzes zu finden, anstatt den Wert einer Antwortvariablen vorherzusagen.

Clustering wird häufig im Marketing eingesetzt, wenn Unternehmen Zugriff auf Informationen haben wie:

  • Haushaltseinkommen
  • Größe des Haushalts
  • Haushaltsvorstand Beruf
  • Entfernung vom nächsten Stadtgebiet

Wenn diese Informationen verfügbar sind, kann Clustering verwendet werden, um Haushalte zu identifizieren, die ähnlich sind und möglicherweise eher bestimmte Produkte kaufen oder besser auf eine bestimmte Art von Werbung reagieren.

Eine der häufigsten Formen der Clusterbildung ist die k-Means-Clusterbildung.

Leider kann diese Methode von Ausreißern beeinflusst werden, so dass eine häufig verwendete Alternative die Clusterbildung von k-Medoid ist.

Was ist K-Medoid Clustering?

K-Medoid-Clustering ist eine Technik, bei der wir jede Beobachtung in einem Datensatz in einen der _K-_Cluster einordnen.

Das Endziel besteht darin, K Cluster zu haben, in denen die Beobachtungen innerhalb jedes Clusters einander ziemlich ähnlich sind, während die Beobachtungen in verschiedenen Clustern ziemlich verschieden voneinander sind.

In der Praxis führen wir die folgenden Schritte aus, um ein K-Mittel-Clustering durchzuführen:

1. Wählen Sie einen Wert für K.

  • Zunächst müssen wir entscheiden, wie viele Cluster wir in den Daten identifizieren möchten. Oft müssen wir einfach mehrere verschiedene Werte für K testen und die Ergebnisse analysieren, um festzustellen, welche Anzahl von Clustern für ein bestimmtes Problem am sinnvollsten erscheint.

2. Ordnen Sie jede Beobachtung zufällig einem anfänglichen Cluster von 1 bis K zu.

3. Führen Sie die folgenden Schritte aus, bis sich die Clusterzuweisungen nicht mehr ändern.

  • Berechnen Sie für jeden der K Cluster den Clusterschwerpunkt. Dies ist der Vektor der p-Mediane für die Beobachtungen im k-ten Cluster.
  • Ordnen Sie jede Beobachtung dem Cluster zu, dessen Schwerpunkt am nächsten liegt. Hier wird der nächste Wert anhand des euklidischen Abstands definiert.

Technischer Hinweis:

Da k-Medoid Cluster-Zentroide unter Verwendung von Medianen anstelle von Mitteln berechnen, ist es gegenüber Ausreißern im Vergleich zu k-Mitteln tendenziell robuster.

In der Praxis führen k-means und k-Medoid zu ähnlichen Ergebnissen, wenn der Datensatz keine extremen Ausreißer enthält.

K-Medoid Clustering in R

Das folgende Tutorial enthält ein schrittweises Beispiel für die Durchführung der Clusterbildung von k-Medoid in R

Schritt 1: Laden Sie die erforderlichen Pakete

Zuerst laden wir zwei Pakete, die mehrere nützliche Funktionen für das Clustering von k-Medoid in R enthalten.

library(factoextra)
library(cluster)

Schritt 2: Laden und Vorbereiten der Daten

In diesem Beispiel verwenden wir den in R integrierten Datensatz USArrests, der die Anzahl der Verhaftungen pro 100.000 Einwohner in jedem US-Bundesstaat im Jahr 1973 für Mord, Körperverletzung und Vergewaltigung sowie den Prozentsatz der Bevölkerung in jedem Bundesstaat, der in städtischen Gebieten lebt, enthält, UrbanPop.

Der folgende Code zeigt, wie Sie Folgendes tun:

  • Laden Sie den USArrests- Datensatz
  • Entfernen Sie alle Zeilen mit fehlenden Werten
  • Skalieren Sie jede Variable im Datensatz auf einen Mittelwert von 0 und eine Standardabweichung von 1
#lade Daten
df <- USArrests

#Zeilen mit fehlenden Werten entfernen
df <- na.omit(df)

#skalieren Sie jede Variable auf einen Mittelwert von 0 und eine Standardabweichung von 1
df <- scale(df)

# Die ersten sechs Zeilen des Datensatzes anzeigen
head(df)

               Murder   Assault   UrbanPop         Rape
Alabama    1.24256408 0.7828393 -0.5209066 -0.003416473
Alaska     0.50786248 1.1068225 -1.2117642  2.484202941
Arizona    0.07163341 1.4788032  0.9989801  1.042878388
Arkansas   0.23234938 0.2308680 -1.0735927 -0.184916602
California 0.27826823 1.2628144  1.7589234  2.067820292
Colorado   0.02571456 0.3988593  0.8608085  1.864967207

Schritt 3: Finden Sie die optimale Anzahl von Clustern

Um k-Medoid-Clustering in R durchzuführen, können wir die Funktion pam() verwenden, die für "Partitionierung um Mediane" steht und die folgende Syntax verwendet:

pam(data, k, metric = “euclidean”, stand = FALSE)

wo:

  • data: Name des Datensatzes.
  • k: Die Anzahl der Cluster.
  • metric: Die Metrik, die zur Berechnung der Entfernung verwendet werden soll. Die Standardeinstellung ist euklidisch, Sie können jedoch auch Manhattan angeben.
  • stand: Gibt an, ob jede Variable im Datensatz standardisiert werden soll oder nicht. Standard ist FALSE.

Da wir vorher nicht wissen, wie viele Cluster optimal sind, erstellen wir zwei verschiedene Diagramme, die uns bei der Entscheidung helfen können:

1. Anzahl der Cluster im Vergleich zur Summe innerhalb der Quadratsumme

Zuerst verwenden wir die Funktion fviz_nbclust(), um ein Diagramm der Anzahl der Cluster gegen die Summe innerhalb der Summe der Quadrate zu erstellen:

fviz_nbclust(df, pam, method = "wss")

Optimale Cluster für k-Medoid

Die Summe innerhalb der Quadratsumme nimmt normalerweise immer zu, wenn wir die Anzahl der Cluster erhöhen. Wenn wir also diese Art von Plot erstellen, suchen wir nach einem „Ellbogen“, bei dem sich die Quadratsumme zu „biegen“ oder zu glätten beginnt.

Der Punkt, an dem sich das Diagramm biegt, ist normalerweise die optimale Anzahl von Clustern. Über diese Zahl hinaus tritt wahrscheinlich eine Überanpassung auf.

Für dieses Diagramm scheint es bei k = 4 Clustern einen kleinen Ellbogen oder eine „Biegung“ zu geben.

2. Anzahl der Cluster vs. Lückenstatistik

Eine andere Möglichkeit, die optimale Anzahl von Clustern zu bestimmen, besteht darin, eine als Gap-Statistik bekannte Metrik zu verwenden, die die gesamte Variation innerhalb des Clusters für verschiedene Werte von k mit ihren erwarteten Werten für eine Verteilung ohne Clustering vergleicht.

Wir können die Lückenstatistik für jede Anzahl von Clustern mithilfe der Funktion clusGap() aus dem Clusterpaket zusammen mit einer Darstellung der Clusterstatistik gegen die Lückenstatistik mithilfe der Funktion fviz_gap_stat() berechnen:

#Berechnen Sie die Lückenstatistik basierend auf der Anzahl der Cluster
gap_stat <- clusGap(df,
                   FUN = pam,
                   K.max = 10, #max Cluster zu berücksichtigen
                   B = 50) #totale Bootstrap-Iterationen

#plotten der Anzahl der Cluster vs. Lückenstatistik
fviz_gap_stat(gap_stat) 

K-Medoid optimale Anzahl von Clustern in R

Aus dem Diagramm können wir ersehen, dass die Lückenstatistik bei k = 4 Clustern am höchsten ist, was der zuvor verwendeten Ellbogenmethode entspricht.

Schritt 4: Führen Sie ein K-Medoid-Clustering mit Optimal K durch

Zuletzt können wir k-Medoid-Clustering für den Datensatz durchführen, indem wir den optimalen Wert für k von 4 verwenden:

#Machen Sie dieses Beispiel reproduzierbar
set.seed(1)

#K-Medoid-Clustering mit k = 4 Clustern durchführen
kmed <- pam(df, k = 4)

#Ergebnisse anzeigen
kmed

              ID     Murder    Assault   UrbanPop         Rape
Alabama        1  1.2425641  0.7828393 -0.5209066 -0.003416473
Michigan      22  0.9900104  1.0108275  0.5844655  1.480613993
Oklahoma      36 -0.2727580 -0.2371077  0.1699510 -0.131534211
New Hampshire 29 -1.3059321 -1.3650491 -0.6590781 -1.252564419
Clustering vector:
       Alabama         Alaska        Arizona       Arkansas     California 
             1              2              2              1              2 
      Colorado    Connecticut       Delaware        Florida        Georgia 
             2              3              3              2              1 
        Hawaii          Idaho       Illinois        Indiana           Iowa 
             3              4              2              3              4 
        Kansas       Kentucky      Louisiana          Maine       Maryland 
             3              3              1              4              2 
 Massachusetts       Michigan      Minnesota    Mississippi       Missouri 
             3              2              4              1              3 
       Montana       Nebraska         Nevada  New Hampshire     New Jersey 
             3              3              2              4              3 
    New Mexico       New York North Carolina   North Dakota           Ohio 
             2              2              1              4              3 
      Oklahoma         Oregon   Pennsylvania   Rhode Island South Carolina 
             3              3              3              3              1 
  South Dakota      Tennessee          Texas           Utah        Vermont 
             4              1              2              3              4 
      Virginia     Washington  West Virginia      Wisconsin        Wyoming 
             3              3              4              4              3 
Objective function:
   build     swap 
1.035116 1.027102 

Available components:
 [1] "medoids"    "id.med"     "clustering" "objective"  "isolation" 
 [6] "clusinfo"   "silinfo"    "diss"       "call"       "data"        

Beachten Sie, dass die vier Cluster-Schwerpunkte tatsächliche Beobachtungen im Datensatz sind. Nahe der Spitze der Ausgabe können wir sehen, dass die vier Schwerpunkte die folgenden Zustände sind:

  • Alabama
  • Michigan
  • Oklahoma
  • New Hampshire

Mit der Funktion fivz_cluster() können wir die Cluster in einem Streudiagramm visualisieren, in dem die ersten beiden Hauptkomponenten auf den Achsen angezeigt werden:

#plotten der Ergebnisse des endgültigen k-Medoid-Modells
fviz_cluster(kmed, data = df)

Zeichnen Sie k-Medoid-Cluster in R

Wir können auch die Clusterzuweisungen jedes Status wieder an den ursprünglichen Datensatz anhängen:

#Clusterzuordnung zu Originaldaten hinzufügen
final_data <- cbind(USArrests, cluster = kmed$cluster)

#Endgültige Daten anzeigen
head(final_data)

           Murder Assault UrbanPop Rape cluster
Alabama      13.2     236       58 21.2       1
Alaska       10.0     263       48 44.5       2
Arizona       8.1     294       80 31.0       2
Arkansas      8.8     190       50 19.5       1
California    9.0     276       91 40.6       2
Colorado      7.9     204       78 38.7       2

Den vollständigen R-Code, der in diesem Beispiel verwendet wird, finden Sie hier.

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: