Edit page

Clustering

Os algoritmos de clustering são um exemplo de unsupervised learning, em que o conjunto de treino é constituído por observações de DD de variáveis, sem nenhum rótulo. O objetivo é agrupar as observações de acordo com a sua semelhança.

Os dois principais métodos de clustering geram centros do cluster, chamados centroids, que representam os pontos pertencentes a esse cluster. Dado que o número KK de clusters tende a ser muito mais pequeno do que o número de pontos, acabamos com uma representação comprimida do mesmo conjunto de dados.

K-Means Clustering

O conjunto de treino, X=(x1,x2,...,xN)X = (x_1, x_2, ..., x_N), consiste em NN observações sem rótulos. O objetivo é agrupar estas observações em KK grupos distintos, chamados clusters. O modelo utiliza funções de distância, como a distância euclidiana representada abaixo, para agrupar as observações em clusters.

d2(x,y)=xy=j=1D(xjyj)2d_2(x, y) = \| x - y \| = \sqrt{\sum_{j=1}^{D}(x_j - y_j)^2}

No final, obtemos KK conjuntos chamados clusters (C1,C2,...,CK)(C_1, C_2, ..., C_K), em que onde o cluster CkC_k agrupa todos os pontos mais próximos de ckc_k do que todos os restantes centroids.

Ck={xd2(x,y)=minj=1,...,Kd2(x,cj)}C_k = \{x \mid d_2(x, y) = \min_{j=1,...,K} d_2(x, c_j)\}

Obtemos também KK vetores chamados centroids (c1,c2,...,cK)(c_1, c_2, ..., c_K), que correspondem ao valor médio dos pontos pertencentes ao cluster CkC_k.

ck=1CkxCkxc_k = \frac{1}{|C_k|} \cdot \sum_{x \in C_k} x

Assim, podemos definir o erro da solução de clustering de forma intuitiva.

E=k=1K(xCkxck2)=k=1K(xCkd2(x,ck)2)E = \sum_{k=1}^{K}(\sum_{x \in C_k} \|x - c_k \|^2) = \sum_{k=1}^{K}(\sum_{x \in C_k} d_2(x, c_k)^2)

Derivando a expressão do erro, concluímos que os centroids que minimizam o erro são os pontos médios de cada um dos clusters.

ct=1CtxCtxc_t = \frac{1}{|C_t|} \cdot \sum_{x \in C_t} x

Contudo, não podemos simplesmente calcular cada centroid. Primeiramente, temos de associar corretamente cada ponto a um cluster. Só aí o resultado anterior se torna válido. Para tal, é aplicado o algoritmo especificado na secção seguinte.

Algoritmo

É utilizado um processo iterativo, em que, inicializando os centroids com valores aleatórios, se associada cada ponto ao centroid mais próximo. De seguida, os novos centroids são calculados através da expressão anteriormente referida. O processo é repetido até se dar a convergência da solução.

Inicializar K centroids de forma aleatória;
do {
	Associar cada ponto x ao centroid mais próximo;
	Calcular os novos centroids;
}
until (|erro_novo - erro_velho| < threshold ou iterações máximas excedidas)

O clustering final vai depender da inicialização. O valor de KK foi assumido como sabido. Contudo, nem sempre sabemos qual o melhor valor de KK. Assim, é usual realizar o algoritmo diversas vezes para diferentes valores de KK, escolhendo o KK que produz o melhor resultado. Este método é bastante sensível a outliers e não é bom para descobrir clusters com formas não convexas, dado que apenas descobre clusters com simetria esférica.

EM Clustering

Este método descreve cada cluster como uma distribuição multi variada. Assim, cada observação tem uma probabilidade de pertencer a cada um dos clusters. Este é um método de soft clustering, em contraste como os métodos de hard clustering (como o método anterior), pois permite que cada observação pertence a mais do que um cluster. Este método permite também saber qual a forma do cluster.

Gaussian Mixture

Uma gaussian mixture é uma combinação de distribuição normais multivariada, em que cada uma destas tem um peso associado.

p(x)=k=1K(πkN(xμk,Σk)) em que 0πk1 e k=1Kπk=1p(x) = \sum_{k=1}^{K} (\pi_k \cdot \mathcal{N}(x \mid \mu_k, \Sigma_k)) \text{ em que } 0 \leq \pi_k \leq 1 \text { e } \sum_{k=1}^{K} \pi_k = 1

A partir desta expressão, e com recurso ao teorema de Bayes, chegamos à expressão do logaritmo da função de máxima verosimilhança.

logP(Xπ,μ,Σ)=η=1Nlog(k=1KπkN(xημk,Σk))\log{P(X \mid \pi, \mu, \Sigma) = \sum_{\eta = 1}^{N} \log{(\sum_{k=1}^{K} \pi_k \cdot \mathcal{N}(x_{\eta} \mid \mu_k, \Sigma_k))}}

Algoritmo

O algortimo consiste, então, em maximizar a função de log-verosimilhança, com respeito aos parâmetros dos vetores de médias, matrizes de covariância e mixing coefficientes. Este compreende 4 etapas.

Inicialização

Nesta etapa escolhe-se o número de clusters KK e inicializam-se os vetores de médias μk\mu_k (geralmente com valores arbitrários), as matrizes de covariância Σk\Sigma_k (geralmente com o valor da matriz identidade) e os mixing coefficients πk\pi_k (geralmente com o valor 1K\frac{1}{K}, de modo a dar a mesma importância a cada cluster).

Expectation

Nesta etapa computa-se o valor de P(ckxi)P(c_k \mid x_i) para cada ponto xix_i e cada cluster ckc_k.

γki=P(ckxi)=P(xick)P(ck)P(xi)=N(xiμk,Σk)πkk(πkN(xiμk,Σk))\gamma_{ki} = P(c_k \mid x_i) = \frac{P(x_i \mid c_k) \cdot P(c_k)}{P(x_i)} = \frac{\mathcal{N}(x_i \mid \mu_k, \Sigma_k) \cdot \pi_k}{\sum_{k} (\pi_k \cdot \mathcal{N}(x_i \mid \mu_k, \Sigma_k))}

Pois P(xi)P(x_i) é invariante entre as componentes, podemos simplesmente calcular

P(ck,xi)=P(xick)P(ck)=N(xiμk,Σk)πkP(c_k, x_i) = P(x_i \mid c_k) \cdot P(c_k) = \mathcal{N}(x_i \mid \mu_k, \Sigma_k) \cdot \pi_k

e depois normalizar

γki=P(ckxi)=P(ck,xi)jP(cj,xi)\gamma_{ki} = P(c_k \mid x_i) = \frac{P(c_k, x_i)}{\sum_j P(c_j, x_i)}

Maximization

Cada observação xix_i contribui de modo a atualizar cada cluster ckc_k, através do parâmetro γki\gamma_{ki}.

Nk=i=1Nγkiμk=1Nki=1NγkixiΣk=1Nki=1N(γki(xiμk)(xiμk)T)πk=P(ck)=NkNN_k = \sum_{i=1}^{N} \gamma_{ki} \\ \mu_k = \frac{1}{N_k} \sum_{i=1}^{N} \gamma_{ki} \cdot x_i \\ \Sigma_k = \frac{1}{N_k} \sum_{i=1}^{N} \left(\gamma_{ki} \cdot (x_i - \mu_k) \cdot (x_i - \mu_k)^T \right) \\ \pi_k = P(c_k) = \frac{N_k}{N}

Evaluate Maximum Likelihood

Nesta etapa avalia-se a função log verosimilhança e procura-se a convergência, repetindo o processo se necessário.

Avaliação

Existem várias métricas de validade que permitem avaliar uma solução de clustering. Os critérios externos necessitam de informação externa, como os rótulos das observações, enquanto que os critérios internos permitem avaliar a qualidade da solução sem precisar deste tipo de informação.

Purity

A purity é um medida externa que avalia quantos dos clusters contém apenas uma única classe ou rótulo. Considerando C=c1,c2,...,ckC = {c_1, c_2, ..., c_k} como o conjunto de clusters e L=l1,l2,...,lgL = {l_1, l_2, ..., l_g} como o conjunto de rótulos de cada uma das observações, definimos purity como indicado abaixo.

purity(C,L)=1Nk=1Kmaxj(cklj)\text{purity}(C, L) = \frac{1}{N} \cdot \sum_{k=1}^{K} \max_{j}(|c_k \cap l_j|)

Esta medida vê-se enviasada para os casos em que K=NK = N, pois cada cluster terá, obviamente, apenas uma obervação, pertencente a apenas uma classe.

Silhouette

Esta é uma medida interna que avalia a coesão (cada membro de um cluster deve estar tão próximo dos outros membros do mesmo cluster quanto possível) e a separação (os clusters devem estar distantes entre si). A medida é calculada para um objeto xix_i e tem em conta o valor aa que representa a distância média de xix_i aos pontos no mesmo cluster e o valor bb que representa o mínimo da distância média de xix_i aos pontos de um outro cluster.

1silhouette=bamax{a,b}1-1 \leq \text{silhouette} = \frac{b - a}{max\{a, b\}} \leq 1
a(i)=1Ci1jCi,ijd(i,j)a(i) = \frac{1}{|C_i| - 1} \sum_{j \in C_i, i \neq j} d(i, j)
b(i)=minji1CjkCjd(i,j)b(i) = \min_{j \neq i} \frac{1}{|C_j|} \sum_{k \in C_j} d(i, j)

Define-se a silhouette de um cluster como a média das silhouettes dos seus pontos e define-se a silhouette da solução de clustering como a média das silhouettes dos clusterings.