He estado tratando de entender los diferentes algoritmos de agrupación de k-means que se implementan principalmente en el stats
paquete del R
lenguaje.
Entiendo el algoritmo de Lloyd y el algoritmo en línea de MacQueen. La forma en que los entiendo es la siguiente:
Algoritmo de Lloyd:
Inicialmente, se eligen observaciones aleatorias 'k' que servirán como centroides de los grupos 'k'. Luego, los siguientes pasos ocurren en iteración hasta que los centroides convergen.
- Se calcula la distancia euclidiana entre cada observación y los centroides elegidos.
- Las observaciones más cercanas a cada centroide están etiquetadas dentro de los cubos 'k'.
- La media de todas las observaciones en cada segmento sirve como nuevos centroides.
- Los nuevos centroides reemplazan a los antiguos centroides y la iteración vuelve al paso 1 si los viejos y nuevos centroides no han convergido.
Las condiciones para converger son las siguientes: los centroides antiguos y nuevos son exactamente idénticos, la diferencia entre los centroides es pequeña (del orden de 10 ^ -3) o se alcanza el número máximo de iteraciones (10 o 100).
Algoritmo de MacQueen:
Esta es una versión en línea donde las primeras instancias 'k' se eligen como centroides.
Luego, cada instancia se coloca en cubos según el centroide más cercano a esa instancia. El centroide respectivo se recalcula.
Repita este paso hasta que cada instancia se coloque en el cubo apropiado.
Este algoritmo solo tiene una iteración y el ciclo continúa para instancias 'x'
Algoritmo de Hartigan-Wong:
- Asigne todos los puntos / instancias a cubos aleatorios y calcule el centroide respectivo.
- A partir de la primera instancia, encuentre el centroide más cercano y evalúe ese cubo. Si el depósito cambió, vuelva a calcular los nuevos centroides, es decir, el centroide del nuevo depósito asignado y el centroide de la asignación anterior del recipiente, ya que esos son dos centroides que se ven afectados por el cambio
- Recorre todos los puntos y obtén nuevos centroides.
- Realice una segunda iteración de los puntos 2 y 3 que realice una especie de operación de limpieza y reasigne puntos perdidos para corregir los cubos.
Entonces este algoritmo realiza 2 iteraciones antes de que veamos el resultado de convergencia.
Ahora, no estoy seguro de si lo que pienso en el punto 4 del algoritmo Hartigan-Wong es el método correcto del algoritmo. Mi pregunta es, si el siguiente método para Hartigan-Wong es el método correcto para implementar k-means? ¿Hay solo dos iteraciones para este método? Si no, ¿cuál es la condición para la convergencia (cuándo parar)?
Otra posible explicación de implementación es lo que entiendo.
- Asigne todos los puntos / instancias a cubos aleatorios y calcule el centroide respectivo.
- A partir de la primera instancia, encuentre el centroide más cercano y asigne ese depósito. Si el depósito cambió, recalcule los nuevos centroides, es decir, el centroide del nuevo depósito asignado y el centroide de la asignación anterior del depósito, ya que esos son dos centroides afectados por el cambio.
- Una vez que haya un cambio en el depósito para cualquier punto, regrese a la primera instancia y repita los pasos nuevamente.
- La iteración finaliza cuando se repiten todas las instancias y ninguno de los puntos cambia los depósitos.
De esta manera, hay muchas iteraciones que comienzan desde el principio del conjunto de datos una y otra vez cada vez que una instancia cambia de bucket.
Cualquier explicación sería útil y avíseme si entiendo que alguno de estos métodos es incorrecto.