610 likes | 774 Views
RIPPER Fast Effective Rule Induction. William W. Cohen. apresentação Felipe Hoppe Levin Guilherme Dal Bianco. 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
E N D
RIPPERFast Effective Rule Induction William W. Cohen apresentação Felipe Hoppe Levin Guilherme Dal Bianco
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
Regras de Classificação - Desvantagens • Pouco escaláveis • Desempenho ruim em dados com muito ruído • Tipicamente em dados reais
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
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
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
Exemplo - IREP Transações são separadas nos grupos POS e NEG
Exemplo - IREP A cada iteração, são formados os grupos GrowPos, GrowNeg, PrunePos e PruneNeg de forma aleatória.
Exemplo - IREP GP PP GN PN
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
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
Exemplo - GrowRule GP GN Regra: Ventoso = Falso
Exemplo - GrowRule GP GN Regra: Ventoso = Falso t · [ log2 ( p1/ ( p1+n1 )) - log2 (p0 / (p0+ n0)) ]
Exemplo - GrowRule GP GN Regra: Ventoso = Falso 5· [ log2 ( p1/ ( p1+n1 )) - log2 (p0 / (p0+ n0)) ]
Exemplo - GrowRule GP GN Regra: Ventoso = Falso 5· [ log2 ( 5/ ( 5+ 1 )) - log2 (6 / (6 + 3)) ]
Exemplo - GrowRule GP GN Regra: Ventoso = Falso 5· [ -0,26+ 0,58 ] = 5 ·0,32 = 1,6 bits de ganho de informação
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
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
Exemplo - GrowRule GP GN Regra: Ventoso = Falso Cobre 1 regra negativa → Continua adicionando condições
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
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
Exemplo - GrowRule GP GN Regra: Ventoso = Falso and Umidade = Normal Não cobre regras negativas → Para de adicionar condições
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
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
Exemplo - PruneRule PP PN Regra: Ventoso = Falso and Umidade = Normal
Exemplo - PruneRule PP PN Regra: Ventoso = Falso and Umidade = Normal v = (p + (N – n)) / (P + N)
Exemplo - PruneRule 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
Exemplo - PruneRule PP PN Regra: Ventoso = Falso v = (p + (N – n)) / (P + N) v = (1 + (2 – 1)) / (3 + 2) v = 2 / 5 = 0,4
Exemplo - PruneRule 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”.
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
Exemplo – Condição de Parada PP PN Regra: Ventoso = Falso and Umidade = Normal
Exemplo – Condição de Parada PP PN Regra: Ventoso = Falso and Umidade = Normal Positivos: 1 Negativos: 0 Taxa de Erro = 0 → Continua o algoritmo
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
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
Resultado Possível Ventoso = Falso and Umidade = Normal Tempo = Nublado
Resultados obtidos pelo IREP • Apresentar os gráficos aqui IREP: O(m log² m),m = Número de exemplos.
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: 11-23-3
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;
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: 2000 Regra 2 p:1000 n:1000 n:1 v = (p + (N – n)) / (P + N) • v=(2000 +(2000-1000))/(4000+2000) v=(1000+(2000-1))/(4000+2000) v=0.5 v=0.4999
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=(2000-1000)/ V=(1000-1)/(1000+1) (2000+1000)=0.333 V=0.99
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.
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