Aprendí que al elegir varios grupos, debe buscar un punto de codo para diferentes valores de K.He trazado los valores de withinss para valores de k del 1 al 10, pero no veo un claro codo. ¿Qué haces en un caso como este?
Aprendí que al elegir varios grupos, debe buscar un punto de codo para diferentes valores de K.He trazado los valores de withinss para valores de k del 1 al 10, pero no veo un claro codo. ¿Qué haces en un caso como este?
Respuestas:
Tal vez está utilizando el algoritmo incorrecto para su problema.
K-means es altamente sensible al preprocesamiento. Si un atributo está en una escala mucho más grande que los demás, dominará la salida. Su salida será entonces efectivamente unidimensional
Hagas lo que hagas, debes validar tus resultados por algo que no sea comenzar en un número como SSQ. En cambio, considere la visualización .
La visualización también puede decirle que tal vez solo haya un único clúster en sus datos.
Una forma es inspeccionar manualmente los miembros en sus grupos para una k específica para ver si las agrupaciones tienen sentido (¿son distinguibles?). Esto se puede hacer a través de tablas de contingencia y medios condicionales. Haga esto para una variedad de k y puede determinar qué valor es apropiado.
Una forma menos subjetiva es usar el valor de silueta:
/programming/18285434/how-do-i-choose-k-when-using-k-means-clustering-with-silhouette-function
Esto se puede calcular con su paquete de software favorito. Desde el enlace:
Este método solo compara la similitud intragrupo con la similitud del grupo más cercano. Si la distancia promedio de cualquier miembro de datos a otros miembros del mismo grupo es mayor que la distancia promedio a otros miembros del grupo, entonces este valor es negativo y la agrupación no es exitosa. Por otro lado, los valores de silhuette cercanos a 1 indican una operación de agrupamiento exitosa. 0.5 no es una medida exacta para la agrupación.
contingency tables and conditional means
Esto es más místico. ¿Qué debo hacer con ellos para llegar "subjetivamente" a una buena k?
En general, puede considerar:
Podemos usar el paquete NbClust para encontrar el valor más óptimo de k. Proporciona 30 índices para determinar el número de grupos y propone el mejor resultado.
NbClust (data = df, distance = "euclidean", min.nc = 2, max.nc = 15, method = "kmeans", index = "all")