Aprenda sobre Agrupamento K-Means, um algoritmo chave de aprendizado não supervisionado para agrupar dados em clusters. Explore seu processo, aplicações e comparações!
O K-Means Clustering é um algoritmo amplamente utilizado no domínio da aprendizagem não supervisionada, concebido para dividir um conjunto de dados em subgrupos distintos e não sobrepostos. No contexto mais alargado da aprendizagem automática (ML), este método é essencial para descobrir padrões e estruturas ocultas em dados não rotulados. O algoritmo funciona organizando os pontos de dados em um número $K$ de clusters, onde cada ponto pertence ao cluster com a média mais próxima, servindo como protótipo do grupo. grupo. Esta abordagem ajuda a minimizar a variância dentro de cada cluster, garantindo que os pontos de dados no mesmo grupo são tão semelhantes quanto possível, mantendo os diferentes grupos distintos.
O processo do K-Means é iterativo e começa com a seleção de $K$ centróides iniciais, que funcionam como pontos centrais para os clusters. Esses centróides podem ser escolhidos aleatoriamente ou por meio de técnicas de inicialização mais inteligentes, como inicialização k-means++ para melhorar a velocidade de convergência. O algoritmo passa então por duas etapas primárias até que os resultados se estabilizem:
Este ciclo repete-se até que os centróides deixem de se mover significativamente, indicando que o algoritmo convergiu. A determinação do número ideal de clusters é uma parte crítica do processo, frequentemente conseguida através de técnicas como o método do cotovelo ou através da análise da Pontuação de silhueta para medir a distância de separação entre os clusters resultantes.
O K-Means Clustering é versátil e encontra utilidade em vários sectores para tarefas de extração e análise de dados.
Enquanto os detectores de objectos modernos, como o Ultralytics YOLO11 frequentemente utilizam técnicas de regressão avançadas ou cabeças sem âncoras, o K-Means desempenhou um papel fundamental na evolução dos modelos de deteção. As iterações anteriores, como o YOLOv2 até ao YOLOv5, utilizaram o agrupamento K-Means nas dimensões da caixa delimitadora dimensões do conjunto de dadosCOCO para determinar as caixas de ancoragem óptimas. Estas âncoras pré-calculadas forneceram ao modelo Estas âncoras pré-calculadas forneceram ao modelo melhores antecedentes para prever as formas dos objectos, melhorando significativamente a estabilidade e a recuperação do treino.
É comum confundir K-Means com K-Nearest Neighbors (KNN), mas eles servem objectivos fundamentalmente diferentes.
Outro conceito relacionado é o DBSCAN, que agrupa com base na densidade e não na distância de um ponto central. Ao contrário do K-Means, o DBSCAN não requer que o número de o número de clusters a ser especificado de antemão e é melhor para lidar com outliers.
O exemplo Python a seguir demonstra como usar o K-Means para agrupar cores de pixel, uma etapa comum de passo comum de pré-processamento de dados em tarefas de visão.
import numpy as np
from sklearn.cluster import KMeans
# Simulate a small image (10x10 pixels) with 3 RGB channels
# In a real scenario, you would load an image using cv2.imread()
image_data = np.random.randint(0, 255, (10, 10, 3), dtype=np.uint8)
pixels = image_data.reshape(-1, 3)
# Apply K-Means to reduce the image to 3 dominant colors (clusters)
kmeans = KMeans(n_clusters=3, n_init="auto", random_state=42).fit(pixels)
# The cluster centers represent the dominant colors
print(f"Dominant RGB Colors:\n{kmeans.cluster_centers_}")