Fast Effective Rule Induction
(Willian W. Cohen)
Leandro Zulian Gallina
Sílvia Regina Vargas Gomes
CMP259 – Descoberta de Conhecimento em Bancos de Dados
Objetivos do artigo
• Trabalhos anteriores
– Nomeadamente, IREP
• Experimentos com o IREP
– Aqui a gente meio que só cita e ignora
• Melhorias para o IREP
– IREP*
– RIPPER-k
CMP259
2
Conceitos de Classificação
• Tarefa de aprender um modelo de
classificação
– Atribui a cada conjunto de atributos um valor de
uma classe pré-definida
• O modelo deve:
– Ser adequado aos dados de entrada (training set)
– Predizer corretamente as classes de dados não
vistos antes (test set)
CMP259
3
Construindo árvores de decisão
• Número de árvores possíveis: exponencial
• Método da força bruta impraticável
• Algoritmos para induzir árvore de decisão
– Mesmo que não seja a ótima
CMP259
4
Construindo árvores de decisão
• Algoritmos:
– Hunt
– ID3
– C4.5
– CART
• Comum: estratégia gulosa
– Crescer a árvore de decisão tomando decisões
localmente ótimas
CMP259
5
Pruning (Poda)
• Árvores de decisão muito grandes =>
OVERFITTING (Super-especialização)
• Caminhos muito específicos são
desnecessários
• Poda remove caminhos extras
CMP259
6
Overfitting
CMP259
7
Tipos de Poda
• Pré-poda:
– Faz a poda no momento em que as regras são
geradas
– Estabelece uma condição de parada quando uma
regra é adicionada sem que haja ganho
• Pós-poda
– Faz a poda somente quando toda a árvore de
decisão já foi gerada
CMP259
8
Pruning (Poda)
• Pré-poda
– Vantagem: Mais rápida;
– Desvantagem: Difícil determinar condição de parada (pode
gerar underfitting/manter overfitting)
• Pós-poda
– Vantagem: Mais precisa;
– Desvantagem: O conjunto de treinamento precisa ser
dividido em growing set e pruning set
– Apenas os dados do growing set são utilizáveis para
aprender as regras
CMP259
9
REP (Reduced Error Pruning)
• Algoritmo que usa pós-poda
• São aplicados operadores de poda
• Poda termina quando aplicação da poda faz
com que aumente o erro no pruning set
• Desvantagem: tempo de processamento de
até O(n4)
CMP259
10
Classificação baseada em regras
• O que são regras de classificação?
– São regras no formato IF-THEN
– A parte IF forma uma condição sobre o conjunto de
dados
– A parte THEN contém a classe a ser atribuída
– Condições proposicionais com comparações atributovalor e cláusulas de Horn de primeira ordem.
• Por que regras?
– Porque as hipóteses são melhor entendidas e melhor
lidas por conjuntos de regras IF-THEN
CMP259
11
Classificação baseada em regras
• Exemplo de regra:
– (Gives Birth = no) and (Aerial Creature = yes) 
Birds
• Métricas de avaliação de regras:
– Ni: número de regras cobertas pela regra i
– ni: número de regras corretamente classificadas
pela regra i.
– cobertura: Ni / |total de tuplas no dataset|
– acurácia: ni / Ni
CMP259
12
Classificação baseada em regras
• Conflito de resolução:
– Uma instância “ativa” mais de uma regra.
– Regras ordenadas: maior prioridade à regra com o
requisito mais forte (ex.: a regra possui maior
quantidade de atributos)
– Regras desordenadas: a decisão da regra que vai
ser atribuída para classificar um registro é feita
por votação. A votação geralmente envolve a
acurácia da regra.
CMP259
13
Abordagens para classificação
• Métodos diretos
– As regras são aprendidas diretamente do dataset
• IREP, RIPPER
• Métodos indiretos
– A árvore de decisão é construída e, após, as regras
são derivadas
• C4.5rules
CMP259
14
Cobertura Sequencial
• Seja E o conjunto de registros de treinamento
• Repita:
– Aprender uma regra (LearnOneRule) com alta
acurácia e qualquer cobertura
– Remover os registros cobertos pela regra (todos!)
– Adicionar a regra ao final da lista de regras
• Até que todos os registros sejam cobertos
• Inserir a regra padrão ao final da lista de
regras ({}  class)
CMP259
15
Cobertura Sequencial
CMP259
16
Cobertura Sequencial
• Eliminação de instâncias
– Eliminar instâncias para que a nova regra gerada
não seja igual a anterior
– Eliminar instâncias positivas para garantir que a
próxima regra é diferente
– Eliminar instâncias negativas para prevenir a subestimação da próxima regra gerada
CMP259
17
Como aprender uma regra?
(LearnOneRule)
• Geral ao específico
– Começar com a hipótese mais geral e ir refinando
de acordo com um parâmetro (acurácia)
• Específico ao geral
– Começar com a regra mais específica e ir
generalizando passo a passo.
• Estratégia “Rule-growing”
CMP259
18
Como aprender uma regra?
geral ao específico
CMP259
19
Como aprender uma regra?
específico ao geral
CMP259
20
Avaliação da regra
• FOIL’s information gain:
– usa o suporte da regra (número de positivos
cobertos pela regra – pi)
– prefere regras com alto suporte e alta acurácia
– r: A  + cobre p0 exemplos positivos e n0
negativos. r’: A and B  + cobre p1 exemplos
positivos e n1 negativos
– FOIL = p1 x (log2(p1/(p1+n1)) / log2(p0/(p0+n0)))
CMP259
21
RIPPER
• 2 classes: escolher uma classe para ser a
positiva. A outra é negativa e padrão.
• k classes: escolher a classe positiva da vez e
todas as outras classes são tratadas como
negativas
– ordenar as classes de acordo com
predominância das classes dentro do dataset.
CMP259
a
22
RIPPER
• Aprendendo uma regra:
– Começar da regra vazia (geral a específica)
– Adicionar condições desde que elas melhorem o
information gain
– Parar quando a regra não cobrir mais exemplos negativos
– Podar a regra imediatamente usando o reduced error
pruning
• medida de poda: v = (p-n)/(p+n)
– Método da poda: deletar os condicionais de forma a
melhorar v.
CMP259
23
RIPPER
• Construindo o conjunto de regras
– Usar o algoritmo de cobertura sequencial
• Achar a melhor regra que cobre um conjunto de
registros positivos
• Eliminar as instâncias do conjunto de dados
– A cada nova regra aprendida, verificar se o REP
ultrapassa 0.5
• Se sim, retornar o conjunto de regras
• Caso contrário, adicionar a regra ao conjunto de regras
e remover as instâncias cobertas pela regra do dataset
CMP259
24
RIPPER
• Otimizando o conjunto de regras
– Para cada regra r no conjunto de regras R
• Considerar duas novas regras:
– r’: aprende uma nova regra do zero usando o pruning set
– r*: adiciona condicionais para melhorar a regra r usando
também o pruning set
• Comparar as três regras e escolher a que minimiza o
valor de acordo com o MDL
CMP259
25
RIPPER
RIPPER(Pos,Neg)
begin
Ruleset := {}
while Pos  {}
split (Pos, Neg) into (GrowPos, GrowNeg) and (PrunePos,
PruneNeg)
Rule := GrowRule(GrowPos,GrowNeg)
Rule := PruneRule(Rule, PrunePos, PruneNeg)
if REP of rule on (PrunePos, PruneNeg) > 0.5
return Ruleset
else
add rule to Ruleset
remove examples covered by rule on (Pos, Neg)
endif
endwhile
OptimizeRuleset(Ruleset, PrunePos, PruneNeg)
return Ruleset
end
CMP259
26
Download

RIPPER_Silvia_Leandro