Una técnica es usar el algoritmo de KMeans de forma repetida (iterada), aumentando la cantidad de grupos (cluster) en cada ejecución y obteniendo el error intracluster en cada iteración, donde este error calcula la distancia entre cada observación y el cluster al cual pertenece. (Para detalle ver referencia).
Para detalles de KMeans, ver nota publicada AQUI
Con esta técnica (conocida como SSE ó Sum of Squares Error) se puede obtener la siguiente gráfica que permite identificar la cantidad ideal de cluster o grupos:
Para lograr este gráfico en R, puede usarse el siguiente script:
#------------------------------------------------------------------------------------ # Fija semilla inicial de numeros pseudoaleatorios # para obtener misma serie aleatoria en ejecuciones. set.seed(123) #------------------------------------------------------------------------------------ #Carga el archivo de datos de Clientes Clientes <- read.csv("C:/Archivos/Clientes.csv") #------------------------------------------------------------------------------------ # Crea vector "Errores", sin datos # Crea variable "K_Max" con la cant. maxima de k a analizar Errores <-NULL K_Max <-9 #------------------------------------------------------------------------------------ # Ejecuta kmeans con diferentes cluster, desde 1 hasta 9 # Luego guarda el error de cada ejecucion en el vector "Errores" for (i in 1:K_Max) { Errores[i] <- sum(kmeans(Clientes[-1], centers=i)$withinss) } #------------------------------------------------------------------------------------ # Grafica el vector "Errores" plot(1:K_Max, Errores, type="b", xlab="Cantidad de Cluster", ylab="Suma de error")
http://stackoverflow.com/questions/15376075/cluster-analysis-in-r-determine-the-optimal-number-of-clusters
Excelente publicación, como utilizo el algoritmo para segmentar clientes de datos financieros.
ResponderEliminar