RIPPER Fast Effective Rule Induction William W. Cohen apresentação Felipe Hoppe Levin Guilherme...

Post on 17-Apr-2015

110 views 2 download

Transcript of RIPPER Fast Effective Rule Induction William W. Cohen apresentação Felipe Hoppe Levin Guilherme...

RIPPERRIPPERFast Effective Rule InductionFast Effective Rule Induction

William W. CohenWilliam W. Cohen

apresentaçãoapresentação

Felipe Hoppe LevinFelipe Hoppe LevinGuilherme Dal BiancoGuilherme Dal Bianco

Regras de Classificação - Regras de Classificação - VantagensVantagens

Fáceis de entenderFáceis de entender Melhores que árvores de decisão em Melhores que árvores de decisão em

muitos problemasmuitos problemas Representáveis em lógica de Representáveis em lógica de

primeira ordemprimeira ordem Fácil de implementar em linguagens Fácil de implementar em linguagens

como PROLOGcomo PROLOG

Regras de Classificação - Regras de Classificação - DesvantagensDesvantagens

Pouco escaláveisPouco escaláveis Desempenho ruim em dados com Desempenho ruim em dados com

muito ruídomuito ruído Tipicamente em dados reaisTipicamente em dados reais

ObjetivoObjetivo

Desenvolver um algoritmo de Desenvolver um algoritmo de aprendizado de regras de aprendizado de regras de classificação que seja:classificação que seja: EscalávelEscalável Eficiente com dados ruidososEficiente com dados ruidosos Competitivo com algoritmos de árvores Competitivo com algoritmos de árvores

de decisão como C4.5 / C4.5rulesde decisão como C4.5 / C4.5rules

Solução Estudada: IREPSolução Estudada: IREP

““Poda” das regrasPoda” das regras Simplificação diminui a interferência de Simplificação diminui a interferência de

dados ruidososdados ruidosos Divisão e ConquistaDivisão e Conquista

Conjunto de Treinamento (2/3 dos dados)Conjunto de Treinamento (2/3 dos dados) Conjunto de Validação (1/3 dos dados)Conjunto de Validação (1/3 dos dados) Gerados aleatoriamenteGerados aleatoriamente

““Poda” cada regra criada Poda” cada regra criada iterativamenteiterativamente Até que a “poda” reduza a acuráciaAté que a “poda” reduza a acurácia

O algoritmo IREPO algoritmo IREPprocedure 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% thenreturn Ruleset

elseadd Rule to Rulesetremove examples covered by Rule from

(Pos,Neg)endif

endwhilereturn Ruleset

end

ExemploExemplo

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

11 EnsolaradoEnsolarado QuenteQuente AltaAlta FalsoFalso NãoNão

22 EnsolaradoEnsolarado QuenteQuente AltaAlta VerdadeirVerdadeiroo

NãoNão

33 NubladoNublado QuenteQuente AltaAlta FalsoFalso SimSim

44 ChuvosoChuvoso AmenaAmena AltaAlta FalsoFalso SimSim

55 ChuvosoChuvoso FriaFria NormalNormal FalsoFalso SimSim

66 ChuvosoChuvoso FriaFria NormalNormal VerdadeirVerdadeiroo

NãoNão

77 NubladoNublado FriaFria NormalNormal VerdadeirVerdadeiroo

SimSim

88 EnsolaradoEnsolarado AmenaAmena AltaAlta FalsoFalso NãoNão

99 EnsolaradoEnsolarado FriaFria NormalNormal FalsoFalso SimSim

1010 ChuvosoChuvoso AmenaAmena NormalNormal FalsoFalso SimSim

1111 EnsolaradoEnsolarado AmenaAmena NormalNormal VerdadeirVerdadeiroo

SimSim

1212 NubladoNublado AmenaAmena AltaAlta VerdadeirVerdadeiroo

SimSim

1313 NubladoNublado QuenteQuente NormalNormal FalsoFalso SimSim

1414 ChuvosoChuvoso AmenaAmena AltaAlta VerdadeirVerdadeiroo

NãoNão

Exemplo - IREPExemplo - IREP

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

11 EnsolaradoEnsolarado QuenteQuente AltaAlta FalsoFalso NãoNão

22 EnsolaradoEnsolarado QuenteQuente AltaAlta VerdadeirVerdadeiroo

NãoNão

33 NubladoNublado QuenteQuente AltaAlta FalsoFalso SimSim

44 ChuvosoChuvoso AmenaAmena AltaAlta FalsoFalso SimSim

55 ChuvosoChuvoso FriaFria NormalNormal FalsoFalso SimSim

66 ChuvosoChuvoso FriaFria NormalNormal VerdadeirVerdadeiroo

NãoNão

77 NubladoNublado FriaFria NormalNormal VerdadeirVerdadeiroo

SimSim

88 EnsolaradoEnsolarado AmenaAmena AltaAlta FalsoFalso NãoNão

99 EnsolaradoEnsolarado FriaFria NormalNormal FalsoFalso SimSim

1010 ChuvosoChuvoso AmenaAmena NormalNormal FalsoFalso SimSim

1111 EnsolaradoEnsolarado AmenaAmena NormalNormal VerdadeirVerdadeiroo

SimSim

1212 NubladoNublado AmenaAmena AltaAlta VerdadeirVerdadeiroo

SimSim

1313 NubladoNublado QuenteQuente NormalNormal FalsoFalso SimSim

1414 ChuvosoChuvoso AmenaAmena AltaAlta VerdadeirVerdadeiroo

NãoNão

Transações são separadas nos grupos POS e NEG

Exemplo - IREPExemplo - IREP

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

33 NubladoNublado QuenteQuente AltaAlta FalsoFalso SimSim

44 ChuvosoChuvoso AmenaAmena AltaAlta FalsoFalso SimSim

55 ChuvosoChuvoso FriaFria NormalNormal FalsoFalso SimSim

77 NubladoNublado FriaFria NormalNormal VerdadeirVerdadeiroo

SimSim

99 EnsolaradoEnsolarado FriaFria NormalNormal FalsoFalso SimSim

1010 ChuvosoChuvoso AmenaAmena NormalNormal FalsoFalso SimSim

1111 EnsolaradoEnsolarado AmenaAmena NormalNormal VerdadeirVerdadeiroo

SimSim

1212 NubladoNublado AmenaAmena AltaAlta VerdadeirVerdadeiroo

SimSim

1313 NubladoNublado QuenteQuente NormalNormal FalsoFalso SimSim

11 EnsolaradoEnsolarado QuenteQuente AltaAlta FalsoFalso NãoNão

22 EnsolaradoEnsolarado QuenteQuente AltaAlta VerdadeirVerdadeiroo

NãoNão

66 ChuvosoChuvoso FriaFria NormalNormal VerdadeirVerdadeiroo

NãoNão

88 EnsolaradoEnsolarado AmenaAmena AltaAlta FalsoFalso NãoNão

1414 ChuvosoChuvoso AmenaAmena AltaAlta VerdadeirVerdadeiroo

NãoNão

Exemplo - IREPExemplo - IREP

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

33 NubladoNublado QuenteQuente AltaAlta FalsoFalso SimSim

44 ChuvosoChuvoso AmenaAmena AltaAlta FalsoFalso SimSim

55 ChuvosoChuvoso FriaFria NormalNormal FalsoFalso SimSim

77 NubladoNublado FriaFria NormalNormal VerdadeirVerdadeiroo

SimSim

99 EnsolaradoEnsolarado FriaFria NormalNormal FalsoFalso SimSim

1010 ChuvosoChuvoso AmenaAmena NormalNormal FalsoFalso SimSim

1111 EnsolaradoEnsolarado AmenaAmena NormalNormal VerdadeirVerdadeiroo

SimSim

1212 NubladoNublado AmenaAmena AltaAlta VerdadeirVerdadeiroo

SimSim

1313 NubladoNublado QuenteQuente NormalNormal FalsoFalso SimSim

11 EnsolaradoEnsolarado QuenteQuente AltaAlta FalsoFalso NãoNão

22 EnsolaradoEnsolarado QuenteQuente AltaAlta VerdadeirVerdadeiroo

NãoNão

66 ChuvosoChuvoso FriaFria NormalNormal VerdadeirVerdadeiroo

NãoNão

88 EnsolaradoEnsolarado AmenaAmena AltaAlta FalsoFalso NãoNão

1414 ChuvosoChuvoso AmenaAmena AltaAlta VerdadeirVerdadeiroo

NãoNão

A cada iteração, são formados os grupos GrowPos, GrowNeg,

PrunePos e PruneNeg de forma aleatória.

Exemplo - IREPExemplo - IREP

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

33 NubladoNublado QuenteQuente AltaAlta FalsoFalso SimSim

44 ChuvosoChuvoso AmenaAmena AltaAlta FalsoFalso SimSim

55 ChuvosoChuvoso FriaFria NormalNormal FalsoFalso SimSim

77 NubladoNublado FriaFria NormalNormal VerdadeirVerdadeiroo

SimSim

99 EnsolaradoEnsolarado FriaFria NormalNormal FalsoFalso SimSim

1010 ChuvosoChuvoso AmenaAmena NormalNormal FalsoFalso SimSim

1111 EnsolaradoEnsolarado AmenaAmena NormalNormal VerdadeirVerdadeiroo

SimSim

1212 NubladoNublado AmenaAmena AltaAlta VerdadeirVerdadeiroo

SimSim

1313 NubladoNublado QuenteQuente NormalNormal FalsoFalso SimSim

11 EnsolaradoEnsolarado QuenteQuente AltaAlta FalsoFalso NãoNão

22 EnsolaradoEnsolarado QuenteQuente AltaAlta VerdadeirVerdadeiroo

NãoNão

66 ChuvosoChuvoso FriaFria NormalNormal VerdadeirVerdadeiroo

NãoNão

88 EnsolaradoEnsolarado AmenaAmena AltaAlta FalsoFalso NãoNão

1414 ChuvosoChuvoso AmenaAmena AltaAlta VerdadeirVerdadeiroo

NãoNão

GP

PP

GN

PN

O algoritmo IREPO algoritmo IREPprocedure 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% thenreturn Ruleset

elseadd Rule to Rulesetremove examples covered by Rule from

(Pos,Neg)endif

endwhilereturn Ruleset

end

GrowRuleGrowRule Cria uma nova regraCria uma nova regra Adiciona condições que maximizam o Adiciona condições que maximizam o

critério de ganho de informação de FOILcritério de ganho de informação de FOIL t · [ log2 ( p1 / ( p1+n1 )) - log2 (p0 / (p0 + n0)) ]

p: positivosp: positivos n: negativosn: negativos t: positivos cobertos pelas duas regrast: positivos cobertos pelas duas regras

Para de adicionar condições quando a Para de adicionar condições quando a regra não cobrir nenhuma transação regra não cobrir nenhuma transação negativanegativa

Exemplo - GrowRuleExemplo - GrowRule

## TempoTempo TemperatuTemperaturara UmidadeUmidade VentosoVentoso JogaJoga

33 NubladoNublado QuenteQuente AltaAlta FalsoFalso SimSim

44 ChuvosoChuvoso AmenaAmena AltaAlta FalsoFalso SimSim

55 ChuvosoChuvoso FriaFria NormalNormal FalsoFalso SimSim

77 NubladoNublado FriaFria NormalNormal VerdadeirVerdadeiroo

SimSim

99 EnsolaradoEnsolarado FriaFria NormalNormal FalsoFalso SimSim

1010 ChuvosoChuvoso AmenaAmena NormalNormal FalsoFalso SimSim

11 EnsolaradoEnsolarado QuenteQuente AltaAlta FalsoFalso NãoNão

22 EnsolaradoEnsolarado QuenteQuente AltaAlta VerdadeirVerdadeiroo

NãoNão

66 ChuvosoChuvoso FriaFria NormalNormal VerdadeirVerdadeiroo

NãoNão

GP

GN

Regra: Ventoso = Falso

Exemplo - GrowRuleExemplo - GrowRule

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

33 NubladoNublado QuenteQuente AltaAlta FalsoFalso SimSim

44 ChuvosoChuvoso AmenaAmena AltaAlta FalsoFalso SimSim

55 ChuvosoChuvoso FriaFria NormalNormal FalsoFalso SimSim

77 NubladoNublado FriaFria NormalNormal VerdadeirVerdadeiroo

SimSim

99 EnsolaradoEnsolarado FriaFria NormalNormal FalsoFalso SimSim

1010 ChuvosoChuvoso AmenaAmena NormalNormal FalsoFalso SimSim

11 EnsolaradoEnsolarado QuenteQuente AltaAlta FalsoFalso NãoNão

22 EnsolaradoEnsolarado QuenteQuente AltaAlta VerdadeirVerdadeiroo

NãoNão

66 ChuvosoChuvoso FriaFria NormalNormal VerdadeirVerdadeiroo

NãoNão

GP

GN

Regra: Ventoso = Falso

t · [ log2 ( p1 / ( p1+n1 )) - log2 (p0 / (p0 + n0)) ]

Exemplo - GrowRuleExemplo - GrowRule

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

33 NubladoNublado QuenteQuente AltaAlta FalsoFalso SimSim

44 ChuvosoChuvoso AmenaAmena AltaAlta FalsoFalso SimSim

55 ChuvosoChuvoso FriaFria NormalNormal FalsoFalso SimSim

77 NubladoNublado FriaFria NormalNormal VerdadeirVerdadeiroo

SimSim

99 EnsolaradoEnsolarado FriaFria NormalNormal FalsoFalso SimSim

1010 ChuvosoChuvoso AmenaAmena NormalNormal FalsoFalso SimSim

11 EnsolaradoEnsolarado QuenteQuente AltaAlta FalsoFalso NãoNão

22 EnsolaradoEnsolarado QuenteQuente AltaAlta VerdadeirVerdadeiroo

NãoNão

66 ChuvosoChuvoso FriaFria NormalNormal VerdadeirVerdadeiroo

NãoNão

GP

GN

Regra: Ventoso = Falso

5· [ log2 ( p1 / ( p1+n1 )) - log2 (p0 / (p0 + n0)) ]

Exemplo - GrowRuleExemplo - GrowRule

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

33 NubladoNublado QuenteQuente AltaAlta FalsoFalso SimSim

44 ChuvosoChuvoso AmenaAmena AltaAlta FalsoFalso SimSim

55 ChuvosoChuvoso FriaFria NormalNormal FalsoFalso SimSim

77 NubladoNublado FriaFria NormalNormal VerdadeirVerdadeiroo

SimSim

99 EnsolaradoEnsolarado FriaFria NormalNormal FalsoFalso SimSim

1010 ChuvosoChuvoso AmenaAmena NormalNormal FalsoFalso SimSim

11 EnsolaradoEnsolarado QuenteQuente AltaAlta FalsoFalso NãoNão

22 EnsolaradoEnsolarado QuenteQuente AltaAlta VerdadeirVerdadeiroo

NãoNão

66 ChuvosoChuvoso FriaFria NormalNormal VerdadeirVerdadeiroo

NãoNão

GP

GN

Regra: Ventoso = Falso

5· [ log2 ( 5 / ( 5 + 1 )) - log2 (6 / (6 + 3)) ]

Exemplo - GrowRuleExemplo - GrowRule

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

33 NubladoNublado QuenteQuente AltaAlta FalsoFalso SimSim

44 ChuvosoChuvoso AmenaAmena AltaAlta FalsoFalso SimSim

55 ChuvosoChuvoso FriaFria NormalNormal FalsoFalso SimSim

77 NubladoNublado FriaFria NormalNormal VerdadeirVerdadeiroo

SimSim

99 EnsolaradoEnsolarado FriaFria NormalNormal FalsoFalso SimSim

1010 ChuvosoChuvoso AmenaAmena NormalNormal FalsoFalso SimSim

11 EnsolaradoEnsolarado QuenteQuente AltaAlta FalsoFalso NãoNão

22 EnsolaradoEnsolarado QuenteQuente AltaAlta VerdadeirVerdadeiroo

NãoNão

66 ChuvosoChuvoso FriaFria NormalNormal VerdadeirVerdadeiroo

NãoNão

GP

GN

Regra: Ventoso = Falso

5· [ -0,26 + 0,58 ] = 5 · 0,32 = 1,6 bits de ganho de informação

Exemplo - GrowRuleExemplo - GrowRule Ventoso = Falso Ventoso = Falso → 1,60 bits→ 1,60 bits Ventoso = Verdadeiro Ventoso = Verdadeiro → -1 bits→ -1 bits Umidade = Alta Umidade = Alta → -0,83 bits→ -0,83 bits Umidade = Normal Umidade = Normal → 1,05 bits→ 1,05 bits Temper. = Quente Temper. = Quente → -1 bits→ -1 bits Temper. = Amena Temper. = Amena → 1,17 bits→ 1,17 bits Temper.= Fria Temper.= Fria → 0,51 bits→ 0,51 bits Tempo = Nublado Tempo = Nublado → 1,17 bits→ 1,17 bits Tempo = Ensolarado Tempo = Ensolarado → -1 bits→ -1 bits Tempo = Chuvoso Tempo = Chuvoso → 0,51 bits→ 0,51 bits

Exemplo - GrowRuleExemplo - GrowRule Ventoso = Falso Ventoso = Falso → 1,60 bits → 1,60 bits →→ Maior ganhoMaior ganho Ventoso = Verdadeiro Ventoso = Verdadeiro → -1 bits→ -1 bits Umidade = Alta Umidade = Alta → -0,83 bits→ -0,83 bits Umidade = Normal Umidade = Normal → 1,05 bits→ 1,05 bits Temper. = Quente Temper. = Quente → -1 bits→ -1 bits Temper. = Amena Temper. = Amena → 1,17 bits→ 1,17 bits Temper.= Fria Temper.= Fria → 0,51 bits→ 0,51 bits Tempo = Nublado Tempo = Nublado → 1,17 bits→ 1,17 bits Tempo = Ensolarado Tempo = Ensolarado → -1 bits→ -1 bits Tempo = Chuvoso Tempo = Chuvoso → 0,51 bits→ 0,51 bits

Exemplo - GrowRuleExemplo - GrowRule

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

3 Nublado Quente Alta Falso Sim

4 Chuvoso Amena Alta Falso Sim

5 Chuvoso Fria Normal Falso Sim

77 NubladoNublado FriaFria NormalNormal VerdadeirVerdadeiroo

SimSim

9 Ensolarado Fria Normal Falso Sim

10 Chuvoso Amena Normal Falso Sim

1 Ensolarado Quente Alta Falso Não

22 EnsolaradoEnsolarado QuenteQuente AltaAlta VerdadeirVerdadeiroo

NãoNão

66 ChuvosoChuvoso FriaFria NormalNormal VerdadeirVerdadeiroo

NãoNão

GP

GN

Regra: Ventoso = Falso

Cobre 1 regra negativa → Continua adicionando condições

Exemplo - GrowRuleExemplo - GrowRule Ventoso = Falso and Umidade = Alta Ventoso = Falso and Umidade = Alta → -0,64 bits→ -0,64 bits Ventoso = Falso and Umidade = Normal Ventoso = Falso and Umidade = Normal → 0,79 → 0,79

bitsbits Ventoso = Falso and Temper. = Quente Ventoso = Falso and Temper. = Quente → -0,74 → -0,74

bitsbits Ventoso = Falso and Temper. = Amena Ventoso = Falso and Temper. = Amena → 0,53 bits→ 0,53 bits Ventoso = Falso and Temper.= Fria Ventoso = Falso and Temper.= Fria → 0,53 bits→ 0,53 bits Ventoso = Falso and Tempo = Nublado Ventoso = Falso and Tempo = Nublado → 0,26 bits→ 0,26 bits Ventoso = Falso and Tempo = Ensolar. Ventoso = Falso and Tempo = Ensolar. → -0,74 bits→ -0,74 bits Ventoso = Falso and Tempo = Chuvoso Ventoso = Falso and Tempo = Chuvoso → 0,79 bits→ 0,79 bits

Exemplo - GrowRuleExemplo - GrowRule Ventoso = Falso and Umidade = Alta Ventoso = Falso and Umidade = Alta → -0,64 bits→ -0,64 bits Ventoso = Falso and Umidade = Normal Ventoso = Falso and Umidade = Normal → 0,79 bits→ 0,79 bits Ventoso = Falso and Temper. = Quente Ventoso = Falso and Temper. = Quente → -0,74 bits→ -0,74 bits Ventoso = Falso and Temper. = Amena Ventoso = Falso and Temper. = Amena → 0,53 bits→ 0,53 bits Ventoso = Falso and Temper.= Fria Ventoso = Falso and Temper.= Fria → 0,53 bits→ 0,53 bits Ventoso = Falso and Tempo = Nublado Ventoso = Falso and Tempo = Nublado → 0,26 bits→ 0,26 bits Ventoso = Falso and Tempo = Ensolar. Ventoso = Falso and Tempo = Ensolar. → -0,74 bits→ -0,74 bits Ventoso = Falso and Tempo = Chuvoso Ventoso = Falso and Tempo = Chuvoso → 0,79 bits→ 0,79 bits

Ventoso = Falso and Umidade = NormalVentoso = Falso and Umidade = Normalouou

Ventoso = Falso and Tempo = ChuvosoVentoso = Falso and Tempo = Chuvoso

Exemplo - GrowRuleExemplo - GrowRule

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

3 Nublado Quente Alta Falso Sim

4 Chuvoso Amena Alta Falso Sim

5 Chuvoso Fria Normal Falso Sim

77 NubladoNublado FriaFria NormalNormal VerdadeirVerdadeiroo

SimSim

9 Ensolarado Fria Normal Falso Sim

10 Chuvoso Amena Normal Falso Sim

1 Ensolarado Quente Alta Falso Não

22 EnsolaradoEnsolarado QuenteQuente AltaAlta VerdadeirVerdadeiroo

NãoNão

66 ChuvosoChuvoso FriaFria NormalNormal VerdadeirVerdadeiroo

NãoNão

GP

GN

Regra: Ventoso = Falso and Umidade = Normal

Não cobre regras negativas → Para de adicionar condições

O algoritmo IREPO algoritmo IREPprocedure 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% thenreturn Ruleset

elseadd Rule to Rulesetremove examples covered by Rule from

(Pos,Neg)endif

endwhilereturn Ruleset

end

PruneRulePruneRule ““Poda” a regra criadaPoda” a regra criada Exclui seqüência final de condições que Exclui seqüência final de condições que

maximizam a função:maximizam a função: v = (p + (N – n)) / (P + N)v = (p + (N – n)) / (P + N) p: positivos em PrunePos cobertos pela regrap: positivos em PrunePos cobertos pela regra n: negativos em PruneNeg cobertos pela regran: negativos em PruneNeg cobertos pela regra P: positivos em PrunePosP: positivos em PrunePos N: negativos em PruneNegN: negativos em PruneNeg

Deixa de excluir quando o valor de v deixa Deixa de excluir quando o valor de v deixa de ser melhoradode ser melhorado

Exemplo - PruneRuleExemplo - PruneRule

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

1111 EnsolaradoEnsolarado AmenaAmena NormalNormal VerdadeirVerdadeiroo

SimSim

1212 NubladoNublado AmenaAmena AltaAlta VerdadeirVerdadeiroo

SimSim

1313 NubladoNublado QuenteQuente NormalNormal FalsoFalso SimSim

88 EnsolaradoEnsolarado AmenaAmena AltaAlta FalsoFalso NãoNão

1414 ChuvosoChuvoso AmenaAmena AltaAlta VerdadeirVerdadeiroo

NãoNão

PP

PN

Regra: Ventoso = Falso and Umidade = Normal

Exemplo - PruneRuleExemplo - PruneRule

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

1111 EnsolaradoEnsolarado AmenaAmena NormalNormal VerdadeirVerdadeiroo

SimSim

1212 NubladoNublado AmenaAmena AltaAlta VerdadeirVerdadeiroo

SimSim

1313 NubladoNublado QuenteQuente NormalNormal FalsoFalso SimSim

88 EnsolaradoEnsolarado AmenaAmena AltaAlta FalsoFalso NãoNão

1414 ChuvosoChuvoso AmenaAmena AltaAlta VerdadeirVerdadeiroo

NãoNão

PP

PN

Regra: Ventoso = Falso and Umidade = Normalv = (p + (N – n)) / (P + N)v = (p + (N – n)) / (P + N)

Exemplo - PruneRuleExemplo - PruneRule

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

1111 EnsolaradoEnsolarado AmenaAmena NormalNormal VerdadeirVerdadeiroo

SimSim

1212 NubladoNublado AmenaAmena AltaAlta VerdadeirVerdadeiroo

SimSim

1313 NubladoNublado QuenteQuente NormalNormal FalsoFalso SimSim

88 EnsolaradoEnsolarado AmenaAmena AltaAlta FalsoFalso NãoNão

1414 ChuvosoChuvoso AmenaAmena AltaAlta VerdadeirVerdadeiroo

NãoNão

PP

PN

Regra: Ventoso = Falso and Umidade = Normalv = (p + (N – n)) / (P + N)v = (p + (N – n)) / (P + N)v = (1 + (2 – 0)) / (3 + 2)v = (1 + (2 – 0)) / (3 + 2)v = 3 / 5 = 0,6v = 3 / 5 = 0,6

Exemplo - PruneRuleExemplo - PruneRule

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

1111 EnsolaradoEnsolarado AmenaAmena NormalNormal VerdadeirVerdadeiroo

SimSim

1212 NubladoNublado AmenaAmena AltaAlta VerdadeirVerdadeiroo

SimSim

1313 NubladoNublado QuenteQuente NormalNormal FalsoFalso SimSim

88 EnsolaradoEnsolarado AmenaAmena AltaAlta FalsoFalso NãoNão

1414 ChuvosoChuvoso AmenaAmena AltaAlta VerdadeirVerdadeiroo

NãoNão

PP

PN

Regra: Ventoso = Falsov = (p + (N – n)) / (P + N)v = (p + (N – n)) / (P + N)v = (1 + (2 – 1)) / (3 + 2)v = (1 + (2 – 1)) / (3 + 2)v = 2 / 5 = 0,4v = 2 / 5 = 0,4

Exemplo - PruneRuleExemplo - PruneRule

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

1111 EnsolaradoEnsolarado AmenaAmena NormalNormal VerdadeirVerdadeiroo

SimSim

1212 NubladoNublado AmenaAmena AltaAlta VerdadeirVerdadeiroo

SimSim

1313 NubladoNublado QuenteQuente NormalNormal FalsoFalso SimSim

88 EnsolaradoEnsolarado AmenaAmena AltaAlta FalsoFalso NãoNão

1414 ChuvosoChuvoso AmenaAmena AltaAlta VerdadeirVerdadeiroo

NãoNão

PP

PN

Regra: Ventoso = Falsov = (p + (N – n)) / (P + N)v = (p + (N – n)) / (P + N)v = (1 + (2 – 1) )/ (3 + 2)v = (1 + (2 – 1) )/ (3 + 2)v = 2 / 5 = 0,4v = 2 / 5 = 0,4

Como o valor de v para a regra original é Como o valor de v para a regra original é maior (0,6), então não faz a “poda”.maior (0,6), então não faz a “poda”.

O algoritmo IREPO algoritmo IREPprocedure 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% thenreturn Ruleset

elseadd Rule to Rulesetremove examples covered by Rule from

(Pos,Neg)endif

endwhilereturn Ruleset

end

Exemplo – Condição de Exemplo – Condição de ParadaParada

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

1111 EnsolaradoEnsolarado AmenaAmena NormalNormal VerdadeirVerdadeiroo

SimSim

1212 NubladoNublado AmenaAmena AltaAlta VerdadeirVerdadeiroo

SimSim

1313 NubladoNublado QuenteQuente NormalNormal FalsoFalso SimSim

88 EnsolaradoEnsolarado AmenaAmena AltaAlta FalsoFalso NãoNão

1414 ChuvosoChuvoso AmenaAmena AltaAlta VerdadeirVerdadeiroo

NãoNão

PP

PN

Regra: Ventoso = Falso and Umidade = Normal

Exemplo – Condição de Exemplo – Condição de ParadaParada

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

1111 EnsolaradoEnsolarado AmenaAmena NormalNormal VerdadeirVerdadeiroo

SimSim

1212 NubladoNublado AmenaAmena AltaAlta VerdadeirVerdadeiroo

SimSim

1313 NubladoNublado QuenteQuente NormalNormal FalsoFalso SimSim

88 EnsolaradoEnsolarado AmenaAmena AltaAlta FalsoFalso NãoNão

1414 ChuvosoChuvoso AmenaAmena AltaAlta VerdadeirVerdadeiroo

NãoNão

PP

PN

Regra: Ventoso = Falso and Umidade = Normal

Positivos: 1Negativos: 0

Taxa de Erro = 0 → Continua o algoritmo

O algoritmo IREPO algoritmo IREPprocedure 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% thenreturn Ruleset

elseadd Rule to Rulesetremove examples covered by Rule from

(Pos,Neg)endif

endwhilereturn Ruleset

end

Exemplo – Removendo Exemplo – Removendo TransaçõesTransações

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

33 NubladoNublado QuenteQuente AltaAlta FalsoFalso SimSim

44 ChuvosoChuvoso AmenaAmena AltaAlta FalsoFalso SimSim

55 ChuvosoChuvoso FriaFria NormalNormal FalsoFalso SimSim

77 NubladoNublado FriaFria NormalNormal VerdadeirVerdadeiroo

SimSim

99 EnsolaradoEnsolarado FriaFria NormalNormal FalsoFalso SimSim

1010 ChuvosoChuvoso AmenaAmena NormalNormal FalsoFalso SimSim

1111 EnsolaradoEnsolarado AmenaAmena NormalNormal VerdadeirVerdadeiroo

SimSim

1212 NubladoNublado AmenaAmena AltaAlta VerdadeirVerdadeiroo

SimSim

1313 NubladoNublado QuenteQuente NormalNormal FalsoFalso SimSim

11 EnsolaradoEnsolarado QuenteQuente AltaAlta FalsoFalso NãoNão

22 EnsolaradoEnsolarado QuenteQuente AltaAlta VerdadeirVerdadeiroo

NãoNão

66 ChuvosoChuvoso FriaFria NormalNormal VerdadeirVerdadeiroo

NãoNão

88 EnsolaradoEnsolarado AmenaAmena AltaAlta FalsoFalso NãoNão

1414 ChuvosoChuvoso AmenaAmena AltaAlta VerdadeirVerdadeiroo

NãoNão

Exemplo – Removendo Exemplo – Removendo TransaçõesTransações

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

33 NubladoNublado QuenteQuente AltaAlta FalsoFalso SimSim

44 ChuvosoChuvoso AmenaAmena AltaAlta FalsoFalso SimSim

55 ChuvosoChuvoso FriaFria NormalNormal FalsoFalso SimSim

77 NubladoNublado FriaFria NormalNormal VerdadeirVerdadeiroo

SimSim

99 EnsolaradoEnsolarado FriaFria NormalNormal FalsoFalso SimSim

1010 ChuvosoChuvoso AmenaAmena NormalNormal FalsoFalso SimSim

1111 EnsolaradoEnsolarado AmenaAmena NormalNormal VerdadeirVerdadeiroo

SimSim

1212 NubladoNublado AmenaAmena AltaAlta VerdadeirVerdadeiroo

SimSim

1313 NubladoNublado QuenteQuente NormalNormal FalsoFalso SimSim

11 EnsolaradoEnsolarado QuenteQuente AltaAlta FalsoFalso NãoNão

22 EnsolaradoEnsolarado QuenteQuente AltaAlta VerdadeirVerdadeiroo

NãoNão

66 ChuvosoChuvoso FriaFria NormalNormal VerdadeirVerdadeiroo

NãoNão

88 EnsolaradoEnsolarado AmenaAmena AltaAlta FalsoFalso NãoNão

1414 ChuvosoChuvoso AmenaAmena AltaAlta VerdadeirVerdadeiroo

NãoNão

Exemplo – Removendo Exemplo – Removendo TransaçõesTransações

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

33 NubladoNublado QuenteQuente AltaAlta FalsoFalso SimSim

44 ChuvosoChuvoso AmenaAmena AltaAlta FalsoFalso SimSim

77 NubladoNublado FriaFria NormalNormal VerdadeirVerdadeiroo

SimSim

1111 EnsolaradoEnsolarado AmenaAmena NormalNormal VerdadeirVerdadeiroo

SimSim

1212 NubladoNublado AmenaAmena AltaAlta VerdadeirVerdadeiroo

SimSim

11 EnsolaradoEnsolarado QuenteQuente AltaAlta FalsoFalso NãoNão

22 EnsolaradoEnsolarado QuenteQuente AltaAlta VerdadeirVerdadeiroo

NãoNão

66 ChuvosoChuvoso FriaFria NormalNormal VerdadeirVerdadeiroo

NãoNão

88 EnsolaradoEnsolarado AmenaAmena AltaAlta FalsoFalso NãoNão

1414 ChuvosoChuvoso AmenaAmena AltaAlta VerdadeirVerdadeiroo

NãoNão

O algoritmo IREPO algoritmo IREPprocedure 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% thenreturn Ruleset

elseadd Rule to Rulesetremove examples covered by Rule from

(Pos,Neg)endif

endwhilereturn Ruleset

end

Resultado PossívelResultado Possível

Ventoso = Falso and Umidade = Normal

Tempo = Nublado

Resultado PossívelResultado Possível

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

33 NubladoNublado QuenteQuente AltaAlta FalsoFalso SimSim

44 ChuvosoChuvoso AmenaAmena AltaAlta FalsoFalso SimSim

55 ChuvosoChuvoso FriaFria NormalNormal FalsoFalso SimSim

77 NubladoNublado FriaFria NormalNormal VerdadeirVerdadeiroo

SimSim

99 EnsolaradoEnsolarado FriaFria NormalNormal FalsoFalso SimSim

1010 ChuvosoChuvoso AmenaAmena NormalNormal FalsoFalso SimSim

1111 EnsolaradoEnsolarado AmenaAmena NormalNormal VerdadeirVerdadeiroo

SimSim

1212 NubladoNublado AmenaAmena AltaAlta VerdadeirVerdadeiroo

SimSim

1313 NubladoNublado QuenteQuente NormalNormal FalsoFalso SimSim

11 EnsolaradoEnsolarado QuenteQuente AltaAlta FalsoFalso NãoNão

22 EnsolaradoEnsolarado QuenteQuente AltaAlta VerdadeirVerdadeiroo

NãoNão

66 ChuvosoChuvoso FriaFria NormalNormal VerdadeirVerdadeiroo

NãoNão

88 EnsolaradoEnsolarado AmenaAmena AltaAlta FalsoFalso NãoNão

1414 ChuvosoChuvoso AmenaAmena AltaAlta VerdadeirVerdadeiroo

NãoNão

Resultado PossívelResultado Possível

## TempoTempo TemperatTemperaturaura UmidadeUmidade VentosoVentoso JogaJoga

33 NubladoNublado QuenteQuente AltaAlta FalsoFalso SimSim

44 ChuvosoChuvoso AmenaAmena AltaAlta FalsoFalso SimSim

55 ChuvosoChuvoso FriaFria NormalNormal FalsoFalso SimSim

77 NubladoNublado FriaFria NormalNormal VerdadeirVerdadeiroo

SimSim

99 EnsolaradoEnsolarado FriaFria NormalNormal FalsoFalso SimSim

1010 ChuvosoChuvoso AmenaAmena NormalNormal FalsoFalso SimSim

1111 EnsolaradoEnsolarado AmenaAmena NormalNormal VerdadeirVerdadeiroo

SimSim

1212 NubladoNublado AmenaAmena AltaAlta VerdadeirVerdadeiroo

SimSim

1313 NubladoNublado QuenteQuente NormalNormal FalsoFalso SimSim

11 EnsolaradoEnsolarado QuenteQuente AltaAlta FalsoFalso NãoNão

22 EnsolaradoEnsolarado QuenteQuente AltaAlta VerdadeirVerdadeiroo

NãoNão

66 ChuvosoChuvoso FriaFria NormalNormal VerdadeirVerdadeiroo

NãoNão

88 EnsolaradoEnsolarado AmenaAmena AltaAlta FalsoFalso NãoNão

1414 ChuvosoChuvoso AmenaAmena AltaAlta VerdadeirVerdadeiroo

NãoNão

Verdade\Verdade\Class.Class. SimSim NãoNão

SimSim 77 22

NãoNão 00 55

Resultados obtidos pelo Resultados obtidos pelo IREPIREP

Apresentar os gráficos aquiApresentar os gráficos aqui

IREP: O(m log² m), m = Número de exemplos.

Problemas BProblemas Benchmarks enchmarks utilizados nos exemplosutilizados nos exemplos

Resultados obtidos pelo Resultados obtidos pelo IREPIREP

Ponto positivoPonto positivo

Mais rápido que C4.5Mais rápido que C4.5

Ponto negativoPonto negativo

Capacidade preditiva do IREP pior que Capacidade preditiva do IREP pior que

C4.5.C4.5.

Taxa wTaxa won-lost-tie: 11-23-3on-lost-tie: 11-23-3

Aprimoramentos ao IREPAprimoramentos ao IREP

Três modificaçesTrês modificaçes::

Métrica alternativa para fase de poda;Métrica alternativa para fase de poda;

Nova heurística para determinar quando Nova heurística para determinar quando

parar de adicionar regras ao conjunto;parar de adicionar regras ao conjunto;

Pós-poda para otimizar o conjunto de Pós-poda para otimizar o conjunto de

regras;regras;

Métrica de PodaMétrica de Poda

Um dos problemas de convergência do IREP Um dos problemas de convergência do IREP é sua métrica para determinar se as é sua métrica para determinar se as regras irão ser podadas. Exemplo:regras irão ser podadas. Exemplo:

1) P: 40001) P: 4000 N: 2000 N: 2000

Regra 1Regra 1 p: 2000 p: 2000 Regra 2 p:1000 Regra 2 p:1000 n:1000 n:1000 n:1 n:1

v = (p + (N – n)) / (P + N)v = (p + (N – n)) / (P + N) v=(2000 +(2000-1000))/(4000+2000)v=(2000 +(2000-1000))/(4000+2000) v=(1000+(2000-v=(1000+(2000-

1))/(4000+2000)1))/(4000+2000)v=0.5v=0.5 v=0.4999v=0.4999

Métrica de PodaMétrica de Poda

A métrica prioriza uma regra com A métrica prioriza uma regra com maior número de positivos porém com maior número de positivos porém com uma maior taxa de erro. Como uma maior taxa de erro. Como alternativa, foi proposta uma nova alternativa, foi proposta uma nova métrica:métrica: V=(p-n)/(p+n)V=(p-n)/(p+n)

Amostra 1:Amostra 1: Amostra 2:Amostra 2:

V=(2000-1000)/V=(2000-1000)/ V=(1000-1)/(1000+1)V=(1000-1)/(1000+1)

(2000+1000)=0.333(2000+1000)=0.333 V=0.99V=0.99

Condição de ParadaCondição de Parada

Dependendo dos dados, o IREP pára Dependendo dos dados, o IREP pára cedo demais.cedo demais.

Solução:Solução: Após uma regra ser adicionada, o tamanho Após uma regra ser adicionada, o tamanho

total do do conjuto é computado. total do do conjuto é computado. Caso o tamanho deste novo conjunto de Caso o tamanho deste novo conjunto de

regras seja maior regras seja maior d bits d bits do que a maior do que a maior regra obtida, ou quando não existem mais regra obtida, ou quando não existem mais casos positivos, o algoritmo pára de casos positivos, o algoritmo pára de adicionar regras.adicionar regras.

Condição de ParadaCondição de Parada

Fórmula para o cálculo de tamanho Fórmula para o cálculo de tamanho em bits de uma regraem bits de uma regra 0,5 ∙ (|k| + k log0,5 ∙ (|k| + k log22 n/k + (n-k)log n/k + (n-k)log22 1/(1- 1/(1-

k/n) )k/n) ) k: número de condições da regrak: número de condições da regra n: número de condições possíveisn: número de condições possíveis |k|: número de bits necessários para |k|: número de bits necessários para

representar o inteiro krepresentar o inteiro k

Exemplo - Condição de Exemplo - Condição de ParadaParada

Regra: Ventoso = Falso and Umidade = Normal

k = 2 n = 4 |k| = 2k = 2 n = 4 |k| = 2

0,5 ∙ (|k| + k log0,5 ∙ (|k| + k log22 n/k + (n-k)log n/k + (n-k)log22 1/(1-k/n) ) 1/(1-k/n) )

0,5 ∙ ( 2 + 2 log0,5 ∙ ( 2 + 2 log22 4/2 + (4-2)log 4/2 + (4-2)log22 1/(1-2/4) ) 1/(1-2/4) )

0,5 ∙ ( 2 + 2 log0,5 ∙ ( 2 + 2 log22 2 + 2log 2 + 2log22 2 ) 2 )

0,5 ∙ ( 2 + 2 + 2 ) = 0,5 ∙ 6 = 3 bits0,5 ∙ ( 2 + 2 + 2 ) = 0,5 ∙ 6 = 3 bits

IREP *IREP *

IREP* é o IREP, adicionado da nova IREP* é o IREP, adicionado da nova condição de parada e nova métrica condição de parada e nova métrica de podade poda

28-8-1 em relação ao IREP28-8-1 em relação ao IREP 16-21-0 em relação ao C4.5rules16-21-0 em relação ao C4.5rules

Taxa de erro 1.06 (IREP 1.13)Taxa de erro 1.06 (IREP 1.13)

Otimização das RegrasOtimização das Regras

Pós poda das regras produzidas pelo Pós poda das regras produzidas pelo IREP*IREP* Regras otimizadas uma a umaRegras otimizadas uma a uma Para cada regra R, 2 alternativas são Para cada regra R, 2 alternativas são

construídasconstruídas RRii‘‘ – regra de substituição – regra de substituição

RRii‘‘‘‘ – regra de revisão – regra de revisão

Das três regras, é escolhida aquela com Das três regras, é escolhida aquela com menor tamanho em bits → Princípio de menor tamanho em bits → Princípio de quanto mais simples melhorquanto mais simples melhor

RIPPERRIPPER

1.1. IREP* é usado para obter um conjunto de IREP* é usado para obter um conjunto de regras;regras;

2.2. Regras são otimizadas Regras são otimizadas

3.3. IREP* é utilizado para acrescentar regras IREP* é utilizado para acrescentar regras para cobrir exemplos positivos restantes.para cobrir exemplos positivos restantes.

RRepeated epeated IIncremental ncremental PPruning to runing to PProduce roduce EError rror RReductioneduction

RIPPERk → Aplica os passos 2 e 3 k RIPPERk → Aplica os passos 2 e 3 k vezes.vezes.

Poder Preditivo do Poder Preditivo do RIPPERRIPPER

28-7-2 contra IREP*28-7-2 contra IREP*

Taxa de erroTaxa de erro

Eficiência do RIPPEREficiência do RIPPER

RIPPER2

RIPPER2

Razões da Eficiência do Razões da Eficiência do RIPPERRIPPER

Um modelo inicial é criado com IREP* e Um modelo inicial é criado com IREP* e então simplificado iterativamenteentão simplificado iterativamente Eficiência na geração do modelo inicialEficiência na geração do modelo inicial Simplificação em tempo linearSimplificação em tempo linear

C4.5 tem uma simplificação com um C4.5 tem uma simplificação com um grande custo computacional para grandes grande custo computacional para grandes modelos inicias;modelos inicias;

RIPPER é muito mais eficiente em dados RIPPER é muito mais eficiente em dados ruidosos e com grande volumeruidosos e com grande volume

ConclusãoConclusão

RIPPERk é mais eficiente e tem RIPPERk é mais eficiente e tem performance competitiva com C4.5 performance competitiva com C4.5 (melhor em alguns casos)(melhor em alguns casos)

Ótimo razão custo/benefício Ótimo razão custo/benefício

(tempo de execução/capacidade (tempo de execução/capacidade preditiva)preditiva)

ReferênciasReferências

Fast Effective Rule InductionFast Effective Rule Induction

William W. Cohen [1995]William W. Cohen [1995] Incremental Reduced Error PruningIncremental Reduced Error Pruning

J. Fürnkranz & G. Widmer [1994]J. Fürnkranz & G. Widmer [1994] Efficient Pruning MethodsEfficient Pruning Methods

William W. Cohen [1993]William W. Cohen [1993]

PERGUNTAS?PERGUNTAS?