Indução de Árvore de Decisão
Jacques Robin
Roteiro
1.
2.
3.
4.
5.
6.
7.
8.
9.
Entrada e saída da indução de árvore decisão
Tarefas de aprendizagem implementadas por ID3
Exemplo
Algoritmo básico e complexidade
Heurísticas de escolha do atributo de partição de exemplos
Poda da árvore para evitar overfitting
Atributos numéricos, multi-valorados, nulos e numerosos
Árvores de regressão e de modelo
Vantagens e limitações de ID3
Entrada e saída da
indução de árvore de decisão (ID3)
age
<=30
<=30
31…40
>40
>40
>40
31…40
<=30
<=30
>40
<=30
31…40
31…40
>40
income student
high
high
high
medium
low
low
low
medium
low
medium
medium
medium
high
medium
no
no
no
no
yes
yes
yes
no
yes
yes
yes
no
yes
no
credit
rating
buys
computer
fair
excellent
fair
fair
fair
excellent
excellent
fair
fair
fair
excellent
excellent
fair
excellent
no
no
yes
yes
yes
no
yes
no
yes
yes
yes
yes
yes
no
age?
30..40
<=30
student?
no
yes
no
yes
>40
credit rating?
yes
excellent
fair
no
yes
Tarefas de aprendizagem
realizáveis por ID3
 Classificação:
 Atributos classificadores nos ramos
 Valores da classe nas folhas
 Regressão:
 Valores das variáveis fornecidas nos ramos
 Valor da variável a estimar nas folhas
 Previsão temporal:
 Valores passadas do atributo a prever nos ramos
 Valor futura do atributo a prever nas folhas
 Detecção de padrão:
 Valores antecedentes da associação nos ramos
 Valores conseqüentes da associação nas folhas
 Controle:
 Atributos descrevendo situação nos ramos
 Ação a executar nessa situação nas folhas
 Otimização:
 Valores das variáveis do domínio da função a otimizar nos ramos
 Valor da imagem máxima ou mínima da função das folhas
Expressividade das árvores de decisão
 Representação como programa
lógico:
age?
30..40
<=30
student?
no
yes
no
yes
>40
credit rating?
yes
excellent
fair
no
yes
buy(X,computer) :- age(X) <= 30,
student(X), creditRating(X,fair).
buy(X,computer) :- age(X) >= 30,
age(X) <= 40.
buy(X,computer) :- age(X) > 40,
creditRating(X,fair).
Expressividade das árvores de decisão
 Representação proposicional:
age?
30..40
<=30
student?
no
yes
no
yes
>40
credit rating?
yes
excellent
fair
no
yes
((under30  student)  30something
 (over40  fairCreditRating)
 buyComputer
 ((under30   student) 
 (over40  excellentCreditRating)
  buyComputer)
 (under30  30something  over40)
  (under30  30something)
  (under30  over40)
  (over40  30something)
 (fairCreditRating
 excellentCreditRating)
  (fairCreditRating
 excellentCreditRating)
Expressividade das árvores de decisão
 Pode representar qualquer função booleana
 No entanto, algumas funções – como a função de paridade ou de
maioria – só podem serem representadas por uma árvore de tamanho
exponencial no número de atributos
 Cardinal do espaço de hipótese de uma tarefa de aprendizagem com
6 atributos booleanos: 18.446.744.073.709.551.661
 Mesmo para problemas pequenos:
 Aprender árvores pequenos o suficiente para serem inteligível e então
validáveis
 Requer heurísticas (i.e., viés) podendo a busca no espaço de hipótese de
maneira violenta
 Em recuperação de informação utiliza-se geralmente um número de
atributo igual a o número de palavras na língua utilizada nos
documentos ...
Algoritmo básico de ID3
 Escolher dentro do conjunto de atributo atual A = {A1,..., Ak}
o atributo Ai que separa melhor o conjunto atual de exemplos
E em termos dos valores do atributo a prever P
 Dividir E em termos dos valores de Ai = {Vi1,..., Vik}
i.e., E =  Ej, x  Ej, Ai(x) = Vij,
criando um novo arco teste Ai(x) = Vii na árvore para cada Ej
 Para todos Ei ainda heterogêneos em termos do valor de P
i.e., x,y  Ei, P(x)  P(y),
 Recursivamente reaplicar algoritmo sobre Ej com o conjunto de
atributo A´= A – {Ai}
 Continuar até que:
 Todos os Ej seja homogêneos em termos do valor de P
 Não tenha mais atributos a processar, i.e., A´= 
Viés de aprendizagem de ID3
age
 Árvore aprendida com viés de ID3
 Número de bits: 3
<=30
30..40
>40
student
buy
+
-
-
+
credit
excel
fair
-
+
+
 Árvore “aprendida” sem viés
 Número de bits: 6
age
BC
<=30
30..40
>40
income
income
income
high
medium
low
high
medium
low
high
medium
low
student
student
student
student
student
student
student
student
student
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
CR
CR
CR
CR
CR
CR
CR
CR
CR
CR
CR
CR
CR
CR
CR
CR
CR
CR
e
f
?
?
e
f
e
f
e
?
?
f
e
?
f
e
f
e
?
?
?
f
e
?
f
e
f
?
?
e
f
?
e
f
e
f
e
f
e
f
e
?
?
?
?
?
?
?
?
f
e
f
e
f
e
f
?
?
Heurísticas de escolha de atributo de
partição de exemplos
 Ganho da informação
 Índice GINI
Ganho da informação
 Informação (em número de bits) esperada necessária para
classificar, em m classes, amostra arbitrária de s exemplos:
m
I( s1,s2,...,sm )  
i 1
si
si
log 2
s
s
Si = numero de exemplos de classe i
 Informação esperada necessária para classificar, em m classes, dado
o valor, entre V valores possíveis, do atributo A (entropia de A):
s1 j  ... smj
E(A) 
I ( s1 j ,...,smj ) Si j = numero de exemplos de classe i
s
com valor j para atributo A
j 1
v
 Ganho de informação pelo conhecimento do valor de A:
Gain(A) I(s1, s 2 ,...,sm)  E(A)
Exemplo de escolha de atributo baseado
na heurística do maior ganho de informação
5
4
E ( age) 
I ( 2,3) 
I ( 4,0)
14
14
5

I (3,2)  0.694
14
Class p: buysComputer = “yes”
 Class n: buysComputer = “no”
 I(p, n) = I(9, 5) = 0.940
 Entropia para age:

age
<=30
30…40
>40
pi
2
4
3
ni
3
0
2
I(pi, ni)
0.971
0
0.971
age <= 30 para 5/14 dos exemplos
dos quais 2 buyComputer = yes
e 3 buyComputer = no
age
income
student
<=30
<=30
31…40
>40
>40
>40
31…40
<=30
<=30
>40
<=30
31…40
31…40
>40
high
high
high
medium
low
low
low
medium
low
medium
medium
medium
high
medium
no
no
no
no
yes
yes
yes
no
yes
yes
yes
no
yes
no
credit
rating
fair
excellent
fair
fair
fair
excellent
excellent
fair
fair
fair
excellent
excellent
fair
excellent
buys
computer
no
no
yes
yes
yes
no
yes
no
yes
yes
yes
yes
yes
no
Gain(age)  I ( p, n)  E (age)  0.246
Gain(income)  0.029
Gain( student )  0.151
Gain(credit _ rating )  0.048
Exemplo de ID3
age
income
student
<=30
<=30
31…40
>40
>40
>40
31…40
<=30
<=30
>40
<=30
31…40
31…40
>40
high
high
high
medium
low
low
low
medium
low
medium
medium
medium
high
medium
no
no
no
no
yes
yes
yes
no
yes
yes
yes
no
yes
no
credit
rating
fair
excellent
fair
fair
fair
excellent
excellent
fair
fair
fair
excellent
excellent
fair
excellent
buys
computer
no
no
yes
yes
yes
no
yes
no
yes
yes
yes
yes
yes
no
age?
e1
e2
e3
e4
e5
e6
e7
e8
e9
e10
e11
e12
e13
e14
<=30
31..40
+: e9, e11
+: e3, e7, e12, e13
-: e1, e2, e8
>40
+: e4, e5, e10
-: e6, e14
Exemplo de ID3
age?
<=30
31..40
+: e9, e11
+: e3, e7, e12, e13
-: e1, e2, e8
income
student
high
high
medium
low
medium
no
no
no
yes
yes
credit
rating
fair
excellent
fair
fair
excellent
buys
computer
no
e1
no
e2
no
e8
yes
e9
yes
e11
student?
no
yes
+: e9, e11
-: e1, e2, e8
>40
+: e4, e5, e10
-: e6, e14
Exemplo de ID3
age?
<=30
31..40
>40
+: e9, e11
+: e3, e7, e12, e13
+: e4, e5, e10
-: e1, e2, e8
-: e6, e14
student?
income
student
medium
low
low
medium
medium
no
yes
yes
yes
no
credit
rating
fair
fair
excellent
fair
excellent
buys
computer
yes
e4
yes
e5
no
e6
yes
e10
no
e14
credit rating?
no
yes
excellent
fair
+: e9, e11
-: e1, e2, e8
-: e6, e14
+: e4, e5, e10
Poda de árvores para evitar overfitting
 Broto de decisão: árvore de decisão de profundidade 1
 Em muitos casos, tão precisão se não melhor sobre conjunto de teste do
que árvore de decisão completa gerada por ID3
 Caso também de kNN, Classificador Bayesiana Ingênuo e Regra de
Classificação 1R, i.e., regra da forma: atributo a = v  classe = c
 Em processo de aprendizagem qualquer, sempre começar pelo uso desses
métodos simplórios, pós as vezes eles são suficientes, e sempre eles
constituem um caso base para a avaliação de métodos mais sofisticados
 Sugere idéia de podar árvores geradas por ID3 para melhorar sua
generalidade
 Pré-poda:
 Introduzir novo ramo na árvore apenas para gerar divisão de exemplos
estatisticamente significativa (por exemplo usando um test 2
 Pós-poda:
 Podar árvore completa testando diferencia de precisão sobre outro conjunto
de exemplos de duas operações de poda, colapso de ramo e subida de ramo
Operações de pós-poda: colapso de ramo
age?
age?
30..40
<=30
student?
no
yes
no
yes
>40
<=30
30..40
credit rating?
yes
excellent
fair
no
yes
>40
credit rating?
no
yes
excellent
fair
no
yes
Operações de pós-poda: elevação de ramo
age?
student?
30..40
<=30
student?
no
yes
no
yes
yes
>40
no
yes
credit rating?
age?
credit rating?
excellent
fair
<=30
30..40
>40
excellent
fair
no
yes
no
yes
yes
no
yes
Pós-poda
 Processa a árvore de baixo para cima estimando benefício, em cada
nó, de uma das duas operações
 Divide conjunto de exemplos em 3 partes:
 Conjunto de construção da árvore
 Conjunto de poda da árvore
 Conjunto de teste da árvore podada
 Problemático com conjunto de exemplos pequenos:
 Solução de C4.5
 Executa poda sobre mesmo conjunto do que a construção, usando um
estimador estatístico diferente do ganho de informação usado para
construção
Complexidade de ID3
 Abstrair e exemplos de treinamento,
cada um descrito por a atributos
por uma árvore de decisão de profundidade O(log n)
 Execução: O(log n)
 Treinamento sem poda: O(mn log n)
 Pós-poda: O(n (log n)2)
Outras dificuldades práticas
 Atributos multi-valorados
 ID3 supõe que cada atributo de cada exemplo possui apenas um único
valor
 Nem é sempre o caso: ex, filhos de uma pessoa
 Atributos com distribuição de valores muito desigual
 ID3 tende a gerar broto de decisão
Atributos numerosos
 Ganho de informação super-estima atributos com muitos valores
distintos
 Atributos com um valor distinto por exemplo, completamente inútil
para classificação, no entanto com maior ganho de informação
 Uma solução simples: usar razão do ganho sobre número de valores
do atributo
Atributos nulos
 Utilização:
 Como classificar novo exemplo com atributo nulo ?
 Prever valor nulo como sendo valor adicional
 Treinamento:
 Simplesmente excluir exemplos ou atributos com valores nulos não é
sempre viável porque:
 As vezes exemplo com valor nulo para determinado atributo, é extremamente
informativo com respeito a outros atributos,
 ou atributo com valor com valor nulo para determinado exemplo, é
extremamente informativo via seus valores para outros exemplos
 tamanho e dimensionalidade dos exemplos de treinamento ficam baixo demais
 É necessário modificar a fórmula do ganho de informação para a tornar
tolerante a valores nulos
Atributos numéricos
 Qual é a partição em faixa de valores que maximiza o ganho de
informação ?
Árvore de regressão
Regressão linear paramêtrica:
PRP = - 56.1 + 0.049MYCT + 0.015MMIN + 0.006MMAX + 0.630CACH - 0.270CHMIN + 1.46CHMAX
Árvore de regressão para mesma tarefa:
Árvore de modelo
Árvore de modelo para mesma tarefa:
LM1: PRP = 8.29 + 0.004 MMAX + 2.77 CHMIN
LM2: PRP = 20.3 + 0.004 MMIN – 3.99 CHMIN + 0.946 CHMAX
LM3: PRP = 38.1 + 0.012 MMIN
LM4: PRP = 19.5 + 0.002 MMAX + 0.698 CACH + 0.969 CHMAX
LM5: PRP = 285 – 1.46 MYCT + 1.02 CACH – 9.39 CHMIN
LM6: PRP = -65.8 + 0.03 MMIN – 2.94 CHMIN + 4.98 CHMAX
Vantagens de ID3
Muito versátil
Algoritmo de aprendizagem muito simples, e então fácil de entender
Muito bem estudado
Eficiente e escalável
Disponível na grande maioria das caixas de ferramenta gerais para
aprendizagem
 Processa cada exemplo apenas uma única vez





Limitações de ID3
 Redundância para
representar sem muita
redundância funções sem
ordem claro de poder
separativo dos exemplos
entre atributos
 Não pode aprender
relacionamentos genéricos
entre vários indivíduos,
 ex: árvore de decisão
definindo conceito de mãe,
de ancestral ?
 Não é incremental: todos
os exemplos tem que ser
disponíveis com
antecedência
Download

ID3