Tweet Share Share

última actualización: 20 de agosto de 2020

el Clustering o el análisis de clústeres es un problema de aprendizaje no supervisado.

a menudo se utiliza como una técnica de análisis de datos para descubrir patrones interesantes en los datos, como grupos de clientes en función de su comportamiento.

hay muchos algoritmos de clustering para elegir y ningún algoritmo de clustering mejor para todos los casos. En su lugar, es una buena idea explorar una gama de Algoritmos de agrupamiento y diferentes configuraciones para cada algoritmo.,

en este tutorial, descubrirá cómo ajustar y usar los mejores algoritmos de clustering en python.

Después de completar este tutorial, sabrá:

  • Clustering es un problema no supervisado de encontrar grupos naturales en el espacio de entidades de los datos de entrada.
  • hay muchos algoritmos de agrupación en clústeres diferentes y ningún Mejor método para todos los conjuntos de datos.
  • Cómo implementar, ajustar y usar los mejores algoritmos de clustering en Python con la biblioteca de aprendizaje automático scikit-learn.,

inicie su proyecto con my new book Machine Learning Mastery con Python, incluidos tutoriales paso a paso y los archivos de código fuente de Python para todos los ejemplos.

comencemos.

Algoritmos de Clustering con Python
foto de Lars Plougmann, algunos derechos reservados.,/div>

resumen del Tutorial

este tutorial se divide en tres partes; son:

  1. Clustering
  2. Algoritmos de Clustering
  3. Ejemplos de Algoritmos de Clustering
    1. instalación de la Biblioteca
    2. Conjunto de datos de Clustering
    3. propagación de afinidad
    4. Clustering Aglomerativo
    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

el análisis de clústeres, o clustering, es una tarea de aprendizaje automático no supervisada.,

implica descubrir automáticamente la agrupación natural en los datos. A diferencia del aprendizaje supervisado (como el modelado predictivo), los Algoritmos de clústeres solo interpretan los datos de entrada y encuentran grupos o clústeres naturales en el espacio de entidades.

las técnicas de Clustering se aplican cuando no hay clase que predecir, sino cuando las instancias se dividen en grupos naturales.

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

un clúster es a menudo un área de densidad en el espacio de entidades donde los ejemplos del dominio (observaciones o filas de datos) están más cerca del clúster que otros clústeres. El clúster puede tener un centro (el centroide) que es una muestra o un espacio de entidad puntual y puede tener un límite o extensión.

estos clústeres probablemente reflejan algún mecanismo en funcionamiento en el dominio del que se extraen las instancias, un mecanismo que hace que algunas instancias tengan un parecido más fuerte entre sí que con las instancias restantes.,

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

La agrupación en clústeres puede ser útil como actividad de análisis de datos para obtener más información sobre el dominio del problema, el llamado descubrimiento de patrones o descubrimiento de conocimiento.

por ejemplo:

  • El árbol filogenético podría considerarse el resultado de un análisis manual de clustering.
  • separar datos normales de valores atípicos o anomalías puede considerarse un problema de agrupación.,
  • separar clústeres en función de su comportamiento natural es un problema de clústeres, conocido como segmentación de mercado.

La agrupación en clústeres también puede ser útil como un tipo de ingeniería de características, donde los ejemplos existentes y nuevos se pueden asignar y etiquetar como pertenecientes a uno de los clústeres identificados en los datos.

la evaluación de los grupos identificados es subjetiva y puede requerir un experto en el dominio, aunque existen muchas medidas cuantitativas específicas de los grupos., Por lo general, los Algoritmos de agrupación en clústeres se comparan académicamente en conjuntos de datos sintéticos con clústeres predefinidos, que se espera que descubra un algoritmo.

La agrupación en clústeres es una técnica de aprendizaje no supervisada, por lo que es difícil evaluar la calidad de la salida de cualquier método dado.

– Page 534, Machine Learning: a Probabilistic Perspective, 2012.

Algoritmos de Clustering

Hay muchos tipos de algoritmos de clustering.,

muchos algoritmos utilizan medidas de similitud o distancia entre ejemplos en el espacio de la entidad en un esfuerzo por descubrir regiones densas de observaciones. Como tal, a menudo es una buena práctica escalar los datos antes de usar algoritmos de agrupación en clústeres.

Central para todos los objetivos del análisis de clústeres es la noción del grado de similitud (o disimilitud) entre los objetos individuales que se agrupan. Un método de clustering intenta agrupar los objetos basándose en la definición de similitud que se le proporciona.,

– Page 502, the Elements of Statistical Learning: Data Mining, Inference, and Prediction, 2016.

algunos algoritmos de clústeres requieren que especifique o adivine el número de clústeres a descubrir en los datos, mientras que otros requieren la especificación de una distancia mínima entre observaciones en las que los ejemplos pueden considerarse «cercanos» o «conectados».,»

como tal, el análisis de clústeres es un proceso iterativo donde la evaluación subjetiva de los clústeres identificados se retroalimenta en los cambios en la configuración del algoritmo hasta que se logra un resultado deseado o apropiado.

la biblioteca scikit-learn proporciona un conjunto de diferentes algoritmos de clustering para elegir.,

una lista de 10 de los algoritmos más populares es la siguiente:

  • propagación de afinidad
  • agrupamiento Aglomerativo
  • BIRCH
  • DBSCAN
  • k-Means
  • Mini-Batch K-Means
  • Mean Shift
  • óptica
  • agrupamiento espectral
  • mezcla de gaussianas

cada algoritmo ofrece un enfoque diferente al Desafío de descubrir grupos naturales en los datos.

no hay un mejor algoritmo de agrupación, y no hay una manera fácil de encontrar el mejor algoritmo para sus datos sin usar experimentos controlados.,

en este tutorial, revisaremos cómo usar cada uno de estos 10 algoritmos de clustering populares de la biblioteca scikit-learn.

los ejemplos le proporcionarán la base para copiar y pegar los ejemplos y probar los métodos en sus propios datos.

no nos sumergiremos en la teoría detrás de cómo funcionan los algoritmos ni los compararemos directamente. Para un buen punto de partida sobre este tema, consulte:

  • Clustering, scikit-learn API.

Vamos a bucear.,

ejemplos de Algoritmos de Clustering

en esta sección, revisaremos cómo usar 10 algoritmos de clustering populares en scikit-learn.

esto incluye un ejemplo de ajuste del modelo y un ejemplo de visualización del resultado.

los ejemplos están diseñados para que copie y pegue en su propio proyecto y aplique los métodos a sus propios datos.

instalación de la Biblioteca

primero, instalemos la biblioteca.

no omita este paso, ya que deberá asegurarse de tener instalada la última versión.,>

1
sudo pip install scikit-learn

For additional installation instructions specific to your platform, see:

  • Installing scikit-learn

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

ejecute el siguiente script para imprimir el número de versión de la biblioteca.,

1
2
3

# comprobar scikit-learn versión
importar sklearn
print(sklearn.,__versión__)

Ejecutar el ejemplo, debería ver el siguiente número de versión o superior.

1
0.22.,1

conjunto de datos de Clustering

usaremos la función make_classification() para crear un conjunto de datos de clasificación binaria de prueba.

el conjunto de datos tendrá 1.000 ejemplos, con dos entidades de entrada y un clúster por Clase. Los clústeres son visualmente obvios en dos dimensiones para que podamos trazar los datos con un gráfico de dispersión y colorear los puntos en el gráfico por el clúster asignado. Esto ayudará a ver, al menos en el problema de la prueba, qué tan» bien » se identificaron los grupos.,

los clústeres en este problema de prueba se basan en un gaussiano multivariado, y no todos los Algoritmos de clústeres serán efectivos para identificar estos tipos de clústeres. Como tal, los resultados de este tutorial no deben usarse como base para comparar los métodos en general.

a continuación se muestra un ejemplo de creación y resumen del conjunto de datos de clustering sintético.

al ejecutar el ejemplo se crea el conjunto de datos de clústeres sintéticos y, a continuación, se crea un gráfico de dispersión de los datos de entrada con puntos coloreados por etiqueta de clase (clústeres idealizados).,

podemos ver claramente dos grupos distintos de datos en dos dimensiones y la esperanza sería que un algoritmo de agrupación automática pueda detectar estas agrupaciones.

gráfico de dispersión de conjunto de datos de clústeres sintéticos con puntos coloreados por clústeres conocidos

a continuación, podemos comenzar a buscar ejemplos de Algoritmos de clústeres aplicados a este conjunto de datos.

he realizado algunos intentos mínimos para ajustar cada método al conjunto de datos.

¿Puede obtener un mejor resultado para uno de los algoritmos?házmelo saber en los comentarios a continuación.,

propagación de afinidad

la propagación de afinidad implica encontrar un conjunto de ejemplares que resuman mejor los datos.

ideamos un método llamado «propagación de afinidad», que toma como entrada medidas de similitud entre pares de puntos de datos. Los mensajes de valor Real se intercambian entre puntos de datos hasta que un conjunto de ejemplares de alta calidad y los clústeres correspondientes emergen gradualmente

— Clustering by Passing Messages Between Data Points, 2007.,

la técnica se describe en el artículo:

  • Clustering by Passing Messages Between Data Points, 2007.

se implementa a través de la clase AffinityPropagation y la configuración principal a sintonizar es la «amortiguación» establecida entre 0.5 y 1, y quizás «preferencia».»

el ejemplo completo se muestra a continuación.

la ejecución del ejemplo se ajusta al modelo del conjunto de datos de entrenamiento y predice un clúster para cada ejemplo del conjunto de datos. Luego se crea un gráfico de dispersión con puntos coloreados por su clúster asignado.

En este caso, no pude lograr un buen resultado.,

gráfico de dispersión del conjunto de datos con clústeres identificados mediante propagación de afinidad

Aglomerative Clustering

Aglomerative clustering implica la fusión de ejemplos hasta alcanzar el número deseado de clústeres.

es parte de una clase más amplia de métodos de agrupación jerárquica y puede obtener más información aquí:

  • agrupación jerárquica, Wikipedia.,

se implementa a través de la clase AgglomerativeClustering y la configuración principal a afinar es el conjunto «n_clusters», una estimación del número de clústeres en los datos, por ejemplo, 2.

el ejemplo completo se muestra a continuación.

la ejecución del ejemplo se ajusta al modelo del conjunto de datos de entrenamiento y predice un clúster para cada ejemplo del conjunto de datos. Luego se crea un gráfico de dispersión con puntos coloreados por su clúster asignado.

en este caso, se encuentra una agrupación razonable.,

diagrama de dispersión del conjunto de datos con Clusters identificados mediante Clustering Aglomerativo

BIRCH

BIRCH Clustering (BIRCH es la abreviatura de reducción iterativa equilibrada y Clustering utilizando jerarquías
) implica la construcción de una estructura de árbol de la que se extraen los centros de clusters.

BIRCH agrupa de forma incremental y dinámica puntos de datos métricos multidimensionales entrantes para tratar de producir la mejor calidad de agrupación con los recursos disponibles (es decir .,, memoria disponible y limitaciones de tiempo).

– BIRCH: an efficient data clustering method for large databases, 1996.

la técnica se describe en el artículo:

  • BIRCH: an efficient data clustering method for large databases, 1996.

se implementa a través de la clase Birch y la configuración principal a afinar es los hiperparámetros «threshold» y «n_clusters», el último de los cuales proporciona una estimación del número de clústeres.

el ejemplo completo se muestra a continuación.,

la ejecución del ejemplo se ajusta al modelo del conjunto de datos de entrenamiento y predice un clúster para cada ejemplo del conjunto de datos. Luego se crea un gráfico de dispersión con puntos coloreados por su clúster asignado.

en este caso, se encuentra una excelente agrupación.,

gráfico de dispersión del conjunto de datos con clústeres identificados mediante clústeres de abedul

DBSCAN

DBSCAN Clustering (donde DBSCAN es la abreviatura de clústeres espaciales basados en densidad de aplicaciones con ruido) implica encontrar Áreas de alta densidad en el dominio y expandir esas áreas de la caracterice el espacio alrededor de ellos como clusters.

present presentamos el nuevo algoritmo de clustering DBSCAN basado en una noción de clústeres basada en la densidad que está diseñada para descubrir clústeres de forma arbitraria., DBSCAN requiere solo un parámetro de entrada y ayuda al usuario a determinar un valor apropiado para él

— un algoritmo basado en densidad para descubrir clústeres en grandes bases de Datos Espaciales con ruido, 1996.

la técnica se describe en el artículo:

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

se implementa a través de la clase DBSCAN y la configuración principal a afinar es los hiperparámetros» eps «y» min_samples».

el ejemplo completo se muestra a continuación.,

la ejecución del ejemplo se ajusta al modelo del conjunto de datos de entrenamiento y predice un clúster para cada ejemplo del conjunto de datos. Luego se crea un gráfico de dispersión con puntos coloreados por su clúster asignado.

en este caso, se encuentra un agrupamiento razonable, aunque se requiere más afinación.,

gráfico de dispersión del conjunto de datos con clústeres identificados mediante la agrupación en clústeres DBSCAN

K-Means

k-Means Clustering puede ser el algoritmo de agrupación en clústeres más conocido e implica asignar ejemplos a clústeres en un esfuerzo por minimizar la varianza dentro de cada clúster.

El propósito principal de este documento es describir un proceso para particionar una población n-dimensional en conjuntos k sobre la base de una muestra., El proceso, que se llama ‘K-means’, parece dar particiones que son razonablemente eficientes en el sentido de varianza dentro de la clase.

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

la técnica se describe aquí:

  • k-significa clustering, Wikipedia.

se implementa a través de la clase KMeans y la configuración principal a sintonizar es el hiperparámetro «n_clusters» establecido en el número estimado de clústeres en los datos.

el ejemplo completo se muestra a continuación.,

la ejecución del ejemplo se ajusta al modelo del conjunto de datos de entrenamiento y predice un clúster para cada ejemplo del conjunto de datos. Luego se crea un gráfico de dispersión con puntos coloreados por su clúster asignado.

en este caso, se encuentra una agrupación razonable, aunque la varianza igual desigual en cada dimensión hace que el método sea menos adecuado para este conjunto de datos.,

gráfico de dispersión del conjunto de datos con clústeres identificados mediante clústeres k-Means

Mini-Batch K-Means

Mini-Batch K-Means es una versión modificada de k-means que realiza actualizaciones a los centros de clústeres utilizando mini-lotes de muestras en lugar de conjunto de datos, que puede hacerlo más rápido para grandes conjuntos de datos, y quizás más robusto para el ruido estadístico.

propose proponemos el uso de la optimización mini-batch para la agrupación en clústeres de k-means., Esto reduce el costo de cálculo por órdenes de magnitud en comparación con el algoritmo de lote clásico, mientras que produce soluciones significativamente mejores que el descenso de gradiente estocástico en línea.

— web-Scale K-Means Clustering, 2010.

la técnica se describe en el artículo:

  • Web-Scale K-Means Clustering, 2010.

se implementa a través de la clase MiniBatchKMeans y la configuración principal a sintonizar es el hiperparámetro «n_clusters» establecido al número estimado de clústeres en los datos.

el ejemplo completo se muestra a continuación.,

la ejecución del ejemplo se ajusta al modelo del conjunto de datos de entrenamiento y predice un clúster para cada ejemplo del conjunto de datos. Luego se crea un gráfico de dispersión con puntos coloreados por su clúster asignado.

en este caso, se encuentra un resultado equivalente al algoritmo estándar K-means.

gráfico de dispersión del conjunto de datos con clústeres identificados mediante el agrupamiento de K-Means mini-Batch

Mean Shift

el agrupamiento de desplazamiento medio implica encontrar y adaptar centroides en función de la densidad de ejemplos en el espacio de entidades.,

probamos para datos discretos la convergencia de un procedimiento de desplazamiento medio recursivo al punto estacionario más cercano de la función de densidad subyacente y por lo tanto su utilidad en la detección de los modos de la densidad.

— Mean Shift: a robust approach toward feature space analysis, 2002.

la técnica se describe en el artículo:

  • Mean Shift: a robust approach toward feature space analysis, 2002.

se implementa a través de la clase MeanShift y la configuración principal a sintonizar es el hiperparámetro «ancho de banda».,

el ejemplo completo se muestra a continuación.

la ejecución del ejemplo se ajusta al modelo del conjunto de datos de entrenamiento y predice un clúster para cada ejemplo del conjunto de datos. Luego se crea un gráfico de dispersión con puntos coloreados por su clúster asignado.

en este caso, se encuentra un conjunto razonable de clústeres en los datos.,

El Gráfico de dispersión del conjunto de datos con clústeres identificados mediante clústeres de desplazamiento medio

óptica

óptica clústeres (donde óptica es la abreviatura de puntos de orden para identificar la estructura de clústeres) es una versión modificada de DBSCAN descrita anteriormente.

presentamos un nuevo algoritmo para el análisis de clústeres que no produce una agrupación de un conjunto de datos explícitamente; sino que crea un orden aumentado de la base de datos que representa su estructura de agrupación basada en densidad., Este ordenamiento de clústeres contiene información equivalente a los clústeres basados en densidad correspondientes a una amplia gama de parámetros.

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

la técnica se describe en el artículo:

  • óptica: Ordenar puntos para identificar la estructura de clustering, 1999.

se implementa a través de la clase OPTICS y la configuración principal a afinar es los hiperparámetros» eps «y» min_samples».

el ejemplo completo se muestra a continuación.,

la ejecución del ejemplo se ajusta al modelo del conjunto de datos de entrenamiento y predice un clúster para cada ejemplo del conjunto de datos. Luego se crea un gráfico de dispersión con puntos coloreados por su clúster asignado.

En este caso, no pude lograr un resultado razonable en este conjunto de datos.

diagrama de dispersión del conjunto de datos con clústeres identificados mediante clústeres ópticos

clústeres espectrales

El clústeres espectrales es una clase general de métodos de clústeres, extraídos del álgebra lineal.,

una alternativa prometedora que ha surgido recientemente en varios campos es utilizar métodos espectrales para la agrupación en clústeres. Aquí, se utilizan los vectores propios superiores de una matriz derivada de la distancia entre puntos.

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

la técnica se describe en el artículo:

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

se implementa a través de la clase SpectralClustering y la agrupación espectral principal es una clase general de métodos de agrupación, extraída del álgebra lineal. para afinar es el hiperparámetro «n_clusters» utilizado para especificar el número estimado de clústeres en los datos.

el ejemplo completo se muestra a continuación.

la ejecución del ejemplo se ajusta al modelo del conjunto de datos de entrenamiento y predice un clúster para cada ejemplo del conjunto de datos. Luego se crea un gráfico de dispersión con puntos coloreados por su clúster asignado.

en este caso, se encontraron clusters razonables.,

gráfico de dispersión del conjunto de datos con clústeres identificados utilizando Spectra Clustering Clustering

modelo de mezcla Gaussiana

un modelo de mezcla Gaussiana resume una función de densidad de probabilidad multivariante con una mezcla de distribuciones de probabilidad gaussianas como su nombre indica.

para obtener más información sobre el modelo, consulte:

  • Mixture model, Wikipedia.,

se implementa a través de la clase GaussianMixture y la configuración principal a sintonizar es el hiperparámetro «n_clusters» utilizado para especificar el número estimado de clústeres en los datos.

el ejemplo completo se muestra a continuación.

la ejecución del ejemplo se ajusta al modelo del conjunto de datos de entrenamiento y predice un clúster para cada ejemplo del conjunto de datos. Luego se crea un gráfico de dispersión con puntos coloreados por su clúster asignado.

en este caso, podemos ver que los clusters fueron identificados perfectamente., Esto no es sorprendente dado que el conjunto de datos se generó como una mezcla de gaussianas.

gráfico de dispersión del conjunto de datos con clústeres identificados mediante clústeres de mezcla Gaussiana

lectura adicional

esta sección proporciona más recursos sobre el tema si desea profundizar.

Papers

  • Clustering by Passing Messages Between Data Points, 2007.
  • BIRCH: an efficient data clustering method for large databases, 1996.,
  • Un algoritmo basado en densidad para descubrir clústeres en grandes bases de Datos Espaciales con ruido, 1996.
  • Algunos métodos de clasificación y análisis de observaciones multivariadas, 1967.
  • Web-Scale K-Means Clustering, 2010.
  • Mean Shift: a robust approach toward feature space analysis, 2002.
  • On Spectral Clustering: Analysis and an algorithm, 2002.

Books

  • Data Mining: Practical Machine Learning Tools and Techniques, 2016.
  • Los elementos del aprendizaje estadístico: minería de datos, inferencia y Predicción, 2016.,
  • Machine Learning: a Probabilistic Perspective, 2012.

API

  • Clustering, scikit-learn API.
  • sklearn.DataSet.API make_classification.
  • sklearn.cluster API.

artículos

  • Análisis de clústeres, Wikipedia.
  • agrupación jerárquica, Wikipedia.
  • k-significa clustering, Wikipedia.
  • Modelo de mezcla, Wikipedia.

resumen

en este tutorial, descubriste cómo ajustar y usar los mejores algoritmos de clustering en python.,

Específicamente, aprendió:

  • La agrupación en clústeres es un problema no supervisado de encontrar grupos naturales en el espacio de entidades de los datos de entrada.
  • hay muchos algoritmos de agrupación en clústeres diferentes, y no hay un solo mejor método para todos los conjuntos de datos.
  • Cómo implementar, ajustar y usar los mejores algoritmos de clustering en Python con la biblioteca de aprendizaje automático scikit-learn.

¿tiene alguna pregunta?Haga sus preguntas en los comentarios a continuación y haré mi mejor esfuerzo para responder.

Descubre Rápido Aprendizaje de Máquina en Python!,

desarrolle sus propios modelos en minutos

…con solo unas pocas líneas de scikit-learn code

aprende cómo en mi nuevo Ebook:
Machine Learning Mastery With Python

cubre tutoriales de autoaprendizaje y proyectos de extremo a extremo como:
carga de datos, visualización, modelado, ajuste y mucho más…

finalmente lleve el aprendizaje automático a sus propios proyectos

omita los aspectos académicos. Sólo Resultados.

Ver Lo que está Dentro de

Tweet Compartir Compartir

Articles

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *