Bueno en esta entrega brindaré un poco
de teoria acerca del clustering y mostraré el algoritmo K-means, ya
en otras entregas manejarè un algoritmo por cada tipo de clustering.
Bien primero ¿Qué es el
clustering?,pues bien, este es
un análisis que se realiza sobre los datos con el objetivo de
obtener agrupaciones que nos puedan brindar información acerca de
los mismos.
El objetivo
principal es poder determinar la similitud o diferencia de los
elementos que conforman nuestra información y en base a esto podemos
tomar decisiones.
En muchas
ocasiones la noción de los cluster en nuestra información no está
bien definida, veamos un ejemplo, tomando en cuenta la siguiente
imagen:
Si quisieramos agrupar los circulos en la misma podriamos tener los siguientes resultados (entre muchos otros):
o bien
uno mas
Como podemos
apreciar, depende mucho de la interpretación que deseemos darle a
nuestra información. Usualmente una buena idea es conocer los datos
antes siquiera de intentar agruparlos, posterior a ello se deben de
probar diversos algoritmos de agrupamiento para asi poder determinar
cual es el mas indicado.
Otra peculiaridad
es como queremos que se formen los grupos, usualmente existen 3
formas:
Particionales: Los
grupos se definen perfectamente, de tal manera que un elemento solo
puede pertenecer a un grupo (Las imágenes de arriba detallan este
ejemplo)
Jerarquico: Los
elementos estan agrupados en jerarquias, de tal manera que un
elemento pertenece a un grupo, pero puede al mismo tiempo pertenecer
a un subgrupo. La imagen siguiente muestra un ejemplo de este caso:
Este tipo de
clustering son de los mas utilizados debido a que suelen ser muy
representativos y nos dan usualmente un buen punto de partida para
entender nuestra información, veamos la siguiente imagen de un
cluster jerarquico real:
Difusos: Estos
definen que un elemento puede tener cierto grado de pertenecia aun
grupo u otro, por ejemplo, digamos que tenemos dos grupos, uno donde
se definen a los delgados y otro que define a los obesos, supongamos
que nos llega una persona que tiene 3 kilos de sobrepeso, podriamos
ponerla con un 40% de pertenecia al grupo de delgados y un 60% al
grupo de obesos.
Pues
bien, una vez que hayamos definido el tipo de cluster que deseamos
utilizar, nos queda por elegir la metodología con la cual crearemos
los grupos, a continuación muestro diversas formas (abordaré un
algoritmo por tema en futuras entregas):
Grupos bien separados ó definidos:
No existe mucho que decir aquí, en estos casos los grupos estan
como su nombre lo dice bien definidos , usualmente con determinadas
características que los hacen particulares y dificiles de confundir,
por ejemplo, podemos tener dos grupos uno para aves y otro para
reptiles.
Basados en prototipos:
En estos algoritmos se suele determinar la pertenencia a un grupo en
base a alguna medida de distancia. Como punto de partida es comun
usar algun dato muy representativo de cada grupo o alguna medida
estadística como la media o la mediana.(cabe mencionar que este tipo de
metodologías es necesario le proporcionemos cuantos grupos queremos
crear).
Basados en conexiones:
Aqui los elementos estan conectados de alguna manera con su grupo
particular y desconectados de los otros grupos. Estos algoritmos son
utiles para encontrar grupos con formas no comunes. La imagen
siguiente muestra un ejemplo de estas agrupaciones:
Basados en densidad: Estos
grupos se forman organizando los elementos en base a regiones
pobladas, usualmente aquellos elementos que se encuentran fuera de
estas regiones son ignorados o se consideran que no forman parte del
grupo:
Basados en forma:
En este tipo de clusters se conocen bien los datos y usualmente se
definen fórmulas que representan a los grupos. La siguiente imagen
muestra a dos grupos definidos, uno por tener una forma triangular y
otro una rectangular:
Bien ahora que ya
tenemos la teoria, veamos el algortimo K-means, este es un cluster
basado en prototipos, veamos su algoritmo:
- Paso 1 : Establece un grupo K como centroides en el espacio representado
- Paso 2 : Calcula la distancia de cada objeto con cada uno de los centroides de K y asígnalo al centroide del cual su distancia sea menor.
- Paso 3: Cuando todos los objetos sean asignados, entonces recalcula la posición de los centroides.
- Paso 4: Repite los pasos 2 y 3 hasta que los centroides no se muevan mas.
Para el paso 1
usualmente se suele tomar alguna medida estadística como la media o
la mediana, algun dato que represente perfectamente a cada grupo o
bien se utilizan datos aleatorios. Dependiendo del número de grupos
que demos serán los cluster que obtendremos.
Para el paso 2 se
puede utilizar cualquier fórmula de distancia. Cada objeto será
comparado con todos los centroides y se asignará al centroide que
haya tenido una distancia menor.
Para el paso 3,
usualmente se utiliza alguna heurístca personalizada para determinar
como modificar los centroides, aunque en la práctica se suele
calcular la media o mediana de sus objetos y movilizar los centroides
a esa posición
Para el paso 4, de
la misma manera se suele utilizar una heurística que nos permita
determinar alguna condición de paro, estas van desde correr el
proceso un número determinado de ocasiones, sumar las distancias mas
cortas del paso 2 y si se obtiene una suma inferior continuar con el
proceso (siendo esta la mas usada y en algunos casos considerada
obligatoria) o bien determinar un mecanismo personalizado para el
problema en cuestión.
Como vemos es en
realidad un algoritmo sencillo de implementar “” , las
siguientes imagenes muestran un ejemplo del algoritmo K-means con la
base de datos de iris. Para poder representarla en 2D simplemente
utilice el algoritmo PCA (Lo explicaré en otra entrada) para obtener
2 dimensiones.
Veamos como
evoluciona el algoritmo Kmeans cuando movemos los centroides hacia su
media(como punto de partida inicial se tomo un objeto aleatorio
dentro del grupo):
La condición de
paro se tomó cuando su medición no pudiese descender, en este caso
el algoritmo convergió en su cuarta corrida, ya que de hecho su
medición fue mayor, tomando a la imagen 3 como el mejor cluster que
logró clasificar
Veamos ahora el
mismo algoritmo pero esta vez moviendo a los centroides con la
mediana:
Como vemos
funcionó mejor la mediana ya que su medición menor se
encuentra en 77 mientras que para la media fue de 79, claro que necesitó de mas pasos para converger.