Machine learning e a simplicidade do agrupamento K-Means
K-Means é um algoritmo de clustering simples e flexível para encontrar padrões em dados e organizar as coisas em grupos com base em suas semelhanças.

Receba nossa newsletter

machine learning com K-means

Classificação e regressão em machine learning

Em machine learning, o aprendizado supervisionado e o não supervisionado são dois métodos fundamentais que nos ajudam a enfrentar problemas complexos. O aprendizado supervisionado envolve treinar modelos com dados rotulados para fazer previsões em dados novos. Já o aprendizado não supervisionado consiste em algoritmos desenvolvidos para descobrir padrões em dados não rotulados. Existem várias classes de algoritmos de aprendizagem não supervisionada. Algoritmos de clustering certamente são uma das classes mais importantes. 

No post de hoje, vamos abordar um dos algoritmos de clustering mais usados na ciência de dados – K-Means.

O que é agrupamento K-means?

O K-Means é um algoritmo iterativo que agrupa pontos de dados em k clusters com base em suas similaridades. A ideia geral do algoritmo é atribuir cada ponto de dados ao cluster com o centroide mais próximo a ele. Conforme as iterações ocorrem durante o treinamento, os centros dos clusters são atualizados e os pontos de dados são reatribuídos aos novos clusters.

O K-Means é particularmente eficiente para situações em que os dados possuem uma estrutura intrínseca. Ou seja, se seus dados possuem um agrupamento natural ou organização hierárquica, o K-Means pode ajudar a revelar esses padrões. E, evidentemente, assim como outras ferramentas de aprendizagem não supervisionadas, o K-Means pode fornecer insights sobre a estrutura subjacente dos dados quando você não possui dados rotulados.

Como K-means funciona?

Em linhas gerais, o algoritmo K-Means particiona n pontos de dados (pontos de dados são nossas variáveis de entrada) em um número predefinido de k clusters. Como explicado acima, a ideia principal do K-Means é atribuir cada ponto de dados ao cluster cujo centro (centroide) está mais próximo. Portanto, cada ponto pertence ao agrupamento com a média mais próxima e essas médias representam um protótipo de sua respectiva categoria. Durante o treinamento do algoritmo, refinamos iterativamente as atribuições dos clusters até que eles se estabilizem. 

A implementação do algoritmo começa com a fase de inicialização, que se refere à escolha de k centroides (centros de agrupamento iniciais). Essa escolha pode ser aleatória se não sabemos nada sobre os dados. Em seguida, ocorre a fase de atribuição: cada ponto de dados é atribuído ao centroide mais próximo com base em uma métrica de distância. Normalmente, a distância euclidiana é usada. Após a atribuição, durante a atualização, cada centroide é movido para a média dos pontos atribuídos a ele. Durante o treinamento, as etapas de atribuição e atualização são repetidas até que as posições dos centroides parem de mudar ou um número máximo de iterações seja atingido.

Por Que Usar K-Means?

O K-Means possui várias vantagens. A principal é que ele é um algoritmo relativamente simples de entender e implementar. Isso o torna uma solução atraente quando a explicabilidade do algoritmo é importante para sua comercialização. Por ser um algoritmo de fácil implementação, ele também pode ser vantajoso para desenvolvedores com pouca experiência em machine learning. Outra grande vantagem do K-Means é a sua eficiência computacional. Isto o torna adequado inclusive para treinamentos que envolvem grandes conjuntos de dados. A flexibilidade também é um ponto forte do K-Means. O número de clusters (k), ou seja, o total de grupos que ele deve encontrar, pode ser ajustado conforme as necessidades do problema.

K-Means em código com scikit-learn em Python

Além de ser simples de implementar e entender, o K-Means também pode ser usado diretamente através da biblioteca Scikit-learn, o que torna a tarefa mais fácil ainda. Para fazer uma demonstração simples de como você pode utilizá-lo, usaremos o conjunto de dados iris. Portanto, num código Python, faça as importações necessárias (garanta que você tem a biblioteca Scikit-learn instalada):

				
					from sklearn.datasets import load_iris
from sklearn.cluster import KMeans

				
			

Em seguida, carregamos os dados do conjunto iris. Como usaremos um método de aprendizagem não supervisionada, precisaremos apenas dos atributos do conjunto de dados. Não usaremos os rótulos.

				
					# Carrega o conjunto de dados
iris = load_iris()
X = iris.data  # Atributos: comprimentos e larguras de sépala/pétala
				
			

Após essa etapa, o algoritmo é inicializado e treinado:

				
					# Aplica agrupamento K-means com 3 clusters
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)
				
			

Veja que definimos o número inicial de centroides como 3, o que corresponde às três classes de iris. Numa implementação real, não é incomum termos que experimentar com vários valores de K para obtermos um bom agrupamento.

Por último, imprimimos os resultados obtidos:

				
					rotulos = kmeans.labels_
centros = kmeans.cluster_centers_

print("Centros dos clusters:\n", centros)
print("Rótulos para cada ponto:", rotulos)

				
			

Resultados obtidos:

				
					Centros dos clusters:
 [[5.006      3.428      1.462      0.246     ]
 [5.9016129  2.7483871  4.39354839 1.43387097]
 [6.85       3.07368421 5.74210526 2.07105263]]
Rótulos para cada ponto: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 2 2 2 1 2 2 2 2
 2 2 1 1 2 2 2 2 1 2 1 2 1 2 2 1 1 2 2 2 2 2 1 2 2 2 2 1 2 2 2 1 2 2 2 1 2
 2 1]
				
			

Opcionalmente, podemos usar a biblioteca Matplotlib para plotar os clusters obtidos e visualizar os resultados:

				
					# Plota os resultados
import matplotlib.pyplot as plt

plt.scatter(X[:, 0], X[:, 1], c=rotulos, cmap='tab20c_r', label='Dados')
plt.scatter(centros[:, 0], centros[:, 1], s=200, c='red', marker='X', label='Centros')
plt.title("Agrupamento K-Means")
plt.show()
				
			

Veja a figura obtida com os resultados:

K-Means

Imagem com IA Generativa – Dia 596

IA generativa - img596

Arte com IA generativa: imagem do dia

Todos os dias postamos um exemplo de imagem artística gerada com inteligência artificial.

Tutoriais

Postagens Mais Recentes

Outras Postagens Que Podem Interessar

Veja
Mais

Fique em contato

Se inscreva para receber nossa newsletter com novidades.

aprendiz artificial