Post on 16-Jun-2020
32
4.3 Hierarchisches Clustering§ k-Means teilt Daten in disjunkte flache Cluster auf,
die in keiner Beziehung zueinander stehen
§ Hierarchische Clusteranalyse erzeugt eine Folge
von Clusterings, die die Daten zunehmend feiner aufteilen
§ enthält alle Daten in einem Cluster
§ enthält einen Cluster pro Datenpunkt
§ Clustering ist in Clustering enthalten, d.h.
C1, . . . , Cn
C1 = {D}
Cn = {{xi} : xi œ D}
Ci Ci≠1
’ Cj œ Ci : ÷ Cl œ Ci≠1 : Cj ™ Cl
Data Science / Kapitel 4: Clustering
33
Dendrogramm§ Dendrogramm veranschaulicht Folge von Clusterings
19 24 1 23 11 14 18 5 8 20 21 17 6 15 4 9 10 22 3 12 16 13 25 2 70.0
0.5
1.0
1.5
2.0
hclust (*, "single")
Cn
C1
Data Science / Kapitel 4: Clustering
34
Agglomerative vs. divisive Verfahren§ Verfahren zur hierarchischen Clusteranalyse einteilbar in
§ agglomerative, welche die Daten zunehmend gruppieren,d.h. in jedem Schritt werden zwei Cluster miteinander verschmolzen; sie heißen auch „bottom up“-Verfahren,da Dendrogramm von unten nach oben aufgebaut wird
§ divisive, welche die Daten zunehmend aufteilen, d.h. in jedem Schritt wird ein Cluster in zwei aufgeteilt; sie heißen auch „top down“-Verfahren, da Dendrogramm von oben nach unten aufgebaut wird
Data Science / Kapitel 4: Clustering
35
Hierarchisches agglomeratives Clustering (HAC)§ Agglomerative Verfahren beginnen mit jedem Datenpunkt
in einem eigenen Cluster und verschmelzen in jedemSchritt zwei Cluster miteinander
§ Es werden die beiden Cluster verschmolzen, die am nächsten zueinander sind, d.h. man benötigt einDistanzmaß für Cluster
Data Science / Kapitel 4: Clustering
36
Cluster-Distanzmaße§ Distanzmaße für Cluster lassen sich aus den Distanzen
der darin enthaltenen Datenpunkte ableiten
§ Single-Link
§ Complete-Link
§ Average-Link
”(Ci, Cj) = min{d(x, y) | x œ Ci, y œ Cj}
”(Ci, Cj) = max{d(x, y) | x œ Ci, y œ Cj}
”(Ci, Cj) = 1|Ci||Cj |
ÿ
xœCi
ÿ
yœCj
d(x, y)
Data Science / Kapitel 4: Clustering
37
Hierarchisches agglomeratives Clustering (HAC)
1 // Beginne mit jedem Datenpunkt in eigenem Cluster2 Cn = {{xi} : xi œ D};3
4 for(int t = n; t > 1; t--) {5 // Bestimme Paar der na chsten Cluster6 Cú
i , Cúj = arg min
Ci,CjœCt : Ci ”=Cj
”(Ci, Cj);
7
8 // Verschmelze die beiden Cluster9 Ct≠1 =
!Ct \
)Cú
i , Cúj
*"fi
)Cú
i fi Cúj
*;
10 }
Data Science / Kapitel 4: Clustering
38
Beispiel HAC§ Betrachte die folgenden Datenpunkte im
mit Distanzmatrix d
R2
x1 = (1, 0)x2 = (2, 1)x3 = (8, 0)
x4 = (12, 1)x5 = (15, 1)
d =
S
WWWWU
0.00 1.41 7.00 11.05 14.040.00 6.08 10.00 13.04
0.00 4.12 7.070.00 3.00
0.00
T
XXXXV
Data Science / Kapitel 4: Clustering
39
Beispiel HAC§ HAC mit Single-Link basierend auf Distanzmatrix d
C5 = {{x1}, {x2}, {x3}, {x4}, {x5}}
C1 = {{x1, x2, x3, x4, x5}}
C3 = {{x1, x2}, {x3}, {x4, x5}}
C2 = {{x1, x2}, {x3, x4, x5}}
C4 = {{x1, x2}, {x3}, {x4}, {x5}}
1 23
4 5
12
34
56
d =
S
WWWWU
0.00 1.41 7.00 11.05 14.040.00 6.08 10.00 13.04
0.00 4.12 7.070.00 3.00
0.00
T
XXXXV
Data Science / Kapitel 4: Clustering
40
Beispiel HAC§ HAC mit Complete-Link basierend auf Distanzmatrix d
C5 = {{x1}, {x2}, {x3}, {x4}, {x5}}
C1 = {{x1, x2, x3, x4, x5}}
C3 = {{x1, x2}, {x3}, {x4, x5}}
C4 = {{x1, x2}, {x3}, {x4}, {x5}}
C2 = {{x1, x2, x3}, {x4, x5}}
4 53
1 2
02
46
810
1214
d =
S
WWWWU
0.00 1.41 7.00 11.05 14.040.00 6.08 10.00 13.04
0.00 4.12 7.070.00 3.00
0.00
T
XXXXV
Data Science / Kapitel 4: Clustering
41
HAC in Python
Data Science / Kapitel 4: Clustering
import numpy as npimport pandas as pdfrom sklearn.preprocessing import MinMaxScalerfrom scipy.cluster.hierarchy import linkagefrom scipy.cluster.hierarchy import dendrogramimport matplotlib.pyplot as plt
# Autodaten einlesencars = pd.read_csv('../data/auto-mpg/auto-mpg.data', header=None, sep='\s+')
# Leistung, Verbrauch und Herkunft extrahierenX = cars.iloc[:, [3,4]].values
# Herkunft extrahiereny = cars.iloc[:, 7].values
# Daten normalisierenmin_max_scaler = MinMaxScaler()min_max_scaler.fit(X)X_normalized = min_max_scaler.transform(X)
# Bezeichnungen der Autos extrahierenlabels = cars.iloc[:,8].values
42
HAC in Python
§ Vollständiges Jupyter-Notebook unter:http://swl.htwsaar.de/.../2017-vl-ds-kap4-clustering.htmlhttp://swl.htwsaar.de/.../2017-vl-ds-kap4-clustering.ipynb
Data Science / Kapitel 4: Clustering
# Hierarchisches agglomeraties Clustering mit Complete-Linkageclusters = linkage(X_normalized, method='complete', metric='euclidean')
# Dendrogramm ausgebendendrogram = dendrogram(clusters, labels=labels)plt.tight_layout()plt.ylabel('Euclidean distance')plt.show()
43
HAC in Python
Data Science / Kapitel 4: Clustering
44
Hierarchisches divisives Clustering (HDC)§ Divisive Verfahren beginnen mit allen Datenpunkten in
einem einzelnen Cluster und teilen in jedem Schritteinen Cluster in zwei Cluster auf
§ Welcher Cluster soll aufgeteilt werden?
§ Wie verteilt man die Datenpunkte darin auf zwei Cluster?
§ Auswahl z.B. des Clusters mit dem größten Durchmesser
diam(Ci) = max{d(x, y) | x œ Ci, y œ Ci}
Data Science / Kapitel 4: Clustering
45
Hierarchisches divisives Clustering (HDC)§ Aufteilung der Datenpunkte im ausgewählten Cluster
§ wähle Datenpunkt mit größter Distanz
zu den anderen Datenpunkten im Cluster
§ Datenpunkte werden in zwei Cluster und aufgeteilt
§ initialisiere und
§ betrachte jeden Datenpunkt in , falls
verschiebe den Datenpunkt nach
qyœCi
d(x, y)
Ci
x
Cj Cl
Cj = {x} Cl = Ci \ {x}Cly
1|Cj |
ÿ
zœCj
d(y, z) <1
|Cl|ÿ
zœCl
d(y, z)
Cj
Data Science / Kapitel 4: Clustering
46
Hierarchisches divisives Clustering (HDC)§ Alternativ kann k-Means als Komponente in einem
hierarchischen divisiven Verfahren dienen
§ teile Cluster durch Anwendung von k-Means (k=2) auf
§ fahre rekursiv mit den entstandenen Clustern fort
Data Science / Kapitel 4: Clustering
47
4.4 Dichtebasiertes Clustering§ Verfahren zur Clusteranalyse mit Repräsentanten
(z.B. k-Means) finden nur konvexe Cluster;zudem wird jeder Datenpunkt eingeordnet
§ Dichtebasierte Verfahren identifizieren Punktmengen,die zusammenhängen undeine durchgängig hoheDichte haben, alsCluster
§ Density-Based SpatialClustering of Applicationswith Noise (DBSCAN)
Quelle: Zaki and Meira [4]
Data Science / Kapitel 4: Clustering
48
DBSCAN§ Epsilon-Nachbarschaft eines Datenpunktes
beinhaltet alle Punkte mit Distanz kleiner gleich ε
§ Datenpunkt heißt Kern (core), wenn es mindestensminpts Punkte in seiner Epsilon-Nachbarschaft gibt
§ Datenpunkt heißt Grenze (border), wenn er kein Kern ist,aber in der Epsilon-Nachbarschaft eines Kerns liegt
§ Sonstige Datenpunkte sind Rauschen (noise)
x
N‘(x) = {y | d(x, y) Æ ‘}
Data Science / Kapitel 4: Clustering
49
Kern, Grenze und Rauschen
§ Datenpunkt ist ein Kern
§ Datenpunkt ist eine Grenze
§ Datenpunkt ist Rauschen
Quelle: Zaki and Meira [4]
minpts = 6
x
y
z
Data Science / Kapitel 4: Clustering
50
Erreichbarkeit§ Ein Datenpunkt ist direkt erreichbar von , wenn
ein Kern ist und gilt
§ Ein Datenpunkt ist erreichbar von , wenn es eineFolge von Datenpunkten gibt, so dass
und gilt und für alledirekt erreichbar von ist
§ Erreichbarkeit ist nicht symmetrisch, da ein Kern seinmuss, aber kein Kern sein könnte
x yx œ N‘(y)
x yx0, . . . , xl
x0 = x xl = y 1 Æ i Æ l
xi xi≠1
y
yx
Data Science / Kapitel 4: Clustering
51
Verbundenheit und Dichtebasierter Cluster§ Zwei Datenpunkte und heißen verbunden, wenn es
einen Kern gibt, so dass sowohl als auch von erreichbar sind
§ Dichtebasierter Cluster ist eine maximale Menge von verbundenen Datenpunkten, d.h. es können gibt keine weiteren Punkte, die hinzugefügt werden können
yxx yz
z
Data Science / Kapitel 4: Clustering
52
DBSCAN§ Idee:
§ Berechne Epsilon-Nachbarschaft für alle Datenpunkte§ Bestimme alle Kerne§ Bestimme Rauschen§ Lasse von jedem Kern, der noch nicht Teil eines Clusters ist,
einen neuen Cluster wachsen
§ Achtung: Wenn Datenpunkte nur Teil eines Clusters sein können, dann ist DBSCAN nicht deterministisch, dadie Zuweisung von Datenpunkten zu Clustern vonder Reihenfolge deren Betrachtung abhängt
Data Science / Kapitel 4: Clustering
53
DBSCAN
1 dbScan (D, ‘, minpts) {2 // Kerne3 Cores = ÿ;4
5 for(x œ D) {6 // Epsilon - Nachbarschaft berechnen7 N‘(x) = computeNeighborhood (x, ‘);8
9 // Cluster -ID des Knotens initialisieren10 id(x) = ÿ;11
12 // Ist der Datenpunkt ein Kern?13 if (N‘(x) Ø minpts) Cores = Cores fi {x};14 }15
16 // Cluster von jedem Kern aus wachsen lassen17 k = 0;18 for(x œ Cores) {19 k++;20 id(x) = k;21 densityConnected (x,k);22 }23
24 // Clustering , Grenze und Rauschen bestimmen25 C = ÿ;26 for(i = 1 . . . k) C = C fi {{x œ D : id(x) = k}};27
28 Noise = {x œ D : id(x) = ÿ};29 Border = D \ {Cores fi Noise};30 return C, Cores, Border , Noise;31 }
1 densityConnected (x, k) {2 for(y œ N‘(x)) {3 id(y) = k;4 if (y œ Cores) densityConnected (y, k);5 }6 }
Data Science / Kapitel 4: Clustering
54
DBSCAN
Quelle: Zaki and Meira [4]
Data Science / Kapitel 4: Clustering
55
DBSCAN in Python
Data Science / Kapitel 4: Clustering
import numpy as npimport pandas as pdfrom sklearn.model_selection import train_test_splitfrom sklearn.preprocessing import MinMaxScalerfrom sklearn.cluster import DBSCANfrom matplotlib.backends.backend_pdf import PdfPagesimport matplotlibimport matplotlib.pyplot as plt
# Autodaten einlesencars = pd.read_csv('../data/auto-mpg/auto-mpg.data', header=None, sep='\s+')
# Leistung, Verbrauch und Herkunft extrahierenX = cars.iloc[:, [3,4]].values
# Herkunft extrahiereny = cars.iloc[:, 7].values
# Daten normalisierenmin_max_scaler = MinMaxScaler()min_max_scaler.fit(X)X_normalized = min_max_scaler.transform(X)
# DBScan (epsilon=0.05, minpts=5) anwendendb = DBSCAN(eps=0.05, min_samples=5, metric='euclidean')db.fit_predict(X_normalized)
56
DBSCAN in Python
§ Vollständiges Jupyter-Notebook unter:http://swl.htwsaar.de/.../2017-vl-ds-kap4-clustering.htmlhttp://swl.htwsaar.de/.../2017-vl-ds-kap4-clustering.ipynb
Data Science / Kapitel 4: Clustering
# Herkunft# U.S. : o / Europe: x / Japan : +m = ['o' if o==1 else 'x' if o==2 else '+' for o in y]
# Verfügbare Farbenc = ['red', 'blue', 'green', 'yellow', 'violet']
# Cluster Labelsl = db.labels_
# Autos plottenfor i in range(0,len(X)):plt.scatter(X[i,0], X[i,1], color=('black' if l[i] == -1 else c[l[i]]), marker=m[i])
plt.xlabel('Leistung [hp]')plt.ylabel('Gewicht [lbs]')plt.show()
57
DBSCAN in Python
Data Science / Kapitel 4: Clustering
58
Zusammenfassung§ Hierarchisches Clustering bestimmt eine Folge von
Clusterings, die als Dendrogramm darstellbar ist
§ agglomerative Verfahren verschmelzen wiederholtdie zueinander nächsten Cluster
§ divisive Verfahren beruhen auf einer wiederholtenAufteilung von Clustern
§ DBSCAN als dichtebasiertes Verfahren zur Clusteranalysefindet auch nicht-konvexe Cluster
Data Science / Kapitel 4: Clustering
59
Literatur[1] S. Raschka: Machine Learning in Python,
mitp, 2017 (Kapitel 3)
[2] M. J. Zaki und W. Meira: Data Mining and Analysis,Cambridge University Press, 2014 (Kapitel 13 & 14)
Data Science / Kapitel 4: Clustering