12 votos

¿Tiene la k-means alguna ventaja sobre el HDBSCAN que se espera para el tiempo de ejecución?

Recientemente me he enterado de HDBSCAN (un método bastante nuevo de agrupación, aún no disponible en scikit-learn) y estoy realmente sorprendido de lo bueno que es. La siguiente imagen ilustra que el predecesor del HDBSCAN - DBSCAN - es ya el único algoritmo que funciona perfectamente en una muestra de diferentes tareas de clustering:

Clustering

Con el HDBSCAN, ni siquiera necesitas establecer el parámetro de distancia del DBSCAN, lo que lo hace aún más intuitivo. Yo mismo lo he probado en algunas tareas de agrupación personalizadas, y siempre funcionó mejor que cualquier otro algoritmo que haya probado hasta ahora.

Así que mi pregunta es: Excepto en el tiempo de cálculo, donde el medio K sigue siendo superior a todo, ¿hay algún caso en el que el medio K pueda ser superior? ¿Datos de alta dimensión por ejemplo, o una extraña combinación de cúmulos? Honestamente no puedo pensar en nada...

2 votos

Si las condiciones bastante fuertes para k-means se cumplen, asumo que HDBSCAN podría no minimizar la SSE. Sin embargo, no se me ocurre ningún ejemplo en el que esto se cumpla. Por otra parte, k-means es fácil de explicar. A veces esto es una ventaja. A veces, definitivamente no lo es.

7voto

Amadiere Puntos 5606
  1. La aleatorización puede ser valiosa. Puede ejecutar k-means varias veces para obtener diferentes clusters posibles, ya que no todos pueden ser buenos. Con HDBSCAN, siempre obtendrá el mismo resultado.

  2. Clasificador: k-means proporciona un clasificador de centro más cercano obvio y rápido para predecir la etiqueta de los nuevos objetos. Etiquetar correctamente los nuevos objetos en HDBSCAN no es obvio

  3. No hay ruido. Muchos usuarios no saben (quieren) manejar el ruido en sus datos. K-means da un resultado muy simple y fácil de entender: cada objeto pertenece exactamente a un cluster. Con HDBSCAN, los objetos pueden pertenecer a 0 clusters, y los clusters son realmente un árbol y no planos.

  4. Rendimiento y aproximación. Si tienes un conjunto de datos enorme, puedes tomar una muestra aleatoria para k-means, y la estadística dice que obtendrás casi el mismo resultado. En el caso de HDBSCAN, no está claro cómo utilizarlo sólo con un subconjunto de datos.

Pero no me malinterpreten. En mi opinión, k-means es muy limitado, difícil de usar y, a menudo, mal utilizado en problemas y datos inapropiados. Admiro el algoritmo HDBSCAN (y los originales DBSCAN y OPTICS). En datos geográficos, estos funcionan mil veces mejor que k-means. K-means está totalmente sobreutilizado (porque en demasiadas clases no se enseña nada más que k-means), y mini-batch k-means es la peor versión de k-means, no tiene sentido usarlo cuando tus datos caben en la memoria (de ahí que debe de sklearn, en mi opinión).

0 votos

Gracias por tu aportación. En cuanto a 1.: La aleatorización es ciertamente útil para mejorar un mal algoritmo, pero ¿es realmente mejor que tener un algoritmo que obtenga sistemáticamente buenos resultados? En mi opinión, la aleatorización en la mayoría de los casos es mala, porque nunca puedo estar seguro de haber hecho suficientes rondas para obtener un "buen" resultado...

0 votos

Respecto a la 2.: HDBSCAN en su implementación en Python tiene un método predict(), al igual que k-means - Etiquetar correctamente los nuevos objetos es por tanto bastante obvio :)

0 votos

"Consistentemente bueno" puede no ser posible, y entonces sólo tienes consistentemente malo. De una explorador punto de vista, los diferentes resultados significan sobre todo que tienes más de una oportunidad. Diez intentos con una probabilidad del 10% es probablemente mejor que un intento con una probabilidad del 80%.

1voto

alian Puntos 43

Sí, hay un ejemplo: El conjunto de datos del iris está casi perfectamente agrupado por k-means con respecto a sus tres clases, mientras que hdbscan probablemente no va a ser capaz de recuperar esas tres clases. Por supuesto, hay que saber que hay tres clases.

Sin embargo, me gustaría argumentar que esta tarea no es lo que se pretende con el clustering - sería una especie de tarea de "clasificación no supervisada" que es básicamente una tontería. Sin embargo, una desafortunada cantidad de investigadores están evaluando sus trabajos así (como en "probar si el clustering puede recuperar las etiquetas"). La razón es sencilla: Es intrínsecamente difícil evaluar el aprendizaje no supervisado - lo sé, porque yo mismo soy un investigador de clustering. Así que este es un "enfoque de evaluación" inherentemente inválido, pero sencillo de entender. Si alguien está interesado en más información al respecto, puedo entregarla, pero no estoy seguro de que a alguien le interese en este momento.

Desde el punto de vista científico, no existe una técnica de agrupación "buena" o "mala". Sólo hay diferentes técnicas que siguen diferentes definiciones de lo que es un "cluster" en primer lugar. Sin embargo, la definición que sigue k-means no suele ser la definición que se desea - por eso k-means no suele ser el método que se desea y, por tanto, el uso de k-means es limitado. La definición es muy opinable. De hecho, parece que ni siquiera estoy seguro de si llamaría a k-means un método de clustering o más bien un método de cuantificación de vectores - como muchos otros lo han llamado también.

Y aquí vemos un muy aplicación útil de k-means (y francamente para la que yo usaría k-means): Para teselar un espacio. Dado que k-means es también muy rápido, es muy útil para algún tipo de "histograma multidimensional" o "pre-cluster" para acelerar y este tipo de cosas. Desgraciadamente, esto significa que a menudo se quiere una "k" grande y entonces k-means se vuelve lento (tiempo de ejecución cuadrático), lo que anula el propósito. Afortunadamente, aquí es donde entran en juego los árboles duales: son capaces de hacer que k-means sea rápido incluso para "k" grandes.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X