Sei sulla pagina 1di 10

Implementación de Algoritmos de Clustering

Almirón, Matías Nicolás1, Cabrera Zembrunski, Emanuel Lautaro1, Dehner,


Gabriel Andrés1
Inteligencia Artificial I, Universidad Gastón Dachary
1
{nicoalmiron1993, emanuelcz2015, gadehner}@gmail.com

Resumen. En el presente trabajo se ha propuesto utilizar la técnica de


Clustering jerárquico para la clasificación de datos. Primero se describen los
conceptos de Clustering. Luego se realiza el diseño e implementación de los
métodos Single link, Complete link, Average link, con el objetivo de comparar
el comportamiento de los mismo a través de los resultados obtenidos. Estos
algoritmos se implementan en un lenguaje Python a través del IDE Pycharm.
Los resultados obtenidos reflejan principalmente las deficiencias del método
Single link y la gran cantidad de recursos de cómputos requeridos para un
pequeño volumen de datos.

Palabras Clave: Clustering jerárquico, single link, Complete link, Average


link, Python, Pycharm.

1 Introducción

En este trabajo se utiliza la técnica de Clustering para la clasificación de un conjunto


de datos. Para mayor exactitud nos enfocaremos en la utilización de Clustering
Jerárquico (CJ) el cual es un método no supervisado. Dentro de CJ existen varios
métodos para llevar a cabo su implementación, dentro de los cuales se encuentra
Single link, Complete link y Average link. Éstos se han implementado para poder
comprender como funcionan cada uno de ellos y así realizar una correcta
comparación entre estos mismos a través de los resultados obtenidos de las pruebas
realizadas en un conjunto de datos en R2 y R3. El lenguaje de programación que se
utilizó para implementar los diferentes métodos es Python a través de IDE Pycharm.

2 Marco Teórico

Dado que este trabajo se centrará en el análisis del funcionamiento de los métodos de
Single, Complete y Average link –todos pertenecientes a la técnica de Clustering
jerárquico–, se procederá a definirlos brevemente.
2.1 Clustering Jerárquico

El clustering jerárquico es un enfoque de clustering importante. Permite agrupar


mediante la producción de secuencias anidadas de clúster, como un árbol
(denominado dendograma).
En clústeres jerárquicos de enlace simple (single-link), la distancia entre dos clústeres
es la distancia entre dos puntos de datos más cercanos en cada clúster.
En el clustering de enlace completo (complete-link), la distancia entre dos clústeres
es el máximo de todas las distancias entre pares de puntos que están en cada clúster.
En el clustering de enlace promedio (average-link), la distancia entre dos clústers es la
distancia promedio de todas las distancias en pares entre los puntos de datos en dos
clústers. La complejidad temporal de todos estos métodos es [1].

2.2 PYTHON (Lenguaje de Programación)

Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en


una sintaxis que favorezca un código legible. Este lenguaje usa tipado dinámico y
conteo de referencias para la administración de la memoria [2].

2.3 PYCHARM (Entorno de desarrollo Integrado)

PyCharm es un entorno de desarrollo integrado (IDE) utilizado para programar en el


lenguaje Python. Proporciona análisis de código, un depurador gráfico, un
comprobador de unidades integrado entre otras características [3].

3 Descripción de la solución planteada

Para poder implementar los algoritmos descritos anteriormente, el desarrollo del


programa se dividió en módulos. Cada uno de los módulos se encuentran agrupados
por distintas funcionalidades en el programa, las cuales son:

Figura 1. Diagrama representativo del sistema


En el paquete “Lógica” se encuentran las clases que se encargan del procesamiento de
los datos según el método seleccionado (Single, Complete, Average Link) y en el
paquete “Visual” se encuentra la clase encargada de presentar la interfaz de usuario.

Figura 2. Funcionalidades del Programa


Las referencias de la anterior imagen se pueden vislumbrar en la siguiente tabla (1).
Tabla 1. Referencias
A: Combobox para seleccionar la H: Cuadro de previsualización del
dimensión de los datos. conjunto de datos a procesar.
B: Checkbox para habilitar la I: Combobox para seleccionar la función
sección para generar datos. de distancia.
C: Spinbox para indicar el número J: Spinbox para elegir el número de
de elementos a generar. elementos máximo por clúster.
D: Spinbox para elegir en rango K: Spinbox para elegir el número de
mínimo. clúster a generar.
E: Spinbox para elegir en rango L: Spinbox para elegir el número de
máximo. iteraciones a realizar.
F: Botón utilizado para generar los M: Checkbox utilizado para generar el
datos. gráfico de dendograma.
G: Botón utilizado para buscar y N: Botón para procesar los datos y
cargar un archivo. generar los gráficos correspondientes.
3.1 Librerías Usadas

 csv: Implementa clases para leer y escribir datos tabulares en formato CSV.
En este trabajo se ha utilizado la función csv.reader( csvfile , dialect = 'excel'
, ** fmtparams ) que devuelve un objeto que puede ser iterado para obtener
los datos del archivo en cuestión [4].
 numpy: Se encarga de añadir toda la capacidad matemática y vectorial a
Python haciendo posible operar con cualquier dato numérico o array [5].
 matplotlib: Se encarga de los dibujos 2D y 3D, y que se ha utilizado para los
gráficos y dendogramas [6].
 scipy: fue utilizada como soporte para visualización interactiva de datos y
uso de herramientas GUI [7].
 random: Implementa generadores de números pseudoaleatorios [8].
 PyQt5: PyQt permite integrar la visual con la lógica de la aplicación. La
visual fue desarrollada mediante la herramienta Qt4Designer [9,10].

3.2 Limitaciones y adicionales del programa desarrollado

En la siguiente tabla (Tabla 2) se encuentran las limitaciones para la utilización de la


solución implementada, así como también alternativas y adicionales que otorga la
herramienta desarrollada, las cuales no se apreciarán en las pruebas.

Tabla 2. Limitaciones y adicionales del programa.


Limitaciones Adicionales

El archivo para ingresar los datos El programa proporciona un generador de


debe ser en formato “.csv” con 2 o 3 datos aleatorios para las dimensiones que se
columnas, dependiendo la dimensión. requiera, en un intervalo dado.
La carpeta “ControlMakolor” debe Los gráficos permiten hacer zoom,
encontrarse en la misma ruta que el configurar ejes, guardar los gráficos
ejecutable “.exe”, ya que de allí se generados y a su vez –en 3D– pueden
obtienen los colores y marcadores rotarse de acuerdo a lo requerido por el
para la ejecución de los gráficos. usuario.
Los clústers con un solo punto El programa posee mensajes de alerta para
siempre se representan con color evitar cometer errores.
negro. Por ello, al principio todos los
clústers son negros.

4 Simulaciones y Resultados obtenidos

A continuación (tabla 3), se resumen las simulaciones realizadas.


Tabla 3. Resumen de Simulaciones.
N° de N° de Dimensión F(x) de N° Máx. N° de N° de
Prueba Elementos distancia de Clústers Iteración
Elementos
1 100 3D Euclidiana 35 - -
2 100 3D Manhattan - 10 -
3 300 2D Euclidiana - 15 178

 Simulación 1: Resultados

Figura 3. Gráfico 3D con Single-Link prueba N° 1

Figura 4. Gráfico 3D con Complete-Link prueba N° 1


Figura 5. Gráfico 3D con Average-Link prueba N° 1
En las figuras anteriores se pueden percibir los resultados obtenidos al realizar las
pruebas. Claramente se observa que el método average link genera una mejor
clasificación de los datos –con una función de distancia euclidiana–, en comparación
a los otros dos métodos. Este método logra superar las deficiencias que presentan los
métodos de single link y complete link, para el conjunto de 100 datos en R3.

 Simulación 2: Resultados

Figura 6. Gráfico 3D con Single-Link prueba N° 2


Figura 7. Gráfico 3D con Complete-Link prueba N° 2

Figura 8. Gráfico 3D con Average-Link prueba N° 2


En las pruebas N°2, se puede observar por medio de las figuras anteriores cómo
nuevamente el método average link, genera una mejor clasificación de los datos –en
este caso con una función de distancia Manhattan–, en comparación a los otros dos
métodos. Cabe mencionar que para estas dos pruebas anteriores el tiempo de
procesamiento fue de 2-3 minutos aproximadamente, lo cual permite constatar la
necesidad de grandes recursos de cómputo para amplios volúmenes de datos.
 Simulación 3: Resultados

Figura 9. Gráfico 2D con Single-Link prueba N° 3

Figura 10. Dendograma generado con Single-Link prueba N° 3

Figura 11. Gráfico 2D con Complete-Link prueba N° 3


Figura 12. Dendograma generado con Complete-Link prueba N° 3

Figura 13. Gráfico 2D con Average-Link prueba N° 3

Figura 14. Dendograma generado con Average-Link prueba N° 3


En estas pruebas se puede observar claramente el efecto cadena en el método Single-
Link –tanto en la figura 9 como en el dendograma de la figura 10–. En cambio, en los
otros dos métodos se encuentra un agrupamiento mucho más correcto en función de la
distancia euclidiana. A su vez, en el método Complete-Link se aprecia que –a la
vista– algunos puntos se agrupan en clústeres de forma incorrecta ya que dicho
método es sensible a los outliers. Esto no sucede con el método Average-Link.
Por último, al comparar con las dos pruebas anteriores, el conjunto de datos (300)
demora aproximadamente 10-15 minutos, mucho más que en las otras. Esto nos
permite comprobar que el procesamiento no aumenta linealmente en función de la
cantidad de datos, sino más bien cuadráticamente.

5 Conclusiones

Por medio de la elaboración de este trabajo se implementó un programa de algoritmos


de clustering. A su vez, se llegó a comprender la aplicabilidad de las técnicas de
clustering jerárquico para la clasificación de datos, como ser la ciencia de datos, la
extracción de características comunes de conjuntos de datos para así agruparlos con
sus semejantes. De esta manera se puede determinar comportamientos comunes (de
los conjuntos de datos) para anticipar posibles eventos.
En la ejecución de las pruebas, se vislumbraron los resultados de cada uno de los
métodos, como así también los problemas que acarrean cada uno de ellos.
Comprobamos que el método de Single link presenta el efecto cadena, produciendo
clústers desordenados. Por otro lado, el Complete Link no presenta estas deficiencias,
pero es sensible a los outliers y el método Average Link busca solucionar estas
debilidades presentando un agrupamiento más acorde de los clústers.
Por último, se pudo constatar que la ejecución de los métodos de clustering jerárquico
requieren altos recursos de cómputo y de espacio, repercutiendo en el tiempo de
procesamiento. Por lo tanto, queda demostrada la imposibilidad de aplicación cuando
se presenta un gran volumen de datos.

6 Bibliografía y webgrafía

1. Machine Learning - Tom M. Mitchell


2. https://www.python.org/ [Última visita: 28/10/2018]
3. https://www.jetbrains.com/pycharm/ [Última visita: 28/10/2018]
4. https://docs.python.org/2/library/csv.html [Última visita: 28/10/2018]
5. http://www.numpy.org/ [Última visita: 28/10/2018]
6. https://matplotlib.org/ [Última visita: 28/10/2018]
7. https://www.scipy.org/ [Última visita: 28/10/2018]
8. https://docs.python.org/2/library/random.html [Última visita: 28/10/2018]
9. https://pypi.org/project/PyQt5/ [Última visita: 28/10/2018]
10. https://www.qt.io/qt-features-libraries-apis-tools-and-ide/ [Última visita:
28/10/2018]

Potrebbero piacerti anche