3.2 VFDT Very Fast Decision Tree
3.2.3 Arvores de Hoeffding 41 ´
Proposta por Domingos e Hulten [4], a modelagem mostrada a seguir utiliza o limitante de Hoeffding na escolha dos testes. Em fun¸c˜ao da aplica¸c˜ao do limitante de Hoeffding parametrizado por δ, da-se o nome de ´arvores de Hoeffding para tais modelos.
Seja G a heur´ıstica a ser maximizada, sejam Xae Xb os atributos com os maiores valores para G. Seja ∆Gr = G(Xa) − G(Xb) a diferen¸ca nos valores das heur´ısticas dos atributos quando o algoritmo utiliza todo o conjunto de dados, e seja ∆G = G(Xa) − G(Xb) a diferen¸ca observada quando apenas n exemplos chegaram a um n´o.
Ent˜ao, dado um valor para δ, atrav´es do limitante de Hoeffding sabemos que com probabilidade 1 − δ que ∆Gr ≥ ∆G − , onde ´e dado pela equa¸c˜ao 3.4. Se ∆G > , ent˜ao podemos dizer que com mesma probabilidade ∆Gr > 0, logo G(Xa) > G(Xb), i.e., com probabilidade 1 − δ, Xa ´e o melhor atributo.
Em termos pr´aticos, para podermos afirmar se Xa ´e a melhor escolha, precisa- mos verificar se ∆G ≥ . Ent˜ao, o que precisamos fazer ´e processar exemplos at´e acontecer que ∆G ≥ , para o valor escolhido de δ e o n´umero corrente de exemplos numa folha.
Pode acontecer que o melhor atributo, Xa, seja muito melhor que Xb, por´em realizar o split usando Xa pode n˜ao ser t˜ao vantajoso. Para tratar tal situa¸c˜ao, considera-se um atributo extra, X∅, que na verdade representa o valor da heur´ıstica considerando apenas os exemplos na folha. Desta forma pode-se tratar o caso de um split no melhor atributo n˜ao causar uma diferencia¸c˜ao efetivamente boa.
Destacamos que o limitante de Hoeffding independe da distribui¸c˜ao da vari´avel considerada. Esta independˆencia vem com o custo de ser necess´ario processar mais exemplos do que em m´etodos que usam limitantes espec´ıficos. Por´em, dado o cen´ario das grandes massas de dados, isto n˜ao configura um problema. Al´em disso, para o ganho de informa¸c˜ao temos 0 ≤ G ≤ log2(|C|), onde C ´e o conjunto das poss´ıveis classes, o que satisfaz a condi¸c˜ao de a vari´avel ter seu dom´ınio delimitado por uma faixa de tamanho R. ´E importante destacar que a distribui¸c˜ao das observa¸c˜oes deve ser a mesma, portanto ´e feita uma hip´otese de distribui¸c˜ao estacion´aria no fluxo.
Segue, ent˜ao, o pseudo-c´odigo do algoritmo de indu¸c˜ao das ´arvores de Hoeffding. O algoritmo de indu¸c˜ao das ´arvores de Hoeffding come¸ca na raiz l1, ´unico n´o e folha da ´arvore sendo constru´ıda. Conforme dito, al´em dos poss´ıveis atributos X, considera-se um atributo extra, X∅. Ele, al´em de funcionar como um contador global na folha, representa o caso de n˜ao se fazer teste algum, linhas 1 e 2. Al´em disso, o valor da heur´ıstica de X∅ ´e justamente a entropia do conjunto.
Algoritmo 3.3 Algoritmo de indu¸c˜ao de uma ´arvore de Hoeffding, proposto em [4] Entradas:
S ´e uma sequˆencia de exemplos,
X ´e um conjunto de atributos discretos, G(.) ´e uma fun¸c˜ao de avalia¸c˜ao de split,
δ ´e um menos a probabilidade desejada de se escolher o atributo correto em um dado n´o.
Sa´ıda:
HT ´e uma ´arvore de decis˜ao.
Procedimento HoeffdingTree (S, X, G, δ)
1: Seja HT uma ´arvore com uma ´unica folha l1 (a raiz).
2: Seja X1 = X ∪ {X∅}.
3: Seja G1(X∅) o valor de G obtido ao se predizer a classe mais frequente em S.
4: Para cada classe yk
5: Para cada valor xij de cada atributo Xi ∈ X
6: Fa¸ca nijk(l1) = 0.
7: Para cada exemplo (x, yk) em S
8: Des¸ca (x, y) at´e uma folha l usando HT .
9: Para cada xij em x tal que Xi ∈ Xl
10: Incremente nijk(l).
11: Rotule a folha l com a classe majorit´aria dos exemplos que chegaram nela at´e agora.
12: Se os exemplos que chegaram at´e agora em l n˜ao forem todos da mesma classe, ent˜ao
13: Calcule Gl(Xi) para cada atributo Xi ∈ Xl - {X∅} usando os contadores nijk(l).
14: Fa¸ca Xa ser o atributo com o maior valor de Gl.
15: Fa¸ca Xb ser o atributo com o segundo maior valor de Gl.
16: Calcule usando a equa¸c˜ao 3.4.
17: Se Gl(Xa) - Gl(Xb) > e Xa 6= X∅, ent˜ao
18: Substitua l por um n´o interno cujo teste ´e o atributo Xa (ou seja, fa¸ca o split com o atributo Xa).
19: Para cada ramo do split
20: Adicione uma nova folha lm, e fa¸ca Xm = X - {Xa}.
21: Fa¸ca Gm(X∅) ser o valor de G obtido ao se predizer a classe mais frequente em lm.
22: Para cada classe yk e cada valor xij de cada atributo Xi ∈ Xm - {X∅}
23: Fa¸ca nijk(lm) = 0.
j-´esima poss´ıvel valora¸c˜ao do atributo i e k = classe, s˜ao inicializados com valor 0, linhas 5 e 6.
Ap´os tal inicializa¸c˜ao, os exemplos de S come¸cam a ser passados pela ´arvore em constru¸c˜ao. Cada exemplo (x, yk) ∈ S a atravessa at´e chegar em uma folha l adequada, linhas 7 e 8.
Uma vez que o exemplo (x, yk) chegue na folha l, cada contador deve ser atu- alizado, de acordo com as valora¸c˜oes dos atributos de x, linhas 9 e 10. l ´e, ent˜ao, atualizada para predizer a classe que mais se repetiu no exemplos at´e ent˜ao passados, linha 11.
Caso todos os exemplos perten¸cam `a mesma classe, ent˜ao l deve aguardar que mais exemplos cheguem, pois nenhum split ´e poss´ıvel. Caso contr´ario, a heur´ıstica deve ser computada para cada atributo, a fim de determinar os dois melhores, linhas 12 a 15.
Determinados os dois melhores atributos, candidatos a teste no split, computa-se o limitante de Hoeffding. Verifica-se, ent˜ao, se a diferen¸ca entre ambos j´a ´e suficiente, para que seja decidido se podemos realizar o split usando o melhor atributo, linhas 16 e 17.
Caso o limitante garanta que atributo Xa´e estatisticamente melhor, ent˜ao l, que era uma folha, torna-se um n´o interno, cujo teste ´e o pr´oprio Xa. Adicionalmente, um ramo descendente ´e criado para cada poss´ıvel valor no dom´ınio de Xa, linhas 18 a 20. Conv´em observar que os antigos contadores de l s˜ao descartados neste processo, portanto qualquer resqu´ıcio de informa¸c˜ao sobre os exemplos ´e perdida.
Para cada novo filho lm, analogamente separa-se um atributo X∅. Os contadores dos filhos s˜ao analogamente inciados com valor 0, linhas 21 a 23.
Ent˜ao, o processo retorna ao ciclo principal, descrito na linha 7. Desta forma, mais um exemplo ser´a conduzido at´e uma folha, a qual avaliar´a a pertinˆencia de um split. Ao esgotarem-se os exemplos o processo termina.