Tweet Share

ast Updated on August 20, 2020

Clustering or cluster analysis is an unsupervised learning problem.

é muitas vezes usado como uma técnica de análise de dados para descobrir padrões interessantes em dados, tais como grupos de clientes com base em seu comportamento.

Existem muitos algoritmos de agrupamento para escolher e nenhum melhor algoritmo de agrupamento para todos os casos. Em vez disso, é uma boa ideia explorar uma gama de algoritmos de agrupamento e configurações diferentes para cada algoritmo.,

neste tutorial, você vai descobrir como se encaixar e usar algoritmos de clusterização de topo em python.

Após completar este tutorial, você saberá:

  • Clustering é um problema não supervisionado de encontrar grupos naturais no espaço de recursos de dados de entrada.
  • Existem muitos algoritmos de clustering diferentes e nenhum método único melhor para todos os conjuntos de dados.
  • Como implementar, encaixar e usar algoritmos de clustering de topo em Python com a biblioteca de aprendizagem de máquinas scikit-learn.,

kick-start o seu projecto com o meu novo domínio de aprendizagem da máquina de livros em Python, incluindo tutoriais passo-a-passo e os ficheiros de código-fonte em Python para todos os exemplos.vamos começar.

Clustering Algorithms With Python
Photo by Lars Plougmann, some rights reserved.,/div>

Tutorial Visão geral

Este tutorial está dividido em três partes; são eles:

  1. Cluster
  2. Algoritmos de agrupamento
  3. Exemplos de Algoritmos de agrupamento
    1. Instalação da Biblioteca
    2. Cluster de conjunto de dados
    3. a Afinidade de Propagação
    4. Agglomerative de Cluster
    5. BÉTULA
    6. DBSCAN
    7. K-means
    8. Mini-Lote K-means
    9. Mean Shift
    10. ÓPTICA
    11. Espectral de Cluster
    12. Gaussian Mixture Model

Cluster

a análise de Cluster ou de cluster, é uma máquina sem supervisão tarefa de aprendizagem.,envolve a descoberta automática do Agrupamento natural em dados. Diferentemente da aprendizagem supervisionada( como modelagem preditiva), algoritmos de agrupamento apenas interpretam os dados de entrada e encontram grupos naturais ou aglomerados no espaço de recursos.

técnicas de agrupamento se aplica quando não há nenhuma classe para ser previsto, mas sim, quando as instâncias são para ser dividida em natural grupos.

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

um aglomerado é muitas vezes uma área de densidade no espaço de recursos onde exemplos do domínio (observações ou linhas de dados) estão mais perto do aglomerado do que outros aglomerados. O aglomerado pode ter um centro (o centroide) que é uma amostra ou um espaço de recursos ponto e pode ter um limite ou extensão.

estes clusters presumivelmente refletem algum mecanismo no trabalho no domínio a partir do qual instâncias são desenhadas, um mecanismo que faz com que algumas instâncias tenham uma semelhança mais forte entre si do que fazem com as instâncias restantes.,

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

Clustering pode ser útil como uma atividade de análise de dados, a fim de aprender mais sobre o domínio problema, a chamada descoberta de padrões ou descoberta de conhecimento.

Por exemplo:

  • A árvore filogenética pode ser considerada o resultado de uma análise manual de agrupamento.separar os dados normais dos valores anómalos ou anomalias pode ser considerado um problema de agrupamento.,clusters de separação baseados em seu comportamento natural é um problema de clustering, referido como segmentação de mercado.

Clustering também pode ser útil como um tipo de engenharia de recursos, onde exemplos existentes e novos podem ser mapeados e rotulados como pertencentes a um dos clusters identificados nos dados.a avaliação de clusters identificados é subjetiva e pode exigir um especialista de domínio, embora existam muitas medidas quantitativas específicas de agrupamento., Tipicamente, algoritmos de agrupamento são comparados academicamente em conjuntos de dados sintéticos com clusters pré-definidos, que um algoritmo é esperado para descobrir.

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.

Algoritmos de agrupamento

Existem muitos tipos de algoritmos de agrupamento.,muitos algoritmos usam medidas de similaridade ou distância entre exemplos no espaço de recursos em um esforço para descobrir regiões densas de observações. Como tal, muitas vezes é boa prática escalar dados antes de usar algoritmos de clustering.

Central para todos os objetivos da análise de cluster é a noção do grau de semelhança (ou dessemelhança entre os objetos individuais, sendo agrupado. 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, inferência, and Prediction, 2016.

alguns algoritmos de clustering requerem que você especifique ou adivinhe o número de clusters para descobrir nos dados, enquanto outros requerem a especificação de alguma distância mínima entre observações em que exemplos podem ser considerados “próximos” ou “conectados”.,”

Como tal, a análise de aglomerado é um processo iterativo onde a avaliação subjetiva dos aglomerados identificados é alimentada de volta em mudanças na configuração do algoritmo até que um resultado desejado ou apropriado seja alcançado.

a biblioteca scikit-learn fornece um conjunto de diferentes algoritmos de clustering para escolher.,

Uma lista de 10 dos mais populares algoritmos é como segue:

  • a Afinidade de Propagação
  • Agglomerative de Cluster
  • BÉTULA
  • DBSCAN
  • K-means
  • Mini-Lote K-means
  • Mean Shift
  • ÓPTICA
  • Espectral de Cluster
  • Mistura de Gaussians

Cada algoritmo oferece uma abordagem diferente para o desafio de descobrir natural grupos de dados.

não existe o melhor algoritmo de agrupamento, e nenhuma maneira fácil de encontrar o melhor algoritmo para os seus dados sem usar experiências controladas.,

neste tutorial, vamos rever como usar cada um desses 10 algoritmos de clustering populares da biblioteca scikit-learn.

os exemplos irão fornecer a base para que você copie os exemplos e teste os métodos em seus próprios dados.

não vamos mergulhar na teoria por trás de como os algoritmos funcionam ou compará-los diretamente. Para um bom ponto de partida sobre este tópico, veja:

  • Clustering, scikit-learn API.vamos mergulhar.,

    exemplos de algoritmos de clusterização

    nesta secção, vamos rever como usar 10 algoritmos de clusterização populares em scikit-learn.

    isto inclui um exemplo de encaixar o modelo e um exemplo de visualizar o resultado.

    os exemplos são projetados para você copiar-colar em seu próprio projeto e aplicar os métodos para seus próprios dados.

    instalação da Biblioteca

    Primeiro, vamos instalar a biblioteca.

    não salte este passo, pois terá de garantir que tem a versão mais recente instalada.,>

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.,

execute o seguinte programa para imprimir o número da versão da biblioteca.,

1
2
3

# verificar scikit-aprender versão
importar sklearn
print(sklearn.,__version___)

executando o exemplo, deverá ver o número de versão seguinte ou superior.

1
0.22.,1

Clustering Dataset

usaremos a função make_classification() para criar um conjunto de dados de classificação binária de teste.

O conjunto de dados terá 1.000 exemplos, com duas características de entrada e um aglomerado por classe. Os aglomerados são visualmente óbvios em duas dimensões para que possamos plotar os dados com um gráfico de dispersão e colorir os pontos do plot pelo aglomerado atribuído. Isto ajudará a ver, pelo menos no problema do teste, como “bem” os aglomerados foram identificados.,

os clusters neste problema de teste são baseados em um Gaussiano multivariado, e nem todos os algoritmos de clustering serão eficazes na identificação desses tipos de clusters. Como tal, os resultados deste tutorial não devem ser usados como base para comparar os métodos em geral.

um exemplo de criação e síntese do conjunto de dados de clustering sintético está listado abaixo.

executando o exemplo cria o conjunto de dados de agrupamento sintético, então cria um gráfico de dispersão dos dados de entrada com pontos coloridos por etiqueta de classe (clusters idealizados).,

Podemos ver claramente dois grupos distintos de dados em duas dimensões e a esperança seria que um algoritmo de agrupamento automático possa detectar estes agrupamentos.

gráfico de Dispersão dos Sintético de Cluster de conjunto de dados Com Pontos Coloridos Conhecidos de Cluster

em seguida, podemos começar a olhar para exemplos de algoritmos de agrupamento aplicado a este conjunto de dados.

fiz algumas tentativas mínimas para sintonizar cada método para o conjunto de dados.pode obter um resultado melhor para um dos algoritmos?
Let me know in the comments below.,

propagação de afinidade

propagação de afinidade envolve encontrar um conjunto de exemplares que melhor resumem os dados.

concebemos um método chamado “propagação de afinidade”, que toma como medida de entrada de similaridade entre pares de pontos de dados. As mensagens de valor Real são trocadas entre pontos de dados até que um conjunto de exemplos de alta qualidade e correspondentes clusters surja gradualmente

-agrupando mensagens entre pontos de dados, 2007.,

A técnica é descrita no papel:

  • Clustering by Passing Messages Between Data Points, 2007.

é implementado através da classe de Afinitipropagação e a configuração principal para sintonizar é o “amortecimento” definido entre 0.5 e 1, e talvez “preferência”.”

O exemplo completo está listado abaixo.

executando o exemplo encaixa o modelo no conjunto de dados de treinamento e prevê um conjunto para cada exemplo no conjunto de dados. Um enredo de dispersão é então criado com pontos coloridos por seu conjunto atribuído.neste caso, não consegui obter um bom resultado.,

gráfico de Dispersão do conjunto de dados Com Clusters Identificados Usando a Afinidade de Propagação

Agglomerative de Cluster

Agglomerative cluster envolve a fusão exemplos até que o número desejado de clusters é alcançado.

é uma parte de uma classe mais ampla de métodos de agrupamento hierárquicos e você pode aprender mais aqui:

  • clustering hierárquico, Wikipedia.,

é implementado através da classe Aglomerativaglustering e a configuração principal a sintonizar é o conjunto “n_clusters”, uma estimativa do número de aglomerados nos dados, por exemplo 2.

O exemplo completo está listado abaixo.

executando o exemplo encaixa o modelo no conjunto de dados de treinamento e prevê um conjunto para cada exemplo no conjunto de dados. Um enredo de dispersão é então criado com pontos coloridos por seu conjunto atribuído.neste caso, encontra-se um agrupamento razoável.,

gráfico de Dispersão do conjunto de dados Com Clusters Identificados Usando Agglomerative de Cluster

de BÉTULA

Cluster de BÉTULA (BÉTULA é curto para Equilibrada Iterativo e Redução de Clustering usando
Hierarquias) envolve a construção de uma estrutura de árvore a partir do qual cluster de centróides são extraídos.

BIRCH incrementally and dynamically clusters incoming multidimensional metric data points to try to produce the best quality clustering with the available resources (i. e.,, memória disponível e restrições de tempo).

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

A técnica é descrita no papel:

  • BIRCH: um método eficiente de agrupamento de dados para grandes bases de dados, 1996.

é implementado através da classe Birch e a configuração principal para sintonizar é o hiperparâmetro “limiar” e “n_clusters”, o último dos quais fornece uma estimativa do número de aglomerados.

O exemplo completo está listado abaixo.,

executando o exemplo encaixa o modelo no conjunto de dados de treinamento e prevê um conjunto para cada exemplo no conjunto de dados. Um enredo de dispersão é então criado com pontos coloridos por seu conjunto atribuído.

neste caso, um excelente agrupamento é encontrado.,

gráfico de Dispersão do conjunto de dados Com Clusters Identificados Usando BÉTULA Cluster

DBSCAN

DBSCAN Clustering (onde DBSCAN é a abreviação de com Base na Densidade Espacial para o agrupamento de Aplicações com Ruído) envolve a obtenção de alta densidade de áreas em que o domínio e a expansão das áreas do recurso de espaço em torno deles, como clusters.

… apresentamos o novo algoritmo de clustering DBSCAN baseando-se numa noção de aglomerados baseada na densidade que é projetado para descobrir aglomerados de forma arbitrária., DBSCAN requer apenas um parâmetro de entrada e suporta o usuário na determinação de um valor apropriado para ele

— um algoritmo baseado em densidade para descobrir Clusters em grandes bases de Dados Espaciais com ruído, 1996.

A técnica é descrita no artigo:

  • um algoritmo baseado na densidade para descobrir Clusters em grandes bases de Dados Espaciais com ruído, 1996.

é implementado através da classe DBSCAN e a configuração principal a ser sintonizada é os hiperparâmetros “eps” e “min_samples”.

O exemplo completo está listado abaixo.,

executando o exemplo encaixa o modelo no conjunto de dados de treinamento e prevê um conjunto para cada exemplo no conjunto de dados. Um enredo de dispersão é então criado com pontos coloridos por seu conjunto atribuído.

neste caso, um agrupamento razoável é encontrado, embora mais afinação é necessária.,

gráfico de Dispersão do conjunto de dados Com Clusters Identificados Usando DBSCAN de Cluster

K-means

K-means Clustering pode ser o mais conhecido algoritmo de clustering e envolve a atribuição de exemplos de clusters em um esforço para minimizar a variância dentro de cada cluster.

o principal objectivo deste artigo é descrever um processo para particionar uma população n-dimensional em conjuntos k com base numa amostra., O processo, que é chamado de “k-means”, parece dar partições que são razoavelmente eficientes no sentido de variância dentro da classe.

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

a técnica é descrita aqui:

  • k-significa agrupamento, Wikipédia.

é implementado através da classe KMeans e a configuração principal para sintonizar é o hiperparâmetro “n_clusters” definido para o número estimado de aglomerados nos dados.

O exemplo completo está listado abaixo.,

executando o exemplo encaixa o modelo no conjunto de dados de treinamento e prevê um conjunto para cada exemplo no conjunto de dados. Um enredo de dispersão é então criado com pontos coloridos por seu conjunto atribuído.

neste caso, um agrupamento razoável é encontrado, embora a variância igual desigual em cada dimensão torna o método menos adequado a este conjunto de dados.,

gráfico de Dispersão do conjunto de dados Com Clusters Identificados Utilizando o K-means Cluster

Mini-Lote K-means

Mini-Lote K-means é uma versão modificada do k-means, que faz atualizações para o cluster de centróides usando mini-lotes de amostras, ao invés de incluir todo o conjunto de dados, o que pode torná-lo mais rápido para conjuntos de dados grandes, e talvez mais robusto para a estatística de ruído.

… propomos a utilização da optimização de mini-lotes para a clusterização de meios-K., 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.

A técnica é descrita no papel:

  • Web-Scale K-Means Clustering, 2010.

é implementado através da classe MiniBatchKMeans e a configuração principal para sintonizar é o hiperparâmetro “n_clusters” definido para o número estimado de aglomerados nos dados.

O exemplo completo está listado abaixo.,

executando o exemplo encaixa o modelo no conjunto de dados de treinamento e prevê um conjunto para cada exemplo no conjunto de dados. Um enredo de dispersão é então criado com pontos coloridos por seu conjunto atribuído.

neste caso, um resultado equivalente ao algoritmo padrão de K-means é encontrado.

gráfico de Dispersão do conjunto de dados Com Clusters Identificados Usando Mini-Lote K-means Cluster

Mean Shift

Mean shift clustering consiste em encontrar e adaptação de centróides com base na densidade de exemplos no espaço de características.,

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.

— desvio médio: uma abordagem robusta para a análise do espaço de características, 2002.

A técnica é descrita no artigo:

  • deslocamento médio: uma abordagem robusta para a análise do espaço de características, 2002.

é implementado através da classe MeanShift e a configuração principal para sintonizar é o hiperparâmetro “largura de banda”.,

O exemplo completo está listado abaixo.

executando o exemplo encaixa o modelo no conjunto de dados de treinamento e prevê um conjunto para cada exemplo no conjunto de dados. Um enredo de dispersão é então criado com pontos coloridos por seu conjunto atribuído.

neste caso, um conjunto razoável de clusters são encontrados nos dados.,

gráfico de Dispersão do conjunto de dados Com Clusters Identificados Usando Significa Mudança de Cluster

ÓPTICA

ÓPTICA clustering (onde ÓPTICA é curto para a Encomenda de Pontos Para Identificar a Estrutura de Cluster) é uma versão modificada do DBSCAN descrito acima.

introduzimos um novo algoritmo para o propósito da análise de clusters que não produz um agrupamento de um conjunto de dados explicitamente; mas em vez disso cria uma ordenação aumentada da base de dados que representa a sua estrutura de cluster baseada na densidade., Este cluster-ordering contém informação que é equivalente aos clusterings baseados na densidade correspondentes a uma ampla gama de configurações de parâmetros.

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

A técnica é descrita no artigo:

  • óptica: ordenando pontos para identificar a estrutura de agrupamento, 1999.

é implementado através da classe óptica e a configuração principal para sintonizar são os hiperparâmetros “eps” e “min_samples”.

O exemplo completo está listado abaixo.,

executando o exemplo encaixa o modelo no conjunto de dados de treinamento e prevê um conjunto para cada exemplo no conjunto de dados. Um enredo de dispersão é então criado com pontos coloridos por seu conjunto atribuído.neste caso, não consegui obter um resultado razoável neste conjunto de dados.

gráfico de Dispersão do conjunto de dados Com Clusters Identificados Usando ÓPTICA de Cluster

Espectral de Cluster

Spectral Clustering é uma classe geral de métodos de clustering, elaborado a partir de álgebra linear.,

uma alternativa promissora que surgiu recentemente em vários campos é a utilização de métodos espectrais para agrupamento. Aqui, usa-se os autovetores superiores de uma matriz derivada da distância entre pontos.

— Clustering espectral: Analysis and an algorithm, 2002.

The technique is described in the paper:

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

é implementado através da classe de Espectralclusagem e a clusterização principal espectral é uma classe geral de métodos de agrupamento, extraídos da álgebra linear. to tune is the” n_clusters ” hyperparameter used to specify the estimated number of clusters in the data.

O exemplo completo está listado abaixo.

executando o exemplo encaixa o modelo no conjunto de dados de treinamento e prevê um conjunto para cada exemplo no conjunto de dados. Um enredo de dispersão é então criado com pontos coloridos por seu conjunto atribuído.neste caso, foram encontrados aglomerados razoáveis.,

gráfico de Dispersão do conjunto de dados Com Clusters Identificados Usando Espectros de Cluster Cluster

Gaussian Mixture Model

Gaussian mixture model resume a uma função de densidade de probabilidade multivariada com uma mistura de distribuições de probabilidade Gaussiana, como o seu nome sugere.

para mais no modelo, veja:

  • Modelo de mistura, Wikipedia.,

é implementado através da classe GaussianMixture e a configuração principal a ser sintonizada é o hiperparâmetro “n_clusters” usado para especificar o número estimado de aglomerados nos dados.

O exemplo completo está listado abaixo.

executando o exemplo encaixa o modelo no conjunto de dados de treinamento e prevê um conjunto para cada exemplo no conjunto de dados. Um enredo de dispersão é então criado com pontos coloridos por seu conjunto atribuído.

neste caso, podemos ver que os aglomerados foram identificados perfeitamente., Isto não é surpreendente dado que o conjunto de dados foi gerado como uma mistura de Gaussianos.

Scatter Plot of Dataset With Clusters Identified Using Gaussian Mixture Clustering

Further Reading

Esta secção fornece mais recursos sobre o tópico se você está procurando ir mais fundo.

Papers

  • Clustering by Passing Messages Between Data Points, 2007.
  • BIRCH: An efficient data clustering method for large databases, 1996.,
  • A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise, 1996.
  • Some methods for classification and analysis of multivariate observations, 1967.
  • Web-Scale K-Means Clustering, 2010.
  • deslocamento médio: uma abordagem robusta para a análise do espaço de recursos, 2002.
  • On Spectral Clustering: Analysis and an algorithm, 2002.

Books

  • Data Mining: Practical Machine Learning Tools and Techniques, 2016.
  • the Elements of Statistical Learning: Data Mining, inferência, and Prediction, 2016.,
  • Machine Learning: a Probabilistic Perspective, 2012.

APIs

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

Articles

  • Cluster analysis, Wikipedia.
  • clustering hierárquico, Wikipedia.
  • k-means clustering, Wikipedia.
  • Modelo de mistura, Wikipédia.

resumo

neste tutorial, você descobriu como encaixar e usar algoritmos de clusterização de topo em python.,

especificamente, você aprendeu:

  • Clustering é um problema não supervisionado de encontrar grupos naturais no espaço de recursos de dados de entrada.
  • Existem muitos algoritmos de clustering diferentes, e nenhum método único melhor para todos os conjuntos de dados.
  • Como implementar, encaixar e usar algoritmos de clustering de topo em Python com a biblioteca de aprendizagem de máquinas scikit-learn.tem alguma pergunta?Faça suas perguntas nos comentários abaixo e farei o meu melhor para responder.

    Discover Fast Machine Learning in Python!,

    desenvolva os seus próprios modelos em minutos

    …with just a few lines of scikit-learn code

    Learn how in my new Ebook:
    Machine Learning Maestery With Python

    cobre tutoriais de auto-estudo e projetos finais como:
    Loading data, visualization, modeling, tuning, and much more…

    finalmente trazer o aprendizado de máquina para os seus próprios projetos

    saltar os acadêmicos. Apenas Resultados.

    ver o que está dentro de

    Tweet Share

Articles

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *