You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
10<br />
10<br />
<strong>Classificação</strong>: Definição<br />
Mineração <strong>de</strong> dados<br />
<strong>Classificação</strong>: conceitos básicos e árvores<br />
<strong>de</strong> <strong>de</strong>cisão<br />
Apresentação adaptada do material <strong>de</strong> apoio do livro:<br />
Introduction to Data Mining<br />
Tan, Steinbach, Kumar<br />
Dada uma coleção <strong>de</strong> registros (conjunto <strong>de</strong><br />
treinamento,training set )<br />
– cada registro contém um conjunto <strong>de</strong> atributos, e<br />
um dos atributos é a classe.<br />
Encontre um mo<strong>de</strong>lo para o atributo classe<br />
como uma função dos valores <strong>de</strong> outros<br />
atributos.<br />
Objetivo: a classe <strong>de</strong>ve ser atribuída tão<br />
acuradamente quanto possível para novos<br />
registros.<br />
– Um conjunto <strong>de</strong> teste (test set) é usado para<br />
<strong>de</strong>terminar a acurácia do mo<strong>de</strong>lo. Geralmente o<br />
conjunto <strong>de</strong> dados é dividido em conjunto <strong>de</strong><br />
treinamento e conjunto <strong>de</strong> teste.<br />
Ilustrando a Tarefa <strong>de</strong> <strong>Classificação</strong><br />
Exemplos <strong>de</strong> Tarefas <strong>de</strong> <strong>Classificação</strong><br />
Tid Attrib1 Attrib2 Attrib3 Class<br />
1 Yes Large 125K No<br />
2 No Medium 100K No<br />
3 No Small 70K No<br />
4 Yes Medium 120K No<br />
5 No Large 95K Yes<br />
6 No Medium 60K No<br />
7 Yes Large 220K No<br />
8 No Small 85K Yes<br />
9 No Medium 75K No<br />
10 No Small 90K Yes<br />
Tid Attrib1 Attrib2 Attrib3 Class<br />
11 No Small 55K ?<br />
12 Yes Medium 80K ?<br />
13 Yes Large 110K ?<br />
14 No Small 95K ?<br />
15 No Large 67K ?<br />
Learn<br />
Mo<strong>de</strong>l<br />
Apply<br />
Mo<strong>de</strong>l<br />
Predizer se um tumor é benigno ou maligno<br />
Classificar transações <strong>de</strong> cartões<br />
<strong>de</strong> crédito como legítimas ou<br />
fraudulentas<br />
Classificar estruturas secundárias <strong>de</strong><br />
proteínas como alpha-helix,<br />
beta-sheet, or random coil<br />
Categorizar textos como da área <strong>de</strong> finanças,<br />
previsão <strong>de</strong> tempo, esportes, cultura, etc.
10<br />
10<br />
10<br />
10<br />
<strong>Técnicas</strong> <strong>de</strong> <strong>Classificação</strong><br />
Exemplo <strong>de</strong> uma árvore <strong>de</strong> <strong>de</strong>cisão<br />
Métodos baseados em árvores <strong>de</strong> <strong>de</strong>cisão<br />
Métodos baseados em regras<br />
Raciocínio baseado em memória<br />
Re<strong>de</strong>s neurais<br />
Naïve Bayes e Re<strong>de</strong>s Bayesianas<br />
Máquinas <strong>de</strong> Vetores <strong>de</strong> Suporte (Support Vector<br />
Machines)<br />
Tid Refund Marital<br />
Status<br />
Taxable<br />
Income<br />
1 Yes Single 125K No<br />
2 No Married 100K No<br />
3 No Single 70K No<br />
4 Yes Married 120K No<br />
Cheat<br />
5 No Divorced 95K Yes<br />
6 No Married 60K No<br />
7 Yes Divorced 220K No<br />
8 No Single 85K Yes<br />
9 No Married 75K No<br />
10 No Single 90K Yes<br />
Atributo teste<br />
Refund<br />
Yes<br />
No<br />
NO<br />
MarSt<br />
Single, Divorced Married<br />
TaxInc<br />
NO<br />
< 80K > 80K<br />
NO<br />
YES<br />
Dados <strong>de</strong><br />
treinamento<br />
Mo<strong>de</strong>lo: árvore <strong>de</strong> <strong>de</strong>cisão<br />
Outro exemplo <strong>de</strong> árvore <strong>de</strong> <strong>de</strong>cisão<br />
<strong>Classificação</strong> usando árvores <strong>de</strong> <strong>de</strong>cisão<br />
Tid Attrib1 Attrib2 Attrib3 Class<br />
Tid Refund Marital<br />
Status<br />
Taxable<br />
Income<br />
1 Yes Single 125K No<br />
2 No Married 100K No<br />
Cheat<br />
3 No Single 70K No<br />
4 Yes Married 120K No<br />
Married<br />
NO<br />
MarSt<br />
Yes<br />
NO<br />
Single,<br />
Divorced<br />
Refund<br />
No<br />
TaxInc<br />
< 80K > 80K<br />
1 Yes Large 125K No<br />
2 No Medium 100K No<br />
3 No Small 70K No<br />
4 Yes Medium 120K No<br />
5 No Large 95K Yes<br />
6 No Medium 60K No<br />
7 Yes Large 220K No<br />
8 No Small 85K Yes<br />
9 No Medium 75K No<br />
10 No Small 90K Yes<br />
Learn<br />
Mo<strong>de</strong>l<br />
5 No Divorced 95K Yes<br />
6 No Married 60K No<br />
7 Yes Divorced 220K No<br />
8 No Single 85K Yes<br />
9 No Married 75K No<br />
10 No Single 90K Yes<br />
NO<br />
YES<br />
Po<strong>de</strong> haver mais <strong>de</strong> um árvore para o<br />
mesmo conjunto <strong>de</strong> dados<br />
Tid Attrib1 Attrib2 Attrib3 Class<br />
11 No Small 55K ?<br />
12 Yes Medium 80K ?<br />
13 Yes Large 110K ?<br />
14 No Small 95K ?<br />
15 No Large 67K ?<br />
Apply<br />
Mo<strong>de</strong>l<br />
Decision<br />
Tree
10<br />
10<br />
10<br />
10<br />
Aplicando o mo<strong>de</strong>lo nos dados <strong>de</strong> teste<br />
Aplicando o mo<strong>de</strong>lo nos dados <strong>de</strong> teste<br />
Comece pela raíz da árvore.<br />
Dado para teste<br />
Refund Marital<br />
Status<br />
Taxable<br />
Income<br />
Cheat<br />
Dado para teste<br />
Refund Marital<br />
Status<br />
Taxable<br />
Income<br />
Cheat<br />
Yes<br />
Refund<br />
No<br />
No Married 80K ?<br />
Yes<br />
Refund<br />
No<br />
No Married 80K ?<br />
NO<br />
MarSt<br />
NO<br />
MarSt<br />
Single, Divorced<br />
Married<br />
Single, Divorced<br />
Married<br />
TaxInc<br />
NO<br />
TaxInc<br />
NO<br />
< 80K > 80K<br />
< 80K > 80K<br />
NO<br />
YES<br />
NO<br />
YES<br />
Aplicando o mo<strong>de</strong>lo nos dados <strong>de</strong> teste<br />
Aplicando o mo<strong>de</strong>lo nos dados <strong>de</strong> teste<br />
Dado para teste<br />
Dado para teste<br />
Refund Marital<br />
Status<br />
Taxable<br />
Income<br />
Cheat<br />
Refund Marital<br />
Status<br />
Taxable<br />
Income<br />
Cheat<br />
Yes<br />
Refund<br />
No<br />
No Married 80K ?<br />
Yes<br />
Refund<br />
No<br />
No Married 80K ?<br />
NO<br />
MarSt<br />
NO<br />
MarSt<br />
Single, Divorced<br />
Married<br />
Single, Divorced<br />
Married<br />
TaxInc<br />
NO<br />
TaxInc<br />
NO<br />
< 80K > 80K<br />
< 80K > 80K<br />
NO<br />
YES<br />
NO<br />
YES
10<br />
10<br />
10<br />
10<br />
Aplicando o mo<strong>de</strong>lo nos dados <strong>de</strong> teste<br />
Aplicando o mo<strong>de</strong>lo nos dados <strong>de</strong> teste<br />
Dado para teste<br />
Dado para teste<br />
Refund Marital<br />
Status<br />
Taxable<br />
Income<br />
Cheat<br />
Refund Marital<br />
Status<br />
Taxable<br />
Income<br />
Cheat<br />
Refund<br />
No Married 80K ?<br />
Refund<br />
No Married 80K ?<br />
Yes<br />
No<br />
Yes<br />
No<br />
NO<br />
Single, Divorced<br />
MarSt<br />
Married<br />
NO<br />
Single, Divorced<br />
MarSt<br />
Married<br />
Assign Cheat to “No”<br />
TaxInc<br />
NO<br />
TaxInc<br />
NO<br />
< 80K > 80K<br />
< 80K > 80K<br />
NO<br />
YES<br />
NO<br />
YES<br />
<strong>Classificação</strong> com árvore <strong>de</strong> <strong>de</strong>cisão<br />
Indução <strong>de</strong> árvores <strong>de</strong> <strong>de</strong>cisão<br />
Tid Attrib1 Attrib2 Attrib3 Class<br />
1 Yes Large 125K No<br />
2 No Medium 100K No<br />
3 No Small 70K No<br />
4 Yes Medium 120K No<br />
5 No Large 95K Yes<br />
6 No Medium 60K No<br />
7 Yes Large 220K No<br />
8 No Small 85K Yes<br />
9 No Medium 75K No<br />
10 No Small 90K Yes<br />
Learn<br />
Mo<strong>de</strong>l<br />
Vários algoritmos:<br />
– Hunt’s Algorithm (um dos primeiros)<br />
– CART<br />
– ID3, C4.5<br />
– SLIQ,SPRINT<br />
Tid Attrib1 Attrib2 Attrib3 Class<br />
11 No Small 55K ?<br />
12 Yes Medium 80K ?<br />
13 Yes Large 110K ?<br />
14 No Small 95K ?<br />
15 No Large 67K ?<br />
Apply<br />
Mo<strong>de</strong>l<br />
Decision<br />
Tree
10<br />
10<br />
Estrutura geral do algorítmo <strong>de</strong> Hunt<br />
<br />
<br />
Seja D t o conjunto <strong>de</strong> registros <strong>de</strong><br />
teste que alcança o nodo t<br />
Procedimento geral:<br />
– Se D t só contém registros que<br />
pertencem a mesma classe y t ,<br />
então t é um nodo folha<br />
rotulado como y t<br />
– Se D t é um conjunto vazio,<br />
então t é um nodo folha<br />
rotulado com a classe <strong>de</strong>fault,<br />
y d<br />
– Se D t contém registros que<br />
pertencem a mais <strong>de</strong> uma<br />
classe, use um atributo teste<br />
para dividir os dados em<br />
subconjuntos menores.<br />
Recursivamente aplique o<br />
procedimento para cada<br />
subconjunto.<br />
Tid Refund Marital<br />
Status<br />
Taxable<br />
Income<br />
1 Yes Single 125K No<br />
2 No Married 100K No<br />
3 No Single 70K No<br />
4 Yes Married 120K No<br />
Cheat<br />
5 No Divorced 95K Yes<br />
6 No Married 60K No<br />
7 Yes Divorced 220K No<br />
8 No Single 85K Yes<br />
9 No Married 75K No<br />
10 No Single 90K Yes<br />
?<br />
D t<br />
Hunt’s Algorithm<br />
Don’t<br />
Cheat<br />
Yes<br />
Don’t<br />
Cheat<br />
Refund<br />
Single,<br />
Divorced<br />
Cheat<br />
Yes<br />
Don’t<br />
Cheat<br />
No<br />
Marital<br />
Status<br />
Refund<br />
Married<br />
Don’t<br />
Cheat<br />
No<br />
Don’t<br />
Cheat<br />
Yes<br />
Don’t<br />
Cheat<br />
Don’t<br />
Cheat<br />
Refund<br />
Single,<br />
Divorced<br />
Taxable<br />
Income<br />
No<br />
Marital<br />
Status<br />
< 80K >= 80K<br />
Cheat<br />
Married<br />
Don’t<br />
Cheat<br />
Tid Refund Marital<br />
Status<br />
Taxable<br />
Income<br />
1 Yes Single 125K No<br />
2 No Married 100K No<br />
3 No Single 70K No<br />
4 Yes Married 120K No<br />
Cheat<br />
5 No Divorced 95K Yes<br />
6 No Married 60K No<br />
7 Yes Divorced 220K No<br />
8 No Single 85K Yes<br />
9 No Married 75K No<br />
10 No Single 90K Yes<br />
Indução da árvore<br />
Estratégia gulosa.<br />
– Divida os registros baseado no atributo teste<br />
que otimiza um certo critério.<br />
Questões<br />
– Determine como dividir os registros<br />
Como especificar qual o atributo teste?<br />
Como <strong>de</strong>terminar a melhor divisão?<br />
– Determine quando parar <strong>de</strong> dividir<br />
Como especificar qual o atributo teste?<br />
Depen<strong>de</strong> do tipo dos atributos<br />
– Nominal (categórico,...)<br />
– Ordinal<br />
– Contínuo<br />
Depen<strong>de</strong> do tipo <strong>de</strong> divisão<br />
– divisão binária<br />
– divisão em múltiplos caminhos
Divisão baseada em atributos nominais<br />
Divisão baseada em atributos ordinais<br />
Divisão múltipla: Use tantas partições quantos forem<br />
os valores distintos do atributo.<br />
<br />
Divisão múltipla : Use tantas partições quantos forem os valores<br />
distintos do atributo<br />
Family<br />
CarType<br />
Sports<br />
Luxury<br />
Divisão binária: Divi<strong>de</strong> em dois subconjuntos.<br />
Necessida<strong>de</strong> <strong>de</strong> encontrar o particionamento ótimo.<br />
{Sports,<br />
Luxury}<br />
CarType<br />
{Family}<br />
OU<br />
{Family,<br />
Luxury}<br />
CarType<br />
{Sports}<br />
<br />
<br />
Small<br />
Size<br />
Medium<br />
Large<br />
Divisão binária: Divi<strong>de</strong> em dois subconjuntos.<br />
{Small,<br />
Medium}<br />
E esta divisão?<br />
Necessida<strong>de</strong> <strong>de</strong> encontrar o particionamento ótimo.<br />
Size<br />
{Large}<br />
OU<br />
{Small,<br />
Large}<br />
{Medium,<br />
Large}<br />
Size<br />
Size<br />
{Medium}<br />
{Small}<br />
Divisão baseada em atributos contínuos<br />
Divisão baseada em atributos contínuos<br />
Diferentes formas <strong>de</strong> tratar<br />
– Discretização para formar um atributo ordinal<br />
categórico<br />
Estático – discretizar uma vez no início<br />
Dinâmico – intervalos po<strong>de</strong>m ser <strong>de</strong>terminados por<br />
mesmo tamanho, mesma freqüência, clustering.<br />
– Decisão binária: (A < v) or (A ≥ v)<br />
consi<strong>de</strong>ra todas as divisões possíveis e usa a<br />
melhor
Indução <strong>de</strong> árvores<br />
Como <strong>de</strong>terminar a melhor divisão<br />
Estratégia gulosa.<br />
– Divida os registros baseado no atributo teste<br />
que otimiza um certo critério.<br />
Antes da divisão: 10 registros da classe 0,<br />
10 registros da classe 1<br />
Questões<br />
– Determine como dividir os registros<br />
Como especificar qual o atributo teste?<br />
Como <strong>de</strong>terminar a melhor divisão?<br />
– Determine quando parar <strong>de</strong> dividir<br />
Qual divisão é a melhor?<br />
Como <strong>de</strong>terminar a melhor divisão<br />
Medidas <strong>de</strong> impureza <strong>de</strong> um nó<br />
Estratégia gulosa :<br />
– Nós com distribuição <strong>de</strong> classe homogenea<br />
são preferidos<br />
Necessita da medida da “impureza” do nó:<br />
Índice <strong>de</strong> Gini<br />
Entropia<br />
Erro <strong>de</strong> classificação<br />
Não-homogênea,<br />
Alto grau <strong>de</strong> impureza<br />
Homogêneo,<br />
baixo grau <strong>de</strong> impureza
Como encontrar a melhor divisão?<br />
Sim<br />
Nodo N1<br />
C0<br />
C1<br />
N10<br />
N11<br />
Antes da divisão: C0 N00<br />
C1 N01<br />
A?<br />
Não<br />
Nodo N2<br />
C0<br />
C1<br />
N20<br />
N21<br />
Sim<br />
Nodo N3<br />
C0<br />
C1<br />
M0<br />
N30<br />
N31<br />
B?<br />
Não<br />
Nodo N4<br />
M1 M2 M3 M4<br />
C0<br />
C1<br />
N40<br />
N41<br />
Medida da impureza: GINI<br />
Índice Gini para um nó t :<br />
GII ( t)<br />
= 1<br />
−∑<br />
(Nota: p( j | t) é a freqüência relativa da classe j no nó t).<br />
j<br />
[ p(<br />
j | t)]<br />
– Máximo (1 - 1/n c ) quando os registros estão<br />
igualmente distribuídos entre todas as classes (pior)<br />
– Mínimo (0.0) quando todos os registros pertencem a<br />
uma classe (melhor)<br />
2<br />
M12<br />
Ganho = M0 – M12 vs M0 – M34<br />
M34<br />
C1 0<br />
C2 6<br />
Gini=0.000<br />
C1 1<br />
C2 5<br />
Gini=0.278<br />
C1 2<br />
C2 4<br />
Gini=0.444<br />
C1 3<br />
C2 3<br />
Gini=0.500<br />
Exemplos do cálculo do índice GINI<br />
Divisão baseda no índice GINI<br />
C1 0<br />
C2 6<br />
GII(<br />
t)<br />
= 1<br />
−∑<br />
j<br />
[ p(<br />
j | t)]<br />
P(C1) = 0/6 = 0 P(C2) = 6/6 = 1<br />
Gini = 1 – P(C1) 2 – P(C2) 2 = 1 – 0 – 1 = 0<br />
2<br />
<br />
<br />
Usado nos métodos CART, SLIQ, SPRINT.<br />
Quando um nó p é dividido em k partições (filhos), a<br />
qualida<strong>de</strong> da divisão é calculada como,<br />
GII<br />
split<br />
=<br />
k<br />
∑<br />
i<br />
=<br />
1<br />
ni<br />
GII ( i)<br />
n<br />
C1 1<br />
C2 5<br />
C1 2<br />
C2 4<br />
P(C1) = 1/6 P(C2) = 5/6<br />
Gini = 1 – (1/6) 2 – (5/6) 2 = 0.278<br />
P(C1) = 2/6 P(C2) = 4/6<br />
Gini = 1 – (2/6) 2 – (4/6) 2 = 0.444<br />
on<strong>de</strong>, n i = número <strong>de</strong> registros no filho i,<br />
n = número <strong>de</strong> registros no nó p.
10<br />
Índice Gini para atributos categóricos<br />
Atributos contínuos: cálculo do índice Gini<br />
Multi-way split<br />
CarType<br />
Family Sports Luxury<br />
C1 1 2 1<br />
C2 4 1 1<br />
Gini 0.393<br />
Binary split<br />
(find best partition of values)<br />
CarType<br />
{Sports,<br />
Luxury} {Family}<br />
C1 3 1<br />
C2 2 4<br />
Gini 0.400<br />
CarType<br />
{Sports} {Family,<br />
Luxury}<br />
C1 2 2<br />
C2 1 5<br />
Gini 0.419<br />
<br />
<br />
<br />
<br />
Usar <strong>de</strong>cisão binária baseada em um<br />
valor<br />
Várias possibilida<strong>de</strong>s para a escolha do<br />
valor <strong>de</strong> corte<br />
– Número <strong>de</strong> possíveis cortes =<br />
número <strong>de</strong> valores distintos<br />
Cada valor <strong>de</strong> corte tem uma matriz<br />
associada<br />
– Contadores <strong>de</strong> classe para cada<br />
partição possível, A < v and A ≥ v<br />
Método simples para escolher o melhor<br />
valor <strong>de</strong> corte<br />
– Para cada v, varra os dados para<br />
realizar a contagem e calcular o<br />
índice Gini<br />
– Computacionalmente ineficiente!<br />
Reptição do trabalho.<br />
Tid Refund Marital<br />
Status<br />
Taxable<br />
Income<br />
1 Yes Single 125K No<br />
2 No Married 100K No<br />
3 No Single 70K No<br />
4 Yes Married 120K No<br />
Cheat<br />
5 No Divorced 95K Yes<br />
6 No Married 60K No<br />
7 Yes Divorced 220K No<br />
8 No Single 85K Yes<br />
9 No Married 75K No<br />
10 No Single 90K Yes<br />
Atributos contínuos: cálculo do índice Gini<br />
Divisão baseada em entropia<br />
<br />
Para uma computação eficiente: para cada atributo contínuo,<br />
– Classifique os valores do atributo em or<strong>de</strong>m crescente<br />
– percorra os dados, atualizando a matriz <strong>de</strong> contadores e<br />
calculando o índice Gini<br />
– Escolha a posição <strong>de</strong> corte que tem o menor índice Gini<br />
Sorted Values<br />
Split Positions<br />
Cheat No No No Yes Yes Yes No No No No<br />
Taxable Income<br />
60 70 75 85 90 95 100 120 125 220<br />
55 65 72 80 87 92 97 110 122 172 230<br />
<br />
Yes 0 3 0 3 0 3 0 3 1 2 2 1 3 0 3 0 3 0 3 0 3 0<br />
No 0 7 1 6 2 5 3 4 3 4 3 4 3 4 4 3 5 2 6 1 7 0<br />
Gini 0.420 0.400 0.375 0.343 0.417 0.400 0.300 0.343 0.375 0.400 0.420<br />
= t<br />
Entropia em um nó t:<br />
Entropy ( t)<br />
−∑ p(<br />
j | t)log<br />
p(<br />
j | )<br />
j<br />
(Nota: p( j | t) é a freqüência relativa da classe j no nó t).<br />
– Me<strong>de</strong> a homogeneida<strong>de</strong> <strong>de</strong> um nó.<br />
Máximo (log n c ) quando os registros estão igualmente<br />
distribuídos entre todas as classes<br />
Mínimo (0.0) quando todos os registros pertencem a uma<br />
classe<br />
– O cálculo baseado em entropia é similar ao<br />
baseado no índice Gini
Exemplos <strong>de</strong> cálculo da entropia<br />
Divisão baseada em entropia ...<br />
C1 0<br />
C2 6<br />
C1 1<br />
C2 5<br />
C1 2<br />
C2 4<br />
Entropy t)<br />
= −∑ p(<br />
j | t)log<br />
p(<br />
j | t)<br />
j<br />
(<br />
2<br />
P(C1) = 0/6 = 0 P(C2) = 6/6 = 1<br />
Entropia = – 0 log 0 – 1 log 1 = – 0 – 0 = 0<br />
P(C1) = 1/6 P(C2) = 5/6<br />
Entropia = – (1/6) log 2 (1/6) – (5/6) log 2 (1/6) = 0.65<br />
P(C1) = 2/6 P(C2) = 4/6<br />
Entropia = – (2/6) log 2 (2/6) – (4/6) log 2 (4/6) = 0.92<br />
<br />
Ganho <strong>de</strong> Informação (Information Gain):<br />
⎛<br />
k ni<br />
⎞<br />
GAI = Entropy(<br />
p)<br />
− ⎜ ∑ Entropy(<br />
i)<br />
split<br />
⎟<br />
⎝<br />
i=<br />
1<br />
n ⎠<br />
O nó pai p é dividido em k partições;<br />
n i é o número <strong>de</strong> registros na partição i<br />
– Me<strong>de</strong> a redução da entropia em função da divisão.<br />
Escolhe a divisão que obtém maior redução (maximiza<br />
o ganho)<br />
– Usado nos métodos ID3 e C4.5<br />
– Desvantagem: Ten<strong>de</strong> a preferir divisões que resultam<br />
em gran<strong>de</strong> número <strong>de</strong> partições, cada uma <strong>de</strong>las<br />
sendo pequena mas pura.<br />
Splitting Based on INFO...<br />
Exemplo:<br />
<br />
Razão <strong>de</strong> ganho (Gain Ratio):<br />
GainRATIO<br />
GAI<br />
Split<br />
k<br />
=<br />
split<br />
∑<br />
i=<br />
SplitIFO<br />
O nó pai p é dividido em k partições;<br />
n i é o número <strong>de</strong> registros na partição i<br />
ni<br />
SplitIFO = − log<br />
1<br />
n<br />
– Ajusta o Ganho <strong>de</strong> Informação pela entropia do<br />
particionamento (SplitINFO). Particionamento <strong>de</strong> alta<br />
entropia (gran<strong>de</strong> número <strong>de</strong> pequenas partições) é<br />
penalizado.<br />
– Usado no C4.5<br />
– Projetado para evitar as <strong>de</strong>svantagens do Ganho <strong>de</strong><br />
Informação<br />
ni<br />
n<br />
caso montante ida<strong>de</strong> salário conta empréstimo<br />
1 médio sênior baixo sim não<br />
2 médio sênior baixo não não<br />
3 baixo sênior baixo sim sim<br />
4 alto média baixo sim sim<br />
5 alto jovem alto sim sim<br />
6 alto jovem alto não não<br />
7 baixo jovem alto não sim<br />
8 médio média baixo sim não<br />
9 médio jovem alto sim sim<br />
10 alto média alto sim sim<br />
11 médio média alto não sim<br />
12 baixo jovem baixo não sim<br />
13 baixo sênior alto sim sim<br />
14 alto média baixo não não
Entropia e Ganho <strong>de</strong> Informação<br />
Consi<strong>de</strong>rando apenas 2 valores possíveis, a entropia é<br />
dada pela fórmula:<br />
Entropia (S) = - (p + log 2 p + + p - log 2 p - )<br />
Nodo raiz<br />
Selecionando o melhor atributo:<br />
Entropia(S) = - 9/14 log 2 (9/14) - 5/14 log 2 (5/14) = 0,940<br />
On<strong>de</strong>:<br />
S é a totalida<strong>de</strong> <strong>de</strong> amostras do conjunto (todos os registros)<br />
p +<br />
p -<br />
é a proporção <strong>de</strong> amostras positivas<br />
é a proporção <strong>de</strong> amostras negativas<br />
Exemplo:<br />
Se S é uma coleção <strong>de</strong> 14 exemplos com 9 instâncias<br />
positivas e 5 negativas, então:<br />
Entropia (S) = - (9/14) Log 2 (9/14) – (5/14) Log 2 (5/14) = 0.940<br />
caso montante ida<strong>de</strong> salário conta empréstimo<br />
1 médio sênior baixo sim não<br />
2 médio sênior baixo não não<br />
3 baixo sênior baixo sim sim<br />
4 alto média baixo sim sim<br />
5 alto jovem alto sim sim<br />
6 alto jovem alto não não<br />
7 baixo jovem alto não sim<br />
8 médio média baixo sim não<br />
9 médio jovem alto sim sim<br />
10 alto média alto sim sim<br />
11 médio média alto não sim<br />
12 baixo jovem baixo não sim<br />
13 baixo sênior alto sim sim<br />
14 alto média baixo não não<br />
Entropia(montante=médio) = - 2/5 log 2 (2/5) - 3/5 log 2 (3/5) = 0,971<br />
Entropia(montante=baixo) = - 4/4 log 2 (4/4) - 0/4 log 2 (0/4) = 0<br />
Entropia(montante=alto) = - 3/5 log 2 (3/5) - 2/5 log 2 (2/5) = 0,971<br />
Gain (S,montante) = 0,940 - (5/14) 0,971 - (4/14) 0 - (5/14) 0,971 = 0,246<br />
Gain (S,ida<strong>de</strong>) = 0,940 - (4/14) 1 - (5/14) 0,971 - (5/14) 0,722 = 0,049<br />
Gain (S,salário) = 0,940 - (7/14) 0,592 - (7/14) 0,985 = 0,151<br />
Gain (S,conta) = 0,940 - (8/14) 0,811 - (6/14) 1 = 0,047<br />
Escolha do próximo atributo<br />
Escolha o próximo atributo<br />
Qual é o melhor atributo?<br />
{C1,C2,...C14}<br />
[9+, 5-]<br />
montante<br />
médio baixo alto<br />
S médio = {C1,C2,C8,C9,C11}<br />
Gain (S médio, ida<strong>de</strong>) = 0,971 - (2/5)0 - (2/5)1 - (1/5)0 = 0,571<br />
Gain (S médio, salário) = 0,971 - (3/5)0 - (2/5)0 = 0,971<br />
Gain (S médio, conta) = 0,971 - (3/5)0,918 - (2/5)1= 0,020<br />
{C1,C2,C8,C9,C11}<br />
[2+, 3-]<br />
{C3,C7,C12,C13}<br />
[4+, 0-]<br />
? sim<br />
{C4,C5,C6,C10,C14}<br />
[3+, 2-]<br />
?<br />
Qual atributo po<strong>de</strong> ser testado aqui?
Resultado<br />
{C1,C2,...C14}<br />
[9+, 5-]<br />
montante<br />
médio baixo alto<br />
montante<br />
médio baixo alto<br />
{C1,C2,C8,C9,C11}<br />
[2+, 3-]<br />
salário<br />
{C3,C7,C12,C13}<br />
[4+, 0-]<br />
sim<br />
{C4,C5,C6,C10,C14}<br />
[3+, 2-]<br />
?<br />
salário<br />
E=sim<br />
conta<br />
baixo<br />
{C1,C2,C8}<br />
[0+, 3-]<br />
alto<br />
{C9,C11}<br />
[2+, 0-]<br />
baixo alto não sim<br />
E=não E=sim E=não E=sim<br />
Divisão baseada em erro <strong>de</strong> classificação<br />
Erro <strong>de</strong> classificação no nó t :<br />
<br />
Error( t)<br />
= 1−<br />
max P(<br />
i | t)<br />
Me<strong>de</strong> o erro <strong>de</strong> classificação em um nó.<br />
Máximo (1 - 1/n c ) quando os registros são igualmente<br />
distribuídos entre todas as classes (pior)<br />
Mínimo (0.0) quando todos os registros pertencem à mesma<br />
classe (melhor)<br />
i<br />
Exemplos <strong>de</strong> cálculo <strong>de</strong> erro <strong>de</strong> classificação<br />
C1 0<br />
C2 6<br />
C1 1<br />
C2 5<br />
C1 2<br />
C2 4<br />
Error( t)<br />
= 1−<br />
max P(<br />
i | t)<br />
P(C1) = 0/6 = 0 P(C2) = 6/6 = 1<br />
Error = 1 – max (0, 1) = 1 – 1 = 0<br />
P(C1) = 1/6 P(C2) = 5/6<br />
i<br />
Error = 1 – max (1/6, 5/6) = 1 – 5/6 = 1/6<br />
P(C1) = 2/6 P(C2) = 4/6<br />
Error = 1 – max (2/6, 4/6) = 1 – 4/6 = 1/3
Comparação entre os critérios <strong>de</strong> divisão<br />
Indução <strong>de</strong> árvores<br />
Para problemas com duas classes:<br />
Estratégia gulosa.<br />
– Divida os registros baseado no atributo teste<br />
que otimiza um certo critério.<br />
Questões<br />
– Determinar como dividir os registros<br />
Como especificar qual o atributo teste?<br />
Como <strong>de</strong>terminar a melhor divisão?<br />
– Determinar quando parar <strong>de</strong> dividir<br />
Critérios <strong>de</strong> parada para a indução <strong>de</strong> árvores<br />
<strong>Classificação</strong> baseada em árvores <strong>de</strong> <strong>de</strong>cisão<br />
Pare <strong>de</strong> expandir um nó quando todos os<br />
registros pertencem à mesma classe<br />
Pare <strong>de</strong> expandir um nó quando todos os<br />
registros tiverem os mesmos valores <strong>de</strong> atributo<br />
Vantagens:<br />
– Construção barata<br />
– Extremamente rápido para classificar novos<br />
registros<br />
– Fácil interpretação <strong>de</strong> árvores pequenas<br />
– A acurácia é comparável a outros métodos <strong>de</strong><br />
classificação para muitos conjuntos <strong>de</strong> dados
Exemplo: C4.5<br />
Questões práticas <strong>de</strong> classificação<br />
Algoritmo simples, em profundida<strong>de</strong>.<br />
Usa o Ganho <strong>de</strong> Informação (Information Gain)<br />
Classifica atributos contínuos em cada nó.<br />
Exige que todos os dados caibam em memória.<br />
Não indicado para gran<strong>de</strong>s conjuntos <strong>de</strong> dados.<br />
– Necessita classificação em disco.<br />
Sub e super-especialização (Un<strong>de</strong>rfitting and<br />
Overfitting)<br />
Valores faltantes<br />
Custo da classificação<br />
O Software po<strong>de</strong> ser baixado do site:<br />
http://www.cse.unsw.edu.au/~quinlan/c4.5r8.tar.gz<br />
Sub e super-especialização (Exemplo)<br />
Sub e super-especialização<br />
Overfitting<br />
500 pontos circulares e<br />
500 pontos<br />
triangulares data.<br />
Pontos circulares:<br />
0.5 ≤ sqrt(x 12 +x 22 ) ≤ 1<br />
Pontos triangulares:<br />
sqrt(x 12 +x 22 ) > 0.5 or<br />
sqrt(x 12 +x 22 ) < 1<br />
Sub-especialização: quando o mo<strong>de</strong>lo é simples <strong>de</strong>mais, os erros com os dados<br />
<strong>de</strong> treinamento e <strong>de</strong> teste são gran<strong>de</strong>s
Super-especialização em função do ruído<br />
A fronteira <strong>de</strong> <strong>de</strong>cisão é distorcida pelo ruído