K bedeutet Clustering in R: Schritt-für-Schritt-Anleitung mit Beispiel
Veröffentlicht: 2020-02-17Als Datenwissenschaftler werden Sie viel Clustering betreiben. Es stehen viele Arten von Clustering-Algorithmen zur Verfügung, und Sie sollten mit deren Verwendung vertraut sein. In diesem Artikel besprechen wir einen beliebten Clustering-Algorithmus, K-Means, und sehen, wie er in R verwendet wird.
Sie erfahren die grundlegende Theorie hinter K-Means-Clustering in R und wie es verwendet wird. Wir haben auch später in diesem Artikel ein praktisches Beispiel besprochen. Stellen Sie sicher, dass Sie diesen Artikel für zukünftige Referenzzwecke mit einem Lesezeichen versehen. Lesen Sie mehr über die Clustering-Analyse in Data Mining.
Bevor wir anfangen zu diskutieren, dass K Clustering in R bedeutet, sollten wir einen Blick auf die Arten von Clustering-Algorithmen werfen, die vorhanden sind, damit Sie besser verstehen, wie dieser Algorithmus damit umgeht.
Lesen Sie: Top-R-Bibliotheken in Data Science
Inhaltsverzeichnis
Arten von Clustering
Wenn Sie mehrere Objekte so gruppieren, dass sich die Objekte, die sich am ähnlichsten sind, in einem engen Cluster befinden, spricht man von Clustering. Der Abstand zwischen den Objekten könnte für ihre Ähnlichkeit relevant sein. Ähnlichkeit zeigt die Stärke der Beziehung zwischen zwei unterschiedlichen Objekten in der Datenwissenschaft. Clustering ist eine beliebte Data-Mining-Technik. Clustering findet seine Anwendungen in zahlreichen Branchen und Bereichen, darunter Bildanalyse, maschinelles Lernen, Datenkomprimierung, Mustererkennung und viele andere.
Es gibt zwei Arten von Clustering – Hard und Soft. Lassen Sie uns jeden von ihnen kurz besprechen.
- In einem harten Cluster würde ein Datenpunkt vollständig zu einem Cluster gehören oder überhaupt nicht dazugehören. Es gibt kein Dazwischen.
- In einem weichen Cluster könnte ein Datenobjekt aufgrund einer gewissen Wahrscheinlichkeit oder Wahrscheinlichkeit gleichzeitig mit mehr als einem Cluster in Beziehung stehen.
Lernen Sie den Data Science-Kurs online von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.
Arten von Clustering-Algorithmen
So wie es verschiedene Arten von Clustern gibt, gibt es auch verschiedene Arten von Clustering-Algorithmen. Sie können Algorithmen basierend auf ihrem Clustermodell unterscheiden. Das bedeutet, dass Sie sie anhand ihrer Clusterbildung unterscheiden können. Wenn wir anfangen würden, über alle Arten von Clustering-Algorithmen zu sprechen, wird dieser Leitfaden zu lang und weit vom Hauptpunkt entfernt. Wir werden daher nur einige bekannte Arten von Clustering-Algorithmen diskutieren. Es gibt konnektivitätsbasierte, schwerpunktbasierte, dichtebasierte und verteilungsbasierte Clustering-Algorithmen.
Grundkonzept von K-Means
Das Grundkonzept von K-means ist recht einfach. K-Means bezieht sich auf das Definieren der Cluster, sodass die Gesamtvariation innerhalb des Clusters so gering wie möglich ist. Es gibt eine Vielzahl von k-means-Algorithmen. Der gebräuchlichste k-Means-Algorithmus ist der Hartigan-Wong-Algorithmus, der besagt, dass die gesamte Intra-Cluster-Variation gleich der Summe der quadrierten Abstände euklidischer Abstände zwischen Zentroiden und ihren Elementen ist:
W( C k )= x ich C k ( x ich – k ) 2
Dabei bezieht sich x i auf einen Datenpunkt, der zu dem Cluster C k gehört, und k bezieht sich auf den Mittelwert der Datenpunkte, die in dem Cluster Ck vorhanden sind.
Der Wert von x i sollte so sein, dass die Summe des quadrierten Abstands zwischen x i und k das Minimum ist.
Was ist der K-Means-Algorithmus?
Um den Algorithmus zu verwenden, müssen wir zunächst die Anzahl der Cluster K angeben, die in unserem Ergebnis vorhanden sein werden. Der Algorithmus wählt zunächst zufällig K Objekte aus, die als anfängliche Clusterzentren dienen. Wir nennen diese Objekte Clusterschwerpunkte oder Mittelwerte. Dann ordnen wir die verbleibenden Objekte ihren nächsten Schwerpunkten zu. Der euklidische Abstand zwischen den Clusterschwerpunkten und den Objekten bestimmt, wie nahe sie sind.
Nachdem wir die Objekte ihren jeweiligen Schwerpunkten zugeordnet haben, berechnet der Algorithmus den Mittelwert der Cluster. Nach dieser Neuberechnung überprüfen wir die Beobachtungen erneut, um festzustellen, ob sie möglicherweise näher an einem anderen Cluster liegen. Dann ordnen wir die Objekte entsprechend den Schwerpunkten neu zu. Wir wiederholen diese Schritte, bis das Zuweisen von Clustern aufhört. Das bedeutet, dass wir die Iterationen nicht mehr wiederholen, wenn die in einer Iteration gebildeten Cluster die gleichen sind wie die in ihrer vorherigen Iteration.
Verwenden von K-Means-Clustering (Beispiel)
Nachdem Sie nun wissen, was der K-Means-Algorithmus in R ist und wie er funktioniert, wollen wir zur besseren Verdeutlichung ein Beispiel diskutieren. In diesem Beispiel gruppieren wir die Kunden einer Organisation, indem wir die Datenbank der Großhandelskunden verwenden. Die Daten für dieses Problem sind im Machine Learning Repository von Berkley UCI verfügbar. Sie können es hier überprüfen .
Zuerst lesen wir die Daten. Und dann erhalten Sie eine Zusammenfassung davon. Nachdem Sie die Daten gelesen und ihre Zusammenfassung gesehen haben, werden Sie feststellen, dass es einige deutliche Unterschiede zwischen den Top-Verbrauchern in verschiedenen Kategorien gibt. Sie werden einige Ausreißer finden, die Sie nicht einfach durch Normalisierung (oder Skalierung) entfernen können. Mit diesen Daten möchte ein Unternehmen sehen, was seine mittleren Kunden die meiste Zeit kaufen. Das liegt daran, dass ein Unternehmen eine gute Vorstellung davon hat, was seine Top-Kunden kaufen.
Um einen Cluster von Kunden der mittleren Ebene zu erstellen, sollten wir zuerst die oberste Kundenschicht aus jeder Kategorie entfernen. Also werden wir die Top 5 entfernen und ein neues Set erstellen. So gehen wir vor:
top.n.custs <- function (data,cols,n=5) { #Benötigt einen Datenrahmen und das oberste N zum Entfernen
idx.to.remove <-integer(0) #Initialisieren Sie einen Vektor, um zu entfernende Kunden zu speichern
for (c in cols){ # Für jede Spalte in den Daten, die wir an diese Funktion übergeben haben
col.order <-order(data[,c],decreasing=T) #Sortiere Spalte „c“ in absteigender Reihenfolge (größer oben)
#Order gibt den sortierten Index zurück (z. B. Zeile 15, 3, 7, 1, …) und nicht die tatsächlichen sortierten Werte.
idx <-head(col.order, n) #Nehmen Sie die ersten n der sortierten Spalte C bis
idx.to.remove <-union(idx.to.remove,idx) # Kombinieren und deduplizieren Sie die Zeilen-IDs, die entfernt werden müssen
}
return(idx.to.remove) #Gib die Indizes der zu entfernenden Kunden zurück
}
top.custs <-top.n.custs(data,cols=3:8,n=5)
length(top.custs) #Wie viele Kunden müssen entfernt werden?
data[top.custs,] #Untersuchen Sie die verfügbaren Kunden

data.rm.top<-data[-c(top.custs),] #Entfernen Sie die erforderlichen Kunden
Mit dieser neuen Datei können wir mit der Arbeit an unserer Clusteranalyse beginnen. Um die Clusteranalyse durchzuführen, verwenden wir den folgenden Code:
set.seed(76964057) #Legt den Seed für die Reproduzierbarkeit fest
k <-kmeans(data.rm.top[,-c(1,2)], center=5) #Erstelle 5 Cluster, entferne Spalten 1 und 2
k$centers #Clusterzentren anzeigen
table(k$cluster) #Geben Sie die Anzahl der Datenpunkte in jedem Cluster an
Wenn Sie diesen Code in der angegebenen Datenbank ausgeführt haben, erhalten Sie diese Ergebnisse:
- Das erste Cluster hätte hochwertige Waschmittel, aber die geringe Menge an frischen Lebensmitteln
- Das dritte Cluster hätte mehr frische Produkte
Für eine detaillierte Interpretation der Ergebnisse müssen Sie withinss und betweenss verwenden. k$innerhalb ist gleich der Summe der Quadrate des Abstands zwischen jedem Datenobjekt von der Mitte des Clusters. Je niedriger der Bereich, desto besser wäre das Ergebnis. Wenn das Insides-Maß in Ihren Daten hoch ist, bedeutet dies, dass viele Ausreißer vorhanden sind und Sie eine Datenbereinigung durchführen müssen. k$betweenss ist die Summe der Abstandsquadrate zwischen verschiedenen Mittelpunkten der Cluster. Der Abstand zwischen den Clusterzentren sollte möglichst groß sein.
Lesen Sie: 6 Häufiger verwendete Datenstrukturen in R
Sie sollten auf Trial-and-Error zurückgreifen, um die genauesten Ergebnisse zu erhalten. Dazu müssen Sie verschiedene Werte für K ausprobieren. Wenn das Diagramm Ihrer Ergebnisse keinen Zuwachs innerhalb Ihrer Cluster zeigt, wäre dieser Punkt der am besten geeignete Wert für K. Sie können den Wert finden von K durch den folgenden Code:
rng<-2:20 #K von 2 bis 20
trys <-100 #Führen Sie den K-Means-Algorithmus 100 Mal aus
avg.totw.ss <-integer(length(rng)) #Einen leeren Vektor einrichten, der alle Punkte enthält
for(v in rng){ # Für jeden Wert der Bereichsvariablen
v.totw.ss <-integer(tries) #Einen leeren Vektor einrichten, um die 100 Versuche aufzunehmen
for(i in 1:versuche){
k.temp <-kmeans(data.rm.top,centers=v) #Run kmeans
v.totw.ss[i] <-k.temp$tot.withinss#Speichere die Summe innerhalb vonss
}
avg.totw.ss[v-1] <-mean(v.totw.ss) #Durchschnitt der 100 insgesamt innerhalb vonss
}
plot(rng,avg.totw.ss,type=“b“, main=“Total Within SS by Various K“,
ylab=”Durchschnittliche Summe innerhalb der Summe der Quadrate”,
xlab="Wert von K")
Das ist es. Jetzt können Sie das Diagramm, das Sie von diesem Code erhalten, verwenden, um den besten Wert für K zu erhalten, und ihn verwenden, um die erforderlichen Ergebnisse zu erhalten. Verwenden Sie dieses Beispiel, um Ihr Wissen über K-Means-Clustering in R zu testen. Hier ist der gesamte Code, den wir im Beispiel verwendet haben:
data <-read.csv(“Großhandelskunden data.csv”,header=T)
zusammenfassungsdaten)
top.n.custs <- function (data,cols,n=5) { #Benötigt einen Datenrahmen und das oberste N zum Entfernen
idx.to.remove <-integer(0) #Initialisieren Sie einen Vektor, um zu entfernende Kunden zu speichern
for (c in cols){ # Für jede Spalte in den Daten, die wir an diese Funktion übergeben haben
col.order <-order(data[,c],decreasing=T) #Sortiere Spalte „c“ in absteigender Reihenfolge (größer oben)
#Order gibt den sortierten Index zurück (z. B. Zeile 15, 3, 7, 1, …) und nicht die tatsächlichen sortierten Werte.
idx <-head(col.order, n) #Nehmen Sie die ersten n der sortierten Spalte C bis
idx.to.remove <-union(idx.to.remove,idx) # Kombinieren und deduplizieren Sie die Zeilen-IDs, die entfernt werden müssen
}
return(idx.to.remove) #Gib die Indizes der zu entfernenden Kunden zurück
}
top.custs <-top.n.custs(data,cols=3:8,n=5)
length(top.custs) #Wie viele Kunden sollen entfernt werden?
data[top.custs,] #Untersuchen Sie die Kunden
data.rm.top <-data[-c(top.custs),] #Entferne die Kunden
set.seed(76964057) #Legt den Seed für die Reproduzierbarkeit fest
k <-kmeans(data.rm.top[,-c(1,2)], center=5) #Erstelle 5 Cluster, entferne Spalten 1 und 2
k$centers #Clusterzentren anzeigen
table(k$cluster) #Geben Sie die Anzahl der Datenpunkte in jedem Cluster an
rng<-2:20 #K von 2 bis 20
trys<-100 #Führe den K-Means-Algorithmus 100 Mal aus
avg.totw.ss<-integer(length(rng)) #Einen leeren Vektor einrichten, der alle Punkte enthält
for(v in rng){ # Für jeden Wert der Bereichsvariablen
v.totw.ss<-integer(tries) #Erstellen Sie einen leeren Vektor, um die 100 Versuche aufzunehmen
for(i in 1:versuche){
k.temp<-kmeans(data.rm.top,centers=v) #Run kmeans
v.totw.ss[i]<-k.temp$tot.withinss#Speichere die Summe innerhalb vonss
}
avg.totw.ss[v-1]<-mean(v.totw.ss) #Durchschnitt der 100 insgesamt innerhalb vonss
}
plot(rng,avg.totw.ss,type=“b“, main=“Total Within SS by Various K“,
ylab=”Durchschnittliche Summe innerhalb der Summe der Quadrate”,
xlab="Wert von K")
Fazit
Wir hoffen, dass Ihnen dieser Leitfaden gefallen hat. Wir haben versucht, es kurz und umfassend zu halten. Wenn Sie Fragen zum K-Means-Algorithmus haben, können Sie uns gerne fragen. Wir beantworten gerne Ihre Fragen.
Wenn Sie neugierig sind, etwas über Data Science zu lernen, schauen Sie sich das Executive PG Program in Data Science von IIIT-B & upGrad an, das für Berufstätige entwickelt wurde und mehr als 10 Fallstudien und Projekte, praktische Workshops, Mentoring mit Branchenexperten, 1 -on-1 mit Branchenmentoren, mehr als 400 Stunden Lern- und Jobunterstützung bei Top-Unternehmen.
Was sind einige der Nachteile der Verwendung von K-means?
Ausreißer können Schwerpunkte ziehen, oder Ausreißer können ihren eigenen Cluster erhalten, anstatt ignoriert zu werden. Da K-Means stochastisch ist, kann es nicht sicherstellen, dass die globale optimale Clustering-Lösung gefunden wird. In Wirklichkeit können Ausreißer und verrauschte Daten den Algorithmus sehr empfindlich machen. Ziehen Sie vor dem Gruppieren in Betracht, Ausreißer zu eliminieren oder zu entfernen. Beim Gruppieren von Daten mit variablen Größen und Dichten hat K-means Schwierigkeiten. Sie müssen K-means verallgemeinern, um solche Daten zu clustern. Selbst wenn sie eindeutig zu demselben Cluster gehören, lässt der k-Means-Algorithmus nicht zu, dass weit voneinander entfernte Datenpunkte denselben Cluster teilen.
Was ist die Ellbogenmethode in K-means?
Die k-Means-Methode ist stark darauf angewiesen, die geeignete Anzahl von Clustern zu finden. Der Elbow Approach ist eine weit verbreitete Methode zur Bestimmung des besten K-Wertes. Die Ellbogentechnik führt K-Means-Clustering für den Datensatz für einen Bereich von K-Werten im Diagramm durch und berechnet dann eine Durchschnittspunktzahl für alle Cluster für jeden Wert von K. Die Verzerrungspunktzahl, die die Summe der quadratischen Entfernungen von jedem Punkt ist zu seinem zugewiesenen Mittelpunkt, wird standardmäßig berechnet. Andere datengesteuerte Modelle, wie z. B. die Anzahl der Hauptkomponenten zur Charakterisierung eines Datensatzes, können dieselbe Technik verwenden, um die Anzahl der Parameter zu bestimmen.
Wie können wir Ausreißer in K-Means finden?
Ausreißer beim K-Means-Clustering können unter Verwendung sowohl einer entfernungsbasierten als auch einer clusterbasierten Technik entdeckt werden. Beim hierarchischen Clustering werden Ausreißer anhand von Dendrogrammen entdeckt. Ziel des Projekts ist es, Ausreißer zu entdecken und zu eliminieren, um das Clustering genauer zu machen. Die Daten werden in K Gruppen aufgeteilt, indem sie den nächstgelegenen Clusterzentren im K-Mittelwert-basierten Ausreißer-Identifizierungsansatz zugeordnet werden. Wir können dann den Abstand oder die Unähnlichkeit zwischen jedem Element und seinem Clusterzentrum berechnen und die Ausreißer mit den größten Abständen auswählen. Da sich Extremwerte schnell auf einen Mittelwert auswirken können, ist die K-Means-Clustering-Methode empfindlich gegenüber Ausreißern.