--- title: "O algoritmo k-means clustering" url: https://www.blog.psicometriaonline.com.br/o-algoritmo-k-means-clustering canonical: https://www.blog.psicometriaonline.com.br/o-algoritmo-k-means-clustering language: pt-BR published: 2025-11-13T13:30:04.000Z updated: 2026-03-30T13:49:02.590Z modified: 2026-03-30T13:49:02.590Z author: "Alessandro Reis" categories: ["Inteligência artificial"] tags: ["machine learning"] description: "Entenda passo a passo como o algoritmo k-means agrupa dados por similaridade e descubra suas variações e aplicações." source: Blog Psicometria Online --- # O algoritmo k-means clustering > Imagine que você está organizando uma festa e distribui grupos de convidados para mesas, mas sem lugares marcados. Aos poucos, as pessoas se movem até se sentirem confortáveis entre amigos. Depois de algumas rodadas de “mudanças de mesa” e “recontagem de amigos à volta”, o sistema fica estáve... Imagine que você está organizando uma festa e distribui grupos de convidados para mesas, mas sem lugares marcados. Aos poucos, as pessoas se movem até se sentirem confortáveis entre amigos. ![metáfora das mesas na festa para o algoritmo k-means.](/uploads/2025-11_k-means-clustering-mesas.png) Depois de algumas rodadas de “mudanças de mesa” e “recontagem de amigos à volta”, o sistema fica estável. Em outras palavras, cada convidado está em uma mesa onde seu grupo faz sentido. O algoritmo *k‑means clustering* faz algo semelhante com dados: ele organiza as observações *clusters* (i.e., as mesas) de modo que, dentro de cada grupo, as observações (i.e., os convidados de uma mesma mesa) sejam semelhantes; em contrapartida, as diferenças entre grupos (i.e., os convidados de diferentes mesas) são maiores. Assim, o algoritmo *k-means* nos ajuda a revelar padrões escondidos em [grandes volumes de dados](/big-data-e-psicologia). ## Uma definição formal do algoritmo *k*–*means* O *k-means* é um algoritmo de [aprendizagem não supervisionada](/aprendizagem-supervisionada-e-nao-supervisionada). Em outras palavras, ele trabalha com dados que não precisam ser previamente rotulados ou “compreendidos”. Seu objetivo é particionar um conjunto de *n* observações em *k* *clusters*, de modo que cada observação pertença ao *cluster* cujo centróide (média dos pontos no *cluster*) essa observação esteja mais próxima. Consequentemente, o *k-means* busca **minimizar a soma das distâncias quadráticas** entre cada ponto e seu centróide, garantindo a máxima coesão dentro dos grupos (Kavlakoglu & Winland, n.d.). Além disso, é importante destacar que, no algoritmo *k-means*, não há variável-alvo (*label*) como em problemas de classificação. Em outras palavras o algoritmo *k-means* não prevê valores presentes no banco de dados (como na [regressão logística](/o-que-e-regressao-logistica)). Ao invés disso, o algoritmo *k-means* “descobre” a estrutura nos dados por similaridade. Isso o torna útil, sobretudo, para explorar perfis, identificar grupos e gerar insights preliminares sobre a estrutura dos dados. ## Funcionamento passo a passo do algoritmo *k-means* O funcionamento do algoritmo *k-means* é intuitivo, e compreendê-lo pode te ajudar a usar e a implementar a técnica no R ou em outro ambiente estatístico. Em síntese, o algoritmo *k-mean*s pode ser resumido em cinco etapas principais. **1\. Escolher o número de clusters (*k*):** você define de antemão o valor de *k*. Sim, esse ponto exige alguma fundamentação teórica e/ou empírica. Essa escolha depende de conhecimento prévio, de testes empíricos ou de métodos como o do “cotovelo” (*scree plot*), do coeficiente de silhueta e de índices de Calinski–Harabasz ou de Davies–Bouldin. ![algoritmo k-means, etapa 1.](/uploads/2025-11_k-means-etapa-1.jpg) **2\. Inicializar os centróides:** selecionar *k* pontos iniciais, aleatoriamente ou usando o método *k-means*++ (mais avançado, que melhora a escolha dos centróides iniciais). Observe que, daqui em diante, o processo é automatizado. Você só precisou definir o valor de *k* e, eventualmente, de algum outro hiperparâmetro, como quantas iterações (passo 5) serão feitas. ![algoritmo k-means, etapa 2.](/uploads/2025-11_k-means-etapa-2.jpg) **3\. Atribuir observações aos *clusters*:** calcular a distância (geralmente, a euclidiana) de cada ponto em relação aos *k*s centróides. Em seguida, atribuir cada ponto ao *cluster* cujo centróide está mais próximo. ![algoritmo k-means, etapa 3.](/uploads/2025-11_k-means-etapa-3.jpg) **4\. Atualizar os centróides:** para cada *cluster*, recalcular a média (centróide) das observações que lhe foram atribuídas; esse será o centróide atualizado de cada *cluster*. ![algoritmo k-means, etapa 4.](/uploads/2025-11_k-means-etapa-4.jpg) **5\. Repetir (iterar) até a convergência:** repetir os passos 3 e 4 até que ocorra convergência. Por exemplo, um critério de convergência pode ser examinar se os centróides mudam muito pouco ou se as atribuições dos pontos aos *clusters* se estabilizam. ![algoritmo k-means, etapa 5.](/uploads/2025-11_k-means-etapa-5.jpg) Em resumo, o processo é iterativo e converge para uma solução estável, minimizando a variabilidade interna dos grupos (*within-cluster sum of squares*, WCSS). Por fim, em termos de interpretação, cada *cluster* representa um subgrupo de observações semelhantes. O significado desses agrupamentos dependerá da pergunta e da área de pesquisa onde o algoritmo é aplicado. ## Limitações do algoritmo *k-means* Embora útil, o algoritmo *k-means* possui limitações que merecem atenção. Primeiramente, ele é sensível a *outliers*, pois pontos extremos podem distorcer a média e deslocar os centróides. Além disso, o método pressupõe grupos aproximadamente esféricos. Ou seja, ele pode falhar quando os *clusters* têm formatos muito distintos. Por fim, o resultado pode depender da inicialização dos centróides. Em outras palavras, a solução do algoritmo pode convergir a um mínimo local, dependendo da inicialização. Dessa forma, recomenda-se executar o algoritmo diversas vezes com diferentes sementes (*seeds*) ou empregar variações como o *k-means*++ para obter resultados mais estáveis. ## Principais variações do algoritmo *k*\-means Atualmente, existem dezenas de variações do algoritmo *k-means*, formando uma extensa “família *k*” de algoritmos de *clustering*. Em seguida, apresentamos as principais variações na Tabela 1. Variação do algoritmo Descrição técnica Aspectos práticos Exemplos *K-means*++ Aperfeiçoa a escolha inicial dos centróides, por meio de seleção probabilística e distâncias maiores entre pontos Aumenta a estabilidade e reduz o risco de convergência a mínimos locais ruins, embora ainda dependa da escolha de *k* Singh (2025) *K-medoids* (*Partitioning Around Medoids*, PAM) Usa o ponto mais central como referência (*medoid*), ao invés da média Mais robusto a *outliers* e adequado a dados heterogêneos, mas com custo computacional maior Kaufman e Rousseeuw (1990) *K-modes* Adapta o método para variáveis categóricas, substituindo médias por modas Ideal para dados qualitativos, mas sensível à codificação das categorias e à escolha da métrica Costa e Silva (2022) *K-prototypes* Combina *k-means* (para variáveis numéricas) e *k-modes* (para categóricas) Útil em bases mistas, porém exige calibrar pesos entre dimensões numéricas e categórias; diferenças de escala podem distorcer resultados Huang (1998) *Hierarchical* + *k-means* híbrido Integra métodos hierárquicos (para definir número inicial de *clusters*) e *k-means* (para refinamento final) Une visão hierárquica global e ajuste local dos *clusters*, mas demanda mais processamento e sensibilidade à métrica de ligação Morais et al. (2024) *Mini-batch k-means* Executa o *k*\-means em pequenos lotes de dados a cada iteração. Altamente escalável para *big data* e *streaming*, embora possa reduzir a precisão dos centróides em relação ao método completo Scikit-Learn (n.d.) *Tabela 1. Variações do algoritmo k-means.* ## Exemplos de aplicações do algoritmo *k-means* em pesquisas brasileiras O algoritmo *k-means* tem sido amplamente empregado em estudos brasileiros, tanto em ciências sociais quanto em análises de políticas públicas. - **Saúde**: Alves et al. (2020) analisaram as 27 unidades federativas do Brasil usando o *k-means* não hierárquico com variáveis epidemiológicas (incidência, prevalência, letalidade) para agrupar estados conforme padrões de pandemia de COVID-19. - **Segurança pública**: Costa et al. (2022) aplicaram o método de *clustering* não supervisionado (incluindo *k-means*) para agrupar municípios de Pernambuco conforme indicadores diversos, com vistas a perfis territoriais em função dos tipos de crimes cometidos. - **Finanças**: Oliveira (2024) estudou os balanços patrimoniais de bancos brasileiros com *k-means* (distância euclidiana) para identificar grupos de instituições com modelos de negócio similares. - **Educação**: Silva (2025) aplicou o algoritmo *k-means* para segmentar municípios brasileiros segundo perfil educacional, usando microdados do INEP e validações com coeficiente de silhueta e método do cotovelo. Em síntese, esses exemplos mostram que o *k-means* é flexível e ocorre em diferentes domínios (saúde, segurança pública, finanças, educação) no contexto brasileiro. ## Referências Alves, H. J. P., Fernandes, F. A., Lima, K. P., Batista, B. D. O., & Fernandes, T. J. (2020). A pandemia da COVID-19 no Brasil: Uma aplicação do método de clusterização *k-means*. *Research, Society and Development*, *9*(10), Article e5829109059. https://doi.org/10.33448/rsd-v9i10.9059 Costa, J. C. O. R., & Silva, M. M. (2022). A clustering-based approach for identifying groups of municipalities to support the direction of public security policies. *Pesquisa Operacional*, *42*, Article e257930. https://doi.org/10.1590/0101-7438.2022.042.00257930 Huang, Z. (1998). Extensions to the k-means algorithm for clustering large data sets with categorical values. *Data Mining and Knowledge Discovery*, *2*, 283–304. https://doi.org/10.1023/A:1009769707641 Kaufman, L., & Rousseeuw, P. J. (1990). *Finding groups in data: An introduction to cluster analysis*. John Wiley & Sons, Inc. https://doi.org/10.1002/9780470316801 Kavlakoglu, E., & Winland, V. (n.d.). What is k-means clustering? *IBM*. https://www.ibm.com/think/topics/k-means-clustering Morais, A. P. B., Dias, M. S., Santos, B. S., Lima, R. H. P., & Andrade, P. R. L. (2024). Clustering techniques and innovation-based comparison in Londrina and Region companies. *Semina: Ciências Exatas e Tecnológicas*, *45*, Article e49522. https://doi.org/10.5433/1679-0375.2024.v45.49522 Oliveira, M. (2024). Estratégias de gestão bancária no Brasil: Uma análise de clusters entre 2000 e 2022. In *52º Encontro Nacional de Economia*. https://www.anpec.org.br/encontro/2024/submissao/files\_I/i4-a44c414961b3b912e078406d91004f37.pdf Scikit-Learn. (n.d.). *MiniBatchKMeans* \[API reference v. 1.7.2 (stable)\]. https://scikit-learn.org/stable/modules/generated/sklearn.cluster.MiniBatchKMeans.html Silva, M. L. M. (2025). *Desigualdades educacionais no Brasil: Uma análise por clusterização de indicadores educacionais e desempenho escolar* \[Trabalho de Conclusão de Curso, Universidade Federal do Ceará\]. Repositório Institucional da UFC. http://repositorio.ufc.br/handle/riufc/80677 Singh, A. (2025, 1 de julho). K-means clustering: A deep dive into unsupervised learning. *Medium*. https://medium.com/@abhaysingh71711/k-means-clustering-a-deep-dive-into-unsupervised-learning-81213f56cfc9 ## Como citar este post > **Como citar este artigo:** Reis, A. (2025, 13 de novembro). O algoritmo k-means clustering. *Blog Psicometria Online*. https://www.blog.psicometriaonline.com.br/o-algoritmo-k-means-clustering