Data Mining - Clustering
-
Upload
iaudesc -
Category
Technology
-
view
4.911 -
download
0
description
Transcript of Data Mining - Clustering
![Page 1: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/1.jpg)
Data Mining - ClusteringData Mining - Clustering
Uma revisão de alguns métodos de Clusterização
Cleber Nathan Dias
![Page 2: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/2.jpg)
O que é clusterização?O que é clusterização?Visão GeralVisão Geral
Usados para descobrir bases científicas em padrões de dados inesperados.
Também chamado de ”unsupervised learning” É uma sub-área da mineração de dados. Dado um conjunto de objetos, montar grupos com
base em suas similaridades. A complexidade do problema dificulta encontrar
uma solução ótima. (não é um problema fechado) como definir o que é similaridade? mesmo com uma métrica é difícil encontrar a solução
exata.
![Page 3: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/3.jpg)
O que é clusterização?O que é clusterização?
Na situação ao lado temos 9 bolas com 3 cores diferentes.
O objetivo aqui foi agrupar as bolas de cores iguais
Desse modo a gente percebe o que pode significar os agrupamentos
![Page 4: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/4.jpg)
Representações de Dados para Representações de Dados para ClusterizaçãoClusterização
A entrada para um algoritmo de clusterização normalmente é um vetor (tuple ou record).
Os tipos de dados podem ser: Numérico De categoria Boleano
![Page 5: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/5.jpg)
Representações de Dados para Representações de Dados para ClusterizaçãoClusterização – – Um ExemploUm Exemplo
Numa clínica médica, por exemplo pode-se encontrar dados como:
Idade (numérico) Peso (numérico) Sexo (categoria) Doente (boleano)
Deve incluir um método para computar a similaridade de vetores ou a distância entre vetores. (cada ponto plotado no gráfico tem um vetor de dados associado)
![Page 6: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/6.jpg)
Calculando DistânciasCalculando Distâncias
O método natural para dados numéricos é o cálculo das distâncias.
Normalmente valores menores representam maiores similaridades.
Não generalize para valores não numérico! Qual é distância entre masculino e feminino?
Métricas para Cálculo da Distância: Distância Euclidiana Distância de Manhattan Etc.
![Page 7: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/7.jpg)
Calculando Similaridade entre Calculando Similaridade entre DadosDados
![Page 8: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/8.jpg)
Calculando Similaridade entre Calculando Similaridade entre Dados NuméricosDados Numéricos
Tradicionalmente usa-se valores de similaridade entre 0 e 1:
0.0 = sem similaridade 1.0 = idêntico
Convertendo distância em similaridade: Pega-se dois pontos do gráfico e acha-se a
distância entre eles. 1 – (a distância) = grau de similariadade Os dados devem de início ser normalizados para
que os valores das distâncias fiquem num intervalo de 0 a 1.
Normalizar é dividir os valores de tal modo que que se enquadrem no intervalo desejado.
![Page 9: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/9.jpg)
Calculando Similaridade entreCalculando Similaridade entre Dados de CategoriaDados de Categoria
Como calcular a similaridade quando os dados são do tipo (masculino, feminino, alto e baixo)?
Dado um vetor com N atributos, deve-se comparar com outro vetor com os mesmos N atributos, e então, verificar quantos destes elementos se combinam.
![Page 10: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/10.jpg)
Calculando Similaridade entreCalculando Similaridade entre Dados de CategoriaDados de Categoria
Uma maneira de comparar os atributos é usando uma matriz que auxilia a análise.
Usando a matriz a abaixo como guia, percebe-se que A é igual a uma combinação 1 e 1, B é igual a uma combinação 1 e 0, C = 0 e 1 e D = 0 e 0
X[j]X[j]
Y[j]Y[j]
11
11
00
00
AA BB
CC DD
![Page 11: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/11.jpg)
Calculando Similaridade entreCalculando Similaridade entre Dados de CategoriaDados de Categoria
Analisando dois vetores onde os atributos sejam: alto, magro, loiro, rico, branco, adulto e homem.
Alto Magro Loiro Rico Branco Adulto Homem
vt1 0 1 0 1 1 1 0
vt2 1 1 0 0 1 1 0
X[j]X[j]
Y[j]Y[j]
11
11
00
00
AA BB
CC DD
![Page 12: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/12.jpg)
Calculando Similaridade entreCalculando Similaridade entre Dados de CategoriaDados de Categoria
Alto Magro Loiro Rico Branco Adulto Homem
vt1 0 1 0 1 1 1 0
vt2 1 1 0 0 1 1 0
Analizando os vetores vemos que: Alto é 0 e 1, Loiro Branco e Adulto são 1 e 1, Loiro e Homem são 0 e 0 e o Rico é 1 e 0.
X[j]X[j]
Y[j]Y[j]
11
11
00
00
AA BB
CC DD
![Page 13: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/13.jpg)
Calculando Similaridade entreCalculando Similaridade entre Dados de CategoriaDados de Categoria
Alto Magro Loiro Rico Branco Adulto Homem
vt1 0 1 0 1 1 1 0
vt2 1 1 0 0 1 1 0
1 e 1 foram 3, então, A = 3; 1 e 0 foram 1, então, B = 1; 0 e 1 foram 1, então, C = 1; 0 e 0 foram 2, então, D = 2
![Page 14: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/14.jpg)
Calculando Similaridade entreCalculando Similaridade entre Dados de CategoriaDados de Categoria
Tendo esses valores, a similariadade pode ser calculada usando alguns métodos como:
Correlação = (A + D) / (A + B + C + D) Coeficiente de Jacard = A / (A + B + C + D)
Usado quando um falso verdadeiro não implicar numa solução errada do problema.
Se a comparação for feita entre um urubú e um dinossáuro de asas, e o atributo for ”possue asas”. Os dois são verdadeiros, mas isso não implica que sejam iguais.
X[j]X[j]
Y[j]Y[j]
11
11
00
00
AA BB
CC DD
![Page 15: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/15.jpg)
Algoritmo de Clusterização por Algoritmo de Clusterização por Hierarquia.Hierarquia.
![Page 16: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/16.jpg)
Algoritmo de Clusterização por Algoritmo de Clusterização por Hierarquia.Hierarquia.
Clusterização por Hierarquia solicita uma conjunto de ponto (tuplas) como entrada.
Esse conjunto de pontos vão se transformar numa árvore. Correlacionado seus pontos com o seus grau de similaridade.
A árvore é normalmente chamada de dendograma.
![Page 17: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/17.jpg)
Algoritmo de Clusterização por Algoritmo de Clusterização por Hierarquia.Hierarquia.
O método: Coloque todos os pontos dentro de seu próprio
clusters. Enquanto houver mais do que um cluster faça
o merge dos pares de clusters mais próximos.
O comportamento do método vai depender de quão próximo os pares de clusteres estão definidos.
![Page 18: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/18.jpg)
Clusteriazação por Hierarquia: Clusteriazação por Hierarquia: Juntando ClustersJuntando Clusters
Para ligar dois cluster pode-se usar medida entre os pontos mais próximos entre um cluster e outro.
![Page 19: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/19.jpg)
Clusteriazação por Hierarquia: Clusteriazação por Hierarquia: Juntando ClustersJuntando Clusters
Para ligar dois clusters pode-se usar a medida da distância entre os pontos médios (centróide) de cada cluster.
![Page 20: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/20.jpg)
Clusteriazação por Hierarquia: Clusteriazação por Hierarquia: Juntando ClustersJuntando Clusters
E ainda, para ligar dois clusters pode-se usar a distância entre os pontos mais distantes
![Page 21: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/21.jpg)
Emxemplo de Clusterização por Emxemplo de Clusterização por HierarquiaHierarquia
Este exemplo usa a ligação de clusters pelos ponto de menor distância .
A
B
EF
C D
A B E FC D
![Page 22: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/22.jpg)
Clusterização por Hierarquia – Clusterização por Hierarquia – Pontos FracosPontos Fracos
O tipo usado mais comum, é a união de clusters a partir de seus pontos mais próximos. Sendo um método particularmete guloso. Caso dois pontos de clusters distintos estejam
próximos um do outro, a distinção é perdida. Em relação aos dois outro métodos de ligação de
clusters, estes tendem a formar clusters esféricos, da mesma forma que o k-means.
A divisão da árvore em clusters não fica de modo conveniente sem a intervenção humana.
Existem algumas ferramentas automatizadas para isso, com critérios pré-estabelecidos.
Assim como o k-means é sensível a outlier.
![Page 23: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/23.jpg)
O Algoritmo K-meansO Algoritmo K-means
![Page 24: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/24.jpg)
O Algoritmo K-meansO Algoritmo K-means A entrada para esse algoritmo é um conjunto
de pontos numéricos em N dimensões e uma valor inteiro K.
O algoritmo irá gerar K clusters, assim: 1 – Coleque K centroides aleatóreamente 2 – Atribua cada ponto a um centróide mais
próximo criando um cluster. 3 – Calcule a média entre os pontos internos a um
cluster. 4 – A posição média é atribuida ao centróide (que
muda de posição). 5 – O cálculo deve ser refeito apartir do nº 2 até
que se estabilize
![Page 25: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/25.jpg)
Exemplo com K = 3Exemplo com K = 3
1 – coloque os centróides (pontos grandes) aleatóriamente
2 – Atribua os pontos mais próximos a um centróide.
3 – Recalcule a posição dos centróides
![Page 26: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/26.jpg)
Escolhendo o Número K
Como escolher o número de clusters para o espaço de dados? Essa é uma questão que não é simples de resolver
e existem alguns métodos para tentar chegar a este objetivo.
![Page 27: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/27.jpg)
Escolhendo o Número K
De maneira pragmática pode-se aplicar uma fórmula (a Regra de Ouro) que determina um valor aproximado de K:
*onde n é igual ao número de pontos no espaço d-dimensional
![Page 28: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/28.jpg)
Escolhendo o Número K
Outro método usado calcula a covariância dos atributos dentro de um mesmo cluster. Quanto menor esta medida, mais semelhantes são os dados. Assim sendo, o cálculo da distorção apresentado abaixo é usado no método Jump descrito no próximo slide.
Onde Cx é o cluster cujo elemento X está inserido.
![Page 29: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/29.jpg)
Escolhendo o Número K – Abordagem usando Teoria da Informação
Método do Pulo:JumpMethod(X):
Deixe Y = (p/2)
Crie uma lista D, de tamanho n+1
Deixe D[0] = 0
Para k = 1 ... n Faça:
Clusterize X com k clusters (exemplo, como k-means)
Deixe d = Distorção da Cluterização Resultante
D[k] = d^(-Y)
Defina J(i) = D[i] - D[i-1]
Retorne K entre 1 e n maximizando J(k)
Onde: X são os dados de entreda da clusterização. E,p é a dimensão dos dados
de entrada (número de atributos).
K = nº de clusters.
O índice do maior elemento do vetor J.
![Page 30: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/30.jpg)
Escolhendo o Número K – Método do Cotovelo
Inicializa-se o K com valor 1, então aumenta-se gradativamente este valor. Caso não haja uma mudança significativa na variância, pode-se concluir que um número para K foi achado (um número maior para K não acrescentaria substancialmente no resultado qualitativo dos dados).
![Page 31: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/31.jpg)
Escolhendo o Número K – Método do Cotovelo
O critério de parada, como dito, é o de não haver uma mudança significativa na variância calculada. A palavra ”significativa” introduz subjetividade ao método, pois não há um valor preciso determinando o fim do cálculo e fazendo com que o valor de K não se torne preciso.
![Page 32: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/32.jpg)
Pontos Fracos do K-means
Dados devem ser numéricos e devem ser comparáveis via alguma forma de distância (há uma variante chamada k-medianas que cuida dessas falhas).
O algoritmo trabalha melhor sobre dados contidos em clusteres esféricos. Clusters com outras geometrias podem não ser localizados.
K-means é sensível a outliers (pontos que não pertencem a nenhum cluster) - Esses outlieres pondem distorcer a posição do centroide e estragar o agrupamento.
![Page 33: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/33.jpg)
Métodos de Grafos: Componentes e Cortes
Define um grafo de similaridade sobre um conjunto de objetos como a seguir: Vértices são os objetos por si só. Arestas não direcionadas juntam vértices
denominados similares. Arestas podem ser ponderadas por grau de
similaridade.
Um componente conexo é um conjunto de objetos tal que: cada objeto é alcançável no caminho pelos outros objetos.
Um corte de peso mínimo é aquele que cria um novo componente conexo com a soma das arestas cortadas sendo a mínima possível.
![Page 34: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/34.jpg)
Componentes Conexos para Componentes Conexos para ClusterizaçãoClusterização
O grafo acima tem 3 componentes ou clusters O algoritmo para achá-los é muito rápido e
simples. Essa abordagem tem pontos fracos óbvios; por
exemplo: O nodo vermelho não é similar a maioria dos
objetos em seu cluster A aresta vermelha conecta dois componentes
que deveriam provavelmente estar separados
![Page 35: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/35.jpg)
Cortes de Peso Mínimo para Cortes de Peso Mínimo para ClusterizaçãoClusterização
Execute o algoritmo de corte de ”conjunto de peso mínimo”, duas vezes, no grafo do exemplo anterior, para produzir boa clusterização (assumindo que o peso de cada aresta seja 1).
Se objetos dentro de um cluster são muito mais similares do que objetos em clusters separados, então o método funciona bem.
![Page 36: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/36.jpg)
Cortes de Peso Mínimo para Cortes de Peso Mínimo para ClusterizaçãoClusterização
Desvantanges: Algoritmo de corte máximo é muito lento, e
potencialmente deve ser executado muitas vezes.
Não há um ponto necessariamente evidente em que o algoritmo deva parar.
![Page 37: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/37.jpg)
Análise de Componente PrincipalAnálise de Componente Principal
![Page 38: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/38.jpg)
Análise de Componente Principal Problema: muitos tipos de dados tem muitos
atributos para serem visualizados ou manipulados convenientemente.
Por exemplo, um único microarray pode ter de 6000 a 8000 genes.
PCA: é um método para reduzir o número de atributos (dimensões) de dados numéricos enquanto tenta preservar a estrutura do cluster.
Depois do PCA, é esperado que se obtenha os mesmos clusters que seriam obtidos antes do PCA.
Por usar o PCA para reduzir os atributos para 3 ou 2 dimensões os visualizadores de geometria comerciais podem ser usados para exibir os dados.
![Page 39: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/39.jpg)
O Algoritmo PCA
Considere o dado como uma matriz M x N no qual as colunas são as amostras e as linhas ao atributos.
Os autovetores correpondentes aos d maiores autovalores desta matriz são os componentes principais.
Por projetar os dados nesses vetores, se obtem pontos d-dimensionais.
![Page 40: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/40.jpg)
O Algoritmo PCA
Considere o exemplo abaixo, projetando dados 2D com 2 clusters (vermelho e azul) em 1 dimensão.
Principal component
After projection
![Page 41: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/41.jpg)
Desafios na Clusterização
Calculo de similaridade: Resultados de algoritmos dependem da similaridade
usada. Sistemas de clusterização oferecem pouco auxílio em
como escolher similaridade. Computar similaridade de dados mistos é difícil. A similaridade é muito dependente da representação
do dado. Questões:
Normaliza-se os dado? Como se deveria representar os dados?
-numericamente, categoricamente, etc. Clusterizar somente um subgrupo dos dados? O computador deveria fazer mais para que o
usuário descubra como representar os dados!
![Page 42: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/42.jpg)
Desafios na Clusterização
Seleção de parâmetro: Algoritmos atuais requerem muitos parâmetros
arbtrários e selecionados pelo usuário.
![Page 43: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/43.jpg)
Conclusão
Clusterização é uma maneira útil de explorar os dados, mas é ainda muito ad hoc (sem muito formalismo, rigor científico).
Bons resultados são frequentemente dependentes em escolher a representação dos dados certa e a métrica de similaridade.
Dado: categórico, numérico, lógico e etc. Similaridade: distância, correlação, etc.
Muitas escolhas diferentes de algoritmos, cada uma com diferentes virtudes e deficiências.
![Page 44: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/44.jpg)
Exercícios
1- Dado dois elementos cujos atributos sejam, Alto, Magro, Loiro, Rico, Branco, Adulto, Homem e com a seguinte configuração:
Y1 y2 y3 y4 y5 y6 y7
Alto Magro Loiro Rico Branco Adulto Homem
vt1 0 1 0 1 1 1 0 x1
vt2 1 1 0 0 1 1 0 x2
a) Calcule o coeficiente de Correlação usando o Coeficiente de Jacard.
![Page 45: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/45.jpg)
Exercícios
2- Calcule um múmero K do método de clusterização K-means quando o espaço de dados é igual a 1000 elementos.
![Page 46: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/46.jpg)
Exercícios
3- Faça um dendograma apartir da seguinte disposição:
a.a. d.b.
e.c.
g.
f.h.
i.
![Page 47: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/47.jpg)
Exercícios
4- Forme 2 clusters usando o algoritmo de clusterização de grafo por corte mínimo.
d
a
c
b
1.5
4
3
2.0
1.3
![Page 48: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/48.jpg)
Exercícios
5- O que é clusterização?
![Page 49: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/49.jpg)
Links Interessantes
K-means: Applet:
http://home.dei.polimi.it/matteucc/Clustering/tutorial_html/AppletKM.html
Hierarchical: Applet:
http://metamerist.com/slhc/example40.htm
![Page 50: Data Mining - Clustering](https://reader036.fdocuments.net/reader036/viewer/2022081717/55649c62d8b42ab8278b51b0/html5/thumbnails/50.jpg)
Referências
SEGARAN, Toby. Programando a Inteligência Coletiva. O'REILLY: Rio de Janeiro. 2008.
WITTEN, Ian H.; Frank, Eibe. Data Mining: Practical Machine Learning Tools ans Techniques. 2ª Ed. Morgan Kaufmann Publishers: San Francisco. 2005.
MARDIA, Kanti; et. al. Multivariate Analysis. Academic Press. 1979.