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 Experimentos com o IREP Nomeadamente, IREP Experimentos com o IREP Aqui a gente meio que só cita e ignora Melhorias para o IREP IREP* RIPPER-k CMP259
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
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
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
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
Overfitting CMP259
Tipos de Poda Pré-poda: Pós-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
Pruning (Poda) Pré-poda Pós-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
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
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 atributo-valor 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
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
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
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
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
Cobertura Sequencial CMP259
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 negati- vas para prevenir a subesti- mação da próxima regra ge- rada CMP259
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
Como aprender uma regra? geral ao específico CMP259
Como aprender uma regra? específico ao geral CMP259
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
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 a predominância das classes dentro do dataset. CMP259
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
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
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
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) end CMP259