Machine Learning: Clustering e a Aprendizagem não Supervisionada com Python Scikit-Learn

Bem-vindos ao fascinante mundo do Machine Learning! Neste tutorial, vamos explorar uma técnica essencial chamada Clustering, que faz parte da Aprendizagem não Supervisionada. Mesmo que você esteja começando agora, não se preocupe! Vamos guiá-lo passo a passo, usando a biblioteca Scikit-Learn do Python, para que você possa aplicar o Clustering em seus próprios projetos.

O que é Clustering?

Imagine que você tem uma caixa cheia de diferentes tipos de frutas e quer agrupá-las de acordo com suas semelhanças. O Clustering funciona de maneira similar! É uma técnica que nos permite agrupar dados semelhantes, mesmo sem saber previamente como esses grupos devem ser. Isso é útil em várias situações, como segmentação de clientes, detecção de anomalias e muito mais.

K-means Clustering Um dos algoritmos mais populares de Clustering é o K-means. Ele funciona assim: você escolhe um número “K” que representa a quantidade de grupos (clusters) que deseja encontrar. O algoritmo então seleciona aleatoriamente “K” pontos como centros iniciais dos clusters (centroides) e atribui cada ponto de dados ao centroide mais próximo. Em seguida, ele ajusta os centroides para o centro médio de cada cluster e repete o processo até que os centroides não mudem mais significativamente.

Métodos de Inicialização de Centroides

A escolha dos centroides iniciais pode afetar o resultado final do K-means. Existem diferentes métodos para inicializá-los, como:

  • Aleatório: Seleciona “K” pontos aleatoriamente como centroides iniciais.
  • K-means++: Escolhe o primeiro centroide aleatoriamente e os seguintes de forma a maximizar a distância entre eles. Cada método tem suas vantagens e pode ser mais adequado dependendo do conjunto de dados.

Determinando o número de Clusters Mas como saber quantos clusters devemos usar? Existem algumas técnicas que podem nos ajudar, como:

  • Método do Cotovelo (Elbow Method): Plota a soma dos quadrados das distâncias de cada ponto ao seu centroide (inertia) para diferentes valores de “K”. O ponto onde a curva forma um “cotovelo” indica um bom número de clusters.
  • Silhouette Score: Mede a qualidade dos clusters com base na distância dos pontos dentro do cluster em comparação com outros clusters. Quanto maior o score, melhor a separação entre os clusters.

Voltemos ao exemplo da nossa caixa cheia de frutas diferentes, como maçãs, bananas e laranjas. Agora, você quer agrupar essas frutas com base em suas características, como cor e tamanho, sem saber previamente quantos grupos existem.

O algoritmo K-means pode ajudar nessa tarefa. Ele funciona da seguinte maneira:

  1. Você escolhe um número “K” que representa a quantidade de grupos (clusters) que deseja encontrar. No exemplo da cesta de frutas, vamos supor que você escolha K=3, indicando que quer agrupar as frutas em 3 grupos.
  2. O algoritmo seleciona aleatoriamente “K” frutas (no caso, 3 frutas) como centroides iniciais. Os centroides são os pontos centrais de cada grupo. Imagine que o algoritmo escolha uma maçã, uma banana e uma laranja como centroides iniciais.
  3. Em seguida, o algoritmo atribui cada fruta ao centroide mais próximo com base em suas características. Por exemplo, todas as maçãs serão atribuídas ao grupo da maçã centroide, as bananas ao grupo da banana centroide e as laranjas ao grupo da laranja centroide.
  4. Após a atribuição inicial, o algoritmo calcula o novo centroide para cada grupo. O novo centroide é determinado calculando a média das características de todas as frutas atribuídas a esse grupo. Por exemplo, o novo centroide do grupo das maçãs será a média das características (cor e tamanho) de todas as maçãs atribuídas a esse grupo.
  5. O algoritmo repete os passos 3 e 4 iterativamente. Cada fruta é reatribuída ao centroide mais próximo com base nos novos centroides calculados. Em seguida, os centroides são atualizados novamente com base nas novas atribuições.
  6. O processo continua até que os centroides não mudem mais significativamente ou até que um número máximo de iterações seja atingido.

Ao final do processo, o algoritmo K-means terá agrupado as frutas em 3 grupos distintos, cada um representado por um centroide. Os centroides serão as frutas “médias” ou “representativas” de cada grupo.

Por exemplo, o centroide do grupo das maçãs pode ser uma maçã de tamanho médio e cor vermelha, representando as características típicas das maçãs nesse grupo. O centroide do grupo das bananas pode ser uma banana de tamanho médio e cor amarela, e assim por diante.

Os centroides são importantes porque nos ajudam a entender as características principais de cada grupo e podem ser usados para atribuir novas frutas aos grupos existentes com base na proximidade aos centroides.

Aprenda Machine Learning em 5 Dias. Curso 100% Prático.
Melhor Preço por Tempo Limitado. Clique Aqui e Teste Sem Risco.
30 Dias de Satisfação Garantida!

 

Clustering com Scikit-Learn

Agora é hora de colocar a mão na massa! Vamos usar a biblioteca Scikit-Learn do Python para implementar o K-means Clustering. Primeiro, importamos as bibliotecas necessárias:

Neste código:

  1. Importamos as bibliotecas necessárias: KMeans do sklearn.cluster, numpy e matplotlib.pyplot.
  2. Definimos as características das frutas em um array frutas. Cada fruta é representada por duas características: cor e tamanho. Usamos valores numéricos para representar as cores (255 para vermelho, 50 para amarelo e 200 para laranja) e valores numéricos para representar os tamanhos.
  3. Criamos uma instância do objeto KMeans com n_clusters=3, indicando que queremos agrupar as frutas em 3 clusters.
  4. Executamos o algoritmo K-means usando o método fit() e passando o array frutas como entrada.
  5. Obtemos os rótulos dos clusters atribuídos a cada fruta usando kmeans.labels_.
  6. Obtemos os centroides dos clusters usando kmeans.cluster_centers_.
  7. Plotamos as frutas usando plt.scatter(), onde frutas[:, 0] representa a cor e frutas[:, 1] representa o tamanho. Usamos os rótulos dos clusters para colorir as frutas de acordo com o cluster ao qual pertencem.
  8. Plotamos os centroides usando plt.scatter(), definindo um tamanho maior (s=200), cor vermelha (c='red') e marcador ‘x' (marker='x').
  9. Adicionamos rótulos aos eixos e um título ao gráfico usando plt.xlabel(), plt.ylabel() e plt.title().
  10. Exibimos o gráfico usando plt.show().

Ao executar esse código, você verá um gráfico mostrando as frutas agrupadas em 3 clusters, com cada cluster representado por uma cor diferente. Os centroides dos clusters serão marcados com um ‘x' vermelho.

E pronto! Você acabou de aplicar o K-means Clustering usando Python e Scikit-Learn. Experimente com diferentes números de clusters e conjuntos de dados para aprimorar suas habilidades.

Conclusão

Neste tutorial, aprendemos sobre Clustering, focando no algoritmo K-means. Vimos como ele funciona, os métodos de inicialização de centroides e como determinar o número ideal de clusters. Também implementamos o K-means usando a biblioteca Scikit-Learn do Python. Agora você está pronto para explorar ainda mais o mundo do Machine Learning e aplicar o Clustering em seus próprios projetos!

Lembre-se, a prática leva à perfeição. Continue explorando, experimentando e aprendendo. O céu é o limite quando se trata de Machine Learning!

Scroll to Top