K-medias++
k -means++ es una versión mejorada del algoritmo de agrupamiento k -means . La esencia de la mejora es encontrar más valores iniciales "buenos" de los centroides del clúster. El k-means original no especifica cómo se realiza este paso del algoritmo y, por lo tanto, es inestable. El algoritmo fue propuesto en 2007 por David Arthur y Sergey Vassilvitsky. También existen otros métodos similares descubiertos por otros científicos de forma independiente.
Inicialización
- Elija el primer centroide al azar (entre todos los puntos)
- Para cada punto, encuentre el valor del cuadrado de la distancia al baricentro más cercano (de los ya seleccionados) dx²
- Elija entre estos puntos el próximo centroide de modo que la probabilidad de elegir un punto sea proporcional a la distancia al cuadrado calculada para él.Esto
se puede hacer de la siguiente manera. En el paso 2, debe calcular la suma Sum(dx²) en paralelo con el cálculo de dx². Después de acumular la suma, encuentre el valor Rnd=random(0.0,1.0)*Sum. Rnd apuntará aleatoriamente a un número del intervalo [0; Suma), y solo nos queda determinar a qué punto corresponde. Para hacer esto, debe comenzar a contar la suma S (dx²) nuevamente hasta que la suma exceda Rnd. Una vez que esto sucede, la suma se detiene y podemos tomar el punto actual como el centroide.
Al elegir cada centroide siguiente, no es necesario asegurarse de que no coincida con uno de los puntos ya elegidos como centroides, ya que la probabilidad de volver a seleccionar un punto determinado es 0.
- Repita los pasos 2 y 3 hasta encontrar todos los centroides requeridos.
A continuación, se ejecuta el algoritmo principal k -means .
Implementaciones
Se incluye una implementación del lenguaje Java en la popular biblioteca Apache [1] .
Notas
- ↑ Commons Math: La biblioteca de matemáticas de Apache Commons . Fecha de acceso: 20 de septiembre de 2013. Archivado desde el original el 6 de octubre de 2014. (indefinido)