Cómo podemos elegir el número de clústeres

Autor: Julià Minguillón

Los textos e imágenes publicados en esta obra están sujetos (excepto que se indique lo contrario) a una licencia de Reconocimiento-Compartir igual (BY-SA) v.3.0 España de Creative Commons. Se puede modificar la obra, reproducirla, distribuirla o comunicarla públicamente siempre que se cite el autor y la fuente (FUOC. Fundació per a la Universitat Oberta de Catalunya), y siempre que la obra derivada quede sujeta a la misma licencia que el material original. La licencia completa se puede consultar en: http://creativecommons.org/licenses/by-sa/3.0/es/legalcode.es

1. Ciclo de vida

3. Ámbito de aplicación

Descripción

Los algoritmos de clustering son muy populares porque se pueden aplicar a datos supervisados y no supervisados para entender mejor su naturaleza y descubrir cualquier estructura interna que permita agruparlos y describirlos de acuerdo con algún criterio. Básicamente, se trata de particionar el conjunto de datos en k subgrupos disjuntos de manera que obtenemos una clasificación de los datos según su naturaleza, la cual esperamos que nos revele alguna información de ellos.

El problema principal de muchos algoritmos de clustering es que hay que elegir el número de clústeres k para decidir en cuántos subgrupos se puede partir un conjunto de datos de manera óptima, teniendo en cuenta la naturaleza del problema que se quiere resolver, pero también el algoritmo de clustering elegido.

Se han desarrollado muchos indicadores que nos dicen lo buena que es una solución basada en k clústeres. La mayoría tienen en cuenta aspectos geométricos, por ejemplo, si los clústeres son esféricos, si están muy separados, etc. Desgraciadamente, no hay un criterio mejor que los otros y todo depende de la naturaleza de los datos, y también de si tenemos alguna idea respecto al número de clústeres que esperamos encontrar. Lo que se hace habitualmente es probar diferentes valores de k en un rango y decidir cuál es el óptimo de acuerdo con un indicador elegido a priori. Hemos cambiado la cuestión, ¡de tener que elegir k, ahora tenemos que elegir el indicador adecuado! Además, para conjuntos de datos grandes y rangos de k grandes, el tiempo de computación puede ser muy elevado.

El problema es que para el mismo algoritmo y el mismo conjunto de datos, diferentes indicadores o criterios para elegir k proporcionan resultados distintos, así pues, no hay ninguna manera de asegurar que hemos encontrado el óptimo. Sin embargo, si la mayoría de indicadores coinciden en un mismo valor de k y la solución encontrada nos parece adecuada para el problema que queremos resolver, ello puede servirnos de ayuda. Esto es lo que hace el paquete NbClust de R, que permite automatizar el proceso para una treintena de indicadores distintos.

Enlace al recurso

https://en.wikipedia.org/wiki/Determining_the_number_of_clusters_in_a_data_set

Ejemplo de uso

La siguiente figura muestra el resultado del algoritmo k-means sobre un conjunto de datos denominado Cassini para tres clústeres; podéis probar diferentes conjuntos de datos y número de clústeres para ver el resultado obtenido.

En este caso, el indicador elegido es el error cuadrático mediano, y deberíamos explorar diferentes valores de k para ver cómo evoluciona y decidir el valor óptimo de k (¡si es que existe!). Podéis probarlo usando el paquete NbClust, variante k entre 1 y 10, por ejemplo.

En la asignatura Minería de datos del grado de Ciencia de Datos Aplicada de la UOC tendréis que aplicar técnicas similares para decidir el número de clústeres cuando aplicáis algoritmos de clustering.

Enlaces relacionados

El paquete de R NbClust: https://cran.r-project.org/web/packages/NbClust/index.html

Algoritmo k-means en línea: http://personal.uoc.edu/opendataviz/kmeans/kmeans.html