R

Como Realizar Análise de Clustering no R com cluster

Escrito por Erick Faria · 3 min. >
Análise de Clustering no R

Neste post, vamos explorar como realizar análise de clustering no R utilizando o pacote cluster. O clustering é uma técnica de aprendizado de máquina não supervisionado que agrupa dados em subconjuntos, ou clusters, onde os elementos dentro de cada cluster são mais semelhantes entre si do que aos elementos de outros clusters. Vamos criar um conjunto de dados de exemplo e abordar várias técnicas de clustering utilizando o cluster.

Por que Usar o cluster para Análise de Clustering no R?

O pacote cluster fornece uma ampla gama de algoritmos de clustering, como k-means, PAM (Partitioning Around Medoids) e aglomerativo hierárquico. Esses algoritmos são essenciais para identificar padrões e estruturas ocultas em dados, facilitando a segmentação e análise de grandes conjuntos de dados.

Trabalhando com Dados no R

Instalando e Carregando o Pacote cluster

Primeiro, vamos instalar e carregar o pacote cluster:

# Análise de Clustering no R
# Instalando o pacote cluster
install.packages("cluster")

# Carregando o pacote cluster
library(cluster)

Criando um Conjunto de Dados de Exemplo

Vamos criar um conjunto de dados de exemplo com três clusters distintos:

# Análise de Clustering no R
# Criando um conjunto de dados de exemplo
set.seed(123)
dados <- rbind(
  matrix(rnorm(100, mean = 0, sd = 0.3), ncol = 2),
  matrix(rnorm(100, mean = 3, sd = 0.3), ncol = 2),
  matrix(rnorm(100, mean = 6, sd = 0.3), ncol = 2)
)
colnames(dados) <- c("x", "y")
dados <- as.data.frame(dados)

Visualizando os Dados

Vamos usar o ggplot2 para visualizar os dados de exemplo:

# Análise de Clustering no R
# Carregando o pacote ggplot2
library(ggplot2)

# Visualizando os dados
ggplot(dados, aes(x = x, y = y)) +
  geom_point() +
  ggtitle("Dados de Exemplo para Clustering")

Realizando Clustering com K-means

Aplicando o Algoritmo K-means

Vamos aplicar o algoritmo k-means para identificar três clusters:

# Análise de Clustering no R
# Aplicando o algoritmo k-means
kmeans_result <- kmeans(dados, centers = 3, nstart = 25)

# Adicionando os clusters aos dados
dados$cluster <- as.factor(kmeans_result$cluster)

Visualizando os Resultados do K-means

Vamos visualizar os resultados do k-means:

# Análise de Clustering no R
# Visualizando os resultados do k-means
ggplot(dados, aes(x = x, y = y, color = cluster)) +
  geom_point() +
  ggtitle("Resultados do K-means Clustering")

Realizando Clustering com PAM

Aplicando o Algoritmo PAM

O PAM é uma alternativa robusta ao k-means, especialmente útil quando há outliers nos dados:

# Análise de Clustering no R
# Aplicando o algoritmo PAM
pam_result <- pam(dados[,1:2], k = 3)

# Adicionando os clusters aos dados
dados$pam_cluster <- as.factor(pam_result$clustering)

Visualizando os Resultados do PAM

Vamos visualizar os resultados do PAM:

# Análise de Clustering no R
# Visualizando os resultados do PAM
ggplot(dados, aes(x = x, y = y, color = pam_cluster)) +
  geom_point() +
  ggtitle("Resultados do PAM Clustering")

Realizando Clustering Hierárquico

Aplicando o Algoritmo de Clustering Hierárquico

O clustering hierárquico é uma abordagem que cria uma árvore de clusters:

# Análise de Clustering no R
# Aplicando o algoritmo de clustering hierárquico
hc_result <- hclust(dist(dados[,1:2]), method = "ward.D2")

# Plotando o dendrograma
plot(hc_result, main = "Dendrograma de Clustering Hierárquico")

Cortando a Árvore para Formar Clusters

Podemos cortar a árvore para formar um número específico de clusters:

# Análise de Clustering no R
# Cortando a árvore para formar 3 clusters
hc_clusters <- cutree(hc_result, k = 3)
dados$hc_cluster <- as.factor(hc_clusters)

# Visualizando os resultados do clustering hierárquico
ggplot(dados, aes(x = x, y = y, color = hc_cluster)) +
  geom_point() +
  ggtitle("Resultados do Clustering Hierárquico")

Avaliando a Qualidade dos Clusters

Calculando o Índice de Silhueta

O índice de silhueta é uma métrica útil para avaliar a qualidade dos clusters:

# Análise de Clustering no R
# Calculando o índice de silhueta para k-means
silhouette_kmeans <- silhouette(kmeans_result$cluster, dist(dados[,1:2]))
mean(silhouette_kmeans[, 3])

# Calculando o índice de silhueta para PAM
silhouette_pam <- silhouette(pam_result$clustering, dist(dados[,1:2]))
mean(silhouette_pam[, 3])

Para mais informações sobre como utilizar o R para análise de dados, confira outros conteúdos no meu blog:

Considerações Finais

Espero que este guia tenha sido útil para aprender como realizar análise de clustering com o pacote cluster no R. A prática é essencial para dominar essas técnicas, então encorajo você a experimentar e aplicar esses métodos em seus próprios projetos de análise de dados.

Para aprimorar suas habilidades com o R e se tornar mais eficiente na análise de clustering, é importante também fortalecer sua compreensão em ciência de dados. Recomendamos o livro Fundamentos em R: Guia Completo para Iniciantes, disponível na Amazon, que oferece uma introdução abrangente ao R.

Junte-se à nossa comunidade no Twitter e inscreva-se no nosso canal do YouTube para acessar mais tutoriais, dicas e recursos. Continue praticando e explorando novas maneiras de realizar análise de clustering no R, e fique atento para mais guias e tutoriais que compartilharemos.

Escrito por Erick Faria
Engenheiro de Dados com Ph.D. em Geografia e experiência em análise espacial e geoprocessamento. Expertise em processamento de grandes volumes de dados geoespaciais, imagens de satélite e dados de mercado, utilizando ferramentas como Spark, Databricks e Google Earth Engine. Experiência em projetos de mercado de carbono, modelos preditivos para investimentos agrícolas e liderança de projetos de dados em saúde pública. Habilidades em Python, R, SQL e diversas ferramentas de engenharia de dados. Profile