Capítulo 10 Métodos de Aprendizagem Supervisionados: CLASSIFICAÇÃO Árvores de Decisão O que são árvores de decisão • São estruturas de dados, compostas de um nó raíz e vários nós filhos, que por sua vez tem seus filhos também e se interligam por ramos, cada um representando uma regra. Os nós que não possuem filhos são chamados de nós folhas e os que têm são chamados de nós pais, ou de decisão. • São estruturas que podem ser utilizadas para dividir uma grande base de registros em sucessivos conjuntos menores de dados pela aplicação de simples regras de decisão. A cada divisão, os membros resultantes de um conjunto são cada vez mais similares uns aos outros. • Um modelo de árvore de decisão consiste de um conjunto de regras para dividir uma base de dados em grupos menores e homogêneos com respeito a uma particular variável target. A variável target geralmente é categórica e o modelo de árvore de decisão é usado para calcular a probabilidade que um dado registro pertença a cada uma das categorias, ou para classificar um registro designando-o a categoria mais provável. Aplicações de árvores de decisão • Durante a fase de análise exploratória de dados em um projeto de data mining as árvores de decisão são uma ferramenta útil para selecionar as variáveis que são realmente úteis para predizer o valor de uma variável resposta. Exemplo: – Deseja-se construir um modelo de regressão utilizando variáveis de entrada para obter um valor predito. Mas quais variáveis de entrada? Solução: usar árvores de decisão para a seleção de variáveis. • Um fabricante de motores a diesel utilizou árvores de decisão para prever a venda de motores baseado em dados históricos de registros sobre caminhões. O objetivo era identificar individualmente os donos de caminhões que estariam dispostos a trocar os seus motores. • Uma empresa de cartões de crédito desejava verificar aqueles clientes que tinham um risco potencial maior. Utilizaram-se árvores de decisão para classificar a base de clientes atuais em bons e maus pagadores. • O departamento de medicina de uma universidade americana utilizou árvores de decisão para identificar características de tumores em câncer de mama, para identificar se eles eram malignos ou benignos. Classificação • Geralmente é utilizada para classificar os registros de uma variável categórica (variável target) de uma base de dados em suas respectivas classes pré determinadas. Muitos métodos de classificação foram propostos em aprendizagem de máquina, sistemas especialistas, estatística, neurobiologia e data mining. • Classificação de dados é um processo de duas etapas: na primeira, um modelo é construído descrevendo um predeterminado conjunto de classes de dados. Esse modelo é construído analisando os registros descritos pelas suas variáveis em uma base de dados. Cada registro pertence a uma classe pré-determinada por uma de suas variáveis. O conjunto de registros analisados para construir o modelo formam o conjunto de treinamento. Tipicamente, o modelo de aprendizagem é representado na forma de regras de classificação ou árvores de decisão. • Na segunda etapa, o modelo é usado para a classificação. Primeiramente, a acurácia do modelo é estimada. Se a acurácia do modelo é considerada aceitável, o modelo pode ser utilizado para classificar futuros registros em que os rótulos ou classe não são conhecidos. Ilustração de um modelo de classificação Como cresce uma árvore de decisão • Geralmente se utiliza árvores binárias, ou seja, aquelas com um número máximo de dois ramos por nó. Para explicação serão consideradas as árvores com uma variável target do tipo categórica binária, por exemplo, responde/não responde. Isto simplifica as explicações sem perda de generalização. • Há vários algoritmos para o crescimento ou indução dos nós de uma árvore, mas em geral eles possuem um procedimento em comum: repetir sucessivas divisões nos dados, em grupos cada vez menores, de modo que a cada nova geração, os nós tenham uma pureza maior do que os seus ancestrais em relação a variável target ou resposta. Encontrando as divisões • No inicio, há um conjunto de treinamento consistindo de registros pré-classificados, isto é, os valores da variável target são conhecidos para todos os registros. O objetivo é construir uma árvore que designe uma classe para a variável resposta de um novo registro baseado nas informações das variáveis de entrada. • O primeiro passo é decidir quais das variáveis de entrada fazem a melhor divisão. A melhor divisão é definida como aquela que melhor separa os registros em grupos, nos quais uma classe é predominante em cada grupo. • Uma medida para se avaliar uma divisão é a pureza. Um alto grau de pureza representa que uma classe é predominante em um conjunto de registros, enquanto que um baixo grau de pureza representa que há uma distribuição de classes pelo conjunto de registros. O objetivo é sempre ter um alto grau de pureza. Uma boa divisão também cria nós de tamanhos similares, ou, pelo menos, não cria nós que contém muito poucos registros. • Os algoritmos de indução de árvores de decisão funcionam pegando cada variável de entrada e medindo o aumento na pureza resultante por toda divisão proposta por aquela variável. • Depois de tentar com todas as variáveis de entrada, aquela que possibilita a melhor divisão é utilizada para a divisão inicial, criando dois ou mais filhos. Se não é possível novas divisões, por não haver registros suficientes ou não haver divisões que tragam melhoras, o algoritmo termina e aquele nó se torna um nó folha. Senão, o algoritmo continua de forma recursiva para cada um dos filhos obtidos na ultima divisão. • A pureza de uma divisão pode ser obtida através de medidas (critérios) que dependem do tipo da variável resposta (target) e não das variáveis de entrada. Divisão com variáveis de entrada numéricas Divisão com variáveis numéricas é da forma X < C, onde X é a variável de entrada. Todos os registros cujos valores da variável de entrada é menor do que C são colocados num nó (filho) e todos os registros onde o valor de X é maior ou igual do que C é colocado em outro nó (filho). Depois de cada tentativa de divisão, calcula-se uma medida de pureza. Divisão com variáveis de entrada categóricas O algoritmo mais simples para divisão com variável de entrada categórica é simplesmente criar um novo ramo para cada classe que a variável categórica apresentar. Medidas para avaliar a melhor divisão • Variável resposta (target) categórica – – – – Gini ou diversidade da população Redução da entropia ou ganho de informação Taxa de ganho de informação Teste Qui-Quadrado • Variável resposta (target) quantitativa contínua – Redução na variância – Teste F Gini • Fornece a probabilidade de que dois registros escolhidos aleatoriamente de uma mesma população estarem em uma mesma classe ou categoria. Para uma população pura, ou seja, com apenas uma categoria, esta probabilidade é igual a 1. • A medida Gini de um nó é simplesmente a soma dos quadrados das proporções das classes. Um nó com igual número de registros para duas classes teria um Gini de: 0.52 + 0.52 = 0.50, valor esperado porque a chance de pegar dois itens da mesma categoria ao acaso, com reposição, é 1 de 2. Redução da entropia ou ganho de informação • Na teoria da informação, entropia é uma medida de quanto um sistema é desorganizado. A entropia de um particular nó de uma árvore de decisão é a soma, sobre todas as classes representadas no nó, da proporção de registros pertencente a uma particular classe multiplicada pelo logaritmo base dois daquela proporção. Portanto: m I(S1,...,Sm) = EntropiaEsperada = p i log 2 p i i 1 onde pi é igual à proporção da classe i, no nó, i=1,2,...,m, onde m é o número de categorias da variável target. • Para medir a Entropia real de uma determinada variável A, utiliza-se a seguinte fórmula: v S1j ... Smj j1 S EntropiaEsperada Onde Sij representa os subconjuntos (quantidade de registros) da amostra S (o número total de registros), onde j=1,...,v, corresponde as categorias da variável de entrada. • Então, o ganho de informação para um determinado ramo da variável A pode ser obtido pela fórmula: Ganho(A) = EntropiaEsperada – EntropiaReal(A) • O valor de Ganho(A) permite uma redução da entropia causada pelo conhecimento do valor da variável A. O algoritmo ID3 A medida de entropia pode ser usada de forma combinada com uma metodologia que utiliza variáveis de entrada categóricas criando ramos separados para cada categoria. Este é o caso do algoritmo ID3, uma árvore de decisão criada pelo pesquisador J. Ross Quinlan. Exemplo – Classificar os registros para compra de computador, se sim ou não, de acordo com as variáveis age, income, student e credit_rating • 1º passo: decidir qual variável de entrada é a mais importante para separar os registros. Será aquela que tiver o maior ganho de informação em relação à variável target buys computer. A variável buys computer tem dois valores possíveis, yes ou no. S1 = yes : 9 casos S2 = no : 5 casos m EntropiaEsperada(buys) = pi log2 (pi) i 1 9 5 5 9 I(9,5) EntropiaEsperada log 2 log 2 14 14 14 14 0,940 • Variável Age buy yes no <=30 31..40 2 3 >40 4 0 3 2 • Para Age <=30 2 3 3 2 I S11 , S21 EntropiaEsperada log 2 log 2 0,971 5 5 5 5 • Para Age 31...40 4 0 0 4 I S12 S22 EntropiaEsperada log 2 log 2 0 4 4 4 4 • Para Age >40 2 3 3 2 I S13 S23 EntropiaEsperada log 2 log 2 0,971 5 5 5 5 3 EntropiaReal(Age) S1j S2 j j1 14 I S1j , S2 j 40 3 2 23 .0.971 .0 .0,971 0,694 14 14 14 Ganho(Age) = EntropiaEsperada(buys) – EntropiaReal(Age) = 0,94 – 0,694 = 0,246 • Variável Income buy yes no low medium 3 1 high 4 2 2 2 42 23 3 1 EntropiarealIncome 0,8113 0,000 1,000 0,9111 14 14 14 EntropiaReal(Income) = 0,9111 Ganho(Income) = 0,94 - 0,9111 = 0,029 • Variável Student buy yes no yes no 6 1 3 4 EntropiaReal(Student) = 0,788451 Ganho(Student) = 0,94 - 0,788451 = 0,152 • Variável Credit rating buy yes no fair excellent 6 2 3 3 Ganho(credit rating) = 0, 048 A variável que possuiu o maior ganho de informação é a variável AGE, então será ela que ficará na raiz da árvore, ou seja, é a variável selecionada. Age > 40 <= 30 31...40 Income High High Medium Low Medium Student no no no yes yes Credit_rating fair excellent fair fair excellent buy no no no yes yes Income High Low Medium High Income Medium Low Low Medium Medium Student no yes no yes Credit_rating fair excellent excellent fair Student no yes yes yes no Credit_rating fair fair excellent fair excellent buy yes yes no yes no buy yes yes yes yes Como no ramo 31...40 todos os registros pertencem a mesma classe da variável target (yes), então este nó se torna uma folha. Os outros nós devem continuar o processo de divisão. Nó Age <= 30 2 3 3 2 I S1 , S2 I 2,3 EntropiaEsperada log 2 log 2 0,971 5 5 5 5 • Variável Income buy yes no High Medium 0 2 Low 1 1 1 0 Para income High 0 2 2 0 I S11 , S21 EntropiaEsperada0,2 log 2 log 2 0 2 2 2 2 Para income Medium 1 1 1 1 I S12 , S22 EntropiaEsperada(1,1) log 2 log 2 1 2 2 2 2 Para income Low 1 0 0 1 I S13 , S23 EntropiaEsperada(1,0) log 2 log 2 0 1 1 1 1 2 1 2 EntropiaReal(Income) .0 .1 .0 0,40 5 5 5 Ganho(Income) = 0,971 – 0,400 = 0,571 • Variável Student buy yes no yes no 2 0 0 3 Para Student yes 2 0 0 2 I S11 , S21 EntropiaEsperada(2,0) log 2 log 2 0 2 2 2 2 Para Student no 0 3 3 0 I S12 , S22 EntropiaEsperada(0,3) log 2 log 2 0 3 3 3 3 3 2 EntropiaReal(Student) .0 .0 0 5 5 Ganho(Student) = 0,971 – 0,00 = 0,971 • Variável Credit Rating buy yes no Fair Excellent 1 2 1 1 Para Credit Rating fair 1 2 2 1 I S11 , S21 EntropiaEsperada(1,2) log 2 log 2 0,918296 3 3 3 3 Para Credit Rating excellent 1 1 1 1 I S12 , S22 EntropiaEsperada(1,1) log 2 log 2 1 2 2 2 2 2 3 EntropiaReal(Credit_Rating) .0,918296 .1 0,951 5 5 Ganho(Credit_Rating) = 0,971 – 0,951 = 0,020 O maior ganho de informação pertence a variável Student, então ela fica no nó desta divisão. Age <= 30 > 40 31..40 Student no Income High High Medium Credit_rating fair excellent fair buy no no no yes ? yes Income Low Medium Credit_rating buy fair yes excellent yes Os dois nós se transformam em duas folhas. Nó Age > 40 3 2 2 3 I S1 , S2 EntropiaEsperada(3,2) log 2 log 2 0,971 5 5 5 5 • Variável Income buy yes no High Medium 0 0 Low 2 1 1 1 Para income High 0 0 0 0 EntropiaEsperada(0,0) . log2 . log2 0 0 0 0 0 Para income Medium 2 1 1 2 EntropiaEsperada(2,1) . log2 . log2 0,918296 3 3 3 3 Para income Low 1 1 1 1 EntropiaEsperada(1,1) . log2 . log2 1 2 2 2 2 2 3 EntropiaReal(Income) .0,918296 .1 0,951 5 5 Ganho(Income) = 0,971 – 0,951 = 0,020 • Variável Student buy yes no Yes No 2 1 1 1 Para Student yes 2 1 1 2 EntropiaEsperada(2,1) . log2 . log2 0,918296 3 3 3 3 Para Student no 1 1 1 1 EntropiaEsperada(1,1) . log2 . log2 1 2 2 2 2 2 3 EntropiaReal(Student) .0,918296 .1 0,951 5 5 Ganho(Student) = 0,971 – 0,951 = 0,020 • Variável Credit Rating buy yes no Fair Excellent 3 0 0 2 Para Credit Rating fair 3 0 0 3 EntropiaEsperada(3,0) . log2 . log2 0 3 3 3 3 Para Credit Rating excellent 0 2 0 EntropiaEsperada(0,2) . log2 . log2 2 2 2 2 0 2 2 3 EntropiaReal(Credit_Rating) .0 .0 0 5 5 Ganho(Credit_Rating) = 0,971 – 0 = 0,971 O maior ganho de informação pertence a variável Credit_Rating, então ela fica no nó desta divisão. Age <= 30 > 40 31..40 Student no no Os dois nós se transformam em duas folhas. Credit_Rating yes yes excellent fair yes Income Medium Low Medium Student no yes yes buy yes yes yes Income Low Medium Student yes no buy no no Estrutura final da Árvore Buys Computer (Compram computador) Teste Qui-Quadrado • O teste Qui-Quadrado, proposto por Karl Pearson (1900), geralmente é utilizado em situações em que há muitos testes a serem feitos e pelo menos dois resultados categóricos possíveis, com o objetivo de se averiguar quais variáveis de entrada são importantes para dividir a população em subpopulações. • A estatística de qui-quadrado (2) é calculada pela fórmula: l c 2 i 1 j 1 o ij eij 2 eij eij ni . n. j n Onde oij é a freqüência observada da variável na i-ésima linha e j-ésima coluna da tabela, eij é a freqüência esperado da variável, ni. é a freqüência total da i-ésima linha, n.j é a freqüência total da coluna j e n é o número total de observações. Exemplo: Assinatura de TV a cabo Assinatura (target) depois de 1 ano Continua Mala direta 125 95 Telefonema 230 173 20 107 E-mail Total 375 Total Não continua 26 56 151 45 102 275 150 63 170 221 596 2=267, valor bastante alto, indicando que o meio como foi feita a assinatura divide os registros com sucesso, ou seja, é uma variável importante para explicar a target. CHAID • O algoritmo de árvore de decisão CHAID (Chi-Squared Automatic Interaction Detector), uma evolução do algoritmo AID, proposto em 1975 por John A. Hartigan, tem por base o teste de qui-quadrado em uma tabela de contingência entre as categorias da variável resposta e as categorias das variáveis de entrada (as variáveis contínuas devem ser previamente discretizadas em classes). • Realiza um conjunto de testes agregando as classes da variável de entrada que não são significativas para explicar a variável target, de modo a descobrir o melhor número de classes. Depois vai escolher a melhor divisão possível dos dados, ou seja, encontrar a melhor variável explicativa. Finalmente decide se vale a pena realizar qualquer divisão adicional sobre o nó. • O teste de qui-quadrado aplicá-se para variáveis categóricas, assim, para o algoritmo CHAID as variáveis de entrada devem ser categóricas. Variáveis contínuas devem ser discretizadas. Redução da variância • Quando a variável resposta é numérica, uma boa divisão deve reduzir a variância para a variável resposta. • A fórmula do cálculo da variância é a seguinte n S2 x i 1 i x 2 n 1 Onde n é o número total de observações, ou casos, xi é o valor do registro atual e x é o valor da média da variável. Teste F • Proposto pelo inglês Ronald Fisher, faz com as variáveis contínuas o que o teste Qui-Quadrado faz para as categóricas. • O teste F observa as relações entre duas estimativas de variância da população: uma derivada da combinação de todas as amostras e obtendo a variância dessa combinação e uma derivada da variância da média simples de uma amostra. Se as várias amostras foram selecionadas aleatoriamente da mesma população, essas duas estimativas devem ser muito próximas. • O valor do teste F é dado pela divisão da segunda estimativa pela primeira. Um alto valor de F indica que a divisão da população em subgrupos obteve sucesso. Podagem • As árvores de decisão continuam crescendo até que novas divisões possam ser feitas para melhorar a habilidade da árvore de separar os registros do conjunto de treinamento em subconjuntos com um aumento da pureza. Eliminar alguns nós, aumentaria a taxa de erro, para o conjunto de treinamento. • Porém, isso não significa que a árvore completa faria um melhor trabalho para classificar novos registros! Uma árvore completa pode chegar ao super treinamento, ou overfitting. • A solução é eliminar registros que façam a união de grupos muito pequenos por um processo chamado de podagem. • Há duas maneiras de fazer a podagem. Uma seria durante a construção da árvore, e outra após a sua construção. • Na pré-poda ocorre uma parada nas divisões dos nós mais cedo, e aquele nó se torna uma folha. É utilizado algum critério de parada como algum limiar, ou algum teste estatístico. • Na pós-poda são removidos ramos da árvore já completa. O nó então se transforma em folha e recebe a denominação da classe de maior representatividade entre os objetos nele presentes. O algoritmo de podagem CART • O algoritmo CART identifica subárvores candidatas, através de um processo de sucessivas podagens. O objetivo é podar primeiro os ramos que possuem um menor poder preditivo por folha. Para identificar esses ramos menos úteis, o CART utiliza um conceito chamado de taxa de erro ajustada. • Esta é uma medida que incrementa cada taxa de classificação errada de cada nó para o conjunto de treinamento pela imposição de uma penalidade baseada no número de folhas da árvore. • A fórmula da taxa de erro ajustado é: EA (T) = E(T) + contadorFolhas(T) Onde é um fator de ajuste incrementado gradualmente para criar novas subárvores. • Para encontrar a primeira subárvore, as taxas de erro ajustadas para todas as possíveis subárvores contidas no nó raiz são avaliadas com sendo gradualmente aumentado. • Quando a taxa de erro ajustada para alguma subárvore for menor do que a taxa da árvore completa, então tem-se a primeira subárvore candidata. Todos os ramos que não fazem parte desta subárvore são eliminados e então o processo se reinicia a partir deste subárvore para se obter uma segunda. O processo termina quando todos os caminhos até o nó raiz forem podados. Cada uma das subárvores são candidatas a fazerem parte do modelo final. • O próximo passo é identificar no conjunto de subárvores, aquela que classifica melhor novos dados. Para isto é utilizado um conjunto de dados de validação. A árvore que classificar os novos registros com uma menor taxa erro é declarada vencedora. • Para um teste final, um conjunto de treinamento pode ser criado com a junção do conjunto de treinamento e de validação, para verificar se a subárvore escolhida realmente obtém a melhor performance. Gráfico da poda no conjunto de treinamento e no de validação O algoritmo de podagem C5 • C5 é a mais recente versão do algoritmo para árvores de decisão desenvolvido pelo pesquisador Ross Quinlan. O crescimento da árvore é similar ao algoritmo CART, porém com algumas diferenças. O C5 não usa um conjunto de validação. O mesmo conjunto de crescimento da árvore é utilizado para decidir como a árvore deve ser podada. • O C5 poda a árvore examinando a taxa de erro de cada nó e assumindo que a taxa de erro real atual é bem pior. Se N registros chegam ao nó e E deles são classificados incorretamente, então a taxa de erro é E/N. Então o algoritmo de crescimento tenta minimizar a taxa de erro, assumindo que E/N é o melhor que poderia ter sido feito. • O algoritmo tenta estimar a pior taxa de erro de uma folha. Dado um grau de confiança, um intervalo de confiança é obtido, com um intervalo de valores esperados para E. o C5 assume que o número de erros observados no conjunto de treinamento é o limite inferior desse intervalo e substitui o limite superior para chegar a taxa de erro predita, E/N em novos dados desconhecidos. Quanto menor o nó, maior será a taxa de erro. Quando o limite superior do número de erros do nó for menor que o erro estimado para os erros de seus filhos, então os filhos são podados. Extração de regras das árvores • Uma das propostas do Data mining é ganhar conhecimento no domínio do problema. Isso pode ser obtido reduzindo a grande massa de regras em uma árvore de decisão em uma pequena e mais compreensível coleção. Há situações em que as saídas desejadas do sistema são um conjunto de regras. • O primeiro passo é fazer o caminho que levam as folhas fazer uma mesma classificação. • Então extrai-se regras do tipo: Se o tempo é Sol e a umidade menor que 77,5 então sair para a rua Se o tempo é Sol e a umidade maior que 77,5 então não sair para a rua Se o tempo é nublado, então sair para a rua Se o tempo é chuva, mas o vento é 1 (forte) então não sair para a rua Se o tempo é chuva, mas o vento é 2 (fraco) então sair para a rua Casos especiais de Árvores de Decisão • Testando mais de uma variável por vez • Árvores neurais • Árvores de Regressão Testando mais de uma variável por vez • A maioria das árvores de decisão testa uma simples variável a cada divisão. Isto pode levar a um maior número de nós que o necessário. Supondo um caso em que idade e sexo sejam indicadores importantes. Se o nó raiz for dividido em idade, então cada filho contem somente uma parte de mulheres, o mesmo problema se o nó raiz for divido em sexo. • Muitos algoritmos foram desenvolvidos para permitir que múltiplas variáveis possam ser utilizadas para formar uma divisão.Uma técnica forma conjunções booleanas de características com o objetivo de reduzir a complexidade da árvore. Depois de encontrar a variável que forma a melhor divisão, o algoritmo procura pela variável que, quando combinada com a primeira, faz o melhor trabalho de divisão. Variáveis continuam sendo adicionadas até que haja uma significativa melhora estatística no resultado das divisões. Árvores neurais • Uma maneira de combinar entradas para muitas variáveis para cada nó é ter cada representado por uma pequena rede neural. Para domínios onde regiões retangulares façam um trabalho pobre em descrever o tamanho real das classes, árvores neurais podem produzir classificações com mais acurácia, com um treinamento e respostas mais compreensíveis do que uma rede neural pura. • Do ponto de vista do usuário, esta técnica hibrida é mais comum nas variações de redes neurais do que nas de árvores de decisão, porque assim como outras técnicas de redes neurais, não é capaz de explicar suas decisões. Árvores de Regressão • Outra maneira de misturar árvores de decisão com outros métodos é fazer uma regressão linear inteligente em que cada divisão em uma árvore de decisão é escolhida para minimizar o erro de um simples modelo de regressão nos dados para cada nó. • O mesmo método pode ser aplicado para regressão logística para variáveis resposta categóricas.