Algoritmo de Clustering Hierárquico Python!

Nó Fonte: 1055669

Este artigo foi publicado como parte do Blogathon de Ciência de Dados

Introdução

Neste artigo, veremos uma abordagem diferente para clustering K Means, chamada clustering hierárquico. Em comparação com K Means ou K Mode, o clustering hierárquico tem um algoritmo subjacente diferente para como o mecanismo de cluster funciona. O agrupamento hierárquico usa técnicas aglomerativas ou divisivas, enquanto K Means usa uma combinação de distância centróide e euclidiana para formar clusters. Os dendrogramas podem ser usados ​​para visualizar clusters em agrupamentos hierárquicos, o que pode ajudar na melhor interpretação dos resultados por meio de taxonomias significativas. Não precisamos especificar o número de clusters ao fazer um dendograma.

Aqui usamos Python para explicar o modelo hierárquico de clustering. Temos dados de 200 clientes de shopping em nosso conjunto de dados. O ID do cliente, gênero, idade, renda anual e pontuação de gastos de cada cliente estão todos incluídos no quadro de dados. O valor calculado para cada pontuação de gastos de seus clientes é baseado em vários critérios, como renda, número de vezes por semana que visitam o shopping e quanto dinheiro gastaram em um ano. Essa pontuação varia de 1 a 100. Como não sabemos as respostas, um problema de negócios torna-se um problema de agrupamento. As categorias finais dos dados são desconhecidas para nós. Como resultado, nosso objetivo é descobrir alguns grupos de clientes até então desconhecidos.

Mas primeiro, examinaremos alguns termos importantes do agrupamento hierárquico.

Termos importantes em cluster hierárquico

Métodos de ligação

Se houver (a) observações originais a[0],…,a[|a|1] no cluster (a) e (b) objetos originais b[0],…,b[|b|1] no cluster ( b), então devemos calcular a distância entre dois clusters (a) e (b) para combiná-los (b). Digamos que haja um ponto (d) que não foi atribuído a nenhum dos clusters. Precisaremos descobrir a que distância o cluster (a) está do cluster (d) e o cluster (b) está do cluster (d).

Os clusters agora normalmente contêm vários pontos, necessitando de um método diferente para calcular a matriz de distância. O método pelo qual a distância entre clusters, ou ponto a cluster, é calculada é determinado por ligação. A seguir estão alguns dos mecanismos de ligação mais comumente usados:

Ligação única — As distâncias entre os membros mais semelhantes são calculadas para cada par de clusters e os clusters são então mesclados com base na distância mais curta.

Ligação média — A distância entre todos os membros de um cluster e todos os membros de outro cluster é calculada. Depois disso, a média dessas distâncias é usada para determinar quais clusters serão mesclados.

Ligação completa — Para cada par de clusters, as distâncias entre os membros mais diferentes são calculadas e os clusters são então mesclados com base na distância mais curta.

Ligação Mediana — Usamos a distância mediana em vez da distância média de forma semelhante à ligação média.

Ligação da Ala — Determina a distância entre clusters usando o método de análise de variância.

Ligação centróide — O centróide de cada cluster é calculado calculando a média de todos os pontos atribuídos ao cluster, e a distância entre os clusters é então calculada usando este centróide.

Cálculo de Distância

Existem múltiplas abordagens para calcular a distância entre dois ou mais clusters, sendo a Distância Euclidiana a mais popular. Outras métricas de distância, como Minkowski, City Block, Hamming, Jaccard e Chebyshev, também podem ser usadas com clustering hierárquico. Diferentes métricas de distância têm impacto no cluster hierárquico, conforme mostrado na Figura 2.

cálculo de distância

Dendrograma

O relacionamento entre objetos em um espaço de recursos é representado por um dendograma. Em um espaço de recursos, é usado para mostrar a distância entre cada par de objetos mesclados sequencialmente. Os dendrogramas são frequentemente usados ​​para examinar clusters hierárquicos antes de decidir sobre o número apropriado de clusters para o conjunto de dados. A distância do dendograma é a distância entre dois clusters quando eles se combinam. A distância do dendograma determina se dois ou mais clusters são disjuntos ou podem ser unidos para formar um único cluster.

Exemplo

Agora veremos exemplos usando Python para demonstrar o modelo de cluster hierárquico. Temos dados de 200 clientes de shopping em nosso conjunto de dados. O ID do cliente, gênero, idade, renda anual e pontuação de gastos de cada cliente estão todos incluídos no quadro de dados. O valor calculado para cada pontuação de gastos de seus clientes é baseado em vários critérios, como renda, número de vezes por semana que visitam o shopping e o dinheiro gasto durante um ano. Essa pontuação varia de 1 a 100. Como não sabemos as respostas, um problema de negócios torna-se um problema de agrupamento.

#1 Importando as bibliotecas
importar numpy como np importar matplotlib.pyplot como plt importar pandas como pd
#2 Importando o conjunto de dados Mall_Customers por pandas
conjunto de dados = pd.read_csv('Mall_Customers.csv')
X = conjunto de dados.iloc[:, [3,4]].valores

Esta nova etapa no clustering hierárquico também envolve a determinação do número ideal de clusters. Não vamos usar o método do cotovelo desta vez. Faremos uso do dendograma.

#3 Usando o dendograma para encontrar o número ideal de clusters. # A primeira coisa que faremos é importar a biblioteca scipy. scipy é uma biblioteca # Python de código aberto que contém ferramentas para fazer clustering hierárquico e construir dendogramas.
# Importe apenas a ferramenta necessária.
importar scipy.cluster.hierarchy como sch 
#Vamos criar uma variável de dendrograma #linkage é na verdade o próprio algoritmo de clustering hierárquico e então em #linkage temos que especificar quais dados aplicamos e engajamos. Este é o conjunto de dados X
dendograma = sch.dendrogram(sch.linkage(X, método = "ala"))
plt.title('Dendrograma')
plt.xlabel('Clientes')
plt.ylabel('Distâncias euclidianas')
plt.show()

O método Ward é um método que tenta reduzir a variação dentro de cada cluster. É quase o mesmo que quando usamos K-means para minimizar o wcss para traçar nosso gráfico de método de cotovelo; a única diferença é que, em vez de wcss, estamos minimizando as variantes dentro do cluster. Dentro de cada cluster, esta é a variação. O dendograma é mostrado abaixo.

dendograma

Os clientes são representados no eixo x e a distância euclidiana entre os clusters é representada no eixo y. Como descobrimos o melhor número de clusters com base neste diagrama? Queremos encontrar a maior distância vertical possível sem cruzar nenhuma linha horizontal, que é a linha com moldura vermelha no diagrama acima. Vamos contar as linhas no diagrama e descobrir quantos clusters são melhores. Para este conjunto de dados, o número do cluster será 5.

#4 Ajustando cluster hierárquico ao conjunto de dados Mall_Customes
# Existem dois algoritmos para clustering hierárquico: Agglomerative Hierarchical Clustering e # Divisive Hierarchical Clustering. Escolhemos a distância euclidiana e o método ward para nossa # classe de algoritmo de sklearn.cluster import AgglomerativeClustering hc = AgglomerativeClustering(n_clusters = 5, affinity = 'euclidean', linkage ='ward')
# Vamos tentar ajustar o algoritmo de clustering hierárquico ao conjunto de dados X enquanto criamos o # vetor de clusters que informa para cada cliente a qual cluster o cliente pertence.
y_hc=hc.fit_predict(X)
#5 Visualizando os clusters. Este código é semelhante ao código de visualização k-means.
#Nós apenas substituímos o nome do vetor y_kmeans por y_hc para o cluster hierárquico plt.scatter(X[y_hc==0, 0], X[y_hc==0, 1], s=100, c='red', label = 'Grupo 1')
plt.scatter(X[y_hc==1, 0], X[y_hc==1, 1], s=100, c='azul', rótulo ='Cluster 2')
plt.scatter(X[y_hc==2, 0], X[y_hc==2, 1], s=100, c='verde', rótulo ='Cluster 3')
plt.scatter(X[y_hc==3, 0], X[y_hc==3, 1], s=100, c='ciano', rótulo ='Cluster 4')
plt.scatter(X[y_hc==4, 0], X[y_hc==4, 1], s=100, c='magenta', rótulo ='Cluster 5')
plt.title('Clusters de Clientes (Modelo Hierárquico de Clustering)')
plt.xlabel('Renda Anual(k$)')
plt.ylabel('Pontuação de gastos(1-100')
plt.show()
aglomerados | Agrupamento hierárquico
Cluster1 (Vermelho), Cluster2 (Azul), Cluster3 (Verde), Cluster4 (Ciano), Cluster5 (Magenta)

Esses clusters podem ser considerados o segmento de clientes do shopping.

Isso é tudo que existe para um modelo de cluster hierárquico padrão. O conjunto de dados, bem como todos os códigos, estão disponíveis na seção Github.

Conclusão

Em qualquer exercício de agrupamento, determinar o número de agrupamentos é um processo demorado. Como o lado comercial do negócio está mais preocupado em extrair significado desses grupos, é fundamental visualizar os clusters em duas dimensões e verificar se são distintos. PCA ou Análise Fatorial pode ser usada para atingir esse objetivo. Este é um método comum para apresentar os resultados finais às diversas partes interessadas, facilitando o consumo do resultado por todos.

EndNote

Obrigado por ler!
Espero que você tenha gostado do artigo e aumentado seu conhecimento.
Por favor sinta-se à vontade para me contactar on E-mail
Algo não mencionado ou deseja compartilhar suas idéias? Sinta-se à vontade para comentar abaixo e entrarei em contato com você.

Sobre o autor

Hardikkumar M. Dhaduk
Analista de Dados | Especialista em Análise de Dados Digitais | Aluno de ciência de dados
Conecte-se comigo no Linkedin
Conecte-se comigo no Github

As mídias mostradas neste artigo não são propriedade da Analytics Vidhya e são usadas a critério do autor.

Fonte: https://www.analyticsvidhya.com/blog/2021/08/hierarchical-clustering-algorithm-python/

Carimbo de hora:

Mais de Análise Vidhya