Menu
CoddyTech

Introdução ao K-Means

Lição 9 de 19 do curso Introdução ao aprendizado de máquina da Coddy.

K-means é um dos algoritmos de agrupamento (clustering) mais simples e amplamente utilizados. Ele visa particionar n observações em k clusters, nos quais cada observação pertence ao cluster com a média (centroide) mais próxima, servindo como um protótipo do cluster. Digamos que você tenha um monte de frutas diferentes e queira separá-las em cestas com base no tipo, mas não possui os rótulos. O K-means ajuda você a fazer exatamente isso, mas com pontos de dados em vez de frutas!

Animação do K-means

Incheol, CC BY-SA 4.0, via Wikimedia Commons

Como o K-Means Funciona?

O algoritmo segue um procedimento iterativo simples e eficiente para dividir um conjunto de dados em k clusters.

  1. Inicializar Centroides: Primeiro, escolha k pontos como os centroides iniciais do conjunto de dados. Esses pontos podem ser selecionados aleatoriamente ou com base em uma estratégia específica.
  2. Atribuir Clusters: Para cada ponto no conjunto de dados, encontre o centroide mais próximo (usando medidas de distância como a distância Euclidiana) e atribua o ponto a esse cluster.
  3. Atualizar Centroides: Assim que todos os pontos forem atribuídos aos clusters, recalcule os centroides tirando a média de todos os pontos em cada cluster.
  4. Repetir os Passos 2 e 3: Os passos acima são repetidos até que os centroides não mudem mais significativamente. Isso significa que o algoritmo convergiu e os clusters estão estáveis.
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

challenge icon

Desafio

Fácil

Determinar o número ideal de clusters, k, é uma etapa crucial. Existem vários métodos para isso, sendo o Método do Cotovelo (Elbow Method) um dos mais populares.

Esta técnica envolve a execução contínua do K-means iterando de k=1 até k=n. Para cada valor de k, calculamos o valor da soma dos quadrados dentro do cluster (WCSS - within-cluster sum of squares).

Cada cluster possui um centroide; o WCSS é a soma de todas as distâncias do centroide ao quadrado.

Crie uma função chamada wcss que receba uma lista de pontos de dados (do mesmo cluster) e retorne o wcss do cluster. Siga estas etapas:

  • Encontre o centroide - Um centroide é um ponto que representa a posição média de todos os pontos em um cluster: 
    Fórmula do centroide
    Por exemplo, aqui está uma lista de dois pontos 3D: (1, 2 ,3), (4, 5, 6). O centroide é:

    (1 + 4) / 2 = 2.5,
    (2 + 5) / 2 = 3.5,
    (3 + 6) / 2 = 4.5,
    >> (2.5, 3.5, 4.5)
  • Calcule a distância Euclidiana entre cada ponto e o centroide
  • Retorne a soma de todas as distâncias dividida pelo número de pontos

Experimente você mesmo

def euclidian_distance(point_a, point_b):
    return (sum([(point_a[i] - point_b[i])**2 for i in range(len(point_a))]))**0.5

def wcss(points):
    # Escreva o código aqui

Todas as lições de Introdução ao aprendizado de máquina

Pratique por conta própria: Compilador de Python online