renato francês e aldebaro klautau universidade federal do pará
Post on 03-Jan-2016
23 Views
Preview:
DESCRIPTION
TRANSCRIPT
1
Renato Francês e Aldebaro Klautau Universidade Federal do Pará
Fundamentos matemáticos da mineração de dados
2
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”)
3
Sumário
Definições e etapas do “data mining”Pré-processamento e o pacote WekaMinerando regras de associaçãoClassificaçã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ãoAnálise de grupamentos
“Cluster analysis”Conclusões
4
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
5
Agrega profissionais de várias áreas
Reconhecimento de padrões
Tecnologia de banco de dados
Outros...
Mineração de dados
6
Aspecto prático: Weka
Pacote “open-source”
Escrito em Java
Integra vários algoritmos
Fácil de usar
Não é o mais rápido
7
Dados ou informação “bruta”
Assumimos estarem organizados em arquivos simples
Nome Telefone Peso País
Bush 1 43 228859 67 EUA
Lula 55 23 591927 78 Brasil
Fidel 34 95 499402 82 Cuba
... ... ... ...
registros, exemplos ou “instances”
campo ou atributo
8
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.
9
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,unaccvhigh,vhigh,2,2,small,med,unacc...
Obs: CSV + cabeçalho (header)
10
Pré-processamento (limpeza dos dados)
Discretizar atributos
QUANTIZADORUNIFORME
ENTRADA
SAÍDA
1 2 3 4 -4 -3 -2 -1
4
3
2
1
-1
-2
-3
-4
011
010
001
000
100
101
110
111
11
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
... ... ... ... ...
12
Histogramas (uniformes) do atributo “renda”
Com 10 “bins”
0 0.5 1 1.5 2 2.5 3
x 104
0
5
10
15
0.4505 1.3055 2.1605
x 104
0
5
10
15
20
25
30
Com 3 “bins”
13
Histograma não-uniforme
Exemplo: 5 bins: 4 uniformes e 1 mais largo
0 0.250.50.75 1 3
x 104
0
2
4
6
8
10
12
14
14
Regras de associação
Tabela
Regras:Idade=Jovem E Renda=Alta ==> Classe=AIdade=Jovem E Renda=Baixa ==> Classe=BIdade=Idoso ==> Classe=C
Idade Renda Classe Núme.
Jovem Alta A 1402
Jovem Baixa B 1038
Idoso Alta C 786
Idoso Baixa C 1374
15
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)
16
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)
17
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}
@datasunny,85,85,FALSE,nosunny,80,90,TRUE,noovercast,83,86,FALSE,yes...
18
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)
19
Problema: Dado um vetor x com parâmetros, ache sua
classe y
Exemplo:
Avaliação: taxa de erro
Compr. Peso Classe y
12 3.2
10 0.5
14 2.8
Classificação
ou ?
Conjuntode treino
Fase de “teste”:x = (13, 4.2)
y = ?
classificadorx y
20
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”)
21
“Over-fitting” e seleção dos parâmetros
22
Como projetar classificadores?
23
PirarucuPiranha
Piranha or Pirarucu?
24
Use “histogramas” obtidosdo conjunto de treinamento
Histograma do comprimento
25
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 ...
26
P&B vowel dataset
close “how far the tongue is raised” open
bac
k “
whi
ch p
art
of t
he t
ongu
e is
rai
sed”
fr
on
t
27
Exemplo de regiões de decisão
28
Á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
29
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: 5Tamanho 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)...
31
backpropagation neural network
decision tree J4.8 (equivalente ao C4.5)
support vector machine (SVM)
AdaBoost
naïve Bayesetc.
Weka: Algoritmos para treinamento de classificadores
33
Redes neurais artificiais
Tenta imitar cérebro: unidades são “neurônios”
34
Perceptron
Precursor das redes neurais atuais Não há “camada escondida”: y = W x
35
Regiões de decisão para P&B: rede neural
36
Exemplo de regiões de decisão: árvore
37
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
38
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
d
nnnwx
1
θcos, wxwx
Exemplo: d=2, x=(x1, x2)
39-6 -4 -2 0 2 4 6
-6
-4
-2
0
2
4
6
x1
x2
Classificadores lineares (cont.)
f(x)=sgn(<x, w> + b), com w=(2, 4), b=6
1
+1
hiperplanof(x)=0
w
41
Classes “linearmente separáveis”
SVM (hiperplano com máxima
margem)
perceptron
Perceptron versus SVM
42
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”
)2,,()( 2122
21 xxxx x
)5.02sgn()( 2122
21 xxxxf x
)2sgn()( 213222
211 bxxwxwxwf x
43
“Truque do kernel”
w é uma combinação de vetores de treinamento
Representação “dual” do classificador
Usando-se mapeamento Φ não linear
Exemplo: EXOR
N
iii
1
xw
N
iii bbf
1
',sgn',sgn)'( xxxwx
N
iii bf
1
)'(),(sgn)'( xxx
22121
222
211 ',2)()()'(),( xxxx xxxxxxxx
)2,,()( 2122
21 xxxx x
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”
44
“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
)(),'(),'( iik xxxx
N
iii bkf
1
),'(sgn)'( xxx
piik xxxx ,'),'(
)/'exp(),'(2
ck ii xxxx
45
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
46
Classificador “support vector machine”
pesos
entrada x
kernel “compara” x e xi
vetores de suporte: x1, x2, x3 e x4
47
SVM (cont.)
entrada x
B classificadores binários SVM
)(
)(1
xf
xf
B
Combina decisões f1(x),...,fB(x) via matriz ECOC
48
Classificadores: ANN versus SVM
Rede neural
SVMs
49
Problema do Weka/SVM: tempo de treinamento
Usamos 4 pacotes SVM “open source” Weka (Java) SVMTorch (C++) SVMLight (C) SvmFu (C++)
“dataset” # treino dim.
isolet 6238 26
e-set 2160 9
letter 16000 26
satimage 4435 6
pendigits 7494 10
timitplp40
138839 39
Torchoutros
maior conjunto de treino
02468
101214161820
isolet
-a
isolet
-o
e-se
t-a
e-se
t-o
lette
r-a
lette
r-o
satim
age-
a
satim
age-
o
pend
igits-
a
pend
igits-
o
timitp
lp40-a
timitp
lp40-o
Weka*
SVMLight
SvmFu
50
Redução da dimensionalidade
Métodos “filters” Ganho de informação AdaBoost
Métodos “wrappers” Depende dos classificadores Problema: complexidade computacional
51
“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.
52
Atributos selecionados Método 1Selected attributes: 3,4,5,6,9 : 5 tumor-size inv-nodes node-caps deg-malig irradiat Método 2Selected 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
53
Exemplo de experimento prático
05
1015202530354045
5 25 40 100 all 760 plp 118
info gain
boosting
others
3 x 253 + 1 = 760 “features”SVMs com kernel linear (perceptron)Algoritmo de seleção:
AdaBoost vs. ganho de informação (“info gain”)
54
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)
55
Predição (ou regressão)
Regressão linear
Regressão não-linear
56
Regressão linear
Código MatlabN=100; a=3;t=rand(1,N);x=a*t+rand(1,N);plot(t,x,'o');
Linear Regression Model (Weka)
Y = 2.9974 * X + 0.4769
Correlation coefficient 0.9358Mean absolute error 0.2744
0 0.2 0.4 0.6 0.8 10
1
2
3
4
0 0.2 0.4 0.6 0.8 10
1
2
3
4
57
Regressão não-linear
Código MatlabN=100;a=3;x=rand(1,N);y=a*cos(2*pi*x)+rand(1,N);plot(x,y,'o');
Problema: Linear não resolve
Solução: Redes neurais SVM
0 0.2 0.4 0.6 0.8 1-3
-2
-1
0
1
2
3
4
58
Análise de grupamentos
Algoritmos: K-means EM (“expectation maximization”)
59
Weka avançado
Usando Weka da linha de comando PATH
DOS: setLinux: bash (export), tcsh (setenv)
CLASSPATH
Modificando o código fonte do Weka Compilador JBuilder
60
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
61
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
top related