A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "RIPPER Fast Effective Rule Induction William W. Cohen apresentação Felipe Hoppe Levin Guilherme Dal Bianco."— Transcrição da apresentação:

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 Fáceis de entender Melhores que árvores de decisão em muitos problemas Melhores que árvores de decisão em muitos problemas Representáveis em lógica de primeira ordem Representáveis em lógica de primeira ordem Fácil de implementar em linguagens como PROLOG Fácil de implementar em linguagens como PROLOG

3 Regras de Classificação - Desvantagens Pouco escaláveis Pouco escaláveis Desempenho ruim em dados com muito ruído Desempenho ruim em dados com muito ruído Tipicamente em dados reais Tipicamente em dados reais

4 Objetivo Desenvolver um algoritmo de aprendizado de regras de classificação que seja: Desenvolver um algoritmo de aprendizado de regras de classificação que seja: Escalável Escalável Eficiente com dados ruidosos Eficiente com dados ruidosos Competitivo com algoritmos de árvores de decisão como C4.5 / C4.5rules Competitivo com algoritmos de árvores de decisão como C4.5 / C4.5rules

5 Solução Estudada: IREP Poda das regras Poda das regras Simplificação diminui a interferência de dados ruidosos Simplificação diminui a interferência de dados ruidosos Divisão e Conquista Divisã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 aleatoriamente Gerados aleatoriamente Poda cada regra criada iterativamente Poda cada regra criada iterativamente Até que a poda reduza a acurácia 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 return Ruleset end

7 Exemplo #TempoTemperaturaUmidadeVentosoJoga 1EnsolaradoQuenteAltaFalsoNão 2EnsolaradoQuenteAltaVerdadeiroNão 3NubladoQuenteAltaFalsoSim 4ChuvosoAmenaAltaFalsoSim 5ChuvosoFriaNormalFalsoSim 6ChuvosoFriaNormalVerdadeiroNão 7NubladoFriaNormalVerdadeiroSim 8EnsolaradoAmenaAltaFalsoNão 9EnsolaradoFriaNormalFalsoSim 10ChuvosoAmenaNormalFalsoSim 11EnsolaradoAmenaNormalVerdadeiroSim 12NubladoAmenaAltaVerdadeiroSim 13NubladoQuenteNormalFalsoSim 14ChuvosoAmenaAltaVerdadeiroNão

8 Exemplo - IREP #TempoTemperaturaUmidadeVentosoJoga 1EnsolaradoQuenteAltaFalsoNão 2EnsolaradoQuenteAltaVerdadeiroNão 3NubladoQuenteAltaFalsoSim 4ChuvosoAmenaAltaFalsoSim 5ChuvosoFriaNormalFalsoSim 6ChuvosoFriaNormalVerdadeiroNão 7NubladoFriaNormalVerdadeiroSim 8EnsolaradoAmenaAltaFalsoNão 9EnsolaradoFriaNormalFalsoSim 10ChuvosoAmenaNormalFalsoSim 11EnsolaradoAmenaNormalVerdadeiroSim 12NubladoAmenaAltaVerdadeiroSim 13NubladoQuenteNormalFalsoSim 14ChuvosoAmenaAltaVerdadeiroNão Transações são separadas nos grupos POS e NEG

9 Exemplo - IREP #TempoTemperaturaUmidadeVentosoJoga 3NubladoQuenteAltaFalsoSim 4ChuvosoAmenaAltaFalsoSim 5ChuvosoFriaNormalFalsoSim 7NubladoFriaNormalVerdadeiroSim 9EnsolaradoFriaNormalFalsoSim 10ChuvosoAmenaNormalFalsoSim 11EnsolaradoAmenaNormalVerdadeiroSim 12NubladoAmenaAltaVerdadeiroSim 13NubladoQuenteNormalFalsoSim 1EnsolaradoQuenteAltaFalsoNão 2EnsolaradoQuenteAltaVerdadeiroNão 6ChuvosoFriaNormalVerdadeiroNão 8EnsolaradoAmenaAltaFalsoNão 14ChuvosoAmenaAltaVerdadeiroNão

10 #TempoTemperaturaUmidadeVentosoJoga 3NubladoQuenteAltaFalsoSim 4ChuvosoAmenaAltaFalsoSim 5ChuvosoFriaNormalFalsoSim 7NubladoFriaNormalVerdadeiroSim 9EnsolaradoFriaNormalFalsoSim 10ChuvosoAmenaNormalFalsoSim 11EnsolaradoAmenaNormalVerdadeiroSim 12NubladoAmenaAltaVerdadeiroSim 13NubladoQuenteNormalFalsoSim 1EnsolaradoQuenteAltaFalsoNão 2EnsolaradoQuenteAltaVerdadeiroNão 6ChuvosoFriaNormalVerdadeiroNão 8EnsolaradoAmenaAltaFalsoNão 14ChuvosoAmenaAltaVerdadeiroNão A cada iteração, são formados os grupos GrowPos, GrowNeg, PrunePos e PruneNeg de forma aleatória.

11 Exemplo - IREP #TempoTemperaturaUmidadeVentosoJoga 3NubladoQuenteAltaFalsoSim 4ChuvosoAmenaAltaFalsoSim 5ChuvosoFriaNormalFalsoSim 7NubladoFriaNormalVerdadeiroSim 9EnsolaradoFriaNormalFalsoSim 10ChuvosoAmenaNormalFalsoSim 11EnsolaradoAmenaNormalVerdadeiroSim 12NubladoAmenaAltaVerdadeiroSim 13NubladoQuenteNormalFalsoSim 1EnsolaradoQuenteAltaFalsoNão 2EnsolaradoQuenteAltaVerdadeiroNão 6ChuvosoFriaNormalVerdadeiroNão 8EnsolaradoAmenaAltaFalsoNão 14ChuvosoAmenaAltaVerdadeiroNão GPGP P GNGN PNPN

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 return Ruleset end

13 GrowRule Cria uma nova regra Cria uma nova regra Adiciona condições que maximizam o critério de ganho de informação de FOIL Adiciona condições que maximizam o critério de ganho de informação de FOIL t · [ log 2 ( p 1 / ( p 1 +n 1 )) - log 2 (p 0 / (p 0 + n 0 )) ] p: positivos p: positivos n: negativos n: negativos t: positivos cobertos pelas duas regras t: positivos cobertos pelas duas regras Para de adicionar condições quando a regra não cobrir nenhuma transação negativa Para de adicionar condições quando a regra não cobrir nenhuma transação negativa

14 Exemplo - GrowRule #TempoTemperaturaUmidadeVentosoJoga 3NubladoQuenteAltaFalsoSim 4ChuvosoAmenaAltaFalsoSim 5ChuvosoFriaNormalFalsoSim 7NubladoFriaNormalVerdadeiroSim 9EnsolaradoFriaNormalFalsoSim 10ChuvosoAmenaNormalFalsoSim 1EnsolaradoQuenteAltaFalsoNão 2EnsolaradoQuenteAltaVerdadeiroNão 6ChuvosoFriaNormalVerdadeiroNão GPGP GNGN Regra: Ventoso = Falso

15 Exemplo - GrowRule #TempoTemperaturaUmidadeVentosoJoga 3NubladoQuenteAltaFalsoSim 4ChuvosoAmenaAltaFalsoSim 5ChuvosoFriaNormalFalsoSim 7NubladoFriaNormalVerdadeiroSim 9EnsolaradoFriaNormalFalsoSim 10ChuvosoAmenaNormalFalsoSim 1EnsolaradoQuenteAltaFalsoNão 2EnsolaradoQuenteAltaVerdadeiroNão 6ChuvosoFriaNormalVerdadeiroNão GPGP GNGN Regra: Ventoso = Falso t · [ log 2 ( p 1 / ( p 1 +n 1 )) - log 2 (p 0 / (p 0 + n 0 )) ]

16 Exemplo - GrowRule #TempoTemperaturaUmidadeVentosoJoga 3NubladoQuenteAltaFalsoSim 4ChuvosoAmenaAltaFalsoSim 5ChuvosoFriaNormalFalsoSim 7NubladoFriaNormalVerdadeiroSim 9EnsolaradoFriaNormalFalsoSim 10ChuvosoAmenaNormalFalsoSim 1EnsolaradoQuenteAltaFalsoNão 2EnsolaradoQuenteAltaVerdadeiroNão 6ChuvosoFriaNormalVerdadeiroNão GPGP GNGN Regra: Ventoso = Falso 5· [ log 2 ( p 1 / ( p 1 +n 1 )) - log 2 (p 0 / (p 0 + n 0 )) ]

17 Exemplo - GrowRule #TempoTemperaturaUmidadeVentosoJoga 3NubladoQuenteAltaFalsoSim 4ChuvosoAmenaAltaFalsoSim 5ChuvosoFriaNormalFalsoSim 7NubladoFriaNormalVerdadeiroSim 9EnsolaradoFriaNormalFalsoSim 10ChuvosoAmenaNormalFalsoSim 1EnsolaradoQuenteAltaFalsoNão 2EnsolaradoQuenteAltaVerdadeiroNão 6ChuvosoFriaNormalVerdadeiroNão GPGP GNGN Regra: Ventoso = Falso 5· [ log 2 ( 5 / ( )) - log 2 (6 / (6 + 3)) ]

18 Exemplo - GrowRule #TempoTemperaturaUmidadeVentosoJoga 3NubladoQuenteAltaFalsoSim 4ChuvosoAmenaAltaFalsoSim 5ChuvosoFriaNormalFalsoSim 7NubladoFriaNormalVerdadeiroSim 9EnsolaradoFriaNormalFalsoSim 10ChuvosoAmenaNormalFalsoSim 1EnsolaradoQuenteAltaFalsoNão 2EnsolaradoQuenteAltaVerdadeiroNão 6ChuvosoFriaNormalVerdadeiroNão GPGP GNGN 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 = Falso 1,60 bits Ventoso = Verdadeiro -1 bits Ventoso = Verdadeiro -1 bits Umidade = Alta -0,83 bits Umidade = Alta -0,83 bits Umidade = Normal 1,05 bits Umidade = Normal 1,05 bits Temper. = Quente -1 bits Temper. = Quente -1 bits Temper. = Amena 1,17 bits Temper. = Amena 1,17 bits Temper.= Fria 0,51 bits Temper.= Fria 0,51 bits Tempo = Nublado 1,17 bits Tempo = Nublado 1,17 bits Tempo = Ensolarado -1 bits Tempo = Ensolarado -1 bits Tempo = Chuvoso 0,51 bits Tempo = Chuvoso 0,51 bits

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

21 Exemplo - GrowRule #TempoTemperaturaUmidadeVentosoJoga 3NubladoQuenteAltaFalsoSim 4ChuvosoAmenaAltaFalsoSim 5ChuvosoFriaNormalFalsoSim 7NubladoFriaNormalVerdadeiroSim 9EnsolaradoFriaNormalFalsoSim 10ChuvosoAmenaNormalFalsoSim 1EnsolaradoQuenteAltaFalsoNão 2EnsolaradoQuenteAltaVerdadeiroNão 6ChuvosoFriaNormalVerdadeiroNão GPGP GNGN 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 = Alta -0,64 bits Ventoso = Falso and Umidade = Normal 0,79 bits Ventoso = Falso and Umidade = Normal 0,79 bits Ventoso = Falso and Temper. = Quente -0,74 bits Ventoso = Falso and Temper. = Quente -0,74 bits Ventoso = Falso and Temper. = Amena 0,53 bits Ventoso = Falso and Temper. = Amena 0,53 bits Ventoso = Falso and Temper.= Fria 0,53 bits Ventoso = Falso and Temper.= Fria 0,53 bits Ventoso = Falso and Tempo = Nublado 0,26 bits Ventoso = Falso and Tempo = Nublado 0,26 bits Ventoso = Falso and Tempo = Ensolar. -0,74 bits Ventoso = Falso and Tempo = Ensolar. -0,74 bits Ventoso = Falso and Tempo = Chuvoso 0,79 bits Ventoso = Falso and Tempo = Chuvoso 0,79 bits

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

24 Exemplo - GrowRule #TempoTemperaturaUmidadeVentosoJoga 3NubladoQuenteAltaFalsoSim 4ChuvosoAmenaAltaFalsoSim 5ChuvosoFriaNormalFalsoSim 7NubladoFriaNormalVerdadeiroSim 9EnsolaradoFriaNormalFalsoSim 10ChuvosoAmenaNormalFalsoSim 1EnsolaradoQuenteAltaFalsoNão 2EnsolaradoQuenteAltaVerdadeiroNão 6ChuvosoFriaNormalVerdadeiroNão GPGP GNGN 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 return Ruleset end

26 PruneRule Poda a regra criada Poda a regra criada Exclui seqüência final de condições que maximizam a função: Exclui seqüência final de condições que maximizam a função: v = (p + (N – n)) / (P + N) v = (p + (N – n)) / (P + N) p: positivos em PrunePos cobertos pela regra p: positivos em PrunePos cobertos pela regra n: negativos em PruneNeg cobertos pela regra n: negativos em PruneNeg cobertos pela regra P: positivos em PrunePos P: positivos em PrunePos N: negativos em PruneNeg N: negativos em PruneNeg Deixa de excluir quando o valor de v deixa de ser melhorado Deixa de excluir quando o valor de v deixa de ser melhorado

27 Exemplo - PruneRule #TempoTemperaturaUmidadeVentosoJoga 11EnsolaradoAmenaNormalVerdadeiroSim 12NubladoAmenaAltaVerdadeiroSim 13NubladoQuenteNormalFalsoSim 8EnsolaradoAmenaAltaFalsoNão 14ChuvosoAmenaAltaVerdadeiroNão P PNPN Regra: Ventoso = Falso and Umidade = Normal

28 Exemplo - PruneRule #TempoTemperaturaUmidadeVentosoJoga 11EnsolaradoAmenaNormalVerdadeiroSim 12NubladoAmenaAltaVerdadeiroSim 13NubladoQuenteNormalFalsoSim 8EnsolaradoAmenaAltaFalsoNão 14ChuvosoAmenaAltaVerdadeiroNão P PNPN Regra: Ventoso = Falso and Umidade = Normal v = (p + (N – n)) / (P + N)

29 Exemplo - PruneRule #TempoTemperaturaUmidadeVentosoJoga 11EnsolaradoAmenaNormalVerdadeiroSim 12NubladoAmenaAltaVerdadeiroSim 13NubladoQuenteNormalFalsoSim 8EnsolaradoAmenaAltaFalsoNão 14ChuvosoAmenaAltaVerdadeiroNão P PNPN 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 #TempoTemperaturaUmidadeVentosoJoga 11EnsolaradoAmenaNormalVerdadeiroSim 12NubladoAmenaAltaVerdadeiroSim 13NubladoQuenteNormalFalsoSim 8EnsolaradoAmenaAltaFalsoNão 14ChuvosoAmenaAltaVerdadeiroNão P PNPN Regra: Ventoso = Falso v = (p + (N – n)) / (P + N) v = (1 + (2 – 1)) / (3 + 2) v = 2 / 5 = 0,4

31 Exemplo - PruneRule #TempoTemperaturaUmidadeVentosoJoga 11EnsolaradoAmenaNormalVerdadeiroSim 12NubladoAmenaAltaVerdadeiroSim 13NubladoQuenteNormalFalsoSim 8EnsolaradoAmenaAltaFalsoNão 14ChuvosoAmenaAltaVerdadeiroNão P PNPN 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 return Ruleset end

33 Exemplo – Condição de Parada #TempoTemperaturaUmidadeVentosoJoga 11EnsolaradoAmenaNormalVerdadeiroSim 12NubladoAmenaAltaVerdadeiroSim 13NubladoQuenteNormalFalsoSim 8EnsolaradoAmenaAltaFalsoNão 14ChuvosoAmenaAltaVerdadeiroNão P PNPN Regra: Ventoso = Falso and Umidade = Normal

34 Exemplo – Condição de Parada #TempoTemperaturaUmidadeVentosoJoga 11EnsolaradoAmenaNormalVerdadeiroSim 12NubladoAmenaAltaVerdadeiroSim 13NubladoQuenteNormalFalsoSim 8EnsolaradoAmenaAltaFalsoNão 14ChuvosoAmenaAltaVerdadeiroNão P PNPN 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 return Ruleset end

36 Exemplo – Removendo Transações #TempoTemperaturaUmidadeVentosoJoga 3NubladoQuenteAltaFalsoSim 4ChuvosoAmenaAltaFalsoSim 5ChuvosoFriaNormalFalsoSim 7NubladoFriaNormalVerdadeiroSim 9EnsolaradoFriaNormalFalsoSim 10ChuvosoAmenaNormalFalsoSim 11EnsolaradoAmenaNormalVerdadeiroSim 12NubladoAmenaAltaVerdadeiroSim 13NubladoQuenteNormalFalsoSim 1EnsolaradoQuenteAltaFalsoNão 2EnsolaradoQuenteAltaVerdadeiroNão 6ChuvosoFriaNormalVerdadeiroNão 8EnsolaradoAmenaAltaFalsoNão 14ChuvosoAmenaAltaVerdadeiroNão

37 #TempoTemperaturaUmidadeVentosoJoga 3NubladoQuenteAltaFalsoSim 4ChuvosoAmenaAltaFalsoSim 5ChuvosoFriaNormalFalsoSim 7NubladoFriaNormalVerdadeiroSim 9EnsolaradoFriaNormalFalsoSim 10ChuvosoAmenaNormalFalsoSim 11EnsolaradoAmenaNormalVerdadeiroSim 12NubladoAmenaAltaVerdadeiroSim 13NubladoQuenteNormalFalsoSim 1EnsolaradoQuenteAltaFalsoNão 2EnsolaradoQuenteAltaVerdadeiroNão 6ChuvosoFriaNormalVerdadeiroNão 8EnsolaradoAmenaAltaFalsoNão 14ChuvosoAmenaAltaVerdadeiroNão

38 #TempoTemperaturaUmidadeVentosoJoga 3NubladoQuenteAltaFalsoSim 4ChuvosoAmenaAltaFalsoSim 7NubladoFriaNormalVerdadeiroSim 11EnsolaradoAmenaNormalVerdadeiroSim 12NubladoAmenaAltaVerdadeiroSim 1EnsolaradoQuenteAltaFalsoNão 2EnsolaradoQuenteAltaVerdadeiroNão 6ChuvosoFriaNormalVerdadeiroNão 8EnsolaradoAmenaAltaFalsoNão 14ChuvosoAmenaAltaVerdadeiroNão

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 return Ruleset end

40 Resultado Possível Ventoso = Falso and Umidade = Normal Tempo = Nublado

41 Resultado Possível #TempoTemperaturaUmidadeVentosoJoga 3NubladoQuenteAltaFalsoSim 4ChuvosoAmenaAltaFalsoSim 5ChuvosoFriaNormalFalsoSim 7NubladoFriaNormalVerdadeiroSim 9EnsolaradoFriaNormalFalsoSim 10ChuvosoAmenaNormalFalsoSim 11EnsolaradoAmenaNormalVerdadeiroSim 12NubladoAmenaAltaVerdadeiroSim 13NubladoQuenteNormalFalsoSim 1EnsolaradoQuenteAltaFalsoNão 2EnsolaradoQuenteAltaVerdadeiroNão 6ChuvosoFriaNormalVerdadeiroNão 8EnsolaradoAmenaAltaFalsoNão 14ChuvosoAmenaAltaVerdadeiroNão

42 #TempoTemperaturaUmidadeVentosoJoga 3NubladoQuenteAltaFalsoSim 4ChuvosoAmenaAltaFalsoSim 5ChuvosoFriaNormalFalsoSim 7NubladoFriaNormalVerdadeiroSim 9EnsolaradoFriaNormalFalsoSim 10ChuvosoAmenaNormalFalsoSim 11EnsolaradoAmenaNormalVerdadeiroSim 12NubladoAmenaAltaVerdadeiroSim 13NubladoQuenteNormalFalsoSim 1EnsolaradoQuenteAltaFalsoNão 2EnsolaradoQuenteAltaVerdadeiroNão 6ChuvosoFriaNormalVerdadeiroNão 8EnsolaradoAmenaAltaFalsoNão 14ChuvosoAmenaAltaVerdadeiroNão Verdade\Class.SimNãoSim72 Não05

43 Resultados obtidos pelo IREP Apresentar os gráficos aqui 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 Ponto positivo Mais rápido que C4.5 Mais rápido que C4.5 Ponto negativo Ponto negativo Capacidade preditiva do IREP pior que C4.5. Capacidade preditiva do IREP pior que C4.5. Taxa won-lost-tie: Taxa won-lost-tie:

46 Aprimoramentos ao IREP Três modificaçes: Três modificaçes: Métrica alternativa para fase de poda; Métrica alternativa para fase de poda; Nova heurística para determinar quando parar de adicionar regras ao conjunto; Nova heurística para determinar quando parar de adicionar regras ao conjunto; Pós-poda para otimizar o conjunto de regras; 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 N: 2000 Regra 1p: 2000 Regra 2 p:1000 Regra 1p: 2000 Regra 2 p:1000 n:1000 n:1 n:1000 n:1 v = (p + (N – n)) / (P + N) v=(2000 +( ))/( )v=(1000+(2000-1))/( ) v=(2000 +( ))/( )v=(1000+(2000-1))/( ) v=0.5v=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: 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) V=(p-n)/(p+n) Amostra 1:Amostra 2: V=( )/V=(1000-1)/(1000+1) ( )=0.333V=0.99

49 Condição de Parada Dependendo dos dados, o IREP pára cedo demais. Dependendo dos dados, o IREP pára cedo demais. Solução: Solução: Após uma regra ser adicionada, o tamanho total do do conjuto é computado. 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. 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 Fórmula para o cálculo de tamanho em bits de uma regra 0,5 (|k| + k log 2 n/k + (n-k)log 2 1/(1-k/n) ) 0,5 (|k| + k log 2 n/k + (n-k)log 2 1/(1-k/n) ) k: número de condições da regra k: número de condições da regra n: número de condições possíveis n: número de condições possíveis |k|: número de bits necessários para representar o inteiro k |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 = 2 n = 4 |k| = 2 0,5 (|k| + k log 2 n/k + (n-k)log 2 1/(1-k/n) ) 0,5 ( log 2 4/2 + (4-2)log 2 1/(1-2/4) ) 0,5 ( log log 2 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 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 IREP em relação ao C4.5rules 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* Pós poda das regras produzidas pelo IREP* Regras otimizadas uma a uma Regras otimizadas uma a uma Para cada regra R, 2 alternativas são construídas Para cada regra R, 2 alternativas são construídas R i – regra de substituição R i – regra de substituição R i – regra de revisão R i – regra de revisão Das três regras, é escolhida aquela com menor tamanho em bits Princípio de quanto mais simples melhor Das três regras, é escolhida aquela com menor tamanho em bits Princípio de quanto mais simples melhor

54 RIPPER 1. IREP* é usado para obter um conjunto de regras; 2. Regras são otimizadas 3. IREP* é utilizado para acrescentar regras para cobrir exemplos positivos restantes. Repeated Incremental Pruning to Produce Error Reduction Repeated Incremental Pruning to Produce Error Reduction RIPPERk Aplica os passos 2 e 3 k vezes. RIPPERk Aplica os passos 2 e 3 k vezes.

55 Poder Preditivo do RIPPER contra IREP* contra IREP*

56 Taxa de erro

57 Eficiência do RIPPER RIPPER2

58 Razões da Eficiência do RIPPER Um modelo inicial é criado com IREP* e então simplificado iterativamente Um modelo inicial é criado com IREP* e então simplificado iterativamente Eficiência na geração do modelo inicial Eficiência na geração do modelo inicial Simplificação em tempo linear Simplificação em tempo linear C4.5 tem uma simplificação com um grande custo computacional para grandes modelos inicias; 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 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) RIPPERk é mais eficiente e tem performance competitiva com C4.5 (melhor em alguns casos) Ótimo razão custo/benefício Ótimo razão custo/benefício (tempo de execução/capacidade preditiva) (tempo de execução/capacidade preditiva)

60 Referências Fast Effective Rule Induction Fast Effective Rule Induction William W. Cohen [1995] Incremental Reduced Error Pruning Incremental Reduced Error Pruning J. Fürnkranz & G. Widmer [1994] Efficient Pruning Methods Efficient Pruning Methods William W. Cohen [1993]

61 PERGUNTAS? PERGUNTAS?


Carregar ppt "RIPPER Fast Effective Rule Induction William W. Cohen apresentação Felipe Hoppe Levin Guilherme Dal Bianco."

Apresentações semelhantes


Anúncios Google