Lidando com algoritmos aleatórios
No vídeo, você viu como kmeans() inicializa aleatoriamente os centros dos clusters. Essa inicialização aleatória pode fazer com que as observações recebam rótulos de cluster diferentes. Além disso, a inicialização aleatória pode levar a encontrar diferentes mínimos locais para o algoritmo k-means. Este exercício vai demonstrar ambos os resultados.
No topo de cada gráfico, será exibida a medida de qualidade do modelo — a soma total dos erros quadráticos dentro dos clusters. Procure o(s) modelo(s) com o menor erro para identificar os modelos com melhores resultados.
Como kmeans() inicializa as observações em clusters aleatórios, é importante definir a semente do gerador de números aleatórios para garantir reprodutibilidade.
Este exercício faz parte do curso
Aprendizado não supervisionado em R
Instruções do exercício
Os dados x ainda estão disponíveis no seu workspace. Sua tarefa é gerar seis modelos kmeans() com esses dados, plotando o resultado de cada um, para ver o impacto de inicializações aleatórias nos resultados do modelo.
- Defina a semente aleatória como 1 com
set.seed(). - A cada iteração do laço
for, executekmeans()emx. Considere que o número de clusters é 3 e o número de inicializações (nstart) é 1. - Visualize as associações aos clusters usando o argumento
coldeplot(). Observe como a medida de qualidade e as atribuições de cluster variam entre as seis execuções do modelo.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# Set up 2 x 3 plotting grid
par(mfrow = c(2, 3))
# Set seed
set.seed(___)
for(i in 1:6) {
# Run kmeans() on x with three clusters and one start
km.out <- kmeans(___, ___, ___)
# Plot clusters
plot(x, col = ___,
main = km.out$tot.withinss,
xlab = "", ylab = "")
}