Necesito agrupar unidades en grupos para minimizar la suma de cuadrados dentro del grupo (WSS), pero necesito asegurarme de que cada grupo contenga al menos unidades. ¿Alguna idea de si alguna de las funciones de agrupación de R permite la agrupación en agrupaciones sujetas a una restricción de tamaño de agrupación mínima? kmeans () no parece ofrecer una opción de restricción de tamaño.
fuente
Este problema se aborda en este documento:
Bradley, PS, KP Bennett y Ayhan Demiriz. "Restringido k-significa agrupamiento". Microsoft Research, Redmond (2000) : 1-8.
Tengo una implementación del algoritmo en python.
fuente
rPython
paquete en R para crear una interfaz para esta implementación a la que accedí desde mi script R.Creo que sería solo una cuestión de ejecutar k significa como parte de un bucle if con una prueba para los tamaños de clúster, es decir, contar n en el clúster k; también recuerde que k significa dará resultados diferentes para cada ejecución en los mismos datos, por lo que probablemente deberías ejecutarlo como parte de un ciclo de todos modos para extraer el "mejor" resultado
fuente
¿Qué tan grande es su conjunto de datos? Tal vez podría intentar ejecutar un clúster jerárquico y luego decidir qué clústeres retienen según su dendrograma.
Si su conjunto de datos es enorme, también podría combinar ambos métodos de agrupación: una agrupación no jerárquica inicial y luego una agrupación jerárquica utilizando los grupos del análisis no jerárquico. Puede encontrar un ejemplo de este enfoque en Martínez-Pastor et al (2005)
fuente
Esto se puede lograr modificando el paso de asignación de clúster (E en EM) formulándolo como un problema de optimización de red lineal de Flujo de costo mínimo (MCF).
He escrito un paquete de Python que usa SimpleMinCostFlow de las herramientas de Investigación de Operaciones de Google, que es una implementación rápida de C ++. Tiene una API scikit-lean estándar.
fuente