SlideShare ist ein Scribd-Unternehmen logo
1 von 12
K-Means
Marcos Castro
Agrupamento (clustering)
• Objetivo de um agrupamento: separar os objetos em grupos.
• Para separá-los, leva-se em conta as características dos objetos.
• Ideia: colocar em um mesmo grupo objetos que sejam similares.
• Qual o critério?
• Baseia-se em uma função de dissimilaridade.
• Essa função retorna a distância entre dois objetos.
• Exemplo de medida de dissimilaridade:
• Distância euclidiana:
2
Aplicações
• Bioinformática – agrupar sequências.
• Marketing – grupos de clientes.
• Web – agrupamento de documentos semanticamente similares.
• Etc.
3
K-Means
• Trata-se de uma técnica de agrupamento não hierárquico.
• É uma heurística.
• Busca minimizar a distância dos elementos a um conjunto de k
centros iterativamente. K é o número de clusters (grupos).
• Tem-se um conjunto de clusters onde cada cluster tem o seu centro.
• Dado um objeto, é calculada a distância (euclidiana por exemplo)
desse objeto ao centro de cada cluster para, então, determinar a qual
cluster pertence esse objeto.
4
K-Means
• O centro de cada grupo vai mudando.
• Para calcular o centro de cada grupo, basta calcular a média (mean)
dos valores dos objetos que estão naquele grupo.
• Esse algoritmo é muito rápido.
• O parâmetro K é definido pelo usuário.
5
K-Means
• Algoritmo
• 1) Escolhe-se k distintos valores para os centros dos grupos (pode ser
aleatório).
• 2) Associar cada ponto ao centro mais próximo.
• Pode-se usar a distância euclidiana.
• 3) Recalcular o centro de cada grupo.
• Utiliza-se a média.
• 4) Repetir os passos 2-3 até nenhum elemento mudar de grupo.
6
K-Means
• Vamos agrupar os seguintes dados em 2 (K = 2) grupos:
7
K-Means
• Primeiro fazemos a inicialização (imagem à direita):
8
K-Means
• Passos da execução do algoritmo (imagem à direita):
9
K-Means
• O ponto 3 está mais próximo do centroide do cluster 2 do que do
cluster 1, portanto, o 3 vai para o cluster 2.
10
Implementação em C++
• O código encontra-se no GitHub:
• https://github.com/marcoscastro/kmeans/
11
Contato
mcastrosouza@live.com
www.geeksbr.com
http://github.com/marcoscastro
www.youtube.com/c/marcoscastrosouza
https://about.me/mcastrosouza
12

Weitere ähnliche Inhalte

Was ist angesagt?

K-Means clustring @jax
K-Means clustring @jaxK-Means clustring @jax
K-Means clustring @jaxAjay Iet
 
Algoritmos Gulosos - Troco Mínimo
Algoritmos Gulosos - Troco MínimoAlgoritmos Gulosos - Troco Mínimo
Algoritmos Gulosos - Troco MínimoGabriel Albuquerque
 
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-FordCaminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-FordGabriel Albuquerque
 
Classification techniques in data mining
Classification techniques in data miningClassification techniques in data mining
Classification techniques in data miningKamal Acharya
 
Banco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - RelacionalBanco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - RelacionalDaniel Brandão
 
Redes Neurais Artificiais
Redes Neurais ArtificiaisRedes Neurais Artificiais
Redes Neurais ArtificiaisMarcos Castro
 
Ensemble methods in machine learning
Ensemble methods in machine learningEnsemble methods in machine learning
Ensemble methods in machine learningSANTHOSH RAJA M G
 
Data Mining - Clustering
Data Mining - ClusteringData Mining - Clustering
Data Mining - Clusteringiaudesc
 
Analyse de données fonctionnelles par Machines à Vecteurs de Support (SVM)
Analyse de données fonctionnelles par Machines à Vecteurs de Support (SVM) Analyse de données fonctionnelles par Machines à Vecteurs de Support (SVM)
Analyse de données fonctionnelles par Machines à Vecteurs de Support (SVM) tuxette
 
Random forest and decision tree
Random forest and decision treeRandom forest and decision tree
Random forest and decision treeAAKANKSHA JAIN
 
What is Apriori Algorithm | Edureka
What is Apriori Algorithm | EdurekaWhat is Apriori Algorithm | Edureka
What is Apriori Algorithm | EdurekaEdureka!
 
Aula06 matriz em C
Aula06 matriz em CAula06 matriz em C
Aula06 matriz em CYuri Passos
 
Cluster Analysis
Cluster AnalysisCluster Analysis
Cluster Analysisguest0edcaf
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - JavaArthur Emanuel
 
Mean shift and Hierarchical clustering
Mean shift and Hierarchical clustering Mean shift and Hierarchical clustering
Mean shift and Hierarchical clustering Yan Xu
 
Aula 1 introdução a algoritmos
Aula 1   introdução a algoritmosAula 1   introdução a algoritmos
Aula 1 introdução a algoritmosAdilio Tavares
 

Was ist angesagt? (20)

K-Means clustring @jax
K-Means clustring @jaxK-Means clustring @jax
K-Means clustring @jax
 
Algoritmos Gulosos - Troco Mínimo
Algoritmos Gulosos - Troco MínimoAlgoritmos Gulosos - Troco Mínimo
Algoritmos Gulosos - Troco Mínimo
 
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-FordCaminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
 
Classification techniques in data mining
Classification techniques in data miningClassification techniques in data mining
Classification techniques in data mining
 
Banco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - RelacionalBanco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - Relacional
 
Hierarchical clustering
Hierarchical clusteringHierarchical clustering
Hierarchical clustering
 
Redes Neurais Artificiais
Redes Neurais ArtificiaisRedes Neurais Artificiais
Redes Neurais Artificiais
 
Ensemble methods in machine learning
Ensemble methods in machine learningEnsemble methods in machine learning
Ensemble methods in machine learning
 
Data Mining - Clustering
Data Mining - ClusteringData Mining - Clustering
Data Mining - Clustering
 
Aula10 sql-ddl
Aula10 sql-ddlAula10 sql-ddl
Aula10 sql-ddl
 
Analyse de données fonctionnelles par Machines à Vecteurs de Support (SVM)
Analyse de données fonctionnelles par Machines à Vecteurs de Support (SVM) Analyse de données fonctionnelles par Machines à Vecteurs de Support (SVM)
Analyse de données fonctionnelles par Machines à Vecteurs de Support (SVM)
 
Random forest and decision tree
Random forest and decision treeRandom forest and decision tree
Random forest and decision tree
 
What is Apriori Algorithm | Edureka
What is Apriori Algorithm | EdurekaWhat is Apriori Algorithm | Edureka
What is Apriori Algorithm | Edureka
 
Aula06 matriz em C
Aula06 matriz em CAula06 matriz em C
Aula06 matriz em C
 
Cluster Analysis
Cluster AnalysisCluster Analysis
Cluster Analysis
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - Java
 
Decision tree
Decision treeDecision tree
Decision tree
 
Mean shift and Hierarchical clustering
Mean shift and Hierarchical clustering Mean shift and Hierarchical clustering
Mean shift and Hierarchical clustering
 
Aula 1 introdução a algoritmos
Aula 1   introdução a algoritmosAula 1   introdução a algoritmos
Aula 1 introdução a algoritmos
 
Knn 160904075605-converted
Knn 160904075605-convertedKnn 160904075605-converted
Knn 160904075605-converted
 

Andere mochten auch

Backtracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosBacktracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosMarcos Castro
 
Expressões Regulares com Python 3
Expressões Regulares com Python 3Expressões Regulares com Python 3
Expressões Regulares com Python 3Marcos Castro
 
Python - Dicionários
Python - DicionáriosPython - Dicionários
Python - DicionáriosMarcos Castro
 
Análise Assintótica
Análise AssintóticaAnálise Assintótica
Análise AssintóticaMarcos Castro
 
Listas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosListas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosMarcos Castro
 
Busca em largura - BFS
Busca em largura - BFSBusca em largura - BFS
Busca em largura - BFSMarcos Castro
 
Programação dinâmica
Programação dinâmicaProgramação dinâmica
Programação dinâmicaMarcos Castro
 
Problema do Caixeiro Viajante
Problema do Caixeiro ViajanteProblema do Caixeiro Viajante
Problema do Caixeiro ViajanteMarcos Castro
 
Algoritmo de Kosaraju
Algoritmo de KosarajuAlgoritmo de Kosaraju
Algoritmo de KosarajuMarcos Castro
 
Maratona de Programação com STL
Maratona de Programação com STLMaratona de Programação com STL
Maratona de Programação com STLMarcos Castro
 
Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)Marcos Castro
 
Algoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMPAlgoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMPMarcos Castro
 
Kmeans
KmeansKmeans
KmeansWagner
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de ProgramaçãoMarcos Castro
 
Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)Marcos Castro
 
Metaheurística Simulated Annealing
Metaheurística Simulated AnnealingMetaheurística Simulated Annealing
Metaheurística Simulated AnnealingMarcos Castro
 

Andere mochten auch (20)

Backtracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosBacktracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntos
 
Tabela Hash
Tabela HashTabela Hash
Tabela Hash
 
Expressões Regulares com Python 3
Expressões Regulares com Python 3Expressões Regulares com Python 3
Expressões Regulares com Python 3
 
Python - Dicionários
Python - DicionáriosPython - Dicionários
Python - Dicionários
 
Python - Set
Python - SetPython - Set
Python - Set
 
Fila de prioridades
Fila de prioridadesFila de prioridades
Fila de prioridades
 
Binary heap
Binary heapBinary heap
Binary heap
 
Análise Assintótica
Análise AssintóticaAnálise Assintótica
Análise Assintótica
 
Listas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosListas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionários
 
Busca em largura - BFS
Busca em largura - BFSBusca em largura - BFS
Busca em largura - BFS
 
Programação dinâmica
Programação dinâmicaProgramação dinâmica
Programação dinâmica
 
Problema do Caixeiro Viajante
Problema do Caixeiro ViajanteProblema do Caixeiro Viajante
Problema do Caixeiro Viajante
 
Algoritmo de Kosaraju
Algoritmo de KosarajuAlgoritmo de Kosaraju
Algoritmo de Kosaraju
 
Maratona de Programação com STL
Maratona de Programação com STLMaratona de Programação com STL
Maratona de Programação com STL
 
Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)
 
Algoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMPAlgoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMP
 
Kmeans
KmeansKmeans
Kmeans
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de Programação
 
Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)
 
Metaheurística Simulated Annealing
Metaheurística Simulated AnnealingMetaheurística Simulated Annealing
Metaheurística Simulated Annealing
 

Ähnlich wie K-Means Clustering Explained

Agrupamento de sequências biológicas
Agrupamento de sequências biológicasAgrupamento de sequências biológicas
Agrupamento de sequências biológicasMarcos Castro
 
Redes neurais e lógica fuzzy
Redes neurais e lógica fuzzyRedes neurais e lógica fuzzy
Redes neurais e lógica fuzzyRenato Ximenes
 
Análise de Agrupamentos e Regionalização
Análise de Agrupamentos e RegionalizaçãoAnálise de Agrupamentos e Regionalização
Análise de Agrupamentos e RegionalizaçãoVitor Vieira Vasconcelos
 
Algoritmos de Agrupamento - Aprendizado não supervisionado
Algoritmos de Agrupamento - Aprendizado não supervisionadoAlgoritmos de Agrupamento - Aprendizado não supervisionado
Algoritmos de Agrupamento - Aprendizado não supervisionadoFabrício Barth
 
Sessao 6.pdf para aproveitametno em sessões
Sessao 6.pdf para aproveitametno em sessõesSessao 6.pdf para aproveitametno em sessões
Sessao 6.pdf para aproveitametno em sessõesJoaquimOliveiraBapti1
 

Ähnlich wie K-Means Clustering Explained (7)

Agrupamento de sequências biológicas
Agrupamento de sequências biológicasAgrupamento de sequências biológicas
Agrupamento de sequências biológicas
 
Redes neurais e lógica fuzzy
Redes neurais e lógica fuzzyRedes neurais e lógica fuzzy
Redes neurais e lógica fuzzy
 
Análise de Agrupamentos (Clusters)
Análise de Agrupamentos (Clusters)Análise de Agrupamentos (Clusters)
Análise de Agrupamentos (Clusters)
 
Análise de Agrupamentos e Regionalização
Análise de Agrupamentos e RegionalizaçãoAnálise de Agrupamentos e Regionalização
Análise de Agrupamentos e Regionalização
 
Algoritmos de Agrupamento - Aprendizado não supervisionado
Algoritmos de Agrupamento - Aprendizado não supervisionadoAlgoritmos de Agrupamento - Aprendizado não supervisionado
Algoritmos de Agrupamento - Aprendizado não supervisionado
 
Sessao 6.pdf para aproveitametno em sessões
Sessao 6.pdf para aproveitametno em sessõesSessao 6.pdf para aproveitametno em sessões
Sessao 6.pdf para aproveitametno em sessões
 
kNN Algorithm
kNN AlgorithmkNN Algorithm
kNN Algorithm
 

Mehr von Marcos Castro

Árvores de Decisão
Árvores de DecisãoÁrvores de Decisão
Árvores de DecisãoMarcos Castro
 
Colored de Bruijn Graphs
Colored de Bruijn GraphsColored de Bruijn Graphs
Colored de Bruijn GraphsMarcos Castro
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de ProgramaçãoMarcos Castro
 
Ferramentas para Bioinformática
Ferramentas para BioinformáticaFerramentas para Bioinformática
Ferramentas para BioinformáticaMarcos Castro
 
A importância da Bioinformática
A importância da BioinformáticaA importância da Bioinformática
A importância da BioinformáticaMarcos Castro
 
Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)Marcos Castro
 
Bioinformática com Biopython
Bioinformática com BiopythonBioinformática com Biopython
Bioinformática com BiopythonMarcos Castro
 
Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STLMarcos Castro
 

Mehr von Marcos Castro (11)

Árvores de Decisão
Árvores de DecisãoÁrvores de Decisão
Árvores de Decisão
 
Colored de Bruijn Graphs
Colored de Bruijn GraphsColored de Bruijn Graphs
Colored de Bruijn Graphs
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de Programação
 
Bioinformática
BioinformáticaBioinformática
Bioinformática
 
Arquivos FASTQ
Arquivos FASTQArquivos FASTQ
Arquivos FASTQ
 
Ferramentas para Bioinformática
Ferramentas para BioinformáticaFerramentas para Bioinformática
Ferramentas para Bioinformática
 
A importância da Bioinformática
A importância da BioinformáticaA importância da Bioinformática
A importância da Bioinformática
 
Bioinformática
BioinformáticaBioinformática
Bioinformática
 
Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)
 
Bioinformática com Biopython
Bioinformática com BiopythonBioinformática com Biopython
Bioinformática com Biopython
 
Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STL
 

K-Means Clustering Explained

  • 2. Agrupamento (clustering) • Objetivo de um agrupamento: separar os objetos em grupos. • Para separá-los, leva-se em conta as características dos objetos. • Ideia: colocar em um mesmo grupo objetos que sejam similares. • Qual o critério? • Baseia-se em uma função de dissimilaridade. • Essa função retorna a distância entre dois objetos. • Exemplo de medida de dissimilaridade: • Distância euclidiana: 2
  • 3. Aplicações • Bioinformática – agrupar sequências. • Marketing – grupos de clientes. • Web – agrupamento de documentos semanticamente similares. • Etc. 3
  • 4. K-Means • Trata-se de uma técnica de agrupamento não hierárquico. • É uma heurística. • Busca minimizar a distância dos elementos a um conjunto de k centros iterativamente. K é o número de clusters (grupos). • Tem-se um conjunto de clusters onde cada cluster tem o seu centro. • Dado um objeto, é calculada a distância (euclidiana por exemplo) desse objeto ao centro de cada cluster para, então, determinar a qual cluster pertence esse objeto. 4
  • 5. K-Means • O centro de cada grupo vai mudando. • Para calcular o centro de cada grupo, basta calcular a média (mean) dos valores dos objetos que estão naquele grupo. • Esse algoritmo é muito rápido. • O parâmetro K é definido pelo usuário. 5
  • 6. K-Means • Algoritmo • 1) Escolhe-se k distintos valores para os centros dos grupos (pode ser aleatório). • 2) Associar cada ponto ao centro mais próximo. • Pode-se usar a distância euclidiana. • 3) Recalcular o centro de cada grupo. • Utiliza-se a média. • 4) Repetir os passos 2-3 até nenhum elemento mudar de grupo. 6
  • 7. K-Means • Vamos agrupar os seguintes dados em 2 (K = 2) grupos: 7
  • 8. K-Means • Primeiro fazemos a inicialização (imagem à direita): 8
  • 9. K-Means • Passos da execução do algoritmo (imagem à direita): 9
  • 10. K-Means • O ponto 3 está mais próximo do centroide do cluster 2 do que do cluster 1, portanto, o 3 vai para o cluster 2. 10
  • 11. Implementação em C++ • O código encontra-se no GitHub: • https://github.com/marcoscastro/kmeans/ 11