Upload
internet
View
108
Download
0
Embed Size (px)
Citation preview
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
Apply
Model
Induction
Deduction
Learn
Model
Model
Tid Attrib1 Attrib2 Attrib3 Class
1 Yes Large 125K No
2 No Medium 100K No
3 No Small 70K No
4 Yes Medium 120K No
5 No Large 95K Yes
6 No Medium 60K No
7 Yes Large 220K No
8 No Small 85K Yes
9 No Medium 75K No
10 No Small 90K Yes 10
Tid Attrib1 Attrib2 Attrib3 Class
11 No Small 55K ?
12 Yes Medium 80K ?
13 Yes Large 110K ?
14 No Small 95K ?
15 No Large 67K ? 10
Test Set
Learningalgorithm
Training Set
Exemplo de dados para concessão de empréstimo bancário
caso montante idade salário conta empréstimo 1 médio sênior baixo sim não 2 médio sênior baixo não não 3 baixo sênior baixo sim sim 4 alto média baixo sim sim 5 alto jovem alto sim sim 6 alto jovem alto não não 7 baixo jovem alto não sim 8 médio média baixo sim não 9 médio jovem alto sim sim
10 alto média alto sim sim 11 médio média alto não sim 12 baixo jovem baixo não sim 13 baixo sênior alto sim sim 14 alto média baixo não não
Exemplo de dados para concessão de empréstimo bancário
caso montante idade salário conta empréstimo 1 médio sênior baixo sim não 2 médio sênior baixo não não 3 baixo sênior baixo sim sim 4 alto média baixo sim sim 5 alto jovem alto sim sim 6 alto jovem alto não não 7 baixo jovem alto não sim 8 médio média baixo sim não 9 médio jovem alto sim sim
10 alto média alto sim sim 11 médio média alto não sim 12 baixo jovem baixo não sim 13 baixo sênior alto sim sim 14 alto média baixo não não
ID3 – Passo 1: Calcular a entropia do conjunto
caso montante idade salário conta empréstimo 1 médio sênior baixo sim não 2 médio sênior baixo não não 3 baixo sênior baixo sim sim 4 alto média baixo sim sim 5 alto jovem alto sim sim 6 alto jovem alto não não 7 baixo jovem alto não sim 8 médio média baixo sim não 9 médio jovem alto sim sim
10 alto média alto sim sim 11 médio média alto não sim 12 baixo jovem baixo não sim 13 baixo sênior alto sim sim 14 alto média baixo não não
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
caso montante idade salário conta empréstimo 1 médio sênior baixo sim não 2 médio sênior baixo não não 3 baixo sênior baixo sim sim 4 alto média baixo sim sim 5 alto jovem alto sim sim 6 alto jovem alto não não 7 baixo jovem alto não sim 8 médio média baixo sim não 9 médio jovem alto sim sim
10 alto média alto sim sim 11 médio média alto não sim 12 baixo jovem baixo não sim 13 baixo sênior alto sim sim 14 alto média baixo não não
Entropia(montante=médio) = - ((2/5 * log22/5) + (3/5 * log23/5)) = 0,971
ID3 – Passo 2: Calcular a entropia dos valores dos atributos
caso montante idade salário conta empréstimo 1 médio sênior baixo sim não 2 médio sênior baixo não não 3 baixo sênior baixo sim sim 4 alto média baixo sim sim 5 alto jovem alto sim sim 6 alto jovem alto não não 7 baixo jovem alto não sim 8 médio média baixo sim não 9 médio jovem alto sim sim
10 alto média alto sim sim 11 médio média alto não sim 12 baixo jovem baixo não sim 13 baixo sênior alto sim sim 14 alto média baixo não não
Entropia(montante=médio) = - ((2/5 * log22/5) + (3/5 * log23/5)) = 0,971Entropia(montante=baixo) = - ((4/4 * log24/4) + (0/4 * log20/4)) = 0
ID3 – Passo 2: Calcular a entropia dos valores dos atributos
caso montante idade salário conta empréstimo 1 médio sênior baixo sim não 2 médio sênior baixo não não 3 baixo sênior baixo sim sim 4 alto média baixo sim sim 5 alto jovem alto sim sim 6 alto jovem alto não não 7 baixo jovem alto não sim 8 médio média baixo sim não 9 médio jovem alto sim sim
10 alto média alto sim sim 11 médio média alto não sim 12 baixo jovem baixo não sim 13 baixo sênior alto sim sim 14 alto média baixo não não
Entropia(montante=médio) = - ((2/5 * log22/5) + (3/5 * log23/5)) = 0,971Entropia(montante=baixo) = - ((4/4 * log24/4) + (0/4 * log20/4)) = 0Entropia(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
...
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
Entropia (S) = - ((9/14 * log29/14) + (5/14 * log25/14)) = 0.940
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
...
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
Entropia (S) = - ((9/14 * log29/14) + (5/14 * log25/14)) = 0.940
Escolha do próximo atributo
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}
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
Resultado: modelo de classificação
montante
médio baixo alto
contasalário
baixo alto não sim
E=simE=não E=não E=sim
E=sim
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
caso montante idade salário conta empréstimo 1 médio sênior baixo sim não 2 médio sênior baixo não não 3 baixo sênior baixo sim sim 4 alto média baixo sim sim 5 alto jovem alto sim sim 6 alto jovem alto não não 7 baixo jovem alto não sim 8 médio média baixo sim não 9 médio jovem alto sim sim
10 alto média alto sim sim 11 médio média alto não sim 12 baixo jovem baixo não sim 13 baixo sênior alto sim sim 14 alto média baixo não não
montante
médio baixo alto
contasalário
baixo alto não sim
E=simE=não E=não E=sim
E=sim
Avaliação através da taxa de acertos/erros:
taxa_de_erros = Nerros / Ntotal taxa_de_acertos = Nacertos / Ntotal
Utilizando o conjunto de treinamento:
proporção_de_acertos = 14 / 14 = 100%proporção_de_erros = 0 / 14 = 0%
Conjunto de teste
caso montante idade salário conta empréstimo empréstimo(predito)
15 médio sênior alto sim sim sim 16 médio sênior alto não não sim 17 baixo jovem alto sim sim sim 18 baixo sênior alto não não sim 19 alto média alto não não não 20 alto jovem alto sim sim sim 21 médio jovem alto sim sim sim
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%
caso montante idade salário conta empréstimo empréstimo(predito)
15 médio sênior alto sim sim sim 16 médio sênior alto não não sim 17 baixo jovem alto sim sim sim 18 baixo sênior alto não não sim 19 alto média alto não não não 20 alto jovem alto sim sim sim 21 médio jovem alto sim sim sim
• 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):
Métricas para avaliação de desempenho
Classe prevista
Sim Não
Classe
real
Sim Verdadeiro
Positivo (VP)
Falso
Negativo (FN)
Não Falso
Positivo (FP)
Verdadeiro
Negativo (VN)
Métricas para avaliação de desempenho...
Classe prevista
Sim Não
Classe
real
SimVerdadeiro
Positivo (VP)
Falso
Negativo (FN)
NãoFalso
Positivo (FP)
Verdadeiro
Negativo (VN)
• Métricas mais usadas: – Acurácia (mais usada), Erro
%100n
VNVP
FNFPVNVPn
%100n
FNFPAcurácia: Erro:
Métricas para avaliação de desempenho...
Classe prevista
Sim Não
Classe
real
SimVerdadeiro
Positivo (VP)
Falso
Negativo (FN)
NãoFalso
Positivo (FP)
Verdadeiro
Negativo (VN)
%100n
VNVP
FNFPVNVPn
%100n
FNFPAcurácia: Erro:
Métricas para avaliação de desempenho...
Classe prevista
Sim Não
Classe
real
SimVerdadeiro
Positivo (VP)
Falso
Negativo (FN)
NãoFalso
Positivo (FP)
Verdadeiro
Negativo (VN)
%100n
VNVP
FNFPVNVPn
%100n
FNFPAcurácia: Erro:
Exercício em sala
Casa Própria
Est.Civil
4
1
2 3
nãosim
separado
solteiro
casado
Casa Própria Est.Civil Renda
MauPagador
sim solteiro 125 Não
não casado 100 Não
não solteiro 70 Não
sim casado 120 Não
não separado 95 Sim
não casado 60 Não
sim separado 220 Não
não solteiro 85 Sim
não casado 75 Não
não solteiro 90 sim
1. 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.
2. Faça a matriz de confusão correspondente.
Taxa de VP :(sensibilidade, abrangência,
recall)
Outras métricas para avaliação de desempenho
%100FNVP
VP
Taxa de VN
(especificidade):%100
FPVN
VN
Precisão: %100 FPVP
VP
Classe prevista
Sim Não
Classe
real
Sim VP FN
Não FP VN
F-measure: recallprecisão
recallprecisão
..2 (Média harmônica entre precisão e recall)
• 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
Limitação da acurácia
• C(i|j): custo de classificar exemplos da classe j, como sendo da classe i
Matriz de custo
C(i|j)
Classe prevista
Sim Não
Classe
real
Sim C(Sim|Sim) C(Não|Sim)
Não C(Sim|Não) C(Não|Não)
Acurácia = 80%
Custo = 3910
Cálculo de custos de classificação
Matriz de Custo
C(i|j)
Classe prevista
Sim Não
Classe
real
Sim -1 100
Não 1 0
Modelo
M1
Classe prevista
Sim Não
Classe
real
Sim 150 40
Não 60 250
Modelo
M2
Classe prevista
Sim Não
Classe
real
Sim 250 45
Não 5 200
Acurácia = 90%
Custo = 4255
• 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
Métodos para avaliação de modelos
y < 0.33?
: 0 : 3
: 4 : 0
y < 0.47?
: 4 : 0
: 0 : 4
x < 0.43?
Yes
Yes
No
No Yes No
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
x
yAvaliação de modelos
Avaliação de modelos
Avaliação de modelos
• 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
Treinamento e teste …
• 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
Tirando o máximo dos dados
• 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 !!!!
Estimação por retenção (holdout)
• 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)
Validação cruzada (cross-validation)
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
treino
treino subconj 1
subconj 2
subconj 3
subconj 4
teste
treino
treino
treino
subconj 1
subconj 2
subconj 3
subconj 4
teste
treino
treino
treino
subconj 1
subconj 2
subconj 3
subconj 4teste
treino
treino
treino
Modelo 1 Modelo 2 Modelo 3 Modelo 4
• 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)
Mais sobre validação cruzada
• 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
Validação cruzada deixando um fora
Navalha de Occam
Dados dois modelos com mesma taxa de erros, o modelo mais simples é melhor (preferível)
lágrimas astigma-tismo
pressão prescrição LENTES
normal sim normal hipermetr. NÃO
normal não normal miopia GELAT.
normal sim normal miopia DURA
reduzida sim alta miopia NÃO
reduzida não normal hipermetr. NÃO
normal não alta hipermetr. NÃO
normal não alta miopia GELAT.
normal sim normal miopia DURA
normal sim alta hipermetr. NÃO
normal sim alta miopia DURA
normal sim normal miopia. DURA
lágrimas
3 4
2
1
normal reduzida
astigmat.
sim não
prescrição
miopia hipermetr.
1. 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.
2. Faça a matriz de confusão correspondente.
Exercício em sala