• Nenhum resultado encontrado

2 Referencial Teórico

2.4 Tipos de Classificadores

2.4.2 Árvore de Decisão

A indução de regras de árvores de decisão é um processo de aprendizado de máquina no qual se pode obter a classificação de um conjunto de dados, por meio da geração de um conjunto de regras que podem ser visualizadas num formato de árvore (WITTEN; FRANK; HALL, 2011). Uma forma bastante simples de explicar o funcionamento de uma árvore de decisão é, como uma lista de perguntas e respostas, hierarquicamente arranjadas, que levam a uma decisão. A Figura 6, adaptada de Gama et al. (2011), apresenta um exemplo de uma árvore de decisão que analisa o tempo e indica se está propício para jogar tênis ou não. De acordo com a figura, as condições climáticas apropriadas para jogar tênis são três:

1. Se estiver fazendo sol e com a humidade normal ou

2. Em dias nublados ou

3. Em caso de chuva, mas com vento fraco.

Figura 6: Exemplo de uma árvore de decisão para jogar tênis (adaptado de Gama et al. (2011))

Desse modo, uma árvore de decisão pode ser definida como uma estrutura de dados gerada recursivamente como um nó folha, que corresponde a uma classe, ou um nó de decisão que contém um teste sobre algum atributo. Para cada resultado do teste existe uma aresta para uma subárvore. Cada subárvore tem a mesma estrutura que a árvore. A árvore pode ser representada como um conjunto de regras. Cada regra tem seu início na raiz da árvore e caminha até uma de suas folhas (MONARD; BARANAUSKAS, 2003).

Entre os diversos algoritmos utilizados na construção de árvores de decisão, o C4.5 é considerado um dos mais populares (KUNCHEVA, 2014). Por essa razão, a implementação utilizada neste trabalho é a C4.5.

Em geral, o procedimento de uma árvore de decisão (AD) é dado como:

1. Apresenta-se um elemento do conjunto de dados ao nó inicial (ou nó raiz) da árvore;

2. Dependendo do resultado do teste lógico usado pelo nó, a árvore se ramifica para um dos nós filhos;

3. Este procedimento é repetido até que um nó terminal (nó folha) seja alcançado.

As árvores de decisão possuem como vantagem, diante de outras técnicas de apren- dizado de máquina, o fato de produzirem modelos que podem ser facilmente interpreta- dos por humanos, possibilitando assim que especialistas possam analisar um conjunto de regras aprendidas por uma árvore de decisão e determinar se o modelo aprendido é acei- tável diante das restrições do mundo real. As árvores de decisão possuem uma estrutura de fácil manipulação e mostram explicitamente como se chegou à conclusão (MONARD; BARANAUSKAS, 2003).

Dentre diversos métodos existentes para construção de classificadores, os indutores de árvores de decisão apresentam vantagens tais como: esforço computacional reduzido, simplicidade na interpretação das regras e seleção automática de atributos relevantes, quando comparados, por exemplo, com redes neurais (WITTEN; FRANK; HALL, 2011).

Apesar das vantagens citadas acima, as árvores de decisão possuem algumas desvan- tagens, tais como: nem sempre o especialista raciocina na forma de um conjunto de regras; as respostas não necessariamente são do tipo "sim"ou "não"e podem não ser mutuamente exclusivas (MONARD; BARANAUSKAS, 2003).

2.4.3

Ripper

O algoritmo Ripper, inicialmente proposto por Cohen (1995), foi desenvolvido a partir da avaliação do algoritmo de aprendizado por regras IREP (do inglês, Incremental Reduced Error Pruning). Sua primeira versão foi uma otimização do algoritmo IREP e denominado, inicialmente, de RIPPERk, atualmente conhecido como RIPPER (do inglês, Repeated Incremental Pruning to Produce Error Reduction ou Poda Incremental Repetida para Produzir Redução de Erro).

Ripper é um dos mais básicos e populares entre os algoritmos baseados em regras, nele o modelo de aprendizado é representado como um conjunto de regras IF-THEN. Classes são examinadas em tamanho crescente e um conjunto inicial de regras para a classe é gerado usando erro reduzido incremental. O Ripper procede tratando todas as instâncias de um julgamento específico nos dados de treinamento como uma classe e encontrando um conjunto de regras que cobrem todos os membros dessa classe. Depois disso, procede à próxima classe e faz o mesmo, repetindo isso até que todas as classes tenham sido envolvidas (BHAGYASHREE et al., 2018).

De forma mais detalhada, Witten, Frank e Hall (2011) explicam que o Ripper é um acrônimo para poda incremental repetida para produzir redução de erro. As classes são examinadas em tamanho crescente e um conjunto inicial de regras para uma classe é gerado usando a redução incremental de erro reduzido. Uma condição de parada extra é introduzida, dependendo do tamanho da descrição das instâncias e do conjunto de regras. O tamanho da descrição é uma fórmula complexa que leva em conta o número de bits necessários para enviar um conjunto de instâncias com relação a um conjunto de regras, o número de bits necessários para enviar uma regra com k condições e o número de bits necessário para enviar o número inteiro k - multiplicado por um fator de 50% para compensar possível redundância nos atributos.

Adicionalmente os mesmos autores explicam que, tendo produzido um conjunto de regras para a classe, cada regra é reconsiderada e duas novas variantes produzidas, usando a remoção de erros reduzidos. Neste estágio, instâncias cobertas por outras regras para a classe são removidas do conjunto de remoção e taxa de sucesso na classe. As instâncias restantes são usadas como critério de remoção. Se uma das duas variantes produzir um melhor tamanho da descrição, ela substituirá a regra. Em seguida, reativamos a fase de construção original para limpar as novas instâncias descobertas da classe. Uma verificação final é feita para garantir que cada regra contribua para a redução do comprimento da descrição, antes de continuar a gerar regras para a próxima classe. No framework Weka este algoritmo foi implementado com a denominação JRIP que será utilizada neste trabalho.

Documentos relacionados