Estoy analizando los datos del abalón. Mi objetivo es clasificar los datos en tres categorías (premium, medium premium y clásico). Como se trata de un conjunto de datos no etiquetados, he utilizado K means clustering para hacerlo. Mi problema es, ¿hay alguna manera de optimizar el resultado? Siento que el único análisis que puedo hacer en el algoritmo de k means en R es km = kmeans(data,centers=3,nstart=25)
. ¿Hay algún parámetro que pueda ajustar en este algoritmo? Por favor, dame alguna sugerencia.
Respuestas
¿Demasiados anuncios?Si utiliza ?kmeans
en su R console
se pueden identificar diferentes parámetros que se pueden optimizar en el algoritmo de k-means. El mejor parámetro son los valores iniciales de los centroides. Si sabe que alguno de los puntos de datos es de una clase específica y están muy separados, puede utilizarlos como centros de partida para que kmeans no converja a una solución subóptima. De lo contrario, puede tomar muestras al azar y utilizar nstart
para probar múltiples puntos de partida. Además, podría utilizar diferentes algoritmos definidos dentro de kmeans
como Lloyd
, Forgy
, MacQueen
.
Si no te convencen del todo los resultados de un enfoque de k-means, puedes probar lo siguiente:
-
Utilice una variante de k-means, como k-medoids . Esto es casi lo mismo, excepto que k-means utiliza la distancia euclidiana ( $L^2$ ), donde k-medoids utiliza la norma $L^1$ norma. Se sabe que la agrupación k-medoides es más robusta frente a los valores atípicos. En realidad, usted puede crear su variante eligiendo simplemente cualquier función de distancia que se adapte a sus datos.
En R, creo que se puede hacer esto a través de la función
flexclust
(o su propio código, el algoritmo no es tan complicado). -
Realiza la transformación de los datos utilizando el truco del núcleo . A veces el espacio de características no permite una agrupación adecuada. Por ejemplo, si se tienen dos clusters: uno muy pequeño y denso, y otro más bien amplio y disperso; k-means obtendrá clusters del mismo tamaño, que no es lo que se pretende. Otra situación es cuando los puntos no son linealmente separables.
En estos casos, podría realizar agrupación espectral un enfoque basado en el truco del kernel y la teoría de los grafos (¡es más fácil de lo que parece!). Esto no sólo realiza la transformación de los datos, sino que también proporciona una manera bastante fácil de determinar cuántos clústeres puede tener (que no siempre es trivial).