Fundamentos matemáticos da mineração de dados Renato Francês e Aldebaro Klautau Universidade Federal do Pará 1 Exemplo de situações Quais os produtos que são comprados juntos pelos clientes? regras de associação Mala direta: enviar ou não um catálogo de produtos a um eventual comprador? classificação Diagnóstico de câncer: quais os fatores mais importantes? seleção de fatores (parâmetros) Mercado de ações: como prever uma grandeza (número real) com base em outras? regressão Eleitores: como podem ser agrupados? agrupamento (“clustering”) 2 Sumário Definições e etapas do “data mining” Pré-processamento e o pacote Weka Minerando regras de associação Classificação Ênfase: árvores de decisão, redes neurais e SVM (“support vector machine”) Seleção de parâmetros ou redução da dimensionalidade Predição ou regressão Análise de grupamentos “Cluster analysis” Conclusões 3 Data mining Extração (ou “mineração”) de conhecimento a partir de grandes quantidades de dados “Knowledge discovery in databases” (KDD) Etapas do KDD: Data Data Data Data cleaning integration selection transformation Data mining Pattern evaluation Knowledge presentation 4 Agrega profissionais de várias áreas Mineração de dados Reconhecimento de padrões Tecnologia de banco de dados Outros... 5 Aspecto prático: Weka Pacote “open-source” Escrito em Java Integra vários algoritmos Fácil de usar Não é o mais rápido 6 Dados ou informação “bruta” Assumimos estarem organizados em arquivos simples Nome Telefone Peso País Bush Lula Fidel 1 43 228859 55 23 591927 34 95 499402 67 78 82 EUA Brasil Cuba ... ... ... ... campo ou atributo registros, exemplos ou “instances” 7 Atributos no Weka Exemplo, atributos: Nome, Brasileiro, Partido, Peso, Idade Exemplo, registros (“instance”): Lula, Sim, PT, 80.7, 58 Campo (ou atributo) pode ser: A) Nominal ou Discreto, K possíveis valores (K é um inteiro) Binários, K=2 - brasileiro? sim ou não Multi-classe, K>2 - partido? PDT, PT, PFL,..., PMDB B) Contínuos Números reais – peso? 80.7, 23.2, 56.4, ... Inteiros – idade? 1, 2, 3, ... C) Strings Exemplo: nome? Bush, Saddam, Lula, ... D) Outros: data, etc. 8 Formato ARFF do Weka @relation car @attribute @attribute @attribute @attribute @attribute @attribute @attribute buying maint doors persons lug_boot safety class {vhigh, high, med, low} {vhigh, high, med, low} {2, 3, 4, 5more} {2, 4, more} {small, med, big} {low, med, high} {unacc, acc, good, vgood} @data vhigh,vhigh,2,2,small,low,unacc vhigh,vhigh,2,2,small,med,unacc ... Obs: CSV + cabeçalho (header) 9 Pré-processamento (limpeza dos dados) Discretizar atributos SAÍDA QUANTIZADOR UNIFORME -4 -3 -2 011 4 010 3 001 2 000 1 -1 1 -1 100 -2 101 -3 110 -4 111 2 3 4 ENTRADA 10 Histograma Base IDH (índice de desenvolvimento humano) 29 exemplos ou “instances” Analfabe. Mortalid. Exp. Vida Renda IDH 4 8 78 25880 primeira 5 6 78 19510 primeira 10 35 71 4180 segunda 55 86 57 230 Terceira ... ... ... ... ... 11 Histogramas (uniformes) do atributo “renda” Com 10 “bins” Com 3 “bins” 15 30 25 10 20 15 5 10 5 0 0 0.5 1 1.5 2 2.5 3 4 x 10 0 0.4505 1.3055 2.1605 4 x 10 12 Histograma não-uniforme Exemplo: 5 bins: 4 uniformes e 1 mais largo 14 12 10 8 6 4 2 0 0 0.25 0.50.75 1 3 x 10 4 13 Regras de associação Tabela Idade Jovem Jovem Idoso Idoso Renda Alta Baixa Alta Baixa Classe A B C C Núme. 1402 1038 786 1374 Regras: Idade=Jovem E Renda=Alta ==> Classe=A Idade=Jovem E Renda=Baixa ==> Classe=B Idade=Idoso ==> Classe=C 14 Definições úteis Regra A ==> B Confidência = P (A e B ocorrerem juntos) / P(A) = P (B | A) Suporte = P (A e B ocorrerem juntos) 15 Regras de associação – venda de carro Exemplo (algoritmo apriori) para dataset “car”: 1. safety=low 576 ==> class=unacc 576 conf:(1) 2. persons=2 576 ==> class=unacc 576 conf:(1) 3. maint=vhigh 432 ==> class=unacc 360 conf:(0.83) 4. buying=vhigh 432 ==> class=unacc 360 conf:(0.83) 5. lug_boot=small 576 ==> class=unacc 450 conf:(0.78) 6. doors=2 432 ==> class=unacc 326 conf:(0.75) 7. buying=high 432 ==> class=unacc 324 conf:(0.75) 8. maint=high 432 ==> class=unacc 314 conf:(0.73) 9. doors=3 432 ==> class=unacc 300 conf:(0.69) 10. lug_boot=med 576 ==> class=unacc 392 conf:(0.68) 16 Dataset “futebol” @relation futebol @attribute @attribute @attribute @attribute @attribute outlook {sunny, overcast, rainy} temperature real humidity real outofstate {TRUE, FALSE} joga fora? wins {yes, no} @data sunny,85,85,FALSE,no sunny,80,90,TRUE,no overcast,83,86,FALSE,yes ... 17 Regras para “futebol” Best rules found: 1. 2. 3. 4. 5. outlook=overcast 4 ==> wins=yes 4 conf:(1) outlook=rainy outofstate=FALSE 3 ==> wins=yes 3 conf:(1) outlook=rainy wins=yes 3 ==> outofstate=FALSE 3 conf:(1) humidity='(89.8-92.9]' 3 ==> outofstate=TRUE 3 conf:(1) humidity='(77.4-80.5]' 2 ==> outlook=rainy outofstate=FALSE wins=yes 2 conf:(1) 6. outlook=rainy humidity='(77.4-80.5]' 2 ==> outofstate=FALSE wins=yes 2 conf:(1) 7. humidity='(77.4-80.5]' outofstate=FALSE 2 ==> outlook=rainy wins=yes 2 conf:(1) 8. humidity='(77.4-80.5]' wins=yes 2 ==> outlook=rainy outofstate=FALSE 2 conf:(1) 9. outlook=rainy humidity='(77.4-80.5]' outofstate=FALSE 2 ==> wins=yes 2 conf:(1) 10. outlook=rainy humidity='(77.4-80.5]' wins=yes 2 ==> outofstate=FALSE 2 conf:(1) 18 Classificação Problema: Dado um vetor x com parâmetros, ache sua classe y x Exemplo: Conjunto de treino classificador y ? ou Compr. Peso 12 3.2 10 0.5 14 2.8 Classe y Fase de “teste”: x = (13, 4.2) y=? Avaliação: taxa de erro 19 Métodos de avaliação Testar (obter taxa de erro) usando o próprio conjunto de treino Testar com conjunto de “teste”, disjunto do de treino Validação cruzada (“cross-validation”): Repartir o conjunto de treino em N subconjuntos (“folds”) Considerar cada um o conjunto de teste e treinar com os N-1 restantes Deixe um de fora (“leave-one-out”) Caso extremo de cross-validation: apenas 1 exemplo compõe o conjunto de teste e todo o resto é usado para treinar Matriz de confusões (“confusion-matrix”) 20 “Over-fitting” e seleção dos parâmetros 21 Como projetar classificadores? 22 Piranha or Pirarucu? Piranha Pirarucu 23 Use “histogramas” obtidos do conjunto de treinamento Histograma do comprimento 24 Regiões de decisão No caso anterior: um único parâmetro (comprimento do peixe) regiões de decisão eram segmentos de uma reta Caso mais geral: regiões no espaço k-dimensional Exemplo bidimensional: vogais de Peterson & Barney 2 atributos contínuos F1 e F2 e 1 atributo (classe) nominal: ER, UW, UH, AO, AA, AH, AE, EH, IH, IY Exemplos: 1000, 3500, AH 832, 2500, EH ... 25 back “which part of the tongue is raised” front P&B vowel dataset close “how far the tongue is raised” open 26 Exemplo de regiões de decisão 27 Árvore de decisão C4.5 (J4.8) F2 <= 1600 | F1 <= 586 | | F2 <= 990: UW (92.0/47.0) | | F2 > 990 | | | F2 <= 1200: UH (50.0/17.0) | | | F2 > 1200: ER (63.0/23.0) | F1 > 586 | | F2 <= 1250: AA (59.0/33.0) | | F2 > 1250: AH (56.0/24.0) F2 > 1600 | F1 <= 490 | | F1 <= 350: IY (68.0/5.0) | | F1 > 350: IH (61.0/21.0) | F1 > 490 | | F1 <= 652: EH (71.0/34.0) | | F1 > 652: AE (79.0/19.0) Tamanho: 17 nós e 9 folhas 28 Dataset IDH (índice de des. humano) Árvore de decisão (algoritmo C4.5 / J4.8) Analfabetismo <= 10 | Mortalidade <= 8: primeira (7.0/1.0) | Mortalidade > 8: segunda (11.0) Analfabetismo > 10 | Analfabetismo <= 17 | | ExpectVida <= 66: terceira (2.0) | | ExpectVida > 66: segunda (2.0) | Analfabetismo > 17: terceira (7.0) Número de folhas: 5 Tamanho da árvore: 9 1. 2. 3. ... Regras (algoritmo Apriori / requer discretização) IDH=terceira 9 ==> Renda='(-inf-2795]' 9 conf:(1) Mortalidade='(12.2-20.4]' 7 ==> IDH=segunda 7 conf:(1) IDH=primeira 6 ==> Analfabetismo='(-inf-7.3]' Mortalidade='(-inf-12.2]' 6 conf:(1) 29 Weka: Algoritmos para treinamento de classificadores backpropagation neural network decision tree J4.8 (equivalente ao C4.5) support vector machine (SVM) AdaBoost naïve Bayes etc. 31 Redes neurais artificiais Tenta imitar cérebro: unidades são “neurônios” 33 Perceptron Precursor das redes neurais atuais Não há “camada escondida”: y = W x 34 Regiões de decisão para P&B: rede neural 35 Exemplo de regiões de decisão: árvore 36 Classificador moderno: SVM Desenvolvida por Vladimir Vapnik e colaboradores Início: década de 60 Concepção atual: [Cortes & Vapnik, 1995] Importantes ingredientes básicos: Classificadores lineares de máxima margem “Truque do kernel” para obtenção de classificadores não-lineares 37 Classificadores lineares (problemas binários) f(x)=sgn(<x, w> + b) x,w є d, f(x) є {1, 1} e b є (“bias”) d x, w x w cosθ x nw n é o produto interno n 1 sgn retorna o sinal, com sgn (0) = 1 w é um vetor normal ao hiperplano separador Exemplo: d=2, x=(x1, x2) 38 Classificadores lineares (cont.) f(x)=sgn(<x, w> + b), com w=(2, 4), b=6 6 4 +1 w hiperplano f(x)=0 x2 2 0 -2 1 -4 -6 -6 -4 -2 0 x1 2 4 6 39 Classes “linearmente separáveis” Perceptron versus SVM perceptron SVM (hiperplano com máxima margem) 41 Classificadores lineares são limitados Exemplo clássico: EXOR (ou exclusivo) Solução: mapeamento Φ(x) não-linear Ex: x=(x1, x2) (x) (x 12 , x 22 , 2x 1x 2 ) f (x) sgn(w 1x 12 w 2x 22 w 3 2x 1x 2 b ) f (x) sgn(x 12 x 22 2x 1x 2 0.5) “Maldição da dimensionalidade” 42 “Truque do kernel” w é uma combinação de vetores de treinamento N Não é necessário calcular o mapeamento Φ explicitamente w i x i i 1 da dimensionalidade” (“statistical Escapa-se da “maldição learning theory”)“dual” do classificador Representação N Algoritmos baseados em produtos internos podem ser f (x' ) sgn w, x' b sgn i x i , x' b “kernelizados” i 1 Usando-se mapeamento Φ não linear N f (x' ) sgn i (x i ), (x' ) b i 1 Exemplo: EXOR (x) (x 12 , x 22 , 2x 1x 2 ) (x), (x' ) (x 1x 1)2 (x 2x 2 )2 2x 1x 2x 1x 2 x, x' 2 43 “Truque do kernel” (cont.) Kernel: produto interno no espaço imagem de Φ k (x' , xi ) (x' ), (xi ) Kernels mais usados: Polinomial k (x' , xi ) x' , xi p SVM linear, p=1 Gaussiano k ( x ' , x i ) exp( x ' x i 2 /c ) Vetores de suporte: exemplos xi para os quais λi ≠ 0 N f (x' ) sgn i k (x' , x i ) b i 1 44 SVM não-linear - exemplo 2 classes: “círculos” o - mistura de 2 Gaussianas “pontos” ● - mistura de 3 Gaussianas SVM com kernel Gaussiano Médias marcadas com “x” 5 vetores de suporte: marcados com círculo extra Não “modela”, concentra-se nas regiões de decisão 45 Classificador “support vector machine” pesos kernel “compara” x e xi vetores de suporte: x1, x2, x3 e x4 entrada x 46 SVM (cont.) B classificadores binários SVM f1 ( x) f B ( x) entrada x Combina decisões f1(x),...,fB(x) via matriz ECOC 47 Classificadores: ANN versus SVM Rede neural SVMs 48 Problema do Weka/SVM: tempo de treinamento Usamos 4 pacotes SVM “open source” Weka (Java) SVMTorch (C++) SVMLight (C) SvmFu (C++) maior conjunto de treino isolet 6238 26 e-set 2160 9 letter 16000 26 satimage 4435 6 pendigits 7494 10 timitplp40 138839 39 pe nd ig it s -a pe nd ig it s -o t im it p lp 40 -a t im it p lp 40 -o ag eo sa tim r-o sa tim le tte r-a le tte ese t-o ese t-a le t- o iso le t- a Weka* SVMLight SvmFu iso outros Torch 20 18 16 14 12 10 8 6 4 2 0 dim. ag ea # treino “dataset” 49 Redução da dimensionalidade Métodos “filters” Ganho de informação AdaBoost Métodos “wrappers” Depende dos classificadores Problema: complexidade computacional 50 “Breast-cancer” dataset Atributos 1. Class: no-recurrence-events, recurrence-events 2. age: 10-19, 20-29, 30-39, 40-49, 50-59, 60-69, 70-79, 80-89, 90-99. 3. menopause: lt40, ge40, premeno. 4. tumor-size: 0-4, 5-9, 10-14, 15-19, 20-24, 25-29, 30-34, 35-39, 40-44, 45-49, 50-54, 55-59. 5. inv-nodes: 0-2, 3-5, 6-8, 9-11, 12-14, 15-17, 18-20, 2123, 24-26, 27-29, 30-32, 33-35, 36-39. 6. node-caps: yes, no. 7. deg-malig: 1, 2, 3. 8. breast: left, right. 9. breast-quad: left-up, left-low, right-up, right-low, central. 10. irradiat: yes, no. 51 Atributos selecionados Método 1 Selected attributes: 3,4,5,6,9 : 5 tumor-size inv-nodes node-caps deg-malig irradiat Método 2 Selected attributes: 6,4,3,5,9,1,8,7,2 : 9 0.07701 6 deg-malig 0.069 4 inv-nodes 0.05717 3 tumor-size 0.05126 5 node-caps 0.02582 9 irradiat 0.01061 1 age 0.00885 8 breast-quad 0.00249 7 breast 0.002 2 menopause 52 Exemplo de experimento prático 3 x 253 + 1 = 760 “features” SVMs com kernel linear (perceptron) Algoritmo de seleção: AdaBoost vs. ganho de informação (“info gain”) 45 40 35 30 25 20 15 10 5 0 info gain boosting others 5 25 40 100 all 760 plp 118 53 Histograma dos parâmetros selecionados F0, voicing, 4 formants PLP (39) Seneff’s synchrony (40) Seneff’s envelope (40) MFCC (39) RASTA (39) Filter-bank (50) 54 Predição (ou regressão) Regressão linear Regressão não-linear 55 Regressão linear Código Matlab N=100; a=3; t=rand(1,N); x=a*t+rand(1,N); plot(t,x,'o'); 4 3 2 1 Linear Regression Model (Weka) 0 0 0.2 0.4 0.6 0.8 1 0.2 0.4 0.6 0.8 1 4 Y = 2.9974 * X + 0.4769 Correlation coefficient Mean absolute error 3 0.9358 0.2744 2 1 0 0 56 Regressão não-linear Código Matlab N=100; a=3; x=rand(1,N); y=a*cos(2*pi*x)+rand(1,N); plot(x,y,'o'); 4 3 2 1 0 -1 Problema: Linear não resolve -2 -3 0 0.2 0.4 0.6 0.8 1 Solução: Redes neurais SVM 57 Análise de grupamentos Algoritmos: K-means EM (“expectation maximization”) 58 Weka avançado Usando Weka da linha de comando PATH DOS: set Linux: bash (export), tcsh (setenv) CLASSPATH Modificando o código fonte do Weka Compilador JBuilder 59 Conclusões Mineração de dados é uma área multidisciplinar que se beneficia, dentre outras, de técnicas de “reconhecimento de padrões” Discutimos: regras, classificação, regressão, agrupamentos Reconhecimento de padrões exige alguma matemática para se entender os algoritmos Weka é ideal para iniciantes, ou pessoas que desenvolvam algoritmos na área A competência do profissional é fator essencial para “bamburrar” em conhecimento 60 Para ler mais: Data mining: Concepts and techniques. Jiawei Han e Micheline Kamber, Morgan Kaufmann, 2001 Data mining: Practical machine learning tools and techniques with Java implementations. Ian Witten e Eibe Frank, Morgan Kaufmann http://www.laps.ufpa.br 61