Datenpunkte: (7,1), (3,4), (1,5), (5,8), (1,3), (7,8), (8,2), (5,9) , (8,0)
l = 2 // Überabtastungsfaktor
k = 3 // nein. von gewünschten Clustern
Schritt 1:
Angenommen, der erste Schwerpunkt ist ist { c 1 } = { ( 8 , 0 ) } . X = { x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 , x 8 } = { ( 7 , 1 ) , ( 3 , 4 ) , ( 1C{c1}={(8,0)}X={x1,x2,x3,x4,x5,x6,x7,x8}={(7,1),(3,4),(1,5),(5,8),(1,3),(7,8),(8,2),(5,9)}
Schritt 2:
ist die Summe aller kleinsten 2-Norm Abstände (euklidische Distanz) von allen Punkten aus dem Satz X auf alle Punkte von C . Mit anderen Worten, ermittle für jeden Punkt in X die Entfernung zum nächsten Punkt in C und berechne am Ende die Summe aller dieser minimalen Entfernungen, eine für jeden Punkt in XϕX(C)XCXCX .
Bezeichne mit als der Abstand von x i zu dem nächsten Punkt in C . Wir haben dann ψ = ∑ n i = 1 d 2 C ( x i ) .d2C(xi)xiCψ=∑ni=1d2C(xi)
In Schritt 2 enthält ein einzelnes Element (siehe Schritt 1) und X ist die Menge aller Elemente. Somit ist in diesem Schritt d 2 C ( x i ) einfach der Abstand zwischen dem Punkt in C und x i . Also ist ϕ = ∑ n i = 1 | | x i - c | | 2 .CXd2C(xi)Cxiϕ=∑ni=1||xi−c||2
l o g ( ψ ) = l o g ( 52,128 ) = 3,95 = 4 ( r o u n d e dψ=∑ni=1d2(xi,c1)=1.41+6.4+8.6+8.54+7.61+8.06+2+9.4=52.128
log(ψ)=log(52.128)=3.95=4(rounded)
Beachten Sie jedoch, dass in Schritt 3 die allgemeine Formel angewendet wird, da mehr als einen Punkt enthält.C
Schritt 3:
Die for- Schleife wird für zuvor berechnet wurde.log(ψ)
Die Zeichnungen sind nicht so, wie Sie es verstanden haben. Die Zeichnungen sind unabhängig, was bedeutet, dass Sie für jeden Punkt in eine Zeichnung ausführen . So wird für jeden Punkt in X , bezeichnet als x i , Berechnen einer Wahrscheinlichkeit von P x = l d 2 ( x , C ) / φ X ( C ) . Hier haben Sie l einen Faktor als Parameter angegeben, d 2 ( x , C ) ist der Abstand zum nächstgelegenen Zentrum, und ϕ X ( C )XXxipx=ld2(x,C)/ϕX(C)ld2(x,C)ϕX(C) wird in Schritt 2 erklärt.
Der Algorithmus ist einfach:
- iterieren Sie in , um alle x i zu findenXxi
- für jedes berechnet i p x ixipxi
- eine einheitliche Zahl in generiert , wenn kleiner als ist p x i es auswählen bilden C '[0,1]pxiC′
- Nachdem Sie fertig sind, schließen alle Zeichnungen ausgewählte Punkte von nach C einC′C
Beachten Sie, dass Sie bei jedem Schritt 3, der in der Iteration ausgeführt wird (Zeile 3 des ursprünglichen Algorithmus), erwarten, dass Sie Punkte aus X auswählen (dies wird leicht gezeigt, indem Sie direkt die Formel für die Erwartung schreiben).lX
for(int i=0; i<4; i++) {
// compute d2 for each x_i
int[] psi = new int[X.size()];
for(int i=0; i<X.size(); i++) {
double min = Double.POSITIVE_INFINITY;
for(int j=0; j<C.size(); j++) {
if(min>d2(x[i],c[j])) min = norm2(x[i],c[j]);
}
psi[i]=min;
}
// compute psi
double phi_c = 0;
for(int i=0; i<X.size(); i++) phi_c += psi[i];
// do the drawings
for(int i=0; i<X.size(); i++) {
double p_x = l*psi[i]/phi;
if(p_x >= Random.nextDouble()) {
C.add(x[i]);
X.remove(x[i]);
}
}
}
// in the end we have C with all centroid candidates
return C;
Schritt 4:
wC0Xxi∈XjCw[j]1w
double[] w = new double[C.size()]; // by default all are zero
for(int i=0; i<X.size(); i++) {
double min = norm2(X[i], C[0]);
double index = 0;
for(int j=1; j<C.size(); j++) {
if(min>norm2(X[i],C[j])) {
min = norm2(X[i],C[j]);
index = j;
}
}
// we found the minimum index, so we increment corresp. weight
w[index]++;
}
Schritt 5:
wkkp(i)=w(i)/∑mj=1wj
for(int k=0; k<K; k++) {
// select one centroid from candidates, randomly,
// weighted by w
// see kmeans++ and you first idea (which is wrong for step 3)
...
}
Alle vorherigen Schritte werden wie im Fall von kmeans ++ mit dem normalen Ablauf des Clustering-Algorithmus fortgesetzt
Ich hoffe es ist jetzt klarer.
[Später, später bearbeiten]
Ich habe auch eine Präsentation von Autoren gefunden, bei der man nicht klar erkennen kann, dass bei jeder Iteration mehrere Punkte ausgewählt werden könnten. Die Präsentation ist hier .
[Später bearbeiten @ pera Ausgabe]
log(ψ)
Clog(ψ)
Eine andere Anmerkung ist die folgende Anmerkung auf derselben Seite, die besagt:
In der Praxis zeigen unsere experimentellen Ergebnisse in Abschnitt 5, dass nur wenige Runden ausreichen, um eine gute Lösung zu erreichen.
log(ψ)