K-means parte 2

Jacques Wainer

Métricas para clusterização

Medidas internas

(Familia de) indice de Dunn

DI = \frac{\min inter_{ij}}{\max intra_k}

onde {inter}_{ij} é alguma medida de distancia entre grupos i e j e {intra}_k é alguma medida de distancia dentro de um grupo k

Coesão implica em um intra pequeno e separação um inter gande, portanto valores maiores de indice de Dunn são preferíveis

Medidas {inter}_{ij}

Medidas {intra}_k

Dunn provavelmente nao funciona para clusterização por densidade https://hpccsystems.com/blog/DBSCAN

Silhueta

Para cada ponto i

Há mutas outras medidas internas de qualidade da clusterização,

Os criterios que se baseiam em uma visão que a distancia intra deve ser pequena e a inter grande são criterios pensados para o k-means onde os grupos são convexos, e isso nao é necessariamente verdade para clusterização pro densidade

Outras métricas:

sklearn: https://scikit-learn.org/stable/modules/classes.html#module-sklearn.metrics.cluster

Medidas externas

Se os (ou alguns dos) dados clusterizados pertencem a classes já conhecidas, mas não usadas na clusterização, então essa informação pode ser usada para avaliar a qualidade da clusterização

A maioria dos indices externos se baseaim em 4 conjuntos:

Métricas externas servem para comparar 2 clusterizacoes diferentes (se uma delas é a verdade entao é uma metrica externa, ou as 2 podem ser diferentes clusterizacoes).

Boa implementaçao de várias métricas e algoritmos

em R pacote fpc https://rdrr.io/cran/fpc/man/cluster.stats.html

Como escolher o k do k-means

Variações algoritmicas do kmeans

2 truques para big data:

Online k-means

Versão online:

para todos os dados
   compute a atribuicao
   ande com o centro um pouquinho em direcao ao dado

Variações sobre a atribuição: fuzzy C-means

https://towardsdatascience.com/fuzzy-c-means-clustering-is-it-better-than-k-means-clustering-448a0aba1ee7

https://en.wikipedia.org/wiki/Fuzzy_clustering

GMM - distancia que depende dos grupos

Nas variações anteriores, a noção de distancia se mantem. E se tivermos uma definição de distancia que depende do grupo (ou melhor dos dados do grupo)?

distancia de Mahalanobis - distancia dividido pelo desvio padrao dos dados naquela direção (aproximadamente) ver figura em http://www.ece.stonybrook.edu/~pmilder/memocode14/

isto resolveria o problema de clusters “mais compactos” - figura 2 em http://stats.stackexchange.com/questions/133656/how-to-understand-the-drawbacks-of-k-means

GMM (Gaussian MIxture Models) além de incluir a noção de distancia de Mahalanobis, inclui também a noção de graus de pertencimento.

implementacoes GMM em R

Varios pacotes implementam variações do GMM. O mais simples é o Mclust do pacote mclust http://www.rdocumentation.org/packages/mclust/functions/Mclust

Em python https://scikit-learn.org/stable/modules/generated/sklearn.mixture.GaussianMixture.html

Implementações do GMM permitem restrições no formato das gaussianas

Variational Bayesian GMM

Determina o k automaticamente - voce define o k maximo e o algoritmo define internamente o k - o algoritmo junta gaussianas quando vale a pena.

https://scikit-learn.org/stable/modules/generated/sklearn.mixture.BayesianGaussianMixture.html#sklearn.mixture.BayesianGaussianMixture

Fim do K-means e variacoes

EM (Expectation maximization)

Todos esses algoritmos se baseiam num procedimento geral de otimização (minimização ou maximização) chamado Expectation Maximization

encontre os valores de \theta que minimizam ou maximizam algo

https://en.wikipedia.org/wiki/Expectation%E2%80%93maximization_algorithm