Kmeans

Preview:

DESCRIPTION

Introdução ao algoritmo K-means

Citation preview

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