kmeans
DESCRIPTION
Introdução ao algoritmo K-meansTRANSCRIPT
K-means / K-médias
Aluno: Wagner Souza Santos
Roteiro
● História
● Espaço Euclidiano
● Distância Euclidiana
● Características
● Definições
● Algoritmo
História● Em 1957, Władysław Hugo Dionizy Steinhaus
propõe o método k-means de clusterização.
● Em 1957, Stuart Lloyd propõe um algoritmo-base para o método k-means, porém este seria usado como um técnica de modulação de pulso de código, representar digitalmente amostras de sinais analógicos. Este algoritmo não foi publicado fora da Bell labs até 1982.
História● A primeiro uso do termo k-means foi em 1967
por James MacQueen em seu artigo intitulado: “Some Methods for Classification and Analysis of Multivariate Observations”.
● Em 1965, E. W. Forgy publicou o mesmo algoritmo que Sturart Lloyd. Esse algoritmo também também é conhecido como Lloyd-Forgy
Espaço Euclidiano● O espaço euclidiano n-dimensional (n ∈
N) é o produto cartesiano de n fatores iguais a R: R^n = R × R × . . . . . . × R.
● Se n = 1, R¹ = R é a reta; se n = 2, R² é o plano e se n = 3, R³ é o espaço euclidiano tridimensional.
Distância Euclidiana● É a distância entre dois pontos, que pode
ser provada pela aplicação repetida do teorema de Pitágoras.
● A distância euclidiana entre os pontos P(p1, p2, …, pn) e Q(q1,q2, ..., qn), num espaço euclidiano n-dimensional, é definida como:
Distância Euclidiana● R²
x = (2,5)
y = (3,4)
( ) ( ) 41.124532),( 22 ==−+−=yxd1.41
Distância Euclidiana● R³
( ) ( ) 44.26)35(3432),( 222 ==−+−+−=yxd
Características● O algoritmo K-means pertence a classe
dos algoritmos de apredizado de máquina não supervisionados.
● Não há uma rotulação dos dados a priori.
● Aprendizado por observação.
Cluster● Uma coleção de objetos que são
similares entre si, e diferentes dos objetos pertencentes a outros clusters.
Clusterização / Clustering
● É a organização dos objetos similares (em algum aspecto) em grupos.
Quatro grupos (clusters)
Centróide● Representa o centro de um grupo, sendo
calculado pela média de todos os objetos do grupo/cluster.
Ideia● (PASSO 1) Atribuem-se valores iniciais para os
protótipos seguindo algum critério.
● (PASSO 2) Atribui-se cada objeto ao grupo cujo protótipo possua maior similaridade com o objeto.
● (PASSO 3) Recalcula-se o valor do centróide de cada grupo, como sendo a média dos objetos atuais do grupo.
● (PASSO 4) Repete-se os passos 2 e 3 até que os grupos se estabilizem.
Complexidade● O( n * K * I * d ), onde:
– n = total de pontos
– K = número de clusters
– I = número de iterações
– d = número de atributos/características
Pseudo-Código● Sendo:
– {x1, x2, ..., xn} = estrutura de dados contendo valores a serem clusterizados. Por exemplo, uma matriz esparça
– K = total de clusters
– A = conjuntos de atributos que irão inteferir na separação
– {c1, c2, ..., ck} = conjunto de centróides
– {u1, u2, ..., uk} = estrutura de dados contendo os elementos dos clusters
Pseudo-Código● K-Means({x1, x2, ..., xn},K,A) #entrada
(c1, c2, ..., cK) <--- cria_centroids({x1, x2, ..., xn}, K) #criando k centróides
Para cada cluster K faça:
uk <--- ck #atribuindo cada centróide a um cluster
enquando o criterio de parada não for atingido faça: #por exmeplo, enquando houver modificações nos clusters ou um trocou=true
para cada cluster K faça:cluster[k] = {}para cada ponto P faça: #o total de pontos é n
atribui_ponto_ao_cluster(P, A, cluster) #calcula-se a distância do ponto ao centróide de cada cluster e este ponto irá permanecer no cluster que tiver a menor distância
para cada cluster K faça:uk <-- novo_centroid(K) #recalculando os centródes
● return {u1, u2, ..., uk}
Exemplo
Objetos em um plano 2D
Exemplo
Passo 1:Centróides inseridos aleatoriamente
Exemplo
Passo 2: Atribuir a cada objeto o centróide mais próximo
Exemplo
Passo 3: Recalcular os centróides
Bisecting K-Means● Variação hierárquica do algoritmo k-
means, que em cada iteração, seleciona um grupo e o divide, de forma a gerar uma hierarquia.
Bisecting K-Means● Selecionar um cluster para dividir.
● Encontrar 2 sub-clusters usando o algoritmo K-means básico.
● Repetir o passo 2 por uma quantidade fixa de vezes e escolher a divisão que produzir o cluster com a maior similaridade global. (Para cada cluster, sua similaridade é a similaridade média de pares de documentos)
● Repetir os passos 1, 2 e 3 até que o número desejado de clusters seja alcançado.
Prós● Simples
● Entre os 10 algoritmos mais influentes em DataMining.
● Variações com ótimos resultados como o Bisecting K-Means.
Contras● Clusters de tamanhos diferentes.
● Clusters de diferentes densidades.
● Clusters em forma não-globular.
● Clusters vazios.
Densidades Diferentes
Pontos Originais K-Means (3 Clusters)
Formas Não-Globulares
Pontos Originais K-Means (2 Clusters)
Dúvidas?
Referências● http://en.wikipedia.org/wiki/K-
means_clustering
● http://en.wikipedia.org/wiki/Euclidean_space
● http://en.wikipedia.org/wiki/Pulse-code_modulation
● http://pt.wikipedia.org/wiki/Espa%C3%A7o_euclidiano
● http://nlp.stanford.edu/IR-book/html/htmledition/k-means-1.html
Referências● http://www.decom.ufop.br/menotti/rp102/slides
/04-TiposAprendizagem.ppt
● http://www.inf.ufes.br/~claudine/courses/paa10/seminarios/seminario4.pdf
● http://www.ipcsit.com/vol27/43-ICICN2012-N20017.pdf
● http://www.cs.uvm.edu/~xwu/kdd/Slides/Kmeans-ICDM06.pdf