# data[].attributes.body
Una de las ventajas de los algoritmos no supervisados es que nos permite descubrir agrupamientos no lineales que a simple vista se escapan.

En una estrategia de segmentación profesional no puede faltar este tipo de análisis.

# data[].attributes.body
https://classroom.udacity.com/courses/ud981

# data[].attributes.headline
Utilización de software de Big Data en la arquitectura y la planificación urbano-territorial

# data[].attributes.subject
Utilización de software de Big Data en la arquitectura y la planificación urbano-territorial

# data[].attributes.attachment_link.readable_text
Resumen: Un problema recurrente en arquitectura y planificación urbano-territorial es poder encontrar grupos de elementos con características homogéneas. En arquitectura, las clasificaciones edilicias/constructivas se deducen a partir de un número de parámetros o variables, y si se analiza la estructura urbana es posible identificar áreas homogéneas según el tipo de uso de suelo, cobertura de servicios, entre otros aspectos. Cuando el volumen de datos para procesar es tal que no se pueden analizar mediante métodos convencionales, es necesario recurrir a técnicas de Big Data. En este trabajo se utilizará un framework para Big Data (Apache Spark) para descubrir áreas homogéneas en cuanto a cobertura de servicios urbanos básicos de infraestructura y saneamiento. Identificar tales áreas permitirá localizar lugares con similares prestaciones, inferir nuevas demandas en función de posibles crecimientos urbanos e identificar lugares de la periferia hacia donde puede crecer la ciudad, entre otros posibles usos.

Palabras clave: Big Data, minería de datos, arquitectura, planificación urbana.

Abstract: A frequent problem in architecture and urban-territorial planning is to be able to find groups of elements with homogeneous characteristics. In architecture, building/construction classifications are deduced from a number of parameters or variables; and if the urban structure is analyzed, it is possible to identify homogeneous areas according to the type of land use, services coverage, among other possible aspects. When the volume of data to be processed is such that it cannot be analyzed by conventional methods, it is necessary to use Big data techniques. In this work, a framework for Big data (Apache Spark) will be used to discover homogeneous areas in terms of coverage of urban basic services of infrastructure and sanitation. Identifying such areas will allow to locate places with similar benefits, infer new demands based on possible urban growths and identify places on the periphery where the city can grow, among other possible uses.

Keywords: Big Data, Data Mining, architecture, urban planning.

Resumo: Um problema recorrente na arquitetura e no planejamento urbano-territorial é conseguir encontrar grupos de elementos com características homogêneas. Na arquitetura, as classificações edilícias / construtivas são deduzidas de uma série de parâmetros ou variáveis, e se a estrutura urbana for analisada é possível identificar áreas homogêneas de acordo com o tipo de uso do solo, cobertura de serviços, entre outros aspectos. Quando o volume de dados a processar é tal que não pode ser analisado pelos métodos convencionais, é necessário recorrer às técnicas de Big Data. Neste trabalho, será usado um framework para Big Data (Apache Spark) para descobrir áreas homogêneas em termos de cobertura de infraestrutura urbana básica e serviços de saneamento. Identificar tais áreas permitirá localizar lugares com benefícios semelhantes, inferir novas demandas a partir do possível crescimento urbano e identificar lugares na periferia onde a cidade pode crescer, entre outros usos possíveis.

Palavras-chave: Big Data, mineração de dados, arquitetura, planejamento urbano.

Introducción

Big Data es la combinación de varias tecnologías orientadas a facilitar el tratamiento de grandes volúmenes de datos. En la actualidad, algunas aplicaciones requieren almacenar grandes volúmenes de datos que en ocasiones, debido precisamente a su tamaño, no se pueden procesar, almacenar y analizar mediante métodos convencionales. En este punto, una alternativa posible es recortar el universo de análisis (perdiendo algunas variables o incluso dimensiones enteras); la otra alternativa es usar Big Data.

En la actualidad, existen trabajos en los que se ha utilizado Big Data para resolver problemas relacionados con la sostenibilidad urbana (Wang et al., 2018); la planificación urbana (Thakuriah et al., 2017) y regional (Schintler et al., 2018). Otros trabajos (Zhou et al., 2016; Koseleva et al., 2017) han utilizado Big Data para el análisis de servicios urbanos básicos. Estos dos últimos trabajos presentan un framework para analizar el comportamiento del consumo energético en las viviendas desde tres dimensiones: usuario, tiempo y espacio.

En la arquitectura y la planificación urbano-territorial aparece frecuentemente el problema de encontrar grupos de elementos con características homogéneas. Por ejemplo, las tipologías edilicias, las clasificaciones de viviendas desde el punto de vista constructivo, los catálogos de paisajes, la morfología urbana, los tipos de uso de suelo, entre otros, se deducen a partir de un número de parámetros o variables. Cuando el número de elementos (datos) con los que se trabaja es tal que no se pueden analizar mediante métodos convencionales, es necesario recurrir a técnicas de Big Data. En este trabajo se realizará un análisis para identificar grupos de objetos con características homogéneas en cuanto a cobertura de servicios urbanos básicos de infraestructura y saneamiento, utilizando para ello un framework para Big Data denominado Apache Spark. Para tal fin se desarrolló un script en lenguaje Python que implementa el método de agrupamiento/clústering K-means. Poder identificar áreas homogéneas en cuanto a la cobertura de servicios permite localizar en el territorio lugares con prestaciones similares y a partir de ello inferir, por ejemplo, nuevas demandas en función de posibles crecimientos urbanos, lugares de la periferia hacia donde puede crecer la ciudad, entre otros usos y aplicaciones.

Para la ejecución de aplicaciones de Big Data, es necesario contar con hardware (ejemplos: clústers, sistemas distribuidos, cloud computing) y software específicos. Las soluciones a problemas de Big Data suelen lidiar con las cuatro V: volumen, velocidad, variedad y valor. Estas cuatro características hacen referencia al volumen de información (por lo general, capacidades de almacenamiento que exceden las de un solo equipo y requieren el almacenamiento en varios equipos); la velocidad de procesamiento, que puede aumentarse si los datos se dividen y procesan en paralelo o de forma distribuida; la variedad en el sentido de que los programas de Big Data deben poder trabajar con distintos tipos de datos (ejemplos: no estructurados, semiestructurados y estructurados) y por último el valor, que hace referencia a poder sacar provecho de grandes volúmenes de datos (por ejemplo: extrayendo conocimiento a partir de estos). Precisamente, extraer conocimiento a partir de datos es el objetivo de una rama de la informática conocida como minería de datos. Se entiende por minería de datos al proceso de extraer conocimiento útil y comprensible, previamente desconocido, desde grandes cantidades de datos almacenados en distintos formatos (Witten et al., 2000).

Este conocimiento puede ser en forma de relaciones, patrones o reglas inferidos de los datos y (previamente) desconocidos, o bien en forma de una descripción más concisa (es decir, un resumen de los mismos). Estas relaciones o resúmenes constituyen el modelo de los datos analizados. Existen muchas formas diferentes de representar los modelos y cada una de ellas determina el tipo de técnica que puede usarse para inferirlos (Hernández Orallo et al., 2004, p. 12).

Los modelos pueden ser de dos tipos: predictivos o descriptivos. Los primeros intentan estimar valores futuros o desconocidos de variables de interés (variables objetivo o dependientes), usando para ello otras variables o campos de la base de datos (las variables independientes o predictivas). Los modelos descriptivos sirven para identificar patrones que explican o resumen los datos, es decir, realizan una tarea exploratoria sobre los datos, en lugar de una predictiva (Hernández Orallo et al., 2004). En minería de datos, son ejemplos de modelos predictivos la clasificación y la regresión, en tanto que ejemplos de los modelos descriptivos serían las reglas de asociación, el agrupamiento/clústering y el análisis correlacional. El modelo utilizado en este trabajo es de tipo descriptivo y utiliza el algoritmo de agrupamiento/clústering K-means.

En cuanto a los datos con los que se trabaja en Big Data, existe software para tratar con datos estructurados (como podrían ser las bases de datos relacionales); semiestructurados (ej: archivos de texto y hojas de cálculo) y no estructurados (ej.: imágenes, fotos, audio y video). Estos datos, a su vez, pueden ser procesados en forma batch (se guarda todo y luego se procesa) o streaming (on line, en tiempo real o cercano a tiempo real). En este trabajo se utilizó el framework Hadoop, que soporta procesamiento de grandes bases de datos en un ambiente distribuido. Incluye un sistema de archivos distribuidos (HDFS, Hadoop distributed file system). Hadoop permite procesamiento off line (batch). En dicho framework, los diferentes nodos que componen un clúster "ven" un único sistema de archivos compuesto por las distintas unidades de almacenamiento de cada uno de los nodos como si fuese uno solo (y cada nodo ve lo mismo), perdiendo un poco la noción de la ubicación física en la cual se encuentra realmente almacenado un dato. Todo el contenido del clúster se ve como un único sistema de archivos (file system): el HDFS. Sobre Hadoop es posible ejecutar aplicaciones de alto nivel, como Cascading, Pig, Hive y Spark, entre otras.

Spark es un framework de procesamiento de datos de propósito general (Apache Software Foundation, 2019a), y soporta los dos modos de trabajo en Big Data: procesamiento batch (en Apache Spark) y procesamiento de flujos de datos (o streaming de datos) (en Apache Spark Streaming). Spark fue desarrollado para que trabaje con el HDFS de Hadoop, pero también permite la integración con otros medios de almacenamiento distribuido, tales como Hbase, Google Cloud, Cassandra, MongoDB y Amazon S3, entre otros. Es posible desarrollar aplicaciones para Spark en diferentes lenguajes de programación, como Java, Python, R y Scala. Además, posee una gran cantidad de APIs (sigla de Application Programming Interface) desarrolladas para trabajar con grandes volúmenes de datos, y está optimizado para trabajar en memoria RAM. Spark incluye una librería de algoritmos de machine learning llamada MLlib (librería de machine learning). MLlib es una librería que viene incluida en Apache Spark que contiene numerosos algoritmos para resolver problemas de clasificación, regresión, árboles de decisión, sistemas recomendadores, clustering, entre otros (Apache Spark Foundation, 2019b). Estos algoritmos pueden ejecutarse en modo distribuido en un clúster de PC o localmente en una sola PC o similar que cuente con múltiples núcleos (multicore). El algoritmo para ejecutar localmente o de manera distribuida no cambia. Es decir, se debe pensar cómo resolver un problema sin tener en cuenta dónde se va a ejecutar. Así, aspectos como la distribución de los datos en los diferentes nodos, la sincronización entre procesos y otras cuestiones que hacen a la ejecución de los algoritmos corren por cuenta del framework Spark delegando en el programador la tarea de encontrar una solución al problema que pretende resolver. De esta manera, dentro de la librería MLlib, incluida en Apache Spark, se pueden encontrar algoritmos de agrupamientos y, entre ellos, el utilizado en este trabajo: K-means (Wu et al., 2008).

Una aplicación Spark está compuesta por un módulo principal denominado driver, que es el encargado de "paralelizar" los datos (dividir la aplicación del usuario en varias operaciones en paralelo sobre un clúster de computadoras) y enviar los comandos correspondientes a cada nodo del clúster. Spark también permite el uso de variables compartidas (cada nodo del clúster tiene una copia de tales variables). Gracias a esta característica es posible implementar el método K-means (Mac Queen, 1967), de modo que, al distribuir el conjunto de datos (que agrupar) entre los diferentes nodos para analizar cuál es el centroide más cercano, la lista de coordenadas de cada centroide sea la misma en todos los nodos del clúster. La distancia de cada objeto al centroide se calcula utilizando la fórmula de la distancia euclídea n-dimensional.

Spark también soporta un modo local pseudo-distribuido, normalmente utilizado solamente para pruebas o en entornos de desarrollo donde el almacenamiento distribuido no es obligatorio y se puede usar el sistema de archivos local (en una única computadora). En un escenario así, Spark se ejecuta en una única máquina dividiendo la tarea en los diferentes núcleos (cores) de un procesador de múltiples núcleos (multi-core).

En este trabajo se plantea crear una aplicación escrita en lenguaje Python, que utilizará la librería MLlib y se ejecutará en el software Spark, el cual, a su vez, trabajará con el sistema de archivos de Hadoop.

Metodología

En ocasiones, un elemento u objeto de estudio suele ser descripto por medio de una serie de atributos. Cuando se tiene una gran cantidad de elementos y, a su vez, cada uno es descripto por un número significativo de atributos, encontrar grupos de elementos que presenten características similares no es una tarea sencilla. En este tipo de problemas es necesario aplicar metodologías que permitan extraer conocimiento a partir de grandes volúmenes de datos, y la minería de datos es la rama de la informática que se ocupa de ello. Como se mencionó, dentro de la minería de datos existen técnicas predictivas y explicativas. Dentro de las técnicas explicativas se encuentran los métodos de agrupamiento (clustering), que permiten reconocer clases de objetos donde los elementos que pertenecen a cada una presentan características similares, y de allí su importancia en diferentes disciplinas. En particular, en la arquitectura y la planificación urbana, los métodos de agrupamiento pueden utilizarse para detectar viviendas con tipologías similares o con características socioeconómicas parecidas, entre otros usos. En estudios que incluyen aspectos relacionados con el territorio, pueden aplicarse, por ejemplo, para encontrar usos de suelo de similares características, detectar vacancias, etc. Por otra parte, cuando el número de filas (registros) es superior a 1.048.576, las planillas de cálculo como Microsoft Excel o LibreOffice Calc no admiten la posibilidad de trabajar con tal cantidad de información. Por este motivo, y para resolver el problema de almacenamiento de información, se utilizó el HDFS de Hadoop. Para poder aplicar algoritmos de manera rápida a los datos almacenados en el clúster, se utilizó Apache Spark. Más específicamente, se utilizó el método de agrupamiento K-means que se encuentra en la biblioteca MLlib y que se instala automáticamente junto con Apache Spark. Para ello se creó un script en Python que usa el método K-means incluido en la librería MLlib y se ejecuta sobre el software Apache Spark. Spark, a su vez, lee los datos que debe procesar desde el sistema de archivos Hadoop.

Como ejemplo de aplicación se analizaron los datos de cobertura asociados a los servicios básicos de agua, cloacas, gas y electricidad en cada uno de los radios censales de la ciudad de La Plata (INDEC, 2010). Por cada radio censal se calcularon previamente los porcentajes de viviendas (respecto del total de viviendas del mismo radio censal) que contaban con los servicios de agua, gas, electricidad y cloaca por red. Por lo tanto, los datos seleccionados para ejecutar el algoritmo de clustering tienen la forma de un vector de cuatro elementos, los cuales se mencionan a continuación:

(% de viviendas con saneamiento cloacal por red , % de viviendas con gas natural por red, % de viviendas con agua por red, % de viviendas con electricidad por red)

De esta manera, el análisis permite identificar, agrupar y localizar con precisión las áreas urbanas con similares características, visibilizando vacancias en los porcentuales de cada cobertura y sus diferentes combinaciones. Dado que cada radio censal es representado como un vector 4-dimensional y se asociará al centroide más cercano, es decir, a aquel centroide que aplicando la fórmula de la distancia euclídea n-dimensional esté a menor distancia, es de esperar que los valores de cada coordenada de un radio censal estén "cerca" del valor que tiene, en esa misma coordenada, el centroide más cercano.

Cabe destacar que, si bien en este caso el número de registros fue inferior al millón, la solución de Big Data utilizada es la misma y funcionaría correctamente con millones de registros, es decir, la solución es escalable. De modo que si, por ejemplo, se quisieran analizar características similares considerando todos los radios censales del país, o incluir otras variables o dimensiones, la solución aquí presentada no solo sería la apropiada, sino que además sería la única forma de poder tratar semejante volumen de datos.

Resultados

Los resultados obtenidos al aplicar K-Means para encontrar grupos desde dos hasta diez clases con características homogéneas en cuanto a prestación de servicios básicos urbanos dieron como resultado los gráficos de las figuras 1 a 5.

Como se puede observar en la figura 1, los radios censales de una misma clase tienen el mismo color. Por lo tanto, el mapa de la figura 1 muestra el resultado obtenido al considerar dos clases distintas; mientras que el mapa de la figura 1.1. muestra lo que acontece al agregar una tercera clase.

En la figura 1 se pueden apreciar las zonas urbanizadas con acceso a servicios básicos en color azul. Asimismo, si se considera la tabla 1, se puede observar que todas las coordenadas de la clase 2 presentan un alto porcentaje de cobertura en cada uno de los servicios, de lo que se deduce que se trata de la parte urbana más consolidada.

En la figura 1.1., al introducirse un tercer grupo, se observa que los radios censales color violeta se corresponden, en general, a la periferia urbana, en tanto que los de color verde señalan zonas predominantemente rurales. Los radios censales de color marrón se corresponden, una vez más, con la parte urbana consolidada, y así lo demuestran las coordenadas del centroide de la clase 1 (tabla 2), cuyos valores son los más altos y presentan un alto porcentaje de cobertura de servicios. La clase 3 tiene los porcentajes de cobertura de servicios más bajos en cada una de las variables, y se diferencia de la clase 2 principalmente en la baja cobertura de los tres primeros servicios.

Al considerar cuatro o cinco grupos (figura 2), vemos que el casco urbano se mantiene como una región homogénea de color verde para k = 4 y de color marrón claro para k = 5.

Al considerar cuatro clases (figura 2) se observa que la clase 2 (color verde) se corresponde con la parte urbana consolidada y un alto porcentaje de cobertura en cada uno de los servicios.

Al considerar cinco clases (figura 2.1.), el casco urbano (clase 5) sigue manteniendo una alta cobertura en cada uno de los servicios y conservando homogeneidad espacial, en tanto que algunos de los sectores restantes presentan ciertos grados de fragmentación.

El resultado obtenido para k = 6 es considerado el ideal para el caso de estudio, pues se trata de un número razonable de grupos homogéneos que presentan, además, continuidad espacial en la cobertura de sus diferentes servicios. Al realizar una nueva clasificación y agregar una séptima clase, se observa que el casco urbano comienza a tener discontinuidades espaciales importantes, característica no deseable para la identificación de áreas homogéneas.

Se observa que la clase 3 de la tabla 5 se corresponde con un área que presenta continuidad espacial y alta cobertura en cada uno de los servicios. No obstante, parte de la continuidad espacial se pierde al agregar una nueva clase. Esto se ve en la tabla 6, donde se puede apreciar que las coordenadas de los centroides de las clases 4 y 5 están muy próximas entre sí y ambas clases presentan altas coberturas en cada uno de los servicios. Por lo tanto, la adición de la nueva clase (la séptima) no produjo una diferencia notoria (en cuanto a coordenadas del centroide) respecto del resto, por lo que no se justifica su existencia. En consecuencia, considerando que se desea detectar áreas con la mayor homogeneidad posible, es preferible tener seis clases en lugar de siete.

En caso de continuar el análisis incluyendo más clases (ocho o nueve clases, figuras 4 y 4.1.) ocurre que, si bien el casco urbano consolidado sigue presentando niveles altos de continuidad espacial expresando un área homogénea con un gran porcentaje de cobertura en cada uno de los servicios, estos nuevos agrupamientos aumentan la fragmentación (discontinuidad) en la periferia urbana.

En el agrupamiento con ocho o nueve clases (tablas 7 y 8) se observa que la homogeneización del casco urbano se debe a que el centroide de la clase 8 de la tabla 7 es próximo al de la clase 9 de la tabla 8, puesto que en ambos casos representan la parte urbana consolidada, de manera similar a cuando se consideraban seis clases, pero aumenta nuevamente la fragmentación (heterogeneidad) en los radios censales de la periferia.

Si se continúa aumentando el número de clases, al considerar 10 clases la heterogeneidad (discontinuidad) en la periferia persiste y vuelven a aparecer discontinuidades espaciales (radios censales color rojo) en la parte urbana consolidada (radios censales color marrón claro). Se observa nuevamente una significativa proximidad entre las coordenadas de los centroides de las clases 2 y 8 (tabla 9), lo que explica la aparición de algunos radios censales (rojos) dentro del área urbana consolidada (radios censales color marrón claro).

Por último, y a los efectos de establecer el número apropiado de clases, se puede observar en el diagrama de Elbow (figura 6) cómo disminuye la suma de las distancias al cuadrado (de cada radio censal con su centroide más cercano) en función del número de clases. Para ello se calculan, para valores de k entre 2 y 10, las distancias al cuadrado de los radios censales a su correspondiente centroide, utilizando la fórmula de la distancia euclídea, en este caso, considerando que cada radio censal es un vector 4-dimensional (considerando los cuatro servicios analizados).

A partir de la información deducida de las figuras 1 a 5 y del diagrama de la figura 6 se puede justificar la adopción de un número "óptimo" de clases que agrupen a radios censales con similares porcentajes de cobertura de sus cuatro servicios urbanos básicos considerados y que presenten, asimismo, continuidad espacial. Por lo expuesto anteriormente, y considerando el objetivo de la clasificación en cuanto a detectar áreas homogéneas de prestación de servicios y en lo que respecta a la continuidad desde el punto de vista espacial, se sugiere considerar seis clases para realizar los correspondientes mapas de cobertura de servicios. Además, si se cuenta con información acerca del número de viviendas y habitantes por cada radio censal, se podría estimar el número de viviendas y de habitantes que carecen de cada servicio para, de esta manera, analizar la viabilidad de aumentar la cobertura de los servicios y sus correspondientes beneficios para los habitantes del lugar.

Conclusiones

Como conclusión general puede decirse que el trabajo realizado permitió identificar, agrupar y localizar con precisión las áreas urbanas con similares características (en cuanto a prestación de servicios), visibilizando vacancias en las coberturas de cada uno de los servicios. Por lo tanto, si por cada radio censal se cuenta con información acerca del número de viviendas, es posible deducir cuántas de ellas carecen de cada uno de los servicios y, considerando que ampliar la red de estos tiene un costo diferente por cada servicio, se puede estimar el costo que implicaría en términos económicos mejorar la situación observada. Por lo anterior, se deduce que tales datos pueden servir para detectar áreas con carencias de servicios, así como servir de soporte para la toma de decisiones a la hora de adoptar políticas o medidas de intervención para mejorar la habitabilidad de los lugares más desfavorecidos, y también analizar posibles intervenciones para realizar en lugares con similares prestaciones, estimar el precio de viviendas a partir de conocer el número de servicios disponibles e inferir posibles lugares de la periferia hacia donde puede crecer la ciudad, entre otras posibles aplicaciones.

En cuanto a los resultados obtenidos al aplicar el algoritmo de agrupamiento, puede decirse que si bien el diagrama de Elbow brinda información valiosa en relación con la distancia promedio de los puntos a su correspondiente centroide, el número K de clases "ideal", en realidad, dependerá del tipo de resultado que se busca. Así, por ejemplo, si K es igual al número de elementos para clasificar, cada clase tendrá un solo elemento y la distancia promedio al centroide será 0. Sin embargo, por más deseable que sea esta última característica, el resultado que se obtendría sería el mismo que si no se realizara ninguna clasificación. Asimismo, si el número de clases que encontrar fuese igual a 1, entonces todos los elementos formarían parte de la misma (y única) clase, por lo que la clasificación no tendría ningún sentido. Por lo tanto, el número de clases K deberá ser estrictamente mayor a 1 y menor a la cantidad de elementos para clasificar. En esta instancia, será el especialista en el dominio del problema quien determine (justificadamente) la cantidad "correcta" de clases en las que se pueden agrupar los elementos para clasificar. En este trabajo, el resultado obtenido para k = 6 es considerado el ideal para el caso de estudio, pues se trata de un número razonable de grupos homogéneos y que además presentan continuidad espacial. Las coordenadas de los centroides de cada una de las seis clases describen un porcentaje de cobertura de cada servicio, y cada radio censal se asigna al centroide más cercano.

Con respecto al software y hardware utilizados para procesar Big Data, se pudo comprobar que el sistema de archivos distribuido (HDFS) de Hadoop permite agrupar en un mismo lugar datos procedentes de diversos equipos que componen un clúster de PC. De esa forma, se logra una mayor capacidad de almacenamiento de información que la que se tendría usando un solo equipo. Esto es necesario cuando el tamaño de los datos para procesar excede la capacidad de almacenamiento del equipo de un usuario. En este tipo de situaciones es viable utilizar el framework Hadoop y, sobre él, correr aplicaciones escritas para Apache Spark para aprovechar, por un lado, la capacidad de almacenamiento distribuido del HDFS de Hadoop y, por otro, la velocidad de procesamiento de grandes volúmenes de datos que ofrece Apache Spark. De este modo, es posible incrementar el volumen de datos sin requerir ningún cambio en la aplicación desarrollada. En caso de que se necesite agregar nuevos nodos a un clúster o balancear la carga de datos para procesar en cada nodo, será el framework, en este caso Apache Spark, el encargado de realizar esta tarea permitiendo al programador enfocarse en encontrar una solución al problema que pretende resolver.

Referencias bibliográficas

APACHE SOFTWARE FOUNDATION (2019a). Apache Spark. URL: https://spark.apache.org/. Accedido: 30-7-2019.

APACHE SOFTWARE FOUNDATION (2019b). Apache Spark MLlib. URL: https://spark.apache.org/mllib/. Accedido: 30-7-2019.

HERNÁNDEZ ORALLO, José; RAMÍREZ QUINTANA, María. José y FERRI RAMÍREZ, César. (2004). Introducción a la minería de datos. Madrid: Pearson.

INDEC. (2010). Censo nacional de población, hogares y viviendas 2010. Recuperado de: https://www.indec.gob.ar/indec/web/Nivel4-Tema-2-41-135

KOSELEVA, Natalija & ROPAITE, Guoda (2017). Big data in building energy efficiency: understanding of big data and main challenges. Procedia Engineering 172. pp. 544-549.

MAC QUEEN, James B. (1967). Some methods for classification and analysis of multivariate observations. In: Proc. 5th Berkeley Symposium on mathematical statistics and probability. 1: 281-297. University of California Press.

SCHINTLER, Laurie & CHEN, Zhenhua (Eds.). (2018). Big data for regional science. Routledge.

THAKURIAH, Piyushimita; TILAHUN, Nebiyou & ZELLNER, Moira (Eds.). (2017). Seeing cities through Big Data. Research, methods and applications in urban informatics. Springer.

WANG, Stephen Jia & MORIARTY, Patrick (2018). Big Data for urban sustainability: A human-centered perspective. Springer.

WITTEN, Ian H. & FRANK, Eibe (2000). Data Mining: Practical Machine Learning. Tools and techniques with Java implementations . Morgan Kaufmann Publishers.

WU, Xindong; KUMAR, Vipin; ROSS QUINLAN, J.; GHOSH, Joydeep; YANG, Qiang; MOTODA, Hiroshi.... STEINBERG, Dan. (2008). Top-10 algorithms in data mining. Journal Knowledge and information systems. Vol. 14. Issue 1. pp. 1-37. Springer.

ZHOU, Kaile & YANG, Shanlin (2016). Understanding household energy consumption behaviour: The contribution of energy big data analytics. Renewable and Sustainable Energy Reviews. Vol. 56. pp. 810-819.

Notas

1 Se entiende por centroide el vector cuyas coordenadas representan el centro geométrico de un objeto n-dimensional.

2 Un radio censal es un área correspondiente a una unidad geográfica empleada en el censo y que comprende aproximadamente 300 viviendas en las ciudades, en tanto que en zonas rurales el número de viviendas considerado es menor. En el presente trabajo se utilizaron los radios censales del censo 2010.

Notas de autor

Posdoctorado (UNC). Doctor en Ciencias Informáticas (UNLP). Magíster en Paisaje, Medio Ambiente y Ciudad (UNLP). Licenciado en Informática (UNLP). Analista de computación (UNLP). Investigador adjunto del CONICET. IIPAC, CONICET-UNLP.

Doctor en Ciencias (área: Energías Renovables) (UNSa). Especialista en Energías Renovables (UNSa). Arquitecto (UNLP). Becario posdoctoral del CONICET. Docente FAU, UNLP. IIPAC, CONICET-UNLP.

(3) Carlos Alberto Discoli:

Doctor en Ciencias (área: Energías Renovables) (UNSa). Magíster en Ambiente y Patología Ambiental (UNLP/Universidad de Siena). Especialista en Ambiente y Patología Ambiental (UNLP/Universidad de Siena). Ingeniero Mecánico (UNLP). Investigador principal del CONICET. IIPAC, CONICET-UNLP.

Doctora en Ciencias (área: Energías Renovables) (UNSa). Magíster en Políticas Ambientales y Territorales (UBA). Arquitecta (UNLP). Investigadora independiente del CONICET. Docente FAU, UNLP. IIPAC, CONICET-UNLP.

# data[].attributes.attachment_link.title
Utilización de software de Big Data en la arquitectura y la planificación urbano-territorial

# data[].attributes.attachment_link.description
Resumen: Un problema recurrente en arquitectura y planificación urbano-territorial es poder encontrar grupos de elementos con características homogéneas. En arquitectura, las clasificaciones edilicias/constructivas se deducen a partir de un número de parámetros o variables, y si se analiza la estructura urbana es posible identificar áreas homogéneas según el tipo de uso de suelo, cobertura de servicios, entre otros aspectos.

# data[].attributes.body
1. Segmentacion de mercado
http://www.scielo.org.co/scielo.php?script=sci_arttext&pid=S0123-921X2013000300014

# data[].attributes.attachment_link.title
ALGORITMO DE AGRUPAMIENTO JERÁRQUICO - TEORÍA | #8 Curso Aprendizaje no Supervisado con Python

# data[].attributes.body
El algoritmo de clustering busca el agrupamiento o segmentacion de datos. La libreria  scikit-learn implementa varias tecnicas como K-Means, Mean-shift, Spectral clustering, DBSCAN entre otros (https://scikit-learn.org/stable/modules/clustering.html) siendo muy usado para iniciar con el aprendiza el K-means. Se dividen en algoritmos particionales o jerarquicos. Como caso de exito esta Mazda en España que encontro 5 grupos entre sus clientes para el diseño de sus productos en base a sus necesidades.

# data[].attributes.attachment_link.readable_text
Clustering of unlabeled data can be performed with the modulesklearn.cluster .

Each clustering algorithm comes in two variants: a class, that implements the fit method to learn the clusters on train data, and a function, that, given train data, returns an array of integer labels corresponding to the different clusters. For the class, the labels over the training data can be found in the labels_ attribute.

Input data

One important thing to note is that the algorithms implemented in this module can take different kinds of matrix as input. All the methods accept standard data matrices of shape (n_samples, n_features) . These can be obtained from the classes in thesklearn.feature_extraction module. ForAffinityPropagation , SpectralClustering andDBSCAN one can also input similarity matrices of shape(n_samples, n_samples) . These can be obtained from the functions in thesklearn.metrics.pairwise module.

2.3.1. Overview of clustering methods

¶

Method name

Parameters

Scalability

Usecase

Geometry (metric used)

number of clusters

Very large n_samples , medium n_clusters with MiniBatch code

General-purpose, even cluster size, flat geometry, not too many clusters, inductive

Distances between points

damping, sample preference

Not scalable with n_samples

Many clusters, uneven cluster size, non-flat geometry, inductive

Graph distance (e.g. nearest-neighbor graph)

bandwidth

Not scalable with n_samples

Many clusters, uneven cluster size, non-flat geometry, inductive

Distances between points

many

Not scalable

Flat geometry, good for density estimation, inductive

Mahalanobis distances to centers

Non-flat geometry clustering is useful when the clusters have a specific shape, i.e. a non-flat manifold, and the standard euclidean distance is not the right metric. This case arises in the two top rows of the figure above.

Gaussian mixture models, useful for clustering, are described in another chapter of the documentation dedicated to mixture models. KMeans can be seen as a special case of Gaussian mixture model with equal covariance per component.

Transductive clustering methods (in contrast to inductive clustering methods) are not designed to be applied to new, unseen data.

2.3.2. K-means

The KMeans algorithm clusters data by trying to separate samples in n groups of equal variance, minimizing a criterion known as the inertia or within-cluster sum-of-squares (see below). This algorithm requires the number of clusters to be specified. It scales well to large numbers of samples and has been used across a large range of application areas in many different fields.

The k-means algorithm divides a set of \(N\) samples \(X\) into \(K\) disjoint clusters \(C\), each described by the mean \(\mu_j\) of the samples in the cluster. The means are commonly called the cluster "centroids"; note that they are not, in general, points from \(X\), although they live in the same space.

The K-means algorithm aims to choose centroids that minimise the inertia, or within-cluster sum-of-squares criterion:

\[\sum_{i=0}^{n}\min_{\mu_j \in C}(||x_i - \mu_j||^2)\]

Inertia can be recognized as a measure of how internally coherent clusters are. It suffers from various drawbacks:

Inertia makes the assumption that clusters are convex and isotropic, which is not always the case. It responds poorly to elongated clusters, or manifolds with irregular shapes.

Inertia is not a normalized metric: we just know that lower values are better and zero is optimal. But in very high-dimensional spaces, Euclidean distances tend to become inflated (this is an instance of the so-called "curse of dimensionality"). Running a dimensionality reduction algorithm such as Principal component analysis (PCA) prior to k-means clustering can alleviate this problem and speed up the computations.

K-means is often referred to as Lloyd's algorithm. In basic terms, the algorithm has three steps. The first step chooses the initial centroids, with the most basic method being to choose \(k\) samples from the dataset \(X\). After initialization, K-means consists of looping between the two other steps. The first step assigns each sample to its nearest centroid. The second step creates new centroids by taking the mean value of all of the samples assigned to each previous centroid. The difference between the old and the new centroids are computed and the algorithm repeats these last two steps until this value is less than a threshold. In other words, it repeats until the centroids do not move significantly.

K-means is equivalent to the expectation-maximization algorithm with a small, all-equal, diagonal covariance matrix.

The algorithm can also be understood through the concept of Voronoi diagrams. First the Voronoi diagram of the points is calculated using the current centroids. Each segment in the Voronoi diagram becomes a separate cluster. Secondly, the centroids are updated to the mean of each segment. The algorithm then repeats this until a stopping criterion is fulfilled. Usually, the algorithm stops when the relative decrease in the objective function between iterations is less than the given tolerance value. This is not the case in this implementation: iteration stops when centroids move less than the tolerance.

Given enough time, K-means will always converge, however this may be to a local minimum. This is highly dependent on the initialization of the centroids. As a result, the computation is often done several times, with different initializations of the centroids. One method to help address this issue is the k-means++ initialization scheme, which has been implemented in scikit-learn (use the init='k-means++' parameter). This initializes the centroids to be (generally) distant from each other, leading to probably better results than random initialization, as shown in the reference.

The algorithm supports sample weights, which can be given by a parameter sample_weight . This allows to assign more weight to some samples when computing cluster centers and values of inertia. For example, assigning a weight of 2 to a sample is equivalent to adding a duplicate of that sample to the dataset \(X\).

2.3.2.1. Low-level parallelism

KMeans benefits from OpenMP based parallelism through Cython. Small chunks of data (256 samples) are processed in parallel, which in addition yields a low memory footprint. For more details on how to control the number of threads, please refer to our Parallelism notes.

Examples:

References:

2.3.2.2. Mini Batch K-Means

The algorithm iterates between two major steps, similar to vanilla k-means. In the first step, \(b\) samples are drawn randomly from the dataset, to form a mini-batch. These are then assigned to the nearest centroid. In the second step, the centroids are updated. In contrast to k-means, this is done on a per-sample basis. For each sample in the mini-batch, the assigned centroid is updated by taking the streaming average of the sample and all previous samples assigned to that centroid. This has the effect of decreasing the rate of change for a centroid over time. These steps are performed until convergence or a predetermined number of iterations is reached.

Examples:

References:

2.3.3. Affinity Propagation

Affinity Propagation can be interesting as it chooses the number of clusters based on the data provided. For this purpose, the two important parameters are the preference, which controls how many exemplars are used, and the damping factor which damps the responsibility and availability messages to avoid numerical oscillations when updating these messages.

The main drawback of Affinity Propagation is its complexity. The algorithm has a time complexity of the order \(O(N^2 T)\), where \(N\) is the number of samples and \(T\) is the number of iterations until convergence. Further, the memory complexity is of the order \(O(N^2)\) if a dense similarity matrix is used, but reducible if a sparse similarity matrix is used. This makes Affinity Propagation most appropriate for small to medium sized datasets.

Examples:

Algorithm description: The messages sent between points belong to one of two categories. The first is the responsibility \(r(i, k)\), which is the accumulated evidence that sample \(k\) should be the exemplar for sample \(i\). The second is the availability \(a(i, k)\) which is the accumulated evidence that sample \(i\) should choose sample \(k\) to be its exemplar, and considers the values for all other samples that \(k\) should be an exemplar. In this way, exemplars are chosen by samples if they are (1) similar enough to many samples and (2) chosen by many samples to be representative of themselves.

More formally, the responsibility of a sample \(k\) to be the exemplar of sample \(i\) is given by:

\[r(i, k) \leftarrow s(i, k) - max [ a(i, k') + s(i, k') \forall k' \neq k ]\]

Where \(s(i, k)\) is the similarity between samples \(i\) and \(k\). The availability of sample \(k\) to be the exemplar of sample \(i\) is given by:

\[a(i, k) \leftarrow min [0, r(k, k) + \sum_{i'~s.t.~i' \notin \{i, k\}}{r(i', k)}]\]

To begin with, all values for \(r\) and \(a\) are set to zero, and the calculation of each iterates until convergence. As discussed above, in order to avoid numerical oscillations when updating the messages, the damping factor \(\lambda\) is introduced to iteration process:

\[r_{t+1}(i, k) = \lambda\cdot r_{t}(i, k) + (1-\lambda)\cdot r_{t+1}(i, k)\]

\[a_{t+1}(i, k) = \lambda\cdot a_{t}(i, k) + (1-\lambda)\cdot a_{t+1}(i, k)\]

where \(t\) indicates the iteration times.

2.3.4. Mean Shift

MeanShift clustering aims to discover blobs in a smooth density of samples. It is a centroid based algorithm, which works by updating candidates for centroids to be the mean of the points within a given region. These candidates are then filtered in a post-processing stage to eliminate near-duplicates to form the final set of centroids.

Given a candidate centroid \(x_i\) for iteration \(t\), the candidate is updated according to the following equation:

Where \(N(x_i)\) is the neighborhood of samples within a given distance around \(x_i\) and \(m\) is the mean shift vector that is computed for each centroid that points towards a region of the maximum increase in the density of points. This is computed using the following equation, effectively updating a centroid to be the mean of the samples within its neighborhood:

\[m(x_i) = \frac{\sum_{x_j \in N(x_i)}K(x_j - x_i)x_j}{\sum_{x_j \in N(x_i)}K(x_j - x_i)}\]

The algorithm automatically sets the number of clusters, instead of relying on a parameter bandwidth , which dictates the size of the region to search through. This parameter can be set manually, but can be estimated using the provided estimate_bandwidth function, which is called if the bandwidth is not set.

The algorithm is not highly scalable, as it requires multiple nearest neighbor searches during the execution of the algorithm. The algorithm is guaranteed to converge, however the algorithm will stop iterating when the change in centroids is small.

Labelling a new sample is performed by finding the nearest centroid for a given sample.

Examples:

References:

2.3.5. Spectral clustering

SpectralClustering performs a low-dimension embedding of the affinity matrix between samples, followed by clustering, e.g., by KMeans, of the components of the eigenvectors in the low dimensional space. It is especially computationally efficient if the affinity matrix is sparse and the amg solver is used for the eigenvalue problem (Note, the amg solver requires that the pyamg module is installed.)

The present version of SpectralClustering requires the number of clusters to be specified in advance. It works well for a small number of clusters, but is not advised for many clusters.

For two clusters, SpectralClustering solves a convex relaxation of the normalized cuts problem on the similarity graph: cutting the graph in two so that the weight of the edges cut is small compared to the weights of the edges inside each cluster. This criteria is especially interesting when working on images, where graph vertices are pixels, and weights of the edges of the similarity graph are computed using a function of a gradient of the image.

Warning

Transforming distance to well-behaved similarities

Note that if the values of your similarity matrix are not well distributed, e.g. with negative values or with a distance matrix rather than a similarity, the spectral problem will be singular and the problem not solvable. In which case it is advised to apply a transformation to the entries of the matrix. For instance, in the case of a signed distance matrix, is common to apply a heat kernel:

See the examples for such an application.

Examples:

2.3.5.1. Different label assignment strategies

Different label assignment strategies can be used, corresponding to the assign_labels parameter of SpectralClustering ."kmeans" strategy can match finer details, but can be unstable. In particular, unless you control the random_state , it may not be reproducible from run-to-run, as it depends on random initialization. The alternative"discretize" strategy is 100% reproducible, but tends to create parcels of fairly even and geometrical shape. The recently added"cluster_qr" option is a deterministic alternative that tends to create the visually best partitioning on the example application below.

assign_labels="kmeans"

assign_labels="discretize"

assign_labels="cluster_qr"

References:

2.3.5.2. Spectral Clustering Graphs

Spectral Clustering can also be used to partition graphs via their spectral embeddings. In this case, the affinity matrix is the adjacency matrix of the graph, and SpectralClustering is initialized with affinity='precomputed' :

References:

2.3.6. Hierarchical clustering

Hierarchical clustering is a general family of clustering algorithms that build nested clusters by merging or splitting them successively. This hierarchy of clusters is represented as a tree (or dendrogram). The root of the tree is the unique cluster that gathers all the samples, the leaves being the clusters with only one sample. See the Wikipedia page for more details.

Ward minimizes the sum of squared differences within all clusters. It is a variance-minimizing approach and in this sense is similar to the k-means objective function but tackled with an agglomerative hierarchical approach.

Maximum or complete linkage minimizes the maximum distance between observations of pairs of clusters.

Average linkage minimizes the average of the distances between all observations of pairs of clusters.

Single linkage minimizes the distance between the closest observations of pairs of clusters.

The FeatureAgglomeration uses agglomerative clustering to group together features that look very similar, thus decreasing the number of features. It is a dimensionality reduction tool, see Unsupervised dimensionality reduction .

2.3.6.1. Different linkage type: Ward, complete, average, and single linkage

Agglomerative cluster has a "rich get richer" behavior that leads to uneven cluster sizes. In this regard, single linkage is the worst strategy, and Ward gives the most regular sizes. However, the affinity (or distance used in clustering) cannot be varied with Ward, thus for non Euclidean metrics, average linkage is a good alternative. Single linkage, while not robust to noisy data, can be computed very efficiently and can therefore be useful to provide hierarchical clustering of larger datasets. Single linkage can also perform well on non-globular data.

Examples:

2.3.6.2. Visualization of cluster hierarchy

It's possible to visualize the tree representing the hierarchical merging of clusters as a dendrogram. Visual inspection can often be useful for understanding the structure of the data, though more so in the case of small sample sizes.

2.3.6.3. Adding connectivity constraints

These constraint are useful to impose a certain local structure, but they also make the algorithm faster, especially when the number of the samples is high.

The connectivity constraints are imposed via an connectivity matrix: a scipy sparse matrix that has elements only at the intersection of a row and a column with indices of the dataset that should be connected. This matrix can be constructed from a-priori information: for instance, you may wish to cluster web pages by only merging pages with a link pointing from one to another. It can also be learned from the data, for instance using sklearn.neighbors.kneighbors_graph to restrict merging to nearest neighbors as in this example , or usingsklearn.feature_extraction.image.grid_to_graph to enable only merging of neighboring pixels on an image, as in the coin example.

Examples:

Warning

2.3.6.4. Varying the metric

Single, average and complete linkage can be used with a variety of distances (or affinities), in particular Euclidean distance ( l2), Manhattan distance (or Cityblock, or l1), cosine distance, or any precomputed affinity matrix.

l1 distance is often good for sparse features, or sparse noise: i.e. many of the features are zero, as in text mining using occurrences of rare words.

cosine distance is interesting because it is invariant to global scalings of the signal.

The guidelines for choosing a metric is to use one that maximizes the distance between samples in different classes, and minimizes that within each class.

Examples:

2.3.6.5. Bisecting K-Means

BisectingKMeans is more efficient than KMeans when the number of clusters is large since it only works on a subset of the data at each bisection whileKMeans always works on the entire dataset.

Although BisectingKMeans can't benefit from the advantages of the "k-means++" initialization by design, it will still produce comparable results than KMeans(init="k-means++") in terms of inertia at cheaper computational costs, and will likely produce better results than KMeans with a random initialization.

This variant is more efficient to agglomerative clustering if the number of clusters is small compared to the number of data points.

This variant also does not produce empty clusters.

There exist two strategies for selecting the cluster to split:

Picking by largest amount of data points in most cases produces result as accurate as picking by inertia and is faster (especially for larger amount of data points, where calculating error may be costly).

Picking by largest amount of data points will also likely produce clusters of similar sizes while KMeans is known to produce clusters of different sizes.

Difference between Bisecting K-Means and regular K-Means can be seen on example Bisecting K-Means and Regular K-Means Performance Comparison . While the regular K-Means algorithm tends to create non-related clusters, clusters from Bisecting K-Means are well ordered and create quite a visible hierarchy.

References:

"A Comparison of Document Clustering Techniques" Michael Steinbach, George Karypis and Vipin Kumar, Department of Computer Science and Egineering, University of Minnesota (June 2000)

"Performance Analysis of K-Means and Bisecting K-Means Algorithms in Weblog Data" K.Abirami and Dr.P.Mayilvahanan, International Journal of Emerging Technologies in Engineering Research (IJETER) Volume 4, Issue 8, (August 2016)

"Bisecting K-means Algorithm Based on K-valued Self-determining and Clustering Center Optimization" Jian Di, Xinyue Gou School of Control and Computer Engineering,North China Electric Power University, Baoding, Hebei, China (August 2017)

2.3.7. DBSCAN

The DBSCAN algorithm views clusters as areas of high density separated by areas of low density. Due to this rather generic view, clusters found by DBSCAN can be any shape, as opposed to k-means which assumes that clusters are convex shaped. The central component to the DBSCAN is the concept of core samples, which are samples that are in areas of high density. A cluster is therefore a set of core samples, each close to each other (measured by some distance measure) and a set of non-core samples that are close to a core sample (but are not themselves core samples). There are two parameters to the algorithm, min_samples and eps , which define formally what we mean when we say dense. Higher min_samples or lower eps indicate higher density necessary to form a cluster.

More formally, we define a core sample as being a sample in the dataset such that there exist min_samples other samples within a distance of eps , which are defined as neighbors of the core sample. This tells us that the core sample is in a dense area of the vector space. A cluster is a set of core samples that can be built by recursively taking a core sample, finding all of its neighbors that are core samples, finding all of their neighbors that are core samples, and so on. A cluster also has a set of non-core samples, which are samples that are neighbors of a core sample in the cluster but are not themselves core samples. Intuitively, these samples are on the fringes of a cluster.

Any core sample is part of a cluster, by definition. Any sample that is not a core sample, and is at least eps in distance from any core sample, is considered an outlier by the algorithm.

While the parameter min_samples primarily controls how tolerant the algorithm is towards noise (on noisy and large data sets it may be desirable to increase this parameter), the parameter eps is crucial to choose appropriately for the data set and distance function and usually cannot be left at the default value. It controls the local neighborhood of the points. When chosen too small, most data will not be clustered at all (and labeled as-1 for "noise"). When chosen too large, it causes close clusters to be merged into one cluster, and eventually the entire data set to be returned as a single cluster. Some heuristics for choosing this parameter have been discussed in the literature, for example based on a knee in the nearest neighbor distances plot (as discussed in the references below).

In the figure below, the color indicates cluster membership, with large circles indicating core samples found by the algorithm. Smaller circles are non-core samples that are still part of a cluster. Moreover, the outliers are indicated by black points below.

Examples:

Implementation

Memory consumption for large sample sizes

References:

"A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise" Ester, M., H. P. Kriegel, J. Sander, and X. Xu, In Proceedings of the 2nd International Conference on Knowledge Discovery and Data Mining, Portland, OR, AAAI Press, pp. 226-231. 1996

"DBSCAN revisited, revisited: why and how you should (still) use DBSCAN." Schubert, E., Sander, J., Ester, M., Kriegel, H. P., & Xu, X. (2017). In ACM Transactions on Database Systems (TODS), 42(3), 19.

This implementation is by default not memory efficient because it constructs a full pairwise similarity matrix in the case where kd-trees or ball-trees cannot be used (e.g., with sparse matrices). This matrix will consume \(n^2\) floats. A couple of mechanisms for getting around this are:

Use OPTICS clustering in conjunction with the extract_dbscan method. OPTICS clustering also calculates the full pairwise matrix, but only keeps one row in memory at a time (memory complexity n).

A sparse radius neighborhood graph (where missing entries are presumed to be out of eps) can be precomputed in a memory-efficient way and dbscan can be run over this with metric='precomputed' . Seesklearn.neighbors.NearestNeighbors.radius_neighbors_graph .

The dataset can be compressed, either by removing exact duplicates if these occur in your data, or by using BIRCH. Then you only have a relatively small number of representatives for a large number of points. You can then provide a sample_weight when fitting DBSCAN.

The DBSCAN algorithm is deterministic, always generating the same clusters when given the same data in the same order. However, the results can differ when data is provided in a different order. First, even though the core samples will always be assigned to the same clusters, the labels of those clusters will depend on the order in which those samples are encountered in the data. Second and more importantly, the clusters to which non-core samples are assigned can differ depending on the data order. This would happen when a non-core sample has a distance lower than eps to two core samples in different clusters. By the triangular inequality, those two core samples must be more distant than eps from each other, or they would be in the same cluster. The non-core sample is assigned to whichever cluster is generated first in a pass through the data, and so the results will depend on the data ordering.

The current implementation uses ball trees and kd-trees to determine the neighborhood of points, which avoids calculating the full distance matrix (as was done in scikit-learn versions before 0.14). The possibility to use custom metrics is retained; for details, see NearestNeighbors .

2.3.8. OPTICS

The OPTICS algorithm shares many similarities with the DBSCAN algorithm, and can be considered a generalization of DBSCAN that relaxes the eps requirement from a single value to a value range. The key difference between DBSCAN and OPTICS is that the OPTICS algorithm builds a reachability graph, which assigns each sample both a reachability_ distance, and a spot within the cluster ordering_ attribute; these two attributes are assigned when the model is fitted, and are used to determine cluster membership. If OPTICS is run with the default value of inf set for max_eps , then DBSCAN style cluster extraction can be performed repeatedly in linear time for any given eps value using the cluster_optics_dbscan method. Setting max_eps to a lower value will result in shorter run times, and can be thought of as the maximum neighborhood radius from each point to find other potential reachable points.

The reachability distances generated by OPTICS allow for variable density extraction of clusters within a single data set. As shown in the above plot, combining reachability distances and data set ordering_ produces a reachability plot, where point density is represented on the Y-axis, and points are ordered such that nearby points are adjacent. 'Cutting' the reachability plot at a single value produces DBSCAN like results; all points above the 'cut' are classified as noise, and each time that there is a break when reading from left to right signifies a new cluster. The default cluster extraction with OPTICS looks at the steep slopes within the graph to find clusters, and the user can define what counts as a steep slope using the parameter xi . There are also other possibilities for analysis on the graph itself, such as generating hierarchical representations of the data through reachability-plot dendrograms, and the hierarchy of clusters detected by the algorithm can be accessed through the cluster_hierarchy_ parameter. The plot above has been color-coded so that cluster colors in planar space match the linear segment clusters of the reachability plot. Note that the blue and red clusters are adjacent in the reachability plot, and can be hierarchically represented as children of a larger parent cluster.

Examples:

Comparison with DBSCAN

Computational Complexity

References:

"OPTICS: ordering points to identify the clustering structure." Ankerst, Mihael, Markus M. Breunig, Hans-Peter Kriegel, and Jörg Sander. In ACM Sigmod Record, vol. 28, no. 2, pp. 49-60. ACM, 1999.

Spatial indexing trees are used to avoid calculating the full distance matrix, and allow for efficient memory usage on large sets of samples. Different distance metrics can be supplied via the metric keyword.

For large datasets, similar (but not identical) results can be obtained via HDBSCAN. The HDBSCAN implementation is multithreaded, and has better algorithmic runtime complexity than OPTICS, at the cost of worse memory scaling. For extremely large datasets that exhaust system memory using HDBSCAN, OPTICS will maintain \(n\) (as opposed to \(n^2\)) memory scaling; however, tuning of the max_eps parameter will likely need to be used to give a solution in a reasonable amount of wall time.

The results from OPTICS cluster_optics_dbscan method and DBSCAN are very similar, but not always identical; specifically, labeling of periphery and noise points. This is in part because the first samples of each dense area processed by OPTICS have a large reachability value while being close to other points in their area, and will thus sometimes be marked as noise rather than periphery. This affects adjacent points when they are considered as candidates for being marked as either periphery or noise.

Note that for any single value of eps , DBSCAN will tend to have a shorter run time than OPTICS; however, for repeated runs at varying eps values, a single run of OPTICS may require less cumulative runtime than DBSCAN. It is also important to note that OPTICS' output is close to DBSCAN's only if eps and max_eps are close.

2.3.9. BIRCH

The CF Subclusters hold the necessary information for clustering which prevents the need to hold the entire input data in memory. This information includes:

Number of samples in a subcluster.

Linear Sum - An n-dimensional vector holding the sum of all samples

Squared Sum - Sum of the squared L2 norm of all samples.

Centroids - To avoid recalculation linear sum / n_samples.

Squared norm of the centroids.

The BIRCH algorithm has two parameters, the threshold and the branching factor. The branching factor limits the number of subclusters in a node and the threshold limits the distance between the entering sample and the existing subclusters.

This algorithm can be viewed as an instance or data reduction method, since it reduces the input data to a set of subclusters which are obtained directly from the leaves of the CFT. This reduced data can be further processed by feeding it into a global clusterer. This global clusterer can be set by n_clusters . If n_clusters is set to None, the subclusters from the leaves are directly read off, otherwise a global clustering step labels these subclusters into global clusters (labels) and the samples are mapped to the global label of the nearest subcluster.
Algorithm description:

A new sample is inserted into the root of the CF Tree which is a CF Node. It is then merged with the subcluster of the root, that has the smallest radius after merging, constrained by the threshold and branching factor conditions. If the subcluster has any child node, then this is done repeatedly till it reaches a leaf. After finding the nearest subcluster in the leaf, the properties of this subcluster and the parent subclusters are recursively updated.

If the radius of the subcluster obtained by merging the new sample and the nearest subcluster is greater than the square of the threshold and if the number of subclusters is greater than the branching factor, then a space is temporarily allocated to this new sample. The two farthest subclusters are taken and the subclusters are divided into two groups on the basis of the distance between these subclusters.

If this split node has a parent subcluster and there is room for a new subcluster, then the parent is split into two. If there is no room, then this node is again split into two and the process is continued recursively, till it reaches the root.

BIRCH or MiniBatchKMeans?

BIRCH does not scale very well to high dimensional data. As a rule of thumb if n_features is greater than twenty, it is generally better to use MiniBatchKMeans.

If the number of instances of data needs to be reduced, or if one wants a large number of subclusters either as a preprocessing step or otherwise, BIRCH is more useful than MiniBatchKMeans.

How to use partial_fit?
To avoid the computation of global clustering, for every call of partial_fit the user is advised

1. To set n_clusters=None initially

2. Train all data by multiple calls to partial_fit.

References:

2.3.10. Clustering performance evaluation

Evaluating the performance of a clustering algorithm is not as trivial as counting the number of errors or the precision and recall of a supervised classification algorithm. In particular any evaluation metric should not take the absolute values of the cluster labels into account but rather if this clustering define separations of the data similar to some ground truth set of classes or satisfying some assumption such that members belong to the same class are more similar than members of different classes according to some similarity metric.

2.3.10.1. Rand index

Given the knowledge of the ground truth class assignments labels_true and our clustering algorithm assignments of the same samples labels_pred , the (adjusted or unadjusted) Rand index is a function that measures the similarity of the two assignments, ignoring permutations:

The Rand index does not ensure to obtain a value close to 0.0 for a random labelling. The adjusted Rand index corrects for chance and will give such a baseline.

As with all clustering metrics, one can permute 0 and 1 in the predicted labels, rename 2 to 3, and get the same score:

Furthermore, both rand_score adjusted_rand_score are symmetric: swapping the argument does not change the scores. They can thus be used as consensus measures:

Perfect labeling is scored 1.0:

Poorly agreeing labels (e.g. independent labelings) have lower scores, and for the adjusted Rand index the score will be negative or close to zero. However, for the unadjusted Rand index the score, while lower, will not necessarily be close to zero.:

Bounded range: Lower values indicate different labelings, similar clusterings have a high (adjusted or unadjusted) Rand index, 1.0 is the perfect match score. The score range is [0, 1] for the unadjusted Rand index and [-1, 1] for the adjusted Rand index.

No assumption is made on the cluster structure: The (adjusted or unadjusted) Rand index can be used to compare all kinds of clustering algorithms, and can be used to compare clustering algorithms such as k-means which assumes isotropic blob shapes with results of spectral clustering algorithms which can find cluster with "folded" shapes.

Contrary to inertia, the (adjusted or unadjusted) Rand index requires knowledge of the ground truth classes which is almost never available in practice or requires manual assignment by human annotators (as in the supervised learning setting).

However (adjusted or unadjusted) Rand index can also be useful in a purely unsupervised setting as a building block for a Consensus Index that can be used for clustering model selection (TODO).

The unadjusted Rand index is often close to 1.0 even if the clusterings themselves differ significantly. This can be understood when interpreting the Rand index as the accuracy of element pair labeling resulting from the clusterings: In practice there often is a majority of element pairs that are assigned the different pair label under both the predicted and the ground truth clustering resulting in a high proportion of pair labels that agree, which leads subsequently to a high score.

\(a\), the number of pairs of elements that are in the same set in C and in the same set in K

\(b\), the number of pairs of elements that are in different sets in C and in different sets in K

References

2.3.10.2. Mutual Information based scores

Given the knowledge of the ground truth class assignments labels_true and our clustering algorithm assignments of the same samples labels_pred , the Mutual Information is a function that measures the agreement of the two assignments, ignoring permutations. Two different normalized versions of this measure are available, Normalized Mutual Information (NMI) and Adjusted Mutual Information (AMI). NMI is often used in the literature, while AMI was proposed more recently and is normalized against chance:

One can permute 0 and 1 in the predicted labels, rename 2 to 3 and get the same score:

All, mutual_info_score , adjusted_mutual_info_score andnormalized_mutual_info_score are symmetric: swapping the argument does not change the score. Thus they can be used as a consensus measure:

Perfect labeling is scored 1.0:

This is not true for mutual_info_score , which is therefore harder to judge:

Bad (e.g. independent labelings) have non-positive scores:

Upper bound of 1: Values close to zero indicate two label assignments that are largely independent, while values close to one indicate significant agreement. Further, an AMI of exactly 1 indicates that the two label assignments are equal (with or without permutation).

Contrary to inertia, MI-based measures require the knowledge of the ground truth classes while almost never available in practice or requires manual assignment by human annotators (as in the supervised learning setting).

However MI-based measures can also be useful in purely unsupervised setting as a building block for a Consensus Index that can be used for clustering model selection.

NMI and MI are not adjusted against chance.

References

2.3.10.3. Homogeneity, completeness and V-measure

Given the knowledge of the ground truth class assignments of the samples, it is possible to define some intuitive metric using conditional entropy analysis.

In particular Rosenberg and Hirschberg (2007) define the following two desirable objectives for any cluster assignment:

Their harmonic mean called V-measure is computed byv_measure_score :

This function's formula is as follows:

beta defaults to a value of 1.0, but for using a value less than 1 for beta:

more weight will be attributed to homogeneity, and using a value greater than 1:

more weight will be attributed to completeness.

The V-measure is actually equivalent to the mutual information (NMI) discussed above, with the aggregation function being the arithmetic mean [B2011] .

The following clustering assignment is slightly better, since it is homogeneous but not complete:

Note

Bounded scores: 0.0 is as bad as it can be, 1.0 is a perfect score.

Intuitive interpretation: clustering with bad V-measure can be qualitatively analyzed in terms of homogeneity and completeness to better feel what 'kind' of mistakes is done by the assignment.

No assumption is made on the cluster structure: can be used to compare clustering algorithms such as k-means which assumes isotropic blob shapes with results of spectral clustering algorithms which can find cluster with "folded" shapes.

The previously introduced metrics are not normalized with regards to random labeling: this means that depending on the number of samples, clusters and ground truth classes, a completely random labeling will not always yield the same values for homogeneity, completeness and hence v-measure. In particular random labeling won't yield zero scores especially when the number of clusters is large.

This problem can safely be ignored when the number of samples is more than a thousand and the number of clusters is less than 10. For smaller sample sizes or larger number of clusters it is safer to use an adjusted index such as the Adjusted Rand Index (ARI).

References

2.3.10.4. Fowlkes-Mallows scores

Where TP is the number of True Positive (i.e. the number of pair of points that belong to the same clusters in both the true labels and the predicted labels), FP is the number of False Positive (i.e. the number of pair of points that belong to the same clusters in the true labels and not in the predicted labels) and FN is the number of False Negative (i.e the number of pair of points that belongs in the same clusters in the predicted labels and not in the true labels).

The score ranges from 0 to 1. A high value indicates a good similarity between two clusters.

One can permute 0 and 1 in the predicted labels, rename 2 to 3 and get the same score:

Perfect labeling is scored 1.0:

Bad (e.g. independent labelings) have zero scores:

Upper-bounded at 1: Values close to zero indicate two label assignments that are largely independent, while values close to one indicate significant agreement. Further, values of exactly 0 indicate purely independent label assignments and a FMI of exactly 1 indicates that the two label assignments are equal (with or without permutation).

No assumption is made on the cluster structure: can be used to compare clustering algorithms such as k-means which assumes isotropic blob shapes with results of spectral clustering algorithms which can find cluster with "folded" shapes.

References

2.3.10.5. Silhouette Coefficient

The Silhouette Coefficient s for a single sample is then given as:

\[s = \frac{b - a}{max(a, b)}\]

The Silhouette Coefficient for a set of samples is given as the mean of the Silhouette Coefficient for each sample.

In normal usage, the Silhouette Coefficient is applied to the results of a cluster analysis.

References

2.3.10.6. Calinski-Harabasz Index

The index is the ratio of the sum of between-clusters dispersion and of within-cluster dispersion for all clusters (where dispersion is defined as the sum of distances squared):

In normal usage, the Calinski-Harabasz index is applied to the results of a cluster analysis:

References

2.3.10.7. Davies-Bouldin Index

This index signifies the average 'similarity' between clusters, where the similarity is a measure that compares the distance between clusters with the size of the clusters themselves.

Zero is the lowest possible score. Values closer to zero indicate a better partition.

In normal usage, the Davies-Bouldin index is applied to the results of a cluster analysis as follows:

\(s_i\), the average distance between each point of cluster \(i\) and the centroid of that cluster - also know as cluster diameter.

\(d_{ij}\), the distance between cluster centroids \(i\) and \(j\).

References

2.3.10.8. Contingency Matrix

Here is an example:

The first row of output array indicates that there are three samples whose true cluster is "a". Of them, two are in predicted cluster 0, one is in 1, and none is in 2. And the second row indicates that there are three samples whose true cluster is "b". Of them, none is in predicted cluster 0, one is in 1 and two are in 2.

A confusion matrix for classification is a square contingency matrix where the order of rows and columns correspond to a list of classes.

References

2.3.10.9. Pair Confusion Matrix

between two clusterings computed by considering all pairs of samples and counting pairs that are assigned into the same or into different clusters under the true and predicted clusterings.

It has the following entries:

\(C_{00}\) : number of pairs with both clusterings having the samples not clustered together

\(C_{10}\) : number of pairs with the true label clustering having the samples clustered together but the other clustering not having the samples clustered together

\(C_{01}\) : number of pairs with the true label clustering not having the samples clustered together but the other clustering having the samples clustered together

\(C_{11}\) : number of pairs with both clusterings having the samples clustered together

Considering a pair of samples that is clustered together a positive pair, then as in binary classification the count of true negatives is \(C_{00}\), false negatives is \(C_{10}\), true positives is \(C_{11}\) and false positives is \(C_{01}\).

Perfectly matching labelings have all non-zero entries on the diagonal regardless of actual label values:

Labelings that assign all classes members to the same clusters are complete but may not always be pure, hence penalized, and have some off-diagonal non-zero entries:

The matrix is not symmetric:

If classes members are completely split across different clusters, the assignment is totally incomplete, hence the matrix has all zero diagonal entries:

References

# data[].attributes.attachment_link.description
Clustering of unlabeled data can be performed with the modulesklearn.cluster . Each clustering algorithm comes in two variants: a class, that implements the fit method to learn the clusters on train data, and a function, that, given train data, returns an array of integer labels corresponding to the different clusters.

# data[].attributes.body
Investigar sobre aplicaciones de los algoritmos de clustering en la industria, ejemplos y usos.

# data[].attributes.body
Unos alumnos de la universidad de California lograron crear un programa que detecta fake news haciendo uso del clustering. Analizaban las noticias y guardaban en clusters distintos a las palabras segun la frecuencia en que aparecian en noticias falsas. Luego, utilizaron esos clusters para crear su algoritmo y así poder detectar las fake news.

# data[].attributes.attachment_link.readable_text
Artículos

Aplicación de Minería de Datos para la Clasificación de Programas Universitarios de Ingeniería Industrial Acreditados en Alta Calidad en Colombia

Application of Data Mining for the Classification of University Programs of Industrial Engineering Accredited In High Quality in Colombia

Universidad de Cartagena, Facultad de Ciencias Económicas, Programa Administración Industrial., Piedra de Bolívar Campus, Cartagena. Colombia. (e-mail: tfontalvoh@unicartagena.edu.co).

Universidad Tecnológica de Bolívar, Facultad de Ingenierías, Programa Ingeniería Industrial. Campus de Ternera, Cartagena. Colombia. (e-mail: edelahoz@utb.edu.co).

Universidad del Atlántico, Facultad de Ingeniería, Programa de Ingeniería Industrial, Barranquilla, Colombia. (e-mail: adelmendoza@uniatlantico.edu.co)

Se propone un método para clasificar programas universitarios de ingeniería industrial, colocando especial atención a las relaciones entre las asignaturas del plan de estudio y las 12 áreas de conocimiento planteadas en el cuerpo de competencias publicado por el Instituto de Ingenieros Industriales y de Sistemas (IIES). Para la clasificación propuesta se utilizó técnicas de análisis no supervisado de datos como el Análisis de Componentes Principales (PCA) y Análisis de clúster. Como unidades de estudio se utilizan los 21 programas acreditados por alta calidad en Ingeniería Industrial en Colombia. Los resultados muestran que factores como, las acreditaciones internacionales, tamaño de las facultades de ingeniería y el perfil de universidad influye en la agrupación de los programas de estudio. La investigación permitió clasificar tres grandes componentes principales y perfiles de programas acreditados

Palabras clave: clustering; componentes principales; ingeniería industrial; minería de datos; educación

The present research article proposes a method to classify University engineering programs, placing special attention to relations between the subjects of the curriculum and the 12 areas of knowledge established in the body of competencies published by the Institute of industrial and System Engineers (IIES). Techniques of unsupervised data analysis such as Principal Components Analysis (PCA) and cluster analysis were used for the proposed classification. Twenty-one programs, accredited by high quality in Industrial Engineering in Colombia, are used as units of study. The results show that factors such as international accreditation, size of the faculties of engineering and University profile, influence the grouping of the programs of study. The research allowed to classify three large main components and profiles of accredited programs.

Keywords: clustering; principal components; industrial engineering; data mining; education

INTRODUCCIÓN

El concepto de plan de estudios en un programa universitario ha sufrido cambios fundamentales en los últimos 30 años, pasando de carreras basadas en contenidos a otro en que las competencias son el pilar fundamental. Es así como el desarrollo competencial de los estudiantes durante su proceso de formación se ha convertido en el centro de la actividad educativa. De este modo procesos de estandarización de los sistemas educativos como la declaración de Bolonia (Bologna Declaration, 1999), la cual propone el diseño de procesos curriculares basados en competencias, o el sistema de hora-crédito (Dietrich, 1955) implementado por la universidad de Harvard han servido como base para el diseño de los planes de estudio modernos. Los planes de estudio en Colombia suelen presentar en forma de red o mediante tablas, estos presentan limitaciones en cuanto a su comparación externa con otros programas académicos. Es así como en un ambiente de alta competitividad entre universidades se precisa contar con sistemas que informen sobre la propuesta de valor profesional ofrecida por los programas académicos, incentivando la toma de decisiones objetivas.

Por la importancia que revisten los programas académicos de ingeniería industrial en el contexto social y empresarial de cualquier país, con esta investigación se da respuesta a las siguientes preguntas problema. ¿De qué manera se pueden clasificar los programas de ingeniería industrial acreditados utilizando la minería de datos? ¿Qué factores de la acreditación determinan la clasificación de los programas de ingeniería Industrial académicos acreditados en Colombia? ¿De qué manera visual se puede analizar la clasificación de programas de ingeniería Industrial acreditados en Colombia en función de las variables y factores de la acreditación? En concordancia con lo anterior, el objetivo general de esta investigación es presentar una metodología alternativa para clasificar los planes de estudio de programas de ingeniería industrial, identificando las relaciones existentes entre los cursos dictados, las competencias adquiridas y el peso relativo de dichas competencias en el total del plan de estudios.

Uno de los objetivos planteados es de desarrollar un esquema visual de la clasificación resultante, esto para facilitar interpretación del resultado. Según Tang et al., (2013), el proceso de creación de imágenes mentales es fundamental para los procesos de pensamiento y creación de nuevo conocimiento en las personas. Swedberg, (2016) plantea el enfoque visual como una materialización de la experiencia, considerando los conceptos y su representación como algo indivisible, Peréz-Benedito et al (2017) implementan modelos gráficos para explicar las estructuras financieras en las empresas. La estructura de éste trabajo de investigación es la siguiente: inicialmente se desarrolla una revisión bibliográfica en el contexto de la educación por competencias y su relación con los planes de estudio. Posteriormente se desarrolla el proceso de análisis no supervisado para la clasificación de los programas. Seguidamente se analiza la visualización resultante del proceso. Finalmente se explican los resultados obtenidos y se sugieren nuevas investigaciones.

El enfoque de minería de datos propuesto muestra la relación entre las universidades a través de un proceso de aprendizaje no supervisado, utilizando las técnicas de análisis de componentes principales y análisis de clúster (Ver figura 1). Por lo tanto, las universidades con más competencias en común estarán más cerca entre sí. Una de las ventajas el análisis propuesto es la forma de sintetizar las dimensiones del problema, haciendo posible la conceptualización visual de los planes de estudio para apoyar el soporte a la toma de decisiones. Los sistemas de clasificación en procesos de minería de datos se componen de diferentes técnicas estadísticas y de inteligencia artificial. Según (Kotsiantis et al., 2007), dado un conjunto de observaciones, se busca establecer la existencia de clases o clústeres en los datos. Para (Persson y Ryals, 2014) el objetivo principal es inferir un conjunto de reglas de clasificación basadas en supuestos matemáticos. Existe una extensa literatura sobre problemas de clasificación utilizando análisis no supervisados, (Verikas et al., 2011) desarrollan modelos clasificación utilizando técnicas de Bosques aleatorios, (Xanthopoulos y Koulouriotis, 2015) analizan el rendimiento de sistemas de producción con redes neuronales a partir de reglas de análisis de clustering, , (Arista-Jalife et al, 2017) clasifican imágenes satelitales de ciudades usando redes neuronales, (He et al., 2017) analizan las capacidades de los sistemas de clasificación en sistemas de vigilancia en temas de tráfico de vehículos y peatones. De la Hoz y López, (2017) utilizan técnicas de redes neuronales artificiales y análisis de conglomerados para evaluar el potencial exportador de las empresas. En procesos de visualización de planes de estudio, (Siirtola et al., 2013) estudia las relaciones entre asignaturas de un plan de estudio a través de nodos interrelacionados. (Morsi et al., 2007) identifica las relaciones entre asignaturas y competencias a través de mapas conceptuales, (Rollande y Grundspenkis, 2013) implementa un sistema de visualización de planes de estudio evidenciando la utilidad para estudiantes, profesores y demás actores del proceso educativo.

Análisis de componentes principales.

El análisis de componentes principales (PCA) es un algoritmo matemático que reduce la dimensión de un conjunto de datos a la vez que conserva la mayor variabilidad posible. Esto se logra por la identificación de direcciones llamadas componentes principales, dentro de las que la variación en los datos es máxima. Una de las ventajas es que tanto las observaciones como las variables pueden ser representadas gráficamente, haciendo posible evaluar visualmente similitudes y diferencias entre las muestras y determinar si es posible realizar procesos de agrupación. El enfoque más común del PCA se da en términos de una proyección lineal estandarizada, la cual maximiza la varianza en un espacio proyectado (Hotelling, 1933).

En resumen el PCA se constituye de: 1) Los vectores wj , que están dados por los auto vectores dominantes (aquellos con el auto valor asociado más grande); 2) La matriz de covarianza muestral S = Σn (tn - ṫ) (tn - ṫ) /N, donde ṫ es la media muestral, de tal forma que Swj = λj Wj; 3) Las componentes principales observadas en el vector tn están dadas por el vector xn = wt (tn - ṫ), cuando W = (w1, w2, ... , wq); 4) Las variables xj entonces no están correlacionadas de tal forma que la matriz de varianzas Σn[(Xn Xtn) / N] es diagonal con elementos λj.

Análisis de Clúster

El análisis de clúster es una técnica de aprendizaje no supervisado en el área de machine learning, capaz de crear grupos de tal forma que las observaciones pertenecientes a un grupo están muy cercanas ente ellas y apartadas de las observaciones ubicadas en otro clúster. Existen 4 categorías de algoritmos de clustering: 1) de particionamiento; 2) basados en densidad; 3) basados en redes: y 4) jerárquicos. Los algoritmos de partición tal como k-means y de partición alrededor de los medoides iterativamente refinan un conjunto de k clusters y por lo general no escalan bien para grandes conjuntos de datos. Los algoritmos basados en densidad, son capaces de generar clústeres de tamaño arbitrario y de lidiar con valores extremos. Los algoritmos basados en red reducen el espacio de agrupamiento a celdas dentro de una red, permitiendo un agrupamiento eficiente de conjuntos de datos de gran tamaño. Los algoritmos jerárquicos pueden ser de aglomeración o divisivos, en la forma aglomerada repetidamente se fusionan dos clústeres, mientras en la forma divisiva repetidamente se divide un clúster en dos.

Calculo de Distancia

En el proceso de aprendizaje no supervisado es importante establecer una función de distancia de los programas académicos, dado que entre asignaturas y competencias profesionales se desarrolla la siguiente premisa: Cuanto más peso relativo compartan dos programas académicos, más cerca estarán.

La distancia Euclidea es las más usada en el desarrollo de procesos de aprendizaje no supervisado, sin embargo, es sensible a cambios de escala y considera las T variables independientes (Cuadras, 2014). En (Breu et al.,1995) se proponen transformaciones que permiten reducir y/o desaparecer estos problemas. Se propone la estandarización de las variables, intentando que el aporte de cada variable se encuentre dentro del intervalo (0,1). Existen modificaciones a la distancia Euclidea como la distancia de Manhattam o city block, calculada como la suma de diferencias absolutas entre unidades para cada variable. Por una parte (Cain y Harrison, 1958) desarrollan variantes para la estandarización según el rango, mientras que () desarrolla un índice de similaridad basado en observaciones conjuntas. Otras distancias derivadas de la Manhattan son las de Bray-Curtis (Bray y Curtis , 1957) y la de Camberra (Lange y Williams, 1967).

Dado que el objetivo es agrupar a los programas académicos en función de las competencias que comparten, teniendo en cuenta también las competencias no coincidentes, para este trabajo de investigación se opta por la distancia Bray - Curtis, aunque otras opciones como Camberra podrían haberse considerado igualmente.

Competencias profesionales del ingeniero Industrial.

El concepto de competencia en el contexto del desarrollo profesional de un individuo adopta diferentes definiciones, Autores como (Passow y Passow, 2017) definen las competencias profesionales como la integración de conocimientos en la resolución de problemas, otros como (Tirado et al.,2007) integran el ser, saber y hacer en marco de un contexto definido. Existen diferentes entidades a nivel mundial que promueven procesos de pensamiento alrededor de las habilidades necesarias en el área de la ingeniería, por ejemplo, el Accreditation Board of Engineering and Technology (ABET) presenta un conjunto competencias fundamentales para todo ingeniero (Maffioli y Augusti, 2003), estas se conocen como los criterios de ingeniería ABET los cuales constan de once competencias que todo profesional en ingeniería debería poseer.

Para la presente investigación se tomó como referencia la clasificación de competencias profesionales en el libro de conocimiento del Instituto de Ingenieros Industriales y de sistemas (Institute of Industrial and systems engineers, 2016). Las áreas de desarrollo competencial son las siguientes: 1) Ciencias y matemáticas básicas; 2) Estudio del trabajo y medición; 3) Investigación de Operaciones; 4) Ingeniería Económica; 5) Gestión Energética; 6) Calidad y Confiabilidad; 7) Factores humanos y ergonómicos; 8) Ingeniería de Operaciones; 9) Gestión de la cadena de suministro; 10) Ingeniería Administrativa; 11) Seguridad; 12) Ingeniería Informática.

METODOLOGÍA

El objetivo de esta investigación fue identificar universidades que comparten enfoques similares de formación de Ingenieros Industriales además de generar procesos de visualización de la información que permitan un rápido análisis e interpretación de los resultados. Como fuente de información primaria se tomó la base de datos del Consejo Nacional de Acreditación CNA, adscrito al Ministerio de Educación Nacional de Colombia. Inicialmente se realizó un análisis empírico, que como producto de la aplicación de la técnica de Componentes Principales (PCA), permitió una reducción de las diferentes variables y factores establecidos en los lineamientos de acreditación seleccionados para los programas de ingeniería industrial. Finalmente se realizó un proceso de clasificación usando técnicas de análisis de clúster. El análisis de componentes principales de los datos se desarrolló usando el software R (R Development Core Team, 2008), y el paquete FactoMiner (Le et al.,2008), de este se obtuvo la matriz de varianzas covarianzas, los auto valores y auto vectores, las contribuciones de cada variable a las componentes principales.

El origen de la ciencia en esta investigación se apoyó en un análisis racional por parte de los investigadores que posibilito definir las variables y factores a analizar de los programas acreditados de ingeniería industrial en Colombia. Así mismo se apoyó en un análisis empírico utilizando las técnicas de factores principales y clúster. De igual forma el análisis racional para la clasificación de los factores y variables de la acreditación se elaboró con base en las experiencias, trabajos, estudios y trayectoria de más de 15 años de los investigadores en el acompañamiento de la acreditación de diversos programas de ingeniería Industrial acreditados en alta calidad en Colombia.

Los datos en el presente trabajo corresponden a los planes de estudio de 21 programas de ingeniería industrial acreditados en Colombia en alta calidad hasta 2016 por el consejo nacional de acreditación CNA. Para cada plan de estudio se calculó el porcentaje de créditos asociados a cada competencia profesional del IIES, generando así un vector de pesos específicos asociados a las variables de estudio, dado que para la creación de categorías en procesos de aprendizaje no supervisado es mejor contar con valores relativos en vez de valores nominales.

RESULTADOS

Del análisis de componentes principales PCA, se encontró que este arrojó un total de 11 componentes principales, donde las 3 primeras recogen el 70.5 % de variabilidad explicada (Ver tabla 1). Para determinar el número de componentes ideal que genere una mejor interpretación de los datos se usa el scree test (Cattel, 1966), el cual consiste en examinar el grafico de los auto valores y buscar por el punto de quiebre natural en los datos (Ver figura 2), es así como se seleccionaran 3 componentes para el resto del proceso investigativo.

En la componente 1 se evidencia como las áreas de Ingeniería Administrativa, Matemáticas e Ingeniería Básica e Ingeniería Económica son las que representan mayoritariamente la proyección de la variabilidad explicada en esta dimensión, con valores del 091, -0.92 y -0.94 respectivamente. Según (Davenport y Short, 1990) el conjunto de las nuevas tecnologías ha re-direccionado el perfil profesional del ingeniero industrial por lo que se definirá esta dimensión como Gestión y Planeación.

En la componente 2 se evidencia como las áreas de factores humanos y ergonómicos y Seguridad representan mayoritariamente la proyección de la variabilidad explicada en esta dimensión, con valores de 0.83 y 0.79 respectivamente. Según (Lohman et al., 2004), El objetivo de estas áreas de la ingeniería industrial es mejorar el desempeño operacional de una organización, por lo que se definirá esta dimensión como Eficiencia y Seguridad Laboral. En la componente 3 se evidencia como el área de Cadena de Suministro representa la proyección de la variabilidad explicada en esta dimensión, con valores de 0.81. Según (Sinclair et al.,1995), el concepto de la gestión de la cadena de suministro representa una correcta integración de flujos de información, dinero y mercancías, por lo que se definirá esta dimensión como Logística Integral. La visualización el plano formado por las componentes 1 y 2 logra explicar el 60 % de la variabilidad de los datos (Ver Figura 2), cada uno de los puntos en el mapa corresponde a una universidad según el peso específico de esta con los ejes principales, dado que existe un numero de variables mayor a 3 esta aproximación visual permite una identificación del enfoque competencial de los programas.

El análisis de clúster de los datos se desarrolló usando el software (R Development Core Team, 2008), teniendo en cuenta que la selección del número de clústeres es un problema aún sin resolver, se desarrolló un análisis de clúster jerárquico primero para determinar el número de clústeres por inspección visual del dendograma y así después aplicar un algoritmo de partición, tal como se explica en (Punj y Stewart, 1983). El resultado del análisis jerárquico apunta a la existencia de dos o tres grupos (Ver figura 3). Dado que el objetivo de la presente investigación fue clasificar los programas académicos y teniendo en cuenta lo heterogéneo que pueden resultar estos en marco de la autonomía universitaria, se utilizara la opción de 3 grupos dado que se busca un poco más de detalle en los resultados, más allá de los 2 grandes grupos que puedan identificarse en el dendograma (Ver Figura 3).

Definición de los perfiles identificados en el Análisis de Clúster.

Los programas de estudio clasificados en el grupo 1 responden a un programa de estudio con un énfasis fuerte en temas de Ciencias Básicas e Ingeniería de Operaciones, el elemento representativo de este grupo es la Universidad San Buenaventura de Cali, la cual cuenta con el peso relativo más alto en las áreas de Ciencias Básicas con un 35% y el tercer más alto en Ingeniería de operaciones. Se observa como en este grupo se encuentras las Universidades con menor peso relativo en sus programas en las áreas de Ingeniería económica y Administrativa. Este grupo se rotulará como énfasis en Ciencias y Procesos Industriales, corresponde al 19 % del total de Universidades estudiadas.

Los programas de estudio clasificados en el grupo 2 no son un grupo compacto, se observan dos subgrupos a lo largo del segundo componente (Ver Figura 4). En el primer subgrupo compuesto por la Universidad del Norte y la Universidad de la Sabana, ubicadas al extremo superior, estas presentan un énfasis marcado en temas Ingeniería Informática e Investigación de Operaciones. El segundo subgrupo se ubica en el centro de los ejes, con programas asociados a un énfasis de Seguridad y Calidad. El elemento representativo de este grupo es la Escuela de Ingeniería de Antioquia, la cual presenta un balance entre los pesos relativos de las áreas de estudio, se destaca en este grupo la vinculación de universidades con enfoques de tecnología e Ingeniera como la Universidad Industrial de Santander, Escuela Colombiana de Ingeniería, Universidad Tecnológica de Pereira y la Escuela de Ingeniería de Antioquia. Este grupo se rotulará como Énfasis en Tecnología y Sistemas Integrados de gestión, corresponden al 33% del total de Universidades estudiadas.

Los programas de estudio clasificados en el grupo 3 responden a un programa de estudio con un énfasis muy fuerte en las áreas de Ingeniería Económica e Ingeniería Administrativa, el elemento representativo de este grupo es la Universidad Tecnológica de Bolívar la cual se caracteriza por presentar un peso relativo del 12 % en el área de Ingeniería Administrativa, valor superior en más del 50 % al del elemento representativo del grupo 1 (5 %). Se observa como en este grupo se encuentran las universidades con menor peso relativo en las áreas de Ingeniería Informática e Investigación de Operaciones y las que menos peso relativo le otorgan al área de Ciencias e Ingeniería Básica. Este grupo se rotulará como Énfasis en Gestión e Ingeniería Administrativa, es el grupo grande un 46 % del total de universidades estudiadas.

DISCUSIÓN FINAL

La clasificación desarrollada genera valor a los cuatro actores principales en los procesos de enseñanza universitaria de la Ingeniería Industrial: estudiantes, profesores, personal directivo y agencias evaluadoras. Desde el punto de vista del estudiante la clasificación propuesta ayuda a identificar el grupo de universidades que ofrece el desarrollo de competencias afines a las perspectivas de desarrollo individual, lo que facilita servir como factor de elección de programa. A los profesores les permite realizar un proceso de Benchmarking de las asignaturas. Por otro lado, ofrece al personal directivo de las universidades, tanto a nivel de Facultad como de Rectoría, una panorámica general del perfil competitivo de los programas de Ingeniería Industrial con los cuales se compite, permitiendo un análisis de posicionamiento estratégico y de propuesta de valor. Finalmente serviría a las agencias evaluadoras de la educación superior como mapa de referencia para identificar y clasificar los perfiles de los programas evaluados a los criterios de calidad estipulados.

La representación visual y los grupos obtenidos en la investigación son un avance a los resultados obtenidos por (Siirtola et al., 2013) y (Rollande y Grundspenkis, 2013), al pasar del análisis individual de planes de estudios a un análisis múltiple para la definición de enfoques competenciales y perfiles profesionales que cada programa académico oferta a la comunidad. La visualización de los resultados obtenidos puede ser mejorada, involucrando información correspondiente a las estadísticas de empleabilidad, deserción y desempeño académico de los estudiantes.

CONCLUSIONES

En conclusión, la propuesta de clasificación de los programas académicos de Ingeniería Industrial en Colombia, ubica a los programas académicos en un espacio visual, identificando programas afines en función de su enfoque competencial común. Se encontraron tres grandes grupos, asociados a tres énfasis: ciencias básicas e ingeniería, sistemas integrados de gestión y Gestión e Ingeniería administrativa.

Esta clasificación permite identificar y valorar diferencias entre programas de Ingeniería Industrial según su énfasis profesional, permitiendo un análisis de posicionamiento estratégico funcional. Con lo que se aporta una perspectiva integral que permite a los grupos de interés tomar decisiones objetivas para su beneficio y mejora en el contexto que participa. El resultado grafico obtenido genera una fácil interpretación del resultado del proceso de clasificación, permitiendo asociar cada grupo a un énfasis competencial especifico, así como identificar distancias entre propuestas de planes de estudio en el área de Ingeniería industrial en Colombia.

REFERENCIAS

Arista-Jalife, A., Calderón-Auza, G., Fierro-Radilla, A., & Nakano, M. Clasificación de Imágenes Urbanas Aéreas: Comparación entre Descriptores de Bajo Nivel y Aprendizaje Profundo, doi: 10.4067/S0718-07642017000300021, Inf. Tecnol. 28(3), 209-224. (2017). [ Links ]

Bologna Declaration, 1999. The Bologna Declaration of 19 June 1999. (en la web: (en la web: https://www.eurashe.eu/library/bologna_1999_bologna-declaration-pdf /, acceso: 10 de Dicienbre 2016) [ Links ]

Bray, J., y Curtis , J., An ordination of the upland foret communities of southern Wisconsin. Ecological Monographs, 27(4), 325-349. (1957). [ Links ]

Breu, H., GIL, J., Kirlpatrick, D., y Werman, M., Linear Time Euclidean distance transform algorithms. IEE Transactions on Pattern Analysis and Machine Intelligence, 17(5), 529-533. (1995). [ Links ]

Cain, A., y Harrison, G., An analysis of the taxonomist's judgment of affinity. Journal of Zoology, 131(1), 85-98. (1958). [ Links ]

Cattel, R. The Scree Test for the number of Factors. Multivariate Behavioral Research, 1(2), 245-276. (1966). [ Links ]

Cuadras, C.. Nuevos métodos de análisis multivariante,138-140. CMC Editions. , Barcelona España. (2014) [ Links ]

Davenport, T., y Short, J. E., The new Industrial Engineering: Information Technology and Business process redesign. Sloan Management review, 31(4), 11-27. (1990). [ Links ]

De la Hoz, E., y López, L., Aplicación de Técnicas de Análisis de Conglomerados y Redes Neuronales Artificiales en la Evaluación del Potencial Exportador de una Empresa,doi: 10.4067/S0718-07642017000400009, Inf. Tecnol, 28 (4), 67-74. (2017) [ Links ]

Dietrich, G. The emergence of the credit system in American education considered as a problem of social and intellectual history. Bulletin of the American Association of University Professors (1915-1955), 41(4), 647-668. (1955). [ Links ]

Gower, J. A general coefficient of similarity and some of its properties. Biometrics, 27 (4), 857-871. (1971). [ Links ]

He, Y., Sang, N., Gao, C., y Han, J., Online Unsupervised Learning Classification of pedestrian and vehicle for video surveillance, doi: 10.1049/cje.2016.08.011 . Chinese Journal of Electronics, 26(1), 145-151. (2017). [ Links ]

Hotelling, H. Analysis of a complex of statistical variables into principal components. Journal of educational pshychology, 24(6), 417-441. (1933). [ Links ]

Institute of Industrial and systems engineers. Institute of Industrial and systems engineers (en la web: Institute of Industrial and systems engineers (en la web: http://www.iise.org , acceso 23 de Abril 2017) [ Links ]

Kotsiantis, S., Zaharakis, I., y Pintelas, P., Supervised Machine learning: A review of classification techniques. Informatica, 31, 249-268. (2007). [ Links ]

Lange, G., y Williams, W. A., General theory of classificatory sorting strategies: II. Clustering Systems. The computer journal, 10(3), 271-277. (1967). [ Links ]

Le, S., Josse, J., y Husson, F., FactoMiner: A package for Multivariate Analysis. Journal of Statistical Software, 25(1), 1-18. (2008). [ Links ]

Lohman, C., Fortuin, L., y Marc, W., Designing a performance measurement system: A case study. European Journal of Operational Research, 156(2), 267-268. (2004). [ Links ]

Maffioli, F., y Augusti, G., Tuning Engineering education into the european higher education orchestra. European Journal of Engineering Education. , 28(3), 251-273. (2003). [ Links ]

Morsi, R , Ibrahim , y W. , Williams F. , Concept maps: Development and validation of engineering curricula. Frontiers In Education Conference-Global Engineering: Knowledge Without Borders, Opportunities Without Passports, 518-523, Milweakee, USA 10 a 13 de Octubre (2007). [ Links ]

Passow, H., y Passow, C., What Competencies Should Undergraduate Engineering Programs Emphasize? A Systematic Review, doi: 10.1002/jee.20171, Journal of Engineering Education, 106(3), 475-526. (2017). [ Links ]

Pérez-Benedito, M. A., Porcuna-Enguix, L., & Porcuna-Enguix, R. (2017). Los Mapas Contables de Gestión de las Empresas Cotizadas Chilenas: Análisis Cualitativo, doi: 10.4067/S0718-07642017000100016, Inf. Tecnol . 28(1), 161-170. [ Links ]

Persson, A., y Ryals, L., Making customer relationship decisions, doi: 10.1016/j.jbusres.2014.02.019, Journal of Business Research, 67(8), 1725-1732. (2014). [ Links ]

Punj, G., y Stewart, D., Cluster Analysis in marketing research. Review and suggestions. Journal of marketing research, 20(2), 134-148. (1983). [ Links ]

R Development Core Team. R: A language and environment for statistical computing. R Foundation for Statistical Computing. (2008). [ Links ]

Rollande, R., y Grundspenkis, J., Graph based framework and its implemented prototype for personalized study planning, doi: 10.1109/ICeLeTE.2013.6644362, Second International Conference on e-Learning and e-Technologies in Education, 137-142, Lodz, Poland 23 al 25 de Septiembre (2013). [ Links ]

Siirtola, H., Raiha, K. J., y Surakka, V., Interactive curriculum visualization, doi: 10.1109/IV.2013.13. Information Visualization 17th International Conference, 108-117, London, UK 15 a 18 de Julio (2013). [ Links ]

Sinclair, M., Siemieniuch, C., Cooper, E., y Vaddell, N., A discussion of simultaneous engineering and the manufacturing supply chain from an ergonomics perspective. International Journal of Ergonomics, 16(4), 263-281. (1995). [ Links ]

Swedberg, R., Can You Visualize Theory? On the Use of Visual Thinking in Theory Pictures, Theorizing Diagrams, and Visual Sketches, doi: 10.1177/0735275116664380, Sociological Theory, 34(3), 250-275. (2016). [ Links ]

Tang, F., Hess, T., Valacich, J., y Sweeney, J., The effects of visualization and interactivity on calibration in financial decision-making, doi: 10.2308/bria-50589, Behavioral Research in Accounting, 26(1), 25-28. (2013). [ Links ]

Tirado, L., Estrada, J., Ortiz, R., Solano, H., Gonzalez, J., Alfonso, D., y Ortiz, D., Competencias profesionales: una estrategia para el desempeño exitoso de los ingenieros industriales. Revista Facultad de Ingeniería Universidad de Antioquia, 123-139. (2007). [ Links ]

Verikas, A., Gelzinis, A., y Bacauskiene, M., Mining data with random forests: A survey and results of new tests, doi: 10.1016/j.patcog.2010.08.011, Pattern Recognition, 44(2), 330-349. (2011). [ Links ]

Xanthopoulos, A. S., y Koulouriotis, D. E., Cluster analysis and neural network-based metamodeling of priority rules for dynamic sequencing, doi: 10.1007/s10845-015-1090-0 Journal of Intelligent Manufacturing, 1-23. (2015). [ Links ]

# data[].attributes.attachment_link.title
Aplicación de Minería de Datos para la Clasificación de Programas Universitarios de Ingeniería Industrial Acreditados en Alta Calidad en Colombia

# data[].attributes.attachment_link.description
Artículos Aplicación de Minería de Datos para la Clasificación de Programas Universitarios de Ingeniería Industrial Acreditados en Alta Calidad en Colombia Application of Data Mining for the Classification of University Programs of Industrial Engineering Accredited In High Quality in Colombia Universidad de Cartagena, Facultad de Ciencias Económicas, Programa Administración Industrial., Piedra de Bolívar Campus, Cartagena.

# data[].attributes.headline
Aplicación de las técnicas de agrupamiento para la distribución cuasi-óptima de una red híbrida WDM-TDM/PON  en cascada multinivel que da soporte a una Smart city 

# data[].attributes.subject
Aplicación de las técnicas de agrupamiento para la distribución cuasi-óptima de una red híbrida WDM-TDM/PON  en cascada multinivel que da soporte a una Smart city 

# data[].attributes.headline
Análisis de grupos o agrupamiento es la tarea de agrupar objetos por similitud, en grupos o conjuntos de manera que los miembros del mismo grupo tengan características similares. Es la tarea principal de la minería de datos exploratoria y es una técnica común en el análisis de datos estadísticos

# data[].attributes.subject
Análisis de grupos o agrupamiento es la tarea de agrupar objetos por similitud, en grupos o conjuntos de manera que los miembros del mismo grupo tengan características similares. Es la tarea principal de la minería de datos exploratoria y es una técnica común en el análisis de datos estadísticos

# data[].attributes.attachment_link.readable_text
Cuando se nos plantea un problema, una de las cosas que hacemos a menudo es dividirlo en trozos más simples. Esta estrategia suele ser buena por varias razones: una es que las partes suelen ser más fáciles de resolver que el problema entero y, la otra, que a veces resolviendo tan solo alguna de ellas llegamos a una solución satisfactoria para el total. Es una aplicación del famoso "divide y vencerás ".

En la empresa, segmentar es una manera de dividir un problema en partes más sencillas que ayuda a priorizar esfuerzos y a localizar oportunidades de negocio. No todos los clientes son iguales ni tienen las mismas necesidades. Por tanto, las compañías deben entenderlo y adaptar sus propuestas de valor a cada grupo objetivo. Segmentar es dividir una población en grupos homogéneos en función de necesidades, comportamientos, características o actitudes y caracterizar a los grupos resultantes para saber qué les distingue entre sí.

Una manera muy útil de segmentar y entender a qué tipo de población estamos estudiando es ver cómo se organizan sus individuos de forma natural. Para eso se utiliza el algoritmo k-means, uno de los más famosos de la ciencia de datos en general y para hacer clustering en particular.

Éstas son algunas de las preguntas que puede ayudar a resolver: ¿qué tipo de clientes tengo?, ¿cuáles son los que menos productos contratan?, ¿qué tiendas venden más (o menos) de lo que deberían?, ¿están bien ubicadas?, ¿cuáles son los clientes más sensibles al precio?...

El algoritmo de k-means es un sencillo método para dividir, en base a una serie de variables, una población en un número k de segmentos (o clusters) determinado por el usuario. El primer paso del algoritmo es la inicialización. Para ello se seleccionan k individuos de la población al azar. Esos individuos son los representantes de cada clúster y se llaman también centroides. Una vez hecho esto, el algoritmo repite un número de veces dos sencillos pasos:

1. Asignación de individuos. Cada individuo se asigna al clúster a cuyo centroide está más cerca. Para ello se mide la distancia entre él y cada centroide. Una de las distancias más utilizadas es la euclídea. Esto genera una partición de los datos.

2. Actualización de los centroides. El nuevo representante del grupo se traslada al centro (media) de todos los individuos asignados a él.

Estos pasos se repiten hasta que los grupos se mantienen iguales o, lo que es lo mismo, no hay nuevas reasignaciones de individuos en el paso 1: el algoritmo ha convergido.

Mi hijo y yo jugamos a veces a las cartas de Pokémon. Es un juego sencillo. Nos repartimos unas cuantas cartas del taco y cada ronda enfrentamos dos de ellas (una carta cada uno). Uno de nosotros comienza la batalla y el contrincante replica. Las decisiones se toman en función de las fortalezas o debilidades de los Pokémon que nos tocan. Los ataques van restando puntos de vida y al final de cada partida siempre hay un vencedor. Así jugamos él y yo. El que gana la batalla se lleva la carta del otro. Cuando yo era niño, había un juego parecido con coches de Fórmula 1, en el que las batallas eran más simples: el que lanzaba el ataque elegía una característica y si era mejor en ella que el coche del contrincante, se lo llevaba. Con los Pokémon las batallas se complican un poco pero la esencia es la misma. Hay dos cosas fundamentales que pueden ayudar a ganar una partida: tu pericia como jugador a la hora de manejar la batalla y la suerte que tengas con las cartas que te tocan. A veces, por muy bueno que seas, no tienes nada que hacer si las cartas de tu contrincante son mucho mejores que las tuyas, y esto pasa con cierta frecuencia. Con el análisis clúster podemos reducir notablemente el factor suerte de los jugadores y dejarlo todo en manos de la pericia. Veámoslo.

En Internet hay datos abiertos de casi todo y los Pokémon no son una excepción. En esta página se encuentra el listado de la última generación Pokémon junto con sus características. En concreto, utilizaremos estas cuatro:

HP: son los puntos de vida, que se van restando con los daños sufridos en la batalla.

son los puntos que se utilizan para hacer daño físico al oponente.

Defense: Son los puntos con los que se defiende de un ataque.

Speed: Es la puntuación que define quién empieza la batalla.

Con estas características podemos dividir a los 909 Pokémon en cuatro grupos bien diferenciados. Éste es el tamaño de cada grupo:

En la gráfica anterior habréis observado que hemos bautizado a los grupos como Flojos, Defensivos, Agresivos y Veloces. Para entender por qué, veamos las características medias de los individuos de cada grupo:

Los , por ejemplo, son los que mejor promedio de ataque y de puntos de vida tienen (son los que queremos tener mi hijo y yo cuando jugamos). Los defensivos son auténticas murallas. Es interesante ver cómo el grupo más numeroso son los , que no destacan por nada en particular. Los son un grupo interesante, porque dan a quien los tiene la posibilidad de comenzar la batalla, y eso es una ventaja importante.

Para poner cara a los grupos, veamos a un individuo representativo de cada uno

Eevee, como representante de los flojos:

Scrafty como representante de los defensivos:

Swampert, como representante de los agresivos:

Y Basculin, como representante de los veloces:

Podemos utilizar los grupos resultantes para minimizar el factor suerte en las partidas. Si repartimos ocho cartas, podemos hacerlo de dos maneras:

1. Tomándolas al azar de todo el taco, como hacemos nosotros cuando jugamos

2. Tomando dos cartas al azar de cada uno de los cuatro tacos

Esta segunda manera hace que las cartas sean más homogéneas entre los participantes. Una manera de verlo es simular repartos con ambos métodos y comparar la desviación típica de la suma de las características de los Pokémon repartidos. En concreto, si simulamos 5.000 repartos, estos son los resultados:

La desviación de todas las puntuaciones tomando dos cartas de cada grupo es significativamente inferior que la del primer método. Eso quiere decir que las cartas serán más comparables si usamos este método. Gráficamente se puede ver muy bien la diferencia. Por ejemplo, ésta es la distribución de la suma de los puntos de defensa de las ocho cartas repartidas según ambos métodos:

La distribución de los puntos generados por el método de k-means es más estrecha que la de los generados por el otro método. Es decir: tiene una varianza menor.

Para hacer todo el experimento (descarga y preparación de datos, ejecución del k-means y visualización de los resultados) he utilizado R. Si alguien quiere el código, sólo tiene que pedírmelo.

Imágenes: sidduz11, WikiDex

Gráficos: Antonio Sánchez Chinchón

# data[].attributes.attachment_link.title
El algoritmo de k-means: segmentación de clientes o partidas de Pokémon - Think Big Empresas

# data[].attributes.attachment_link.description
El algoritmo K.means ayuda a las empresas a conocer a sus clientes: ¿qué tipo de clientes tengo?, ¿cuáles son los que menos productos contratan?, ¿qué tiendas venden más (o menos) de lo que deberían?, ¿están bien ubicadas?, ¿cuáles son los clientes más sensibles al precio?

# data[].attributes.body
Comprobar la validez de los resultados obtenidos

# data[].attributes.headline
En la industria bancaria, se usan algoritmos de clustering para identificar clusters de clientes, por ejemplo, para encontrar clientes leales, frente a clientes que abandonan-

# data[].attributes.subject
En la industria bancaria, se usan algoritmos de clustering para identificar clusters de clientes, por ejemplo, para encontrar clientes leales, frente a clientes que abandonan-

# data[].attributes.attachment_link.readable_text
UNIR Revista

El clustering consiste en agrupar ítems en grupos con características similares y se utiliza para determinar patrones climáticos, agrupar artículos por temas o para segmentar clientes.

Dentro de las técnicas descriptivas de Machine Learning basadas en análisis estadístico -utilizado para el análisis de datos en entornos Big Data-, encontramos el clustering, cuyo objetivo es formar grupos cerrados y homogéneos a partir de un conjunto de elementos que tienen diferentes características o propiedades, pero que comparten ciertas similitudes.

El procesado de los datos provenientes del Big Data, o proceso de Data Science, consiste en varios subprocesos:

1. Adquirir los datos de las distintas fuentes: archivos, webs, BBDD, sensores, etc.

2. Prepararlos para ser analizados: explorarlos y tratarlos para que aporten información de valor (limpiarlos, integrarlos, etc.).

3. Analizarlos: seleccionar las técnicas adecuadas para obtener información de valor (regresión, clasificación, clustering, asociación...) y construir el modelo analítico.

4. Comunicación de los resultados o reporting: construir los informes y visualizaciones adecuadas para transmitir la información obtenida en el proceso de análisis.

5. Actuar en base a la información obtenida.

Para el desarrollo de un modelo de análisis de datos basado en clustering debemos tener algunos aspectos en consideración:

La calidad de los datos.

El número total de grupos a calcular.

Las diferencias entre cada grupo y el tamaño del cluster.

La jerarquía a la hora de definir esos grupos.

Aplicación del clustering

Algunos ejemplos de uso de las técnicas de clustering son:

Segmentación de clientes en grupos.

Determinar los distintos patrones climáticos de una región.

Agrupar artículos o noticias por temas.

Descubrir zonas con elevadas tasas de criminalidad.

Quizá el uso más extendido del clustering sea en tareas de segmentación de mercado, donde se trata de agrupar una base de datos de clientes en distintos segmentos o grupos. Cada uno de ellos está caracterizado por unas ciertas propiedades que ayudan a describir cómo son, cómo se comportan y cuáles son sus intereses, para poder ofrecerles productos y servicios personalizados y adecuados a sus gustos e intereses.

Cada persona o cliente debe pertenecer a un único grupo y estos deben estar compuestos por personas lo más parecidas posibles, pero ser lo más diferente posible del resto de grupos.

k-Means, uno de los principales algoritmos de clustering

Un algoritmo de clustering muy extendido y que permite entender la técnica de manera sencilla es el k-Means, el cual:

1. Determina las variables (características o propiedades) que se van a utilizar para agrupar los datos.

2. Selecciona k centroides (centros de los grupos, clusters o segmentos). La selección del número de centroides k se puede hacer mediante la observación de las muestras o métodos como el del codo (elbow). Este método consiste en la ejecución del algoritmo de clustering k-Means para un rango de valores de k y luego calcula la varianza en la distancia de los miembros del cluster a su centroide, el valor óptimo de k será aquel que satisfaga que un incremento en el número de centroides k no mejore sustancialmente la varianza.

3. Repite hasta que no haya cambios en los centroides.

Asignar cada muestra al centroide más cercano: se pueden utilizar distintas métricas para calcular la distancia a los centroides (euclídea, Manhattan, similitud de coseno...).

Calcular la media del cluster para determinar centroides más exactos.

Los clusters, grupos o segmentos resultantes calculados con este algoritmo dependen de la selección inicial de centroides, por lo que debemos ejecutar el algoritmo múltiples veces con una selección inicial aleatoria de centroides y elegir los mejores resultados obtenidos en toda la serie de iteraciones.

En resumen, el clustering es un conjunto de técnicas utilizado para analizar el Big Data y poder formar grupos, clusters o segmentos de datos, muy utilizado para propósitos de marketing y comerciales (segmentación de clientes).

Máster Universitario en Big Data & Visual Analytics

¿Sabes cómo se complementan Big Data y Machine Learning? En UNIR te contamos cómo el aprendizaje automático aprovecha la información de los macrodatos.

El big data está implicado en cada vez más sectores, pero ¿de qué forma se integran los macrodatos y el sector sanitario? En UNIR abordamos las claves de esta unión.

# data[].attributes.attachment_link.title
Clustering: qué es y cuál es su aplicación en Big Data | UNIR

# data[].attributes.attachment_link.description
UNIR Revista Dentro de las técnicas descriptivas de Machine Learning basadas en análisis estadístico -utilizado para el análisis de datos en entornos Big Data-, encontramos el clustering, cuyo objetivo es formar grupos cerrados y homogéneos a partir de un conjunto de elementos que tienen diferentes características o propiedades, pero que comparten ciertas similitudes.

# data[].attributes.attachment_link.readable_text
Last Updated on August 20, 2020

Clustering or cluster analysis is an unsupervised learning problem.

It is often used as a data analysis technique for discovering interesting patterns in data, such as groups of customers based on their behavior.

There are many clustering algorithms to choose from and no single best clustering algorithm for all cases. Instead, it is a good idea to explore a range of clustering algorithms and different configurations for each algorithm.

In this tutorial, you will discover how to fit and use top clustering algorithms in python.

After completing this tutorial, you will know:

Clustering is an unsupervised problem of finding natural groups in the feature space of input data.

There are many different clustering algorithms and no single best method for all datasets.

How to implement, fit, and use top clustering algorithms in Python with the scikit-learn machine learning library.

Kick-start your project with my new book Machine Learning Mastery With Python, including step-by-step tutorials and the Python source code files for all examples.

Let's get started.

Tutorial Overview

This tutorial is divided into three parts; they are:

1. Clustering

2. Clustering Algorithms

3. Examples of Clustering Algorithms

1. Library Installation

2. Clustering Dataset

3. Affinity Propagation

4. Agglomerative Clustering

5. BIRCH

6. DBSCAN

7. K-Means

8. Mini-Batch K-Means

9. Mean Shift

10. OPTICS

11. Spectral Clustering

12. Gaussian Mixture Model

Clustering

Cluster analysis, or clustering, is an unsupervised machine learning task.

It involves automatically discovering natural grouping in data. Unlike supervised learning (like predictive modeling), clustering algorithms only interpret the input data and find natural groups or clusters in feature space.

Clustering techniques apply when there is no class to be predicted but rather when the instances are to be divided into natural groups.

- Page 141, Data Mining: Practical Machine Learning Tools and Techniques, 2016.

A cluster is often an area of density in the feature space where examples from the domain (observations or rows of data) are closer to the cluster than other clusters. The cluster may have a center (the centroid) that is a sample or a point feature space and may have a boundary or extent.

These clusters presumably reflect some mechanism at work in the domain from which instances are drawn, a mechanism that causes some instances to bear a stronger resemblance to each other than they do to the remaining instances.

- Pages 141-142, Data Mining: Practical Machine Learning Tools and Techniques, 2016.

Clustering can be helpful as a data analysis activity in order to learn more about the problem domain, so-called pattern discovery or knowledge discovery.

For example:

The phylogenetic tree could be considered the result of a manual clustering analysis.

Separating normal data from outliers or anomalies may be considered a clustering problem.

Separating clusters based on their natural behavior is a clustering problem, referred to as market segmentation.

Clustering can also be useful as a type of feature engineering, where existing and new examples can be mapped and labeled as belonging to one of the identified clusters in the data.

Evaluation of identified clusters is subjective and may require a domain expert, although many clustering-specific quantitative measures do exist. Typically, clustering algorithms are compared academically on synthetic datasets with pre-defined clusters, which an algorithm is expected to discover.

Clustering is an unsupervised learning technique, so it is hard to evaluate the quality of the output of any given method.

- Page 534, Machine Learning: A Probabilistic Perspective, 2012.

Clustering Algorithms

There are many types of clustering algorithms.

Many algorithms use similarity or distance measures between examples in the feature space in an effort to discover dense regions of observations. As such, it is often good practice to scale data prior to using clustering algorithms.

Central to all of the goals of cluster analysis is the notion of the degree of similarity (or dissimilarity) between the individual objects being clustered. A clustering method attempts to group the objects based on the definition of similarity supplied to it.

- Page 502, The Elements of Statistical Learning: Data Mining, Inference, and Prediction, 2016.

Some clustering algorithms require you to specify or guess at the number of clusters to discover in the data, whereas others require the specification of some minimum distance between observations in which examples may be considered " close" or " connected."

As such, cluster analysis is an iterative process where subjective evaluation of the identified clusters is fed back into changes to algorithm configuration until a desired or appropriate result is achieved.

The scikit-learn library provides a suite of different clustering algorithms to choose from.

A list of 10 of the more popular algorithms is as follows:

Affinity Propagation

Agglomerative Clustering

BIRCH

DBSCAN

K-Means

Mini-Batch K-Means

Mean Shift

OPTICS

Spectral Clustering

Mixture of Gaussians

Each algorithm offers a different approach to the challenge of discovering natural groups in data.

There is no best clustering algorithm, and no easy way to find the best algorithm for your data without using controlled experiments.

In this tutorial, we will review how to use each of these 10 popular clustering algorithms from the scikit-learn library.

The examples will provide the basis for you to copy-paste the examples and test the methods on your own data.

We will not dive into the theory behind how the algorithms work or compare them directly. For a good starting point on this topic, see:

Let's dive in.

Examples of Clustering Algorithms

In this section, we will review how to use 10 popular clustering algorithms in scikit-learn.

This includes an example of fitting the model and an example of visualizing the result.

The examples are designed for you to copy-paste into your own project and apply the methods to your own data.

Library Installation

First, let's install the library.

Don't skip this step as you will need to ensure you have the latest version installed.

You can install the scikit-learn library using the pip Python installer, as follows:

For additional installation instructions specific to your platform, see:

Next, let's confirm that the library is installed and you are using a modern version.

Run the following script to print the library version number.

Running the example, you should see the following version number or higher.

Clustering Dataset

We will use the make_classification() function to create a test binary classification dataset.

The dataset will have 1,000 examples, with two input features and one cluster per class. The clusters are visually obvious in two dimensions so that we can plot the data with a scatter plot and color the points in the plot by the assigned cluster. This will help to see, at least on the test problem, how "well" the clusters were identified.

The clusters in this test problem are based on a multivariate Gaussian, and not all clustering algorithms will be effective at identifying these types of clusters. As such, the results in this tutorial should not be used as the basis for comparing the methods generally.

An example of creating and summarizing the synthetic clustering dataset is listed below.

Running the example creates the synthetic clustering dataset, then creates a scatter plot of the input data with points colored by class label (idealized clusters).

We can clearly see two distinct groups of data in two dimensions and the hope would be that an automatic clustering algorithm can detect these groupings.

Next, we can start looking at examples of clustering algorithms applied to this dataset.

I have made some minimal attempts to tune each method to the dataset.

Can you get a better result for one of the algorithms?
Let me know in the comments below.

Affinity Propagation

Affinity Propagation involves finding a set of exemplars that best summarize the data.

We devised a method called "affinity propagation," which takes as input measures of similarity between pairs of data points. Real-valued messages are exchanged between data points until a high-quality set of exemplars and corresponding clusters gradually emerges

- Clustering by Passing Messages Between Data Points, 2007.

The technique is described in the paper:

It is implemented via the AffinityPropagation class and the main configuration to tune is the " damping " set between 0.5 and 1, and perhaps "preference."

The complete example is listed below.

Running the example fits the model on the training dataset and predicts a cluster for each example in the dataset. A scatter plot is then created with points colored by their assigned cluster.

In this case, I could not achieve a good result.

Agglomerative Clustering

Agglomerative clustering involves merging examples until the desired number of clusters is achieved.

It is a part of a broader class of hierarchical clustering methods and you can learn more here:

It is implemented via the AgglomerativeClustering class and the main configuration to tune is the " n_clusters " set, an estimate of the number of clusters in the data, e.g. 2.

The complete example is listed below.

Running the example fits the model on the training dataset and predicts a cluster for each example in the dataset. A scatter plot is then created with points colored by their assigned cluster.

In this case, a reasonable grouping is found.

BIRCH

BIRCH Clustering (BIRCH is short for Balanced Iterative Reducing and Clustering using
Hierarchies) involves constructing a tree structure from which cluster centroids are extracted.

BIRCH incrementally and dynamically clusters incoming multi-dimensional metric data points to try to produce the best quality clustering with the available resources (i. e., available memory and time constraints).

- BIRCH: An efficient data clustering method for large databases, 1996.

The technique is described in the paper:

It is implemented via the Birch class and the main configuration to tune is the " threshold" and " n_clusters " hyperparameters, the latter of which provides an estimate of the number of clusters.

The complete example is listed below.

Running the example fits the model on the training dataset and predicts a cluster for each example in the dataset. A scatter plot is then created with points colored by their assigned cluster.

In this case, an excellent grouping is found.

DBSCAN

DBSCAN Clustering (where DBSCAN is short for Density-Based Spatial Clustering of Applications with Noise) involves finding high-density areas in the domain and expanding those areas of the feature space around them as clusters.

... we present the new clustering algorithm DBSCAN relying on a density-based notion of clusters which is designed to discover clusters of arbitrary shape. DBSCAN requires only one input parameter and supports the user in determining an appropriate value for it

- A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise, 1996.

The technique is described in the paper:

It is implemented via the DBSCAN class and the main configuration to tune is the " eps" and " min_samples " hyperparameters.

The complete example is listed below.

Running the example fits the model on the training dataset and predicts a cluster for each example in the dataset. A scatter plot is then created with points colored by their assigned cluster.

In this case, a reasonable grouping is found, although more tuning is required.

K-Means

K-Means Clustering may be the most widely known clustering algorithm and involves assigning examples to clusters in an effort to minimize the variance within each cluster.

The main purpose of this paper is to describe a process for partitioning an N-dimensional population into k sets on the basis of a sample. The process, which is called 'k-means,' appears to give partitions which are reasonably efficient in the sense of within-class variance.

- Some methods for classification and analysis of multivariate observations, 1967.

The technique is described here:

It is implemented via the KMeans class and the main configuration to tune is the " n_clusters " hyperparameter set to the estimated number of clusters in the data.

The complete example is listed below.

Running the example fits the model on the training dataset and predicts a cluster for each example in the dataset. A scatter plot is then created with points colored by their assigned cluster.

In this case, a reasonable grouping is found, although the unequal equal variance in each dimension makes the method less suited to this dataset.

Mini-Batch K-Means

Mini-Batch K-Means is a modified version of k-means that makes updates to the cluster centroids using mini-batches of samples rather than the entire dataset, which can make it faster for large datasets, and perhaps more robust to statistical noise.

... we propose the use of mini-batch optimization for k-means clustering. This reduces computation cost by orders of magnitude compared to the classic batch algorithm while yielding significantly better solutions than online stochastic gradient descent.

- Web-Scale K-Means Clustering, 2010.

The technique is described in the paper:

It is implemented via the MiniBatchKMeans class and the main configuration to tune is the " n_clusters " hyperparameter set to the estimated number of clusters in the data.

The complete example is listed below.

Running the example fits the model on the training dataset and predicts a cluster for each example in the dataset. A scatter plot is then created with points colored by their assigned cluster.

In this case, a result equivalent to the standard k-means algorithm is found.

Mean Shift

Mean shift clustering involves finding and adapting centroids based on the density of examples in the feature space.

We prove for discrete data the convergence of a recursive mean shift procedure to the nearest stationary point of the underlying density function and thus its utility in detecting the modes of the density.

- Mean Shift: A robust approach toward feature space analysis, 2002.

The technique is described in the paper:

It is implemented via the MeanShift class and the main configuration to tune is the " bandwidth " hyperparameter.

The complete example is listed below.

Running the example fits the model on the training dataset and predicts a cluster for each example in the dataset. A scatter plot is then created with points colored by their assigned cluster.

In this case, a reasonable set of clusters are found in the data.

OPTICS

OPTICS clustering (where OPTICS is short for Ordering Points To Identify the Clustering Structure) is a modified version of DBSCAN described above.

We introduce a new algorithm for the purpose of cluster analysis which does not produce a clustering of a data set explicitly; but instead creates an augmented ordering of the database representing its density-based clustering structure. This cluster-ordering contains information which is equivalent to the density-based clusterings corresponding to a broad range of parameter settings.

- OPTICS: ordering points to identify the clustering structure, 1999.

The technique is described in the paper:

It is implemented via the OPTICS class and the main configuration to tune is the " eps" and " min_samples " hyperparameters.

The complete example is listed below.

Running the example fits the model on the training dataset and predicts a cluster for each example in the dataset. A scatter plot is then created with points colored by their assigned cluster.

In this case, I could not achieve a reasonable result on this dataset.

Spectral Clustering

Spectral Clustering is a general class of clustering methods, drawn from linear algebra.

A promising alternative that has recently emerged in a number of fields is to use spectral methods for clustering. Here, one uses the top eigenvectors of a matrix derived from the distance between points.

- On Spectral Clustering: Analysis and an algorithm, 2002.

The technique is described in the paper:

It is implemented via the SpectralClustering class and the main Spectral Clustering is a general class of clustering methods, drawn from linear algebra. to tune is the " n_clusters " hyperparameter used to specify the estimated number of clusters in the data.

The complete example is listed below.

Running the example fits the model on the training dataset and predicts a cluster for each example in the dataset. A scatter plot is then created with points colored by their assigned cluster.

In this case, reasonable clusters were found.

Gaussian Mixture Model

A Gaussian mixture model summarizes a multivariate probability density function with a mixture of Gaussian probability distributions as its name suggests.

For more on the model, see:

It is implemented via the GaussianMixture class and the main configuration to tune is the " n_clusters " hyperparameter used to specify the estimated number of clusters in the data.

The complete example is listed below.

Running the example fits the model on the training dataset and predicts a cluster for each example in the dataset. A scatter plot is then created with points colored by their assigned cluster.

In this case, we can see that the clusters were identified perfectly. This is not surprising given that the dataset was generated as a mixture of Gaussians.

Further Reading

This section provides more resources on the topic if you are looking to go deeper.

Papers

Books

APIs

Articles

Summary

In this tutorial, you discovered how to fit and use top clustering algorithms in python.

Specifically, you learned:

Clustering is an unsupervised problem of finding natural groups in the feature space of input data.

There are many different clustering algorithms, and no single best method for all datasets.

How to implement, fit, and use top clustering algorithms in Python with the scikit-learn machine learning library.

Do you have any questions?
Ask your questions in the comments below and I will do my best to answer.

Skip the Academics. Just Results.

See What's Inside

# data[].attributes.attachment_link.title
10 Clustering Algorithms With Python - Machine Learning Mastery

# data[].attributes.attachment_link.description
Clustering or cluster analysis is an unsupervised learning problem. It is often used as a data analysis technique for discovering interesting patterns in data, such as groups of customers based on their behavior. There are many clustering algorithms to choose from and no single best clustering algorithm for all cases.

# data[].attributes.attachment_link.readable_text
Hoy voy a hablarte de una técnica avanzada.

Y cada vez más utilizada en el mundo de los datos.
Es la segmentación o clustering.
¡Si!

Es algo similar a agrupar una tomates en: madurados, algo maduros... y verdes según el color y la "dureza" que observamos.

Dicho de otro modo. Una técnica capaz de:

Agrupar potenciales clientes en características parecidas según sus visitas y comportamiento en una web.

Crear grupos de pacientes parecidos según las características de su análisis de sangre.

Grupos de personalidad parecida según las contestaciones de una encuesta

Entre otros ejemplos...

Déjame contarte lo de los tomates con un poco más de detalle jejeje 😉

La caja de tomates o qué significa clustering

Mi familia es familia de campesinos.

Recuerdo que cuándo iba con mi abuelo a ayudarle en su huerto y cogíamos tomates había de todo.

Unos más verdes, otros más maduros, otros ni verdes ni maduros etc...

Me decía mi abuelo: "voy a apartar unos cuántos de verdes que a tu abuela le encantan, y estará contenta"

¿Qué hacía?

Observaba los más verdes o casi verdes e inmediatamente después los tocaba.

Si el tomate era duro lo apartaba.

Si era un poco blando lo dejaba en la caja.

En el fondo mi abuelo estaba poniendo en marcha un algoritmo de clustering o segmentación.

¿Por qué?

Primero por que observaba los tomates a partir de dos características:

Estas eran las dos características de su segmentación de tomates.

Una vez su cerebro recogía "estos datos"... segmentaba.

Ponía cada tomate (observación) en el grupo de tomates verdes para mi abuela y el resto como tomates más maduros.

Fíjate que aquí estaba segmentando en dos grupos.
En dos clusters.
Y esto es precisamente lo que podemos hacer con los datos.

Primero obtenemos características que podamos medir y cuantificar (color y textura en el caso de los tomates)

Y después agrupamos las observaciones en clusters o grupos con estas características similares.

La jugada es sencilla.

En el ejemplo de los tomates es sencillo pensar qué grupos vamos a obtener.

Pero en un problema más complejo (es decir, con más características a tener en cuenta) la cosa se complica.

Y las técnicas de clustering juegan un gran papel.

Antes de ponerte un ejemplo, comentarte que la técnicas de clustering es una técnica no supervisada.

Ya que a priori, no sabemos qué grupos existen en nuestros datos.

Un ejemplo de aplicación de segmentación de datos o clustering

Después de la magnífica segmentación de tomates de mi abuelo J

Vamos a por otro ejemplo, ahora sí, con datos:

Imagínate que eres profesional del sector vinícola.

Y dispones de una base de datos de diferentes vinos dónde has podido medir varias características:

Fíjate que son características de la composición del vino.

Con estas características podemos crear grupos de vinos de composición similar.

Es decir, grupos estadísticamente similares.
Esto es segmentación.
Y me preguntarás:

¿ Cómo se puede calcular esta segmentación?

Y la otra pregunta.

¿Cuántos grupos (clusters) existen y son estadísticamente relevantes? O dicho de otra forma, ¿ cuál es el número óptimo de clusters?

Vamos a contestar estas preguntas con un ejemplo.

Empezamos el algoritmo observando las variables con un matrixplot:

Y un diagrama de correlación:

En esta imagen vamos a ver qué características de la composición química están más relacionadas (positivamente en azul y negativamente en rojo)

El siguiente paso es estandarizar los datos para que no haya problemas de unidades.

Es decir, cada variable tiene su unidad (peso, densidad, euros etc...)

Aquí se trata de quitar la media de las variables y dividir por la desviación estándar para crear variables de media 0 y dispersión 1.
Mira más sobre estandarización aquí.
De esta forma no tenemos el problema del conflicto de unidades y el clustering será más efectivo.

El siguiente paso es encontrar el número óptimo de clusters.

Es decir el número de grupos que existen estadísticamente diferentes según los datos que tenemos.

En este caso encontramos 3:

En el gráfico puedes observar que se ha marcado el número óptimo de clusters que es 3.

Vamos a seguir.

El siguiente punto es aplicar un algoritmo de clustering.

En este caso vamos a utilizar el algoritmo de k-means o k medias.

Te explico más en este vídeo:

Aplicando el algoritmo de cluster k-means que acabas de descubrir este es el resultado.

Los dos ejes que ves son los ejes de las dos primeras componentes principales.

Algún día te hablaré de ello 😉

Fíjate aquí que se puedes distinguir tres grupos bastante diferenciados.

El siguiente paso es calcular las medias para cada variable de composición química.

Vamos a verlo:

De estos tres clusters podríamos analizar si hay diferencias significativas entre clusters y encontrar aquellas que definen mejor el grupo de vinos según la composición.

Esta última parte interpretativa nos dará conclusiones interesantes de tus datos.

Podrías con la ayuda de los intervalos de confianza de la media y la descriptiva con boxplots comparar grupos.

Esto es clustering o segmentación y es una herramienta muy interesante para aplicarla siempre que quieres crear segmentos de datos.

Los principales algoritmos de clustering

Ahora te voy a listar los algoritmos más utilizados para la segmentación de datos.

Te he explicado el algoritmo de k-means con el vídeo.

Pero existen otros bastante comunes y útiles.

Para no alargar el artículo te he vinculado los tres algoritmos más utilizados con contenidos de Wikipedia para que puedas entender cómo trabajan estos algoritmos.

Pero antes voy a tratar de darte una pincelada de cada uno:

1. Hierarchical clustering: utiliza las distancias entre observaciones para construir un árbol de distancias y a partir de eso cortar en clusters.

2. K-means: también utiliza las distancias entre puntos. Y agrupo los clusters según lo cerca que están de los centros de gravedad de los clusters. A priori, tienes que saber cuántos clusters vas a crear para que el algoritmos sepa dónde colocar cada punto.

3. Gaussian mixture models: utiliza modelos gaussianos o modelos de distribuciones normales de diferentes formas para que puedas crear grupos en forma de elipses. Para cada punto se le calcula la probabilidad de pertenencia a cada modelo gaussiano.

Hay otros algoritmos, pero en la práctica k-means y Gaussian Mixture models funcionan muy bien.

Te invito a que le eches un vistazo cómo trabajan en Wikipedia.

Los pasos del clustering

Estos son los pasos que puedes seguir cuándo vayas a aplicar segmentación de datos:

PASO 1 - Estandarización

Para calcular buenos clusters es necesario estandarizar los datos.

Es decir, hacer que tus variables cuantitativas tengan media 0 y desviación estándar 1.

Para evitar problemas de unidades.

PASO2 - Dibujar el matrixplot y la correlación entre características

Es importante hacerte una idea de las variables que están más relacionadas entre sí para saber qué variables pueden dominar los clusters.

En el fondo, describir tus variables cuantitativas.

PASO 3 - Calcular el número óptimo de clusters

k-means y Gaussian mixture models nos ofrecen estrategias para calcular el número óptimo de clusters.

Y es fundamental para realizar una buena segmentación.

PASO 4 - Calcular los clusters con diferentes técnicas

Calcula los clusters con diferentes técnicas (k-means, GMM o hierarchical).

Dibuja los clusters que has calculado y mira cuál de las técnicas produce clusters con más sentido real para ti.

Que sean grupos interpretables. Que tengan sentido.

Decide la técnica que mejor se adapte a tu caso

PASO 5 - Compara los clusters que has calculado

El último paso es comparar las características de los grupos que has creado con la técnica seleccionada en el paso 5.

Y ver si encuentras diferencias significativas entre grupos según las características y en qué variables se ven esas diferencias.

Se trata de aportar una interpretación real a los clusters que has encontrado.

Esto te ayudará a interpretar los clusters que has calculado.

...

Y hasta aquí el artículo sobre segmentación.

Creo que es un buen comienzo este artículo en el mundo de la segmentación y te puede ayudar a seguir creciendo en la ciencia de los datos.

¿Te ha sido útil el artículo? Te espero en los comentarios.

# data[].attributes.attachment_link.title
Qué es y para qué sirve el clustering - ejemplo práctico

# data[].attributes.attachment_link.description
Hoy voy a hablarte de una técnica avanzada. Y cada vez más utilizada en el mundo de los datos. Es la segmentación o clustering. ¡Si! Es algo similar a agrupar una tomates en: madurados, algo maduros... y verdes según el color y la "dureza" que observamos. Dicho de otro modo.

# data[].attributes.body
Es una técnica muy usada en el ámbito de la analítica de negocio que permite encontrar grupos similares dentro de un conjunto de datos.

Aplicacion en la industria:
-> Por ejemplo, permite segmentar nuestros clientes en base de sus atributos.  Y esta segmentación nos va permitir diseñar una experiencia de cliente más personalizada.