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
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
Learning
algorithm
Induction
Learn
Model
Model
10
Training Set
Tid
Attrib1
Attrib2
11
No
Small
55K
?
12
Yes
Medium
80K
?
13
Yes
Large
110K
?
14
No
Small
95K
?
15
No
Large
67K
?
10
Test Set
Attrib3
Apply
Model
Class
Deduction
Exemplo de dados para concessão de empréstimo
bancário
caso
1
2
3
4
5
6
7
8
9
10
11
12
13
14
montante
médio
médio
baixo
alto
alto
alto
baixo
médio
médio
alto
médio
baixo
baixo
alto
idade
sênior
sênior
sênior
média
jovem
jovem
jovem
média
jovem
média
média
jovem
sênior
média
salário
baixo
baixo
baixo
baixo
alto
alto
alto
baixo
alto
alto
alto
baixo
alto
baixo
conta
sim
não
sim
sim
sim
não
não
sim
sim
sim
não
não
sim
não
empréstimo
não
não
sim
sim
sim
não
sim
não
sim
sim
sim
sim
sim
não
Exemplo de dados para concessão de empréstimo
bancário
caso
1
2
3
4
5
6
7
8
9
10
11
12
13
14
montante
médio
médio
baixo
alto
alto
alto
baixo
médio
médio
alto
médio
baixo
baixo
alto
idade
sênior
sênior
sênior
média
jovem
jovem
jovem
média
jovem
média
média
jovem
sênior
média
salário
baixo
baixo
baixo
baixo
alto
alto
alto
baixo
alto
alto
alto
baixo
alto
baixo
conta
sim
não
sim
sim
sim
não
não
sim
sim
sim
não
não
sim
não
empréstimo
não
não
sim
sim
sim
não
sim
não
sim
sim
sim
sim
sim
não
ID3 – Passo 1: Calcular a entropia do conjunto
caso
1
2
3
4
5
6
7
8
9
10
11
12
13
14
montante
médio
médio
baixo
alto
alto
alto
baixo
médio
médio
alto
médio
baixo
baixo
alto
idade
sênior
sênior
sênior
média
jovem
jovem
jovem
média
jovem
média
média
jovem
sênior
média
salário
baixo
baixo
baixo
baixo
alto
alto
alto
baixo
alto
alto
alto
baixo
alto
baixo
conta
sim
não
sim
sim
sim
não
não
sim
sim
sim
não
não
sim
não
empréstimo
não
não
sim
sim
sim
não
sim
não
sim
sim
sim
sim
sim
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
montante
médio
médio
baixo
alto
alto
alto
baixo
médio
médio
alto
médio
baixo
baixo
alto
idade
sênior
sênior
sênior
média
jovem
jovem
jovem
média
jovem
média
média
jovem
sênior
média
salário
baixo
baixo
baixo
baixo
alto
alto
alto
baixo
alto
alto
alto
baixo
alto
baixo
conta
sim
não
sim
sim
sim
não
não
sim
sim
sim
não
não
sim
não
empréstimo
não
não
sim
sim
sim
não
sim
não
sim
sim
sim
sim
sim
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
montante
médio
médio
baixo
alto
alto
alto
baixo
médio
médio
alto
médio
baixo
baixo
alto
idade
sênior
sênior
sênior
média
jovem
jovem
jovem
média
jovem
média
média
jovem
sênior
média
salário
baixo
baixo
baixo
baixo
alto
alto
alto
baixo
alto
alto
alto
baixo
alto
baixo
conta
sim
não
sim
sim
sim
não
não
sim
sim
sim
não
não
sim
não
empréstimo
não
não
sim
sim
sim
não
sim
não
sim
sim
sim
sim
sim
não
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
caso
1
2
3
4
5
6
7
8
9
10
11
12
13
14
montante
médio
médio
baixo
alto
alto
alto
baixo
médio
médio
alto
médio
baixo
baixo
alto
idade
sênior
sênior
sênior
média
jovem
jovem
jovem
média
jovem
média
média
jovem
sênior
média
salário
baixo
baixo
baixo
baixo
alto
alto
alto
baixo
alto
alto
alto
baixo
alto
baixo
conta
sim
não
sim
sim
sim
não
não
sim
sim
sim
não
não
sim
não
empréstimo
não
não
sim
sim
sim
não
sim
não
sim
sim
sim
sim
sim
não
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
casos
{C1,C2,...C14}
[9+, 5-]
proporção dos casos
montante
médio
{C1,C2,C8,C9,C11}
[2+, 3-]
?
baixo
{C3,C7,C12,C13}
[4+, 0-]
E=sim
alto
{C4,C5,C6,C10,C14}
[3+, 2-]
?
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
E=sim
salário
baixo
E=não
alto
alto
E=sim
conta
não
E=não
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
montante
médio
médio
baixo
alto
alto
alto
baixo
médio
médio
alto
médio
baixo
baixo
alto
idade
sênior
sênior
sênior
média
jovem
jovem
jovem
média
jovem
média
média
jovem
sênior
média
salário
baixo
baixo
baixo
baixo
alto
alto
alto
baixo
alto
alto
alto
baixo
alto
baixo
conta
sim
não
sim
sim
sim
não
não
sim
sim
sim
não
não
sim
não
empréstimo
não
não
sim
sim
sim
não
sim
não
sim
sim
sim
sim
sim
não
Avaliação através da taxa de acertos/erros:
taxa_de_erros = Nerros / Ntotal
taxa_de_acertos = Nacertos / Ntotal
montante
médio baixo
Utilizando o conjunto de treinamento:
proporção_de_acertos = 14 / 14 = 100%
proporção_de_erros = 0 / 14 = 0%
E=sim
salário
baixo
E=não
alto
alto
E=sim
conta
não
E=não
sim
E=sim
Conjunto de teste
caso montante idade
salário
conta
empréstimo
15
16
17
18
19
20
21
alto
alto
alto
alto
alto
alto
alto
sim
não
sim
não
não
sim
sim
sim
não
sim
não
não
sim
sim
médio
médio
baixo
baixo
alto
alto
médio
sênior
sênior
jovem
sênior
média
jovem
jovem
empréstimo
(predito)
sim
sim
sim
sim
não
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
15
16
17
18
19
20
21
alto
alto
alto
alto
alto
alto
alto
sim
não
sim
não
não
sim
sim
sim
não
sim
não
não
sim
sim
médio
médio
baixo
baixo
alto
alto
médio
sênior
sênior
jovem
sênior
média
jovem
jovem
empréstimo
(predito)
sim
sim
sim
sim
não
sim
sim
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
Classe
real
Sim
Não
Sim
Verdadeiro
Positivo (VP)
Falso
Negativo (FN)
Não
Falso
Positivo (FP)
Verdadeiro
Negativo (VN)
Métricas para avaliação de desempenho...
Classe prevista
Classe
real
Sim
Não
Sim
Verdadeiro
Positivo (VP)
Falso
Negativo (FN)
Não
Falso
Positivo (FP)
Verdadeiro
Negativo (VN)
• Métricas mais usadas:
– Acurácia (mais usada), Erro
Acurácia:
VP  VN
100 %
n
Erro:
FP  FN
100 %
n
n  VP  VN  FP  FN
Métricas para avaliação de desempenho...
Classe prevista
Classe
real
Acurácia:
Sim
Não
Sim
Verdadeiro
Positivo (VP)
Falso
Negativo (FN)
Não
Falso
Positivo (FP)
Verdadeiro
Negativo (VN)
VP  VN
100 %
n
Erro:
FP  FN
100 %
n
n  VP  VN  FP  FN
Métricas para avaliação de desempenho...
Classe prevista
Classe
real
Acurácia:
Sim
Não
Sim
Verdadeiro
Positivo (VP)
Falso
Negativo (FN)
Não
Falso
Positivo (FP)
Verdadeiro
Negativo (VN)
VP  VN
100 %
n
Erro:
FP  FN
100 %
n
n  VP  VN  FP  FN
Exercício em sala
Casa
Própria
Est.Civil
Renda
Mau
Pagador
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
Casa
Própria
sim
não
1
Est.Civil
separado
casado
solteiro
2
3
4
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.
Outras métricas para avaliação de desempenho
Taxa de VP :
VP
(sensibilidade,
100 %
abrangência, VP  FN
recall)
VN
Taxa de VN
100 %
VN

FP
(especificidade):
Classe prevista
Classe
real
Sim
Não
Sim
VP
FN
Não
FP
VN
Precisão:
VP
100 %
VP  FP
F-measure:
2. precisão.recall (Média harmônica entre precisão e recall)
precisão recall
Limitação da acurácia
• 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
Classe prevista
C(i|j)
Classe
real
Sim
Não
Sim
C(Sim|Sim)
C(Não|Sim)
Não
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
real
Modelo
M1
Classe
real
Sim
Não
Sim
-1
100
Não
1
0
Classe prevista
Sim
Não
Sim
150
40
Não
60
250
Acurácia = 80%
Custo = 3910
Classe prevista
Modelo
M2
Classe
real
Classe prevista
Sim
Não
Sim
250
45
Não
5
200
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
1
0.9
x < 0.43?
0.8
0.7
Yes
No
y
0.6
y < 0.33?
y < 0.47?
0.5
0.4
Yes
0.3
0.2
:4
:0
0.1
0
0
0.1
0.2
0.3
0.4
0.5
x
0.6
0.7
0.8
0.9
1
No
:0
:4
Yes
:0
:3
No
:4
:0
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
Conjunto
de
Exemplos
subconj 2
subconj 3
subconj 4
Modelo 1
Modelo 4
Modelo 3
Modelo 2
treino
subconj 1
treino
subconj 1
treino
subconj 1
teste
subconj 1
treino
subconj 2
treino
subconj 2
teste
subconj 2
treino
subconj 2
treino
subconj 3
teste
subconj 3
treino
subconj 3
treino
subconj 3
teste
subconj 4
treino
subconj 4
treino
subconj 4
treino
subconj 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 astigma- pressão prescrição LENTES
tismo
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
reduzida
normal
1
astigmat.
sim
não
2
prescrição
miopia
4
hipermetr.
3
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.
Download

Classificação: avaliação