580 likes | 671 Views
Fundamentos matem áticos da mineração de dados. Renato Francês e Aldebaro Klautau Universidade Federal do Pará. Exemplo de situações. Quais os produtos que são comprados juntos pelos clientes? regras de associação
E N D
Fundamentos matemáticos da mineração de dados Renato Francês e Aldebaro Klautau Universidade Federal do Pará
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”)
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 eSVM (“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
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 cleaning • Data integration • Data selection • Data transformation • Data mining • Pattern evaluation • Knowledge presentation
Agrega profissionais de várias áreas Mineração de dados Reconhecimento de padrões Tecnologia de banco de dados Outros...
Aspecto prático: Weka • Pacote “open-source” • Escrito em Java • Integra vários algoritmos • Fácil de usar • Não é o mais rápido
Dados ou informação “bruta” campo ou atributo registros, exemplos ou “instances” • Assumimos estarem organizados em arquivos simples
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.
Formato ARFF do Weka @relation car @attribute buying {vhigh, high, med, low} @attribute maint {vhigh, high, med, low} @attribute doors {2, 3, 4, 5more} @attribute persons {2, 4, more} @attribute lug_boot {small, med, big} @attribute safety {low, med, high} @attribute class {unacc, acc, good, vgood} @data vhigh,vhigh,2,2,small,low,unacc vhigh,vhigh,2,2,small,med,unacc ... Obs: CSV + cabeçalho (header)
Pré-processamento (limpeza dos dados) SAÍDA 011 010 001 000 4 3 2 1 -4 -3 -2 -1 1 2 3 4 ENTRADA 100 101 110 111 -1 -2 -3 -4 • Discretizar atributos QUANTIZADORUNIFORME
Histograma • Base IDH (índice de desenvolvimento humano) • 29 exemplos ou “instances”
Histogramas (uniformes) do atributo “renda” • Com 10 “bins” • Com 3 “bins”
Histograma não-uniforme • Exemplo: 5 bins: 4 uniformes e 1 mais largo
Regras de associação • Tabela • Regras: Idade=Jovem E Renda=Alta ==> Classe=A Idade=Jovem E Renda=Baixa ==> Classe=B Idade=Idoso ==> Classe=C
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)
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)
Dataset “futebol” @relation futebol @attribute outlook {sunny, overcast, rainy} @attribute temperature real @attribute humidity real @attribute outofstate {TRUE, FALSE} joga fora? @attribute wins {yes, no} @data sunny,85,85,FALSE,no sunny,80,90,TRUE,no overcast,83,86,FALSE,yes ...
Regras para “futebol” Best rules found: 1. outlook=overcast 4 ==> wins=yes 4 conf:(1) 2. outlook=rainy outofstate=FALSE 3 ==> wins=yes 3 conf:(1) 3. outlook=rainy wins=yes 3 ==> outofstate=FALSE 3 conf:(1) 4. humidity='(89.8-92.9]' 3 ==> outofstate=TRUE 3 conf:(1) 5. 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)
Classificação ? ou x y classificador • Problema: • Dado um vetor x com parâmetros, ache sua classe y • Exemplo: • Avaliação: taxa de erro Fase de “teste”: x = (13, 4.2) y = ? Conjuntode treino
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 osN-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”)
Piranha or Pirarucu? • Pirarucu • Piranha
Use “histogramas” obtidosdo conjunto de treinamento Histograma do comprimento
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 ...
P&B vowel dataset back “which part of the tongue is raised” front close “how far the tongue is raised” open
Á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
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 • Regras (algoritmo Apriori / requer discretização) 1. IDH=terceira 9 ==> Renda='(-inf-2795]' 9 conf:(1) 2. Mortalidade='(12.2-20.4]' 7 ==> IDH=segunda 7 conf:(1) 3. IDH=primeira 6 ==> Analfabetismo='(-inf-7.3]' Mortalidade='(-inf-12.2]' 6 conf:(1) ...
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.
Redes neurais artificiais • Tenta imitar cérebro: unidades são “neurônios”
Perceptron • Precursor das redes neurais atuais • Não há “camada escondida”: y = W x
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áximamargem • “Truque do kernel” para obtenção de classificadores não-lineares
Classificadores lineares (problemas binários) • f(x)=sgn(<x, w> + b) • x,wєd, f(x) є {1, 1} e bє (“bias”) • é o produto interno • sgn retorna o sinal, com sgn (0) = 1 • w é um vetor normalao hiperplano separador Exemplo: d=2, x=(x1, x2)
Classificadores lineares (cont.) +1 1 • f(x)=sgn(<x, w> + b), com w=(2, 4), b=6 w hiperplanof(x)=0
Perceptron versus SVM Classes “linearmente separáveis” perceptron SVM (hiperplano com máxima margem)
Classificadores lineares são limitados • Exemplo clássico: EXOR (ou exclusivo) • Solução:mapeamento Φ(x) não-linear • Ex: x=(x1, x2) “Maldição da dimensionalidade”
“Truque do kernel” Não é necessário calcular o mapeamento Φ explicitamente Escapa-se da “maldição da dimensionalidade” (“statistical learning theory”) Algoritmos baseados em produtos internos podem ser “kernelizados” • w é uma combinação de vetores de treinamento • Representação “dual” do classificador • Usando-se mapeamento Φ não linear • Exemplo: EXOR
“Truque do kernel” (cont.) • Kernel: produto interno no espaço imagem de Φ • Kernels mais usados: • Polinomial SVM linear, p=1 • Gaussiano • Vetores de suporte: exemplos xi para os quais λi≠ 0
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-senas regiões de decisão
Classificador “support vector machine” pesos kernel “compara” x e xi vetores de suporte: x1, x2, x3 e x4 entrada x
SVM (cont.) B classificadores binários SVM Combina decisões f1(x),...,fB(x) via matriz ECOC entrada x
Classificadores: ANN versus SVM • Rede neural • SVMs
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
Redução da dimensionalidade • Métodos “filters” • Ganho de informação • AdaBoost • Métodos “wrappers” • Depende dos classificadores • Problema: complexidade computacional
“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, 21-23, 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.
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
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”)