ComeçarComece de graça

Selecionando o número de clusters

O algoritmo k-means assume o número de clusters como parte da entrada. Se você já souber o número de clusters (por exemplo, devido a certas restrições de negócio), fica fácil defini-lo. Porém, como você viu no vídeo, se não souber e precisar determiná-lo, será necessário executar o algoritmo várias vezes, cada uma com um número diferente de clusters. A partir disso, você pode observar como uma medida de qualidade do modelo muda conforme o número de clusters.

Neste exercício, você vai executar kmeans() várias vezes para ver como a qualidade do modelo muda à medida que o número de clusters varia. Gráficos que exibem essa informação ajudam a determinar o número de clusters e são frequentemente chamados de scree plots.

O gráfico ideal terá um cotovelo, onde a medida de qualidade passa a melhorar mais lentamente conforme o número de clusters aumenta. Isso indica que a qualidade do modelo não está mais melhorando de forma substancial à medida que a complexidade do modelo (isto é, o número de clusters) cresce. Em outras palavras, o cotovelo indica o número de clusters inerente aos dados.

Este exercício faz parte do curso

Aprendizado não supervisionado em R

Ver curso

Instruções do exercício

Os dados, x, ainda estão disponíveis no seu ambiente de trabalho.

  • Construa 15 modelos kmeans() em x, cada um com um número diferente de clusters (de 1 a 15). Defina nstart = 20 para todas as execuções e salve a soma total dos quadrados dentro dos clusters de cada modelo no elemento i de wss.
  • Execute o código fornecido para criar um scree plot do wss para todos os 15 modelos.
  • Observe seu scree plot. Quantos clusters são inerentes aos dados? Defina k igual ao número de clusters na posição do cotovelo.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# Initialize total within sum of squares error: wss
wss <- 0

# For 1 to 15 cluster centers
for (i in ___) {
  km.out <- kmeans(___, centers = i, ___)
  # Save total within sum of squares to wss variable
  wss[i] <- km.out$___
}

# Plot total within sum of squares vs. number of clusters
plot(1:15, wss, type = "b", 
     xlab = "Number of Clusters", 
     ylab = "Within groups sum of squares")

# Set k equal to the number of clusters corresponding to the elbow location
k <- ___
Editar e executar o código