Carregar apresentação
A apresentação está carregando. Por favor, espere
1
RIPPER Fast Effective Rule Induction
William W. Cohen apresentação Felipe Hoppe Levin Guilherme Dal Bianco
2
Regras de Classificação - Vantagens
Fáceis de entender Melhores que árvores de decisão em muitos problemas Representáveis em lógica de primeira ordem Fácil de implementar em linguagens como PROLOG
3
Regras de Classificação - Desvantagens
Pouco escaláveis Desempenho ruim em dados com muito ruído Tipicamente em dados reais
4
Objetivo Desenvolver um algoritmo de aprendizado de regras de classificação que seja: Escalável Eficiente com dados ruidosos Competitivo com algoritmos de árvores de decisão como C4.5 / C4.5rules
5
Solução Estudada: IREP
“Poda” das regras Simplificação diminui a interferência de dados ruidosos Divisão e Conquista Conjunto de Treinamento (2/3 dos dados) Conjunto de Validação (1/3 dos dados) Gerados aleatoriamente “Poda” cada regra criada iterativamente Até que a “poda” reduza a acurácia
6
O algoritmo IREP procedure IREP(Pos,Neg) begin Ruleset = Ø
while Pos ≠ Ø do split (Pos,Neg) into (GrowPos,GrowNeg) and (PrunePos,PruneNeg) Rule := GrowRule(GrowPos,GrowNeg) Rule := PruneRule(Rule,PrunePos,PruneNeg) if the error rate of Rule on (PrunePos,PruneNeg) exceeds 50% then return Ruleset else add Rule to Ruleset remove examples covered by Rule from (Pos,Neg) endif endwhile end
7
Exemplo # Tempo Temperatura Umidade Ventoso Joga 1 Ensolarado Quente
Alta Falso Não 2 Verdadeiro 3 Nublado Sim 4 Chuvoso Amena 5 Fria Normal 6 7 8 9 10 11 12 13 14
8
Transações são separadas nos grupos POS e NEG
Exemplo - IREP # Tempo Temperatura Umidade Ventoso Joga 1 Ensolarado Quente Alta Falso Não 2 Verdadeiro 3 Nublado Sim 4 Chuvoso Amena 5 Fria Normal 6 7 8 9 10 11 12 13 14 Transações são separadas nos grupos POS e NEG
9
Exemplo - IREP # Tempo Temperatura Umidade Ventoso Joga 3 Nublado
Quente Alta Falso Sim 4 Chuvoso Amena 5 Fria Normal 7 Verdadeiro 9 Ensolarado 10 11 12 13 1 Não 2 6 8 14
10
Exemplo - IREP # Tempo Temperatura Umidade Ventoso Joga 3 Nublado Quente Alta Falso Sim 4 Chuvoso Amena 5 Fria Normal 7 Verdadeiro 9 Ensolarado 10 11 12 13 1 Não 2 6 8 14 A cada iteração, são formados os grupos GrowPos, GrowNeg, PrunePos e PruneNeg de forma aleatória.
11
Exemplo - IREP GP PP GN PN # Tempo Temperatura Umidade Ventoso Joga 3
Nublado Quente Alta Falso Sim 4 Chuvoso Amena 5 Fria Normal 7 Verdadeiro 9 Ensolarado 10 11 12 13 1 Não 2 6 8 14 GP PP GN PN
12
O algoritmo IREP procedure IREP(Pos,Neg) begin Ruleset = Ø
while Pos ≠ Ø do split (Pos,Neg) into (GrowPos,GrowNeg) and (PrunePos,PruneNeg) Rule := GrowRule(GrowPos,GrowNeg) Rule := PruneRule(Rule,PrunePos,PruneNeg) if the error rate of Rule on (PrunePos,PruneNeg) exceeds 50% then return Ruleset else add Rule to Ruleset remove examples covered by Rule from (Pos,Neg) endif endwhile end
13
GrowRule Cria uma nova regra
Adiciona condições que maximizam o critério de ganho de informação de FOIL t · [ log2 ( p1 / ( p1+n1 )) - log2 (p0 / (p0 + n0)) ] p: positivos n: negativos t: positivos cobertos pelas duas regras Para de adicionar condições quando a regra não cobrir nenhuma transação negativa
14
Exemplo - GrowRule GP GN Regra: Ventoso = Falso # Tempo Temperatura
Umidade Ventoso Joga 3 Nublado Quente Alta Falso Sim 4 Chuvoso Amena 5 Fria Normal 7 Verdadeiro 9 Ensolarado 10 1 Não 2 6 GP GN Regra: Ventoso = Falso
15
Exemplo - GrowRule GP GN Regra: Ventoso = Falso
# Tempo Temperatura Umidade Ventoso Joga 3 Nublado Quente Alta Falso Sim 4 Chuvoso Amena 5 Fria Normal 7 Verdadeiro 9 Ensolarado 10 1 Não 2 6 GP GN Regra: Ventoso = Falso t · [ log2 ( p1 / ( p1+n1 )) - log2 (p0 / (p0 + n0)) ]
16
Exemplo - GrowRule GP GN Regra: Ventoso = Falso
# Tempo Temperatura Umidade Ventoso Joga 3 Nublado Quente Alta Falso Sim 4 Chuvoso Amena 5 Fria Normal 7 Verdadeiro 9 Ensolarado 10 1 Não 2 6 GP GN Regra: Ventoso = Falso 5· [ log2 ( p1 / ( p1+n1 )) - log2 (p0 / (p0 + n0)) ]
17
Exemplo - GrowRule GP GN Regra: Ventoso = Falso
# Tempo Temperatura Umidade Ventoso Joga 3 Nublado Quente Alta Falso Sim 4 Chuvoso Amena 5 Fria Normal 7 Verdadeiro 9 Ensolarado 10 1 Não 2 6 GP GN Regra: Ventoso = Falso 5· [ log2 ( 5 / ( )) - log2 (6 / (6 + 3)) ]
18
Exemplo - GrowRule GP GN Regra: Ventoso = Falso
# Tempo Temperatura Umidade Ventoso Joga 3 Nublado Quente Alta Falso Sim 4 Chuvoso Amena 5 Fria Normal 7 Verdadeiro 9 Ensolarado 10 1 Não 2 6 GP GN Regra: Ventoso = Falso 5· [ -0,26 + 0,58 ] = 5 · 0,32 = 1,6 bits de ganho de informação
19
Exemplo - GrowRule Ventoso = Falso → 1,60 bits
Ventoso = Verdadeiro → -1 bits Umidade = Alta → -0,83 bits Umidade = Normal → 1,05 bits Temper. = Quente → -1 bits Temper. = Amena → 1,17 bits Temper.= Fria → 0,51 bits Tempo = Nublado → 1,17 bits Tempo = Ensolarado → -1 bits Tempo = Chuvoso → 0,51 bits
20
Exemplo - GrowRule Ventoso = Falso → 1,60 bits → Maior ganho
Ventoso = Verdadeiro → -1 bits Umidade = Alta → -0,83 bits Umidade = Normal → 1,05 bits Temper. = Quente → -1 bits Temper. = Amena → 1,17 bits Temper.= Fria → 0,51 bits Tempo = Nublado → 1,17 bits Tempo = Ensolarado → -1 bits Tempo = Chuvoso → 0,51 bits
21
Exemplo - GrowRule GP GN Regra: Ventoso = Falso
# Tempo Temperatura Umidade Ventoso Joga 3 Nublado Quente Alta Falso Sim 4 Chuvoso Amena 5 Fria Normal 7 Verdadeiro 9 Ensolarado 10 1 Não 2 6 GP GN Regra: Ventoso = Falso Cobre 1 regra negativa → Continua adicionando condições
22
Exemplo - GrowRule Ventoso = Falso and Umidade = Alta → -0,64 bits
Ventoso = Falso and Umidade = Normal → 0,79 bits Ventoso = Falso and Temper. = Quente → -0,74 bits Ventoso = Falso and Temper. = Amena → 0,53 bits Ventoso = Falso and Temper.= Fria → 0,53 bits Ventoso = Falso and Tempo = Nublado → 0,26 bits Ventoso = Falso and Tempo = Ensolar. → -0,74 bits Ventoso = Falso and Tempo = Chuvoso → 0,79 bits
23
Exemplo - GrowRule Ventoso = Falso and Umidade = Alta → -0,64 bits
Ventoso = Falso and Umidade = Normal → 0,79 bits Ventoso = Falso and Temper. = Quente → -0,74 bits Ventoso = Falso and Temper. = Amena → 0,53 bits Ventoso = Falso and Temper.= Fria → 0,53 bits Ventoso = Falso and Tempo = Nublado → 0,26 bits Ventoso = Falso and Tempo = Ensolar. → -0,74 bits Ventoso = Falso and Tempo = Chuvoso → 0,79 bits Ventoso = Falso and Umidade = Normal ou Ventoso = Falso and Tempo = Chuvoso
24
Exemplo - GrowRule GP GN Regra: Ventoso = Falso and Umidade = Normal
# Tempo Temperatura Umidade Ventoso Joga 3 Nublado Quente Alta Falso Sim 4 Chuvoso Amena 5 Fria Normal 7 Verdadeiro 9 Ensolarado 10 1 Não 2 6 GP GN Regra: Ventoso = Falso and Umidade = Normal Não cobre regras negativas → Para de adicionar condições
25
O algoritmo IREP procedure IREP(Pos,Neg) begin Ruleset = Ø
while Pos ≠ Ø do split (Pos,Neg) into (GrowPos,GrowNeg) and (PrunePos,PruneNeg) Rule := GrowRule(GrowPos,GrowNeg) Rule := PruneRule(Rule,PrunePos,PruneNeg) if the error rate of Rule on (PrunePos,PruneNeg) exceeds 50% then return Ruleset else add Rule to Ruleset remove examples covered by Rule from (Pos,Neg) endif endwhile end
26
PruneRule “Poda” a regra criada
Exclui seqüência final de condições que maximizam a função: v = (p + (N – n)) / (P + N) p: positivos em PrunePos cobertos pela regra n: negativos em PruneNeg cobertos pela regra P: positivos em PrunePos N: negativos em PruneNeg Deixa de excluir quando o valor de v deixa de ser melhorado
27
Exemplo - PruneRule PP PN Regra: Ventoso = Falso and Umidade = Normal
# Tempo Temperatura Umidade Ventoso Joga 11 Ensolarado Amena Normal Verdadeiro Sim 12 Nublado Alta 13 Quente Falso 8 Não 14 Chuvoso PP PN Regra: Ventoso = Falso and Umidade = Normal
28
Exemplo - PruneRule PP PN Regra: Ventoso = Falso and Umidade = Normal
# Tempo Temperatura Umidade Ventoso Joga 11 Ensolarado Amena Normal Verdadeiro Sim 12 Nublado Alta 13 Quente Falso 8 Não 14 Chuvoso PP PN Regra: Ventoso = Falso and Umidade = Normal v = (p + (N – n)) / (P + N)
29
Exemplo - PruneRule PP PN Regra: Ventoso = Falso and Umidade = Normal
# Tempo Temperatura Umidade Ventoso Joga 11 Ensolarado Amena Normal Verdadeiro Sim 12 Nublado Alta 13 Quente Falso 8 Não 14 Chuvoso PP PN Regra: Ventoso = Falso and Umidade = Normal v = (p + (N – n)) / (P + N) v = (1 + (2 – 0)) / (3 + 2) v = 3 / 5 = 0,6
30
Exemplo - PruneRule PP PN Regra: Ventoso = Falso
# Tempo Temperatura Umidade Ventoso Joga 11 Ensolarado Amena Normal Verdadeiro Sim 12 Nublado Alta 13 Quente Falso 8 Não 14 Chuvoso PP PN Regra: Ventoso = Falso v = (p + (N – n)) / (P + N) v = (1 + (2 – 1)) / (3 + 2) v = 2 / 5 = 0,4
31
Exemplo - PruneRule PP PN Regra: Ventoso = Falso
# Tempo Temperatura Umidade Ventoso Joga 11 Ensolarado Amena Normal Verdadeiro Sim 12 Nublado Alta 13 Quente Falso 8 Não 14 Chuvoso PP PN Regra: Ventoso = Falso v = (p + (N – n)) / (P + N) v = (1 + (2 – 1) )/ (3 + 2) v = 2 / 5 = 0,4 Como o valor de v para a regra original é maior (0,6), então não faz a “poda”.
32
O algoritmo IREP procedure IREP(Pos,Neg) begin Ruleset = Ø
while Pos ≠ Ø do split (Pos,Neg) into (GrowPos,GrowNeg) and (PrunePos,PruneNeg) Rule := GrowRule(GrowPos,GrowNeg) Rule := PruneRule(Rule,PrunePos,PruneNeg) if the error rate of Rule on (PrunePos,PruneNeg) exceeds 50% then return Ruleset else add Rule to Ruleset remove examples covered by Rule from (Pos,Neg) endif endwhile end
33
Exemplo – Condição de Parada
# Tempo Temperatura Umidade Ventoso Joga 11 Ensolarado Amena Normal Verdadeiro Sim 12 Nublado Alta 13 Quente Falso 8 Não 14 Chuvoso PP PN Regra: Ventoso = Falso and Umidade = Normal
34
Exemplo – Condição de Parada
# Tempo Temperatura Umidade Ventoso Joga 11 Ensolarado Amena Normal Verdadeiro Sim 12 Nublado Alta 13 Quente Falso 8 Não 14 Chuvoso PP PN Regra: Ventoso = Falso and Umidade = Normal Positivos: 1 Negativos: 0 Taxa de Erro = 0 → Continua o algoritmo
35
O algoritmo IREP procedure IREP(Pos,Neg) begin Ruleset = Ø
while Pos ≠ Ø do split (Pos,Neg) into (GrowPos,GrowNeg) and (PrunePos,PruneNeg) Rule := GrowRule(GrowPos,GrowNeg) Rule := PruneRule(Rule,PrunePos,PruneNeg) if the error rate of Rule on (PrunePos,PruneNeg) exceeds 50% then return Ruleset else add Rule to Ruleset remove examples covered by Rule from (Pos,Neg) endif endwhile end
36
Exemplo – Removendo Transações
# Tempo Temperatura Umidade Ventoso Joga 3 Nublado Quente Alta Falso Sim 4 Chuvoso Amena 5 Fria Normal 7 Verdadeiro 9 Ensolarado 10 11 12 13 1 Não 2 6 8 14
37
Exemplo – Removendo Transações
# Tempo Temperatura Umidade Ventoso Joga 3 Nublado Quente Alta Falso Sim 4 Chuvoso Amena 5 Fria Normal 7 Verdadeiro 9 Ensolarado 10 11 12 13 1 Não 2 6 8 14
38
Exemplo – Removendo Transações
# Tempo Temperatura Umidade Ventoso Joga 3 Nublado Quente Alta Falso Sim 4 Chuvoso Amena 7 Fria Normal Verdadeiro 11 Ensolarado 12 1 Não 2 6 8 14
39
O algoritmo IREP procedure IREP(Pos,Neg) begin Ruleset = Ø
while Pos ≠ Ø do split (Pos,Neg) into (GrowPos,GrowNeg) and (PrunePos,PruneNeg) Rule := GrowRule(GrowPos,GrowNeg) Rule := PruneRule(Rule,PrunePos,PruneNeg) if the error rate of Rule on (PrunePos,PruneNeg) exceeds 50% then return Ruleset else add Rule to Ruleset remove examples covered by Rule from (Pos,Neg) endif endwhile end
40
Resultado Possível Ventoso = Falso and Umidade = Normal
Tempo = Nublado
41
Resultado Possível # Tempo Temperatura Umidade Ventoso Joga 3 Nublado
Quente Alta Falso Sim 4 Chuvoso Amena 5 Fria Normal 7 Verdadeiro 9 Ensolarado 10 11 12 13 1 Não 2 6 8 14
42
Resultado Possível Sim Não 7 2 5 # Tempo Temperatura Umidade Ventoso
Joga 3 Nublado Quente Alta Falso Sim 4 Chuvoso Amena 5 Fria Normal 7 Verdadeiro 9 Ensolarado 10 11 12 13 1 Não 2 6 8 14 Verdade\Class. Sim Não 7 2 5
43
Resultados obtidos pelo IREP
Apresentar os gráficos aqui IREP: O(m log² m), m = Número de exemplos.
44
Problemas Benchmarks utilizados nos exemplos
45
Resultados obtidos pelo IREP
Ponto positivo Mais rápido que C4.5 Ponto negativo Capacidade preditiva do IREP pior que C4.5. Taxa won-lost-tie:
46
Aprimoramentos ao IREP
Três modificaçes: Métrica alternativa para fase de poda; Nova heurística para determinar quando parar de adicionar regras ao conjunto; Pós-poda para otimizar o conjunto de regras;
47
Métrica de Poda Um dos problemas de convergência do IREP é sua métrica para determinar se as regras irão ser podadas. Exemplo: 1) P: 4000 N: 2000 Regra 1 p: Regra p:1000 n: n:1 v = (p + (N – n)) / (P + N) v=(2000 +( ))/( ) v=(1000+(2000-1))/( ) v= v=0.4999
48
Métrica de Poda A métrica prioriza uma regra com maior número de positivos porém com uma maior taxa de erro. Como alternativa, foi proposta uma nova métrica: V=(p-n)/(p+n) Amostra 1: Amostra 2: V=( )/ V=(1000-1)/(1000+1) ( )=0.333 V=0.99
49
Condição de Parada Dependendo dos dados, o IREP pára cedo demais.
Solução: Após uma regra ser adicionada, o tamanho total do do conjuto é computado. Caso o tamanho deste novo conjunto de regras seja maior d bits do que a maior regra obtida, ou quando não existem mais casos positivos, o algoritmo pára de adicionar regras.
50
Condição de Parada Fórmula para o cálculo de tamanho em bits de uma regra 0,5 ∙ (|k| + k log2 n/k + (n-k)log2 1/(1-k/n) ) k: número de condições da regra n: número de condições possíveis |k|: número de bits necessários para representar o inteiro k
51
Exemplo - Condição de Parada
Regra: Ventoso = Falso and Umidade = Normal k = n = |k| = 2 0,5 ∙ (|k| + k log2 n/k + (n-k)log2 1/(1-k/n) ) 0,5 ∙ ( log2 4/2 + (4-2)log2 1/(1-2/4) ) 0,5 ∙ ( log log2 2 ) 0,5 ∙ ( ) = 0,5 ∙ 6 = 3 bits
52
IREP * IREP* é o IREP, adicionado da nova condição de parada e nova métrica de poda em relação ao IREP em relação ao C4.5rules Taxa de erro 1.06 (IREP 1.13)
53
Otimização das Regras Pós poda das regras produzidas pelo IREP*
Regras otimizadas uma a uma Para cada regra R, 2 alternativas são construídas Ri‘ – regra de substituição Ri‘‘ – regra de revisão Das três regras, é escolhida aquela com menor tamanho em bits → Princípio de quanto mais simples melhor
54
RIPPER IREP* é usado para obter um conjunto de regras;
Regras são otimizadas IREP* é utilizado para acrescentar regras para cobrir exemplos positivos restantes. Repeated Incremental Pruning to Produce Error Reduction RIPPERk → Aplica os passos 2 e 3 k vezes.
55
Poder Preditivo do RIPPER
contra IREP*
56
Taxa de erro
57
Eficiência do RIPPER RIPPER2 RIPPER2
58
Razões da Eficiência do RIPPER
Um modelo inicial é criado com IREP* e então simplificado iterativamente Eficiência na geração do modelo inicial Simplificação em tempo linear C4.5 tem uma simplificação com um grande custo computacional para grandes modelos inicias; RIPPER é muito mais eficiente em dados ruidosos e com grande volume
59
Conclusão RIPPERk é mais eficiente e tem performance competitiva com C4.5 (melhor em alguns casos) Ótimo razão custo/benefício (tempo de execução/capacidade preditiva)
60
Referências Fast Effective Rule Induction William W. Cohen [1995]
Incremental Reduced Error Pruning J. Fürnkranz & G. Widmer [1994] Efficient Pruning Methods William W. Cohen [1993]
61
PERGUNTAS?
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.