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)


                     1.41   d ( x, y ) =   ( 2 − 3) 2 + ( 5 − 4 ) 2   = 2 = 1.41


                y = (3,4)
Distância Euclidiana
●   R³




         d ( x, y ) =   ( 2 − 3) 2 + ( 4 − 3) 2 + (5 − 3) 2   = 6 = 2.44
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/paa1
    0/seminarios/seminario4.pdf
●   http://www.ipcsit.com/vol27/43-ICICN2012-
    N20017.pdf
●   http://www.cs.uvm.edu/~xwu/kdd/Slides/Kmea
    ns-ICDM06.pdf

Kmeans

  • 1.
    K-means / K-médias Aluno: Wagner Souza Santos
  • 2.
    Roteiro ● História ● Espaço Euclidiano ● Distância Euclidiana ● Características ● Definições ● Algoritmo
  • 3.
    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.
  • 4.
    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
  • 5.
    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.
  • 6.
    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:
  • 7.
    Distância Euclidiana ● R² x = (2,5) 1.41 d ( x, y ) = ( 2 − 3) 2 + ( 5 − 4 ) 2 = 2 = 1.41 y = (3,4)
  • 8.
    Distância Euclidiana ● R³ d ( x, y ) = ( 2 − 3) 2 + ( 4 − 3) 2 + (5 − 3) 2 = 6 = 2.44
  • 9.
    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.
  • 10.
    Cluster ● Uma coleção de objetos que são similares entre si, e diferentes dos objetos pertencentes a outros clusters.
  • 11.
    Clusterização / Clustering ● É a organização dos objetos similares (em algum aspecto) em grupos. Quatro grupos (clusters)
  • 12.
    Centróide ● Representa o centro de um grupo, sendo calculado pela média de todos os objetos do grupo/cluster.
  • 13.
    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.
  • 14.
    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
  • 15.
    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
  • 16.
    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}
  • 17.
    Exemplo Objetos em um plano 2D
  • 18.
    Exemplo Passo 1:Centróides inseridos aleatoriamente
  • 19.
    Exemplo Passo 2: Atribuir a cada objeto o centróide mais próximo
  • 20.
    Exemplo Passo 3: Recalcular os centróides
  • 21.
    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.
  • 22.
    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.
  • 23.
    Prós ● Simples ● Entre os 10 algoritmos mais influentes em DataMining. ● Variações com ótimos resultados como o Bisecting K-Means.
  • 24.
    Contras ● Clusters de tamanhos diferentes. ● Clusters de diferentes densidades. ● Clusters em forma não-globular. ● Clusters vazios.
  • 25.
    Densidades Diferentes Pontos Originais K-Means (3 Clusters)
  • 26.
    Formas Não-Globulares Pontos Originais K-Means (2 Clusters)
  • 27.
  • 28.
    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
  • 29.
    Referências ● http://www.decom.ufop.br/menotti/rp102/slides /04-TiposAprendizagem.ppt ● http://www.inf.ufes.br/~claudine/courses/paa1 0/seminarios/seminario4.pdf ● http://www.ipcsit.com/vol27/43-ICICN2012- N20017.pdf ● http://www.cs.uvm.edu/~xwu/kdd/Slides/Kmea ns-ICDM06.pdf