puntos de datos: (7,1), (3,4), (1,5), (5,8), (1,3), (7,8), (8,2), (5,9) , (8,0)
l = 2 // factor de sobremuestreo
k = 3 // no. de grupos deseados
Paso 1:
C{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)}
Paso 2:
ϕX(C)XCXCX
d2C(xi)xiCψ=∑ni=1d2C(xi)
CXd2C(xi)Cxiϕ=∑ni=1||xi−c||2
ψ=∑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)
C
Paso 3:
log(ψ)
XXxipx=ld2(x,C)/ϕX(C)ld2(x,C)ϕX(C) se explica en el paso 2.
El algoritmo es simplemente:
- Xxi
- xipxi
- [0,1]pxiC′
- C′C
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;
Etapa 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]++;
}
Paso 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)
...
}
Todos los pasos anteriores continúan, como en el caso de kmeans ++, con el flujo normal del algoritmo de agrupamiento
Espero que sea más claro ahora.
[Más tarde, más tarde editar]
También encontré una presentación hecha por autores, donde no se puede ver claramente que en cada iteración se puedan seleccionar varios puntos. La presentación está aquí .
[Más tarde editar el problema de @ pera]
log(ψ)
Clog(ψ)
Otra cosa a tener en cuenta es la siguiente nota en la misma página que dice:
En la práctica, nuestros resultados experimentales en la Sección 5 muestran que solo unas pocas rondas son suficientes para alcanzar una buena solución.
log(ψ)