Classificação: avaliação de modelos Mineração de dados Classificação: avaliação de modelos André Salvaro Furtado Prof. Vania Bogorny Parte desta apresentação é baseada em material do prof. Paulo Engel (II/UFRGS)
Relembrando Classificação
Exemplo de dados para concessão de empréstimo bancário
Exemplo de dados para concessão de empréstimo bancário
ID3 – Passo 1: Calcular a entropia do conjunto Entropia (S) = - (p+ * log2 p+ + p- * log2 p-) Entropia (S) = - ((9/14 * log29/14) + (5/14 * log25/14)) = 0.940
ID3 – Passo 2: Calcular a entropia dos valores dos atributos Entropia(montante=médio) = - ((2/5 * log22/5) + (3/5 * log23/5)) = 0,971
ID3 – Passo 2: Calcular a entropia dos valores dos atributos Entropia(montante=médio) = - ((2/5 * log22/5) + (3/5 * log23/5)) = 0,971 Entropia(montante=baixo) = - ((4/4 * log24/4) + (0/4 * log20/4)) = 0
ID3 – Passo 2: Calcular a entropia dos valores dos atributos Entropia(montante=médio) = - ((2/5 * log22/5) + (3/5 * log23/5)) = 0,971 Entropia(montante=baixo) = - ((4/4 * log24/4) + (0/4 * log20/4)) = 0 Entropia(montante=alto) = - ((3/5 * log23/5) + (2/5 * log22/5)) = 0,971
ID3 – Passo 2: Calcular a entropia dos valores dos atributos Entropia(montante=médio) = - 2/5 log2 (2/5) - 3/5 log 2 (3/5) = 0,971 Entropia(montante=baixo) = - 4/4 log2 (4/4) - 0/4 log2 (0/4) = 0 Entropia(montante=alto) = - 3/5 log2 (3/5) - 2/5 log2 (2/5) = 0,971 Entropia (idade = senior)= - 2/4 log2 (2/4) - 2/4 log2 (2/4) = 1 Entropia (idade = média)= - 3/5 log2 (3/5) - 2/5 log2 (2/5) = 0,971 Entropia (idade = jovem)= - 4/5 log2 (4/5) - 1/5 log2 (1/5) = 0,722 ...
ID3 – Passo 3: Calcular o ganho de informação dos atributos Entropia(montante=médio) = - 2/5 log2 (2/5) - 3/5 log 2 (3/5) = 0,971 Entropia(montante=baixo) = - 4/4 log2 (4/4) - 0/4 log2 (0/4) = 0 Entropia(montante=alto) = - 3/5 log2 (3/5) - 2/5 log2 (2/5) = 0,971 Entropia (idade = senior)= - 2/4 log2 (2/4) - 2/4 log2 (2/4) = 1 Entropia (idade = média)= - 3/5 log2 (3/5) - 2/5 log2 (2/5) = 0,971 Entropia (idade = jovem)= - 4/5 log2 (4/5) - 1/5 log2 (1/5) = 0,722 ... Entropia (S) = - ((9/14 * log29/14) + (5/14 * log25/14)) = 0.940 Ganho (S,montante) = 0,940 - (5/14). 0,971 - (4/14). 0 - (5/14). 0,971 = 0,246 Ganho (S,idade) = 0,940 - (4/14). 1 - (5/14). 0,971 - (5/14). 0,722 = 0,049 Ganho (S,salário) = 0,940 - (7/14). 0,592 - (7/14). 0,985 = 0,151 Ganho (S,conta) = 0,940 - (8/14). 0,811 - (6/14). 1 = 0,047
ID3 – Passo 4: Selecionar o melhor atributo Entropia(montante=médio) = - 2/5 log2 (2/5) - 3/5 log 2 (3/5) = 0,971 Entropia(montante=baixo) = - 4/4 log2 (4/4) - 0/4 log2 (0/4) = 0 Entropia(montante=alto) = - 3/5 log2 (3/5) - 2/5 log2 (2/5) = 0,971 Entropia (idade = senior)= - 2/4 log2 (2/4) - 2/4 log2 (2/4) = 1 Entropia (idade = média)= - 3/5 log2 (3/5) - 2/5 log2 (2/5) = 0,971 Entropia (idade = jovem)= - 4/5 log2 (4/5) - 1/5 log2 (1/5) = 0,722 ... Entropia (S) = - ((9/14 * log29/14) + (5/14 * log25/14)) = 0.940 Ganho (S,montante) = 0,940 - (5/14). 0,971 - (4/14). 0 - (5/14). 0,971 = 0,246 Ganho (S,idade) = 0,940 - (4/14). 1 - (5/14). 0,971 - (5/14). 0,722 = 0,049 Ganho (S,salário) = 0,940 - (7/14). 0,592 - (7/14). 0,985 = 0,151 Ganho (S,conta) = 0,940 - (8/14). 0,811 - (6/14). 1 = 0,047
Escolha do próximo atributo montante médio baixo alto ? E=sim {C1,C2,...C14} [9+, 5-] {C1,C2,C8,C9,C11} [2+, 3-] {C3,C7,C12,C13} [4+, 0-] {C4,C5,C6,C10,C14} [3+, 2-] casos proporção dos casos Qual atributo será colocado aqui? Repetir os passos 1, 2, 3 e 4 para os outros atributos considerando o conjunto de dados S = {C1,C2,C8,C9,C11}
Resultado: modelo de classificação montante médio baixo alto conta salário não sim E=sim E=não
Avaliação da Árvore de Decisão Como avaliar as regras utilizadas na árvore de decisão na tarefa de classificação? Taxa de Acertos: número de casos classificados corretamente dividido pelo número total de casos taxa_de_acertos = Nacertos / Ntotal Taxa de Erros: número de casos classificados de forma incorreta dividido pelo número total de casos taxa_de_erros = Nerros / Ntotal
Avaliação da árvore de decisão Avaliação através da taxa de acertos/erros: taxa_de_erros = Nerros / Ntotal taxa_de_acertos = Nacertos / Ntotal montante médio baixo alto conta salário não sim E=sim E=não Utilizando o conjunto de treinamento: proporção_de_acertos = 14 / 14 = 100% proporção_de_erros = 0 / 14 = 0%
Conjunto de teste
Proporção de acertos/erros Utilizando o conjunto de teste: proporção_de_acertos = Nacertos / Ntotal proporção_de_acertos = 5 / 7 = 71,4% proporção_de_erros = Nerros / Ntotal proporção_de_erros = 2 / 7 = 28,6%
Métricas para avaliação de desempenho O foco deve estar na capacidade preditiva do modelo E não no tempo que leva para classificar ou criar um modelo, na escalabilidade, etc. Baseadas na Matriz de Confusão (exemplo com duas classes): Classe prevista Sim Não Classe real Verdadeiro Positivo (VP) Falso Negativo (FN) Positivo (FP) Negativo (VN)
Métricas para avaliação de desempenho... Classe prevista Sim Não Classe real Verdadeiro Positivo (VP) Falso Negativo (FN) Positivo (FP) Negativo (VN) Métricas mais usadas: Acurácia (mais usada), Erro Acurácia: Erro:
Métricas para avaliação de desempenho... Classe prevista Sim Não Classe real Verdadeiro Positivo (VP) Falso Negativo (FN) Positivo (FP) Negativo (VN) Acurácia: Erro:
Métricas para avaliação de desempenho... Classe prevista Sim Não Classe real Verdadeiro Positivo (VP) Falso Negativo (FN) Positivo (FP) Negativo (VN) Acurácia: Erro:
Exercício em sala Casa Própria sim não Est.Civil separado casado Renda Mau Pagador sim solteiro 125 Não não casado 100 70 120 separado 95 Sim 60 220 85 75 90 Casa Própria sim não 1 Est.Civil separado casado solteiro 2 3 4 Complete a árvore de decisão colocando no lugar dos números das folhas, a classe, de forma a minimizar os erros de classificação. Faça a matriz de confusão correspondente.
Outras métricas para avaliação de desempenho Taxa de VP : (sensibilidade, abrangência, recall) Classe prevista Sim Não Classe real VP FN FP VN Taxa de VN (especificidade): Precisão: (Média harmônica entre precisão e recall) F-measure:
Limitação da acurácia Exemplo: Previsão de culpa em julgamento: Considere um problema de 2 classes Número de exemplos da classe 0 = 9.990 Número de exemplos da classe 1 = 10 Se o modelo predizer que qualquer amostra é da classe 0, a acurácia é 9990/10000 = 99,9 % A acurácia é enganosa porque o modelo não detecta nenhum exemplo da classe 1! Solução: levar em consideração custos por classe para erros de classificação Exemplo: Previsão de culpa em julgamento: positivo pena de morte
Matriz de custo C(i|j) Classe prevista Sim Não Classe real C(Sim|Sim) C(Não|Sim) C(Sim|Não) C(Não|Não) C(i|j): custo de classificar exemplos da classe j, como sendo da classe i
Cálculo de custos de classificação Matriz de Custo C(i|j) Classe prevista Sim Não Classe real -1 100 1 Modelo M1 Classe prevista Sim Não Classe real 150 40 60 250 Modelo M2 Classe prevista Sim Não Classe real 250 45 5 200 Acurácia = 80% Custo = 3910 Acurácia = 90% Custo = 4255
Métodos para avaliação de modelos Quão preditivo é o modelo aprendido? Erro sobre os dados de treinamento não é um bom indicador de desempenho sobre dados futuros: é muito otimista Solução simples pode ser usada se existirem muitos dados rotulados: Dividir dados em conjuntos de treinamento e de teste Mas: normalmente o número de dados rotulados é limitado São necessárias técnicas mais sofisticadas de avaliação
Avaliação de modelos
Avaliação de modelos
Avaliação de modelos
Treinamento e teste … Conjunto de treinamento: conjunto de exemplos (registros) que foram usados na geração do modelo Conjunto de teste: conjunto de exemplos (registros) independentes que não foram usados na geração do modelo Suposição: os dados de treinamento e os dados de teste são amostras representativas do problema Arquivos de teste e de treinamento podem ter naturezas diferentes Exemplo: classificadores construídos usando dados de consumidores de duas cidades diferentes A e B Para estimar o desempenho do classificador, gerado com os dados da cidade A, numa cidade diferente, testá-lo com dados de B
Tirando o máximo dos dados Geralmente, quanto maior o arquivo de treinamento melhor o classificador Quanto maior o arquivo de teste mais exata será a estimativa de erro Procedimento holdout (retenção): dividir os dados originais em conjuntos de treinamento e de teste Dilema: queremos tanto um grande arquivo de treinamento quanto um grande arquivo de teste
Estimação por retenção (holdout) O que fazer se a quantidade de dados é limitada? Método holdout reserva uma certa quantidade dos dados para teste e usa o resto para o treinamento Usualmente 1/3 para teste, o resto para treinamento Mas: as amostras podem não ser representativas Exemplo: pode não haver amostras de uma classe nos dados de teste Versão avançada usa estratificação Assegura que cada classe esteja representada com proporções aproximadamente iguais em ambos os conjuntos IMPORTANTE: Após a avaliação, todos os dados podem ser usados para construir o classificador final !!!!
Validação cruzada (cross-validation) Validação cruzada evita superposição dos conjuntos de teste Primeiro passo: conjunto de dados é dividido em k subconjuntos de tamanhos iguais Segundo passo: um subconjunto é usado para teste e os demais para treinamento. O segundo passo é repetido k vezes, variando o subconjunto usado para teste Esta é a chamada validação cruzada por k vezes Muitas vezes os subconjuntos são estratificados antes de realizar a validação cruzada A estimativa de erro global é calculada como a média das k estimativas de erro (uma para cada iteração)
four-fold-cross-validation subconj 1 subconj 2 subconj 3 subconj 4 Conjunto de Exemplos subconj 1 subconj 2 subconj 3 subconj 4 teste treino Modelo 1 Modelo 2 Modelo 3 Modelo 4
Mais sobre validação cruzada Método padrão de avaliação: validação cruzada por dez vezes estratificada Por que dez? Experimentos demonstraram que esta é uma boa escolha para se obter uma estimativa precisa Estratificação reduz a variância da estimativa Melhor ainda: validação cruzada estratificada repetida P. ex. se repete dez vezes a validação cruzada por dez vezes e se calcula a média (reduz variância)
Validação cruzada deixando um fora Validação cruzada deixando um fora (leave-one-out c-v): O número de vezes é escolhido como o número de exemplos de treinamento Isto é, deve-se construir n classificadores, onde n é o número de exemplos de treinamento Aproveita ao máximo os dados Não envolve sub-amostragem aleatória Computacionalmente muito custoso
Navalha de Occam Dados dois modelos com mesma taxa de erros, o modelo mais simples é melhor (preferível)
Exercício em sala lágrimas astigmat. prescrição lágrimas astigma-tismo pressão prescrição LENTES normal sim hipermetr. NÃO não miopia GELAT. DURA reduzida alta miopia. lágrimas reduzida normal astigmat. 1 sim não prescrição 2 miopia hipermetr. 4 3 Complete a árvore de decisão colocando no lugar dos números das folhas, a classe, de forma a minimizar os erros de classificação. Faça a matriz de confusão correspondente.