kmeans

29
K-means / K-médias Aluno: Wagner Souza Santos

Upload: wagner

Post on 26-May-2015

2.308 views

Category:

Education


8 download

DESCRIPTION

Introdução ao algoritmo K-means

TRANSCRIPT

Page 1: Kmeans

K-means / K-médias

Aluno: Wagner Souza Santos

Page 2: Kmeans

Roteiro

● História

● Espaço Euclidiano

● Distância Euclidiana

● Características

● Definições

● Algoritmo

Page 3: Kmeans

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.

Page 4: Kmeans

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

Page 5: Kmeans

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.

Page 6: Kmeans

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:

Page 7: Kmeans

Distância Euclidiana● R²

x = (2,5)

y = (3,4)

( ) ( ) 41.124532),( 22 ==−+−=yxd1.41

Page 8: Kmeans

Distância Euclidiana● R³

( ) ( ) 44.26)35(3432),( 222 ==−+−+−=yxd

Page 9: Kmeans

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.

Page 10: Kmeans

Cluster● Uma coleção de objetos que são

similares entre si, e diferentes dos objetos pertencentes a outros clusters.

Page 11: Kmeans

Clusterização / Clustering

● É a organização dos objetos similares (em algum aspecto) em grupos.

Quatro grupos (clusters)

Page 12: Kmeans

Centróide● Representa o centro de um grupo, sendo

calculado pela média de todos os objetos do grupo/cluster.

Page 13: Kmeans

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.

Page 14: Kmeans

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

Page 15: Kmeans

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

Page 16: Kmeans

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}

Page 17: Kmeans

Exemplo

Objetos em um plano 2D

Page 18: Kmeans

Exemplo

Passo 1:Centróides inseridos aleatoriamente

Page 19: Kmeans

Exemplo

Passo 2: Atribuir a cada objeto o centróide mais próximo

Page 20: Kmeans

Exemplo

Passo 3: Recalcular os centróides

Page 21: Kmeans

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.

Page 22: Kmeans

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.

Page 23: Kmeans

Prós● Simples

● Entre os 10 algoritmos mais influentes em DataMining.

● Variações com ótimos resultados como o Bisecting K-Means.

Page 24: Kmeans

Contras● Clusters de tamanhos diferentes.

● Clusters de diferentes densidades.

● Clusters em forma não-globular.

● Clusters vazios.

Page 25: Kmeans

Densidades Diferentes

Pontos Originais K-Means (3 Clusters)

Page 26: Kmeans

Formas Não-Globulares

Pontos Originais K-Means (2 Clusters)

Page 27: Kmeans

Dúvidas?

Page 28: Kmeans

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

Page 29: Kmeans

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