Algoritmo para otimizar árvores de decisão

16

fundo

Uma árvore de decisão binária é uma árvore com raiz onde cada nó interno (e raiz) é marcado por um índice j { 1 , . . . , n } de modo que nenhum caminho da raiz para a folha repita um índice, as folhas são rotuladas pelas saídas em { A , B } e cada borda é rotulada por 0 para o filho esquerdo e 1 para o filho direito. Para aplicar uma árvore a uma entrada x :Tj{1,...,n}{A,B}01x

  1. Comece pela raiz
  2. se você estiver na folha, você imprime o rótulo da folha ou B e terminaAB
  3. Leia o rótulo do seu nó atual, se x j = 0 , mova para o filho esquerdo e se x j = 1 , mova para o filho direito.jxj=0xj=1
  4. pule para o passo (2)

A árvore é usada como uma maneira de avaliar funções, em particular, dizemos que uma árvore representa uma função total f se para cada x { 0 , 1 } n tivermos T ( x ) = f ( x ) . A complexidade da consulta de uma árvore é sua profundidade, e a complexidade da consulta de uma função é a profundidade da menor árvore que a representa.Tfx{0,1}nT(x)=f(x)


Problema

Dada uma árvore de decisão binária, T produz uma árvore de decisão binária T 'de profundidade mínima, de modo que T e T' representam a mesma função.

Questão

Qual é o algoritmo mais conhecido para isso? Existem limites inferiores conhecidos? E se soubermos que a ? E se exigirmos apenas que T ' tenha profundidade aproximadamente mínima?depth(T)=O(logdepth(T))T


Abordagem ingênua

A abordagem ingênua é dado recursivamente enumerar todas as árvores de decisão binárias de profundidade d - 1 ao testar se eles avaliam a mesma coisa que T . Isso parece exigir O ( d 2 n n !d=depth(T)d1Tetapas (assumindo que são necessáriasdetapas para verificar o queT(x)avalia para umxarbitrário). Existe uma abordagem melhor?O(d2nn!(nd)!)dT(x)x

Motivação

Essa pergunta é motivada por uma pergunta anterior sobre a troca entre complexidade de consulta e complexidade de tempo . Em particular, o objetivo é limitar a separação de tempo para o total de funções. Podemos fazer uma árvore partir de um algoritmo ideal de tempo com tempo de execução t e, em seguida, gostaríamos de convertê-la em uma árvore T ' para um algoritmo ideal de consulta. Infelizmente, se t O ( n ! / ( N - d ) ! ) (E frequentemente d Θ ( n )TtTtO(n!/(nd)!)dΘ(n)) o gargalo é a conversão. Seria bom se pudéssemos substituir por algo como 2 d .n!/(nd)!2d

Artem Kaznatcheev
fonte
Encontrar a árvore de decisão ideal é NP-complete. Foi-me ensinado que nas aulas de teoria da decisão e mineração de dados, porém essas eram baseadas em anotações e não estou ciente do artigo original que apresentou o resultado.
chazisop 31/07
@chazisop legal, obrigado. Não é óbvio para mim que encontrar a árvore de decisão ideal está no NP, mas vou pensar nisso / procurá-lo um pouco mais. Às vezes, conhecer a declaração do teorema é meio caminho para provar isso: D.
Artem Kaznatcheev
Penso que a referência mais antiga para isso é: Limites inferiores em listas e árvores de decisão de aprendizagem. (Hancock et al. 1994) cs.uwaterloo.ca/~mli/dl.ps
Lev Reyzin
11
A prova de que encontrar a árvore de decisão ideal é um problema NP-completo foi dada por Laurent Hyafil e Ronald L. Rivest em Construindo árvores de decisão binária ideais é NP-complete (1976). referência: aqui
antoine 5/11

Respostas:

16

Eu tenho 3 respostas, todas dando resultados de dureza um pouco diferentes.

Seja alguma função.f:{0,1}n{0,1}

resposta 1

Dada uma árvore de decisão computando f e um número, é NP difícil dizer se existe uma árvore de decisão T ' computando f de tamanho no máximo esse número. TfTf( Zantema e Bodlaender '00 )

Resposta 2

Dada uma árvore de decisão computando f , é NP difícil aproximar a menor árvore de decisão computando f a qualquer fator constante. Tff( Sieling '08 )

Resposta 3

Deixe ser o tamanho da menor árvore de decisão de computação f . Dada uma árvore de decisão T computada f , assumindo N P D T I M E ( 2 n ϵ ) para alguns ϵ < 1 , não é possível encontrar uma árvore de decisão equivalente T do tamanho s k para qualquer k 0 .sfTfNPDTIME(2nϵ)ϵ<1Tskk0

Penso que esta resposta mais forte (baseada em uma suposição mais fraca) pode ser feita a partir de resultados conhecidos na teoria de aprendizagem dos algoritmos Occam para árvores de decisão, através do seguinte argumento:

  1. É possível encontrar uma árvore de decisão em variáveis ​​no tempo n log s , onde s é a menor árvore de decisão consistente com exemplos provenientes de uma distribuição (modelo PAC). ( Blum '92 ) nnlogss
  2. Assumindo para alguns ε < 1 , que não pode PAC aprender tamanho s árvores de decisão por tamanho s k árvores de decisão para qualquer k 0 . ( Alekhnovich et al. '07 )NPDTIME(2nϵ)ϵ<1sskk0

Esses dois resultados parecem implicar um resultado de dureza para o seu problema. Por um lado (1), podemos encontrar uma grande árvore de decisão; por outro lado (2), não poderíamos minimizá-lo para obter um equivalente "pequeno", do tamanho , mesmo quando existe um tamanho s .sks

Lev Reyzin
fonte
(Encontrei sua resposta nesta resposta , postada há menos de uma hora.)Parece que " " pode ser substituído por "positiva ε , uma vez diminuindo ε faz da contenção mão do lado direito inferior .ϵ<1ϵϵ Além disso, onde nesse documento é 2. mostrado?
Veja o ponto 2 do resumo no resumo aqui: researcher.watson.ibm.com/researcher/files/us-vitaly/…
Lev Reyzin
(vindo da mesma resposta que Ricky Demer) você poderia detalhar um pouco mais como obter a "resposta 3" dos pontos 1. e 2.? Eu não estou muito familiarizado com a teoria da aprendizagem e ter um tempo duro que liga as partes ...
Marc
Esse problema de consistência e capacidade de aprendizado estão intimamente relacionados com o barbeador da Occam. A idéia é que, se você puder encontrar uma função consistente em um pequeno conjunto, poderá ter sucesso no aprendizado do PAC. Portanto, um resultado de dureza de aprendizado implica um resultado de "dureza de consistência". Não sei ao certo o que mais posso explicar em um comentário ...
Lev Reyzin
Até onde eu entendo, o algoritmo evocado para 1. não é executado no tempo que seria necessário para obter uma contradição com 2. (o resultado preciso no artigo, se eu entendi corretamente diz que não há algoritmo de aprendizado polytime para árvores de decisão). Portanto, pode haver um problema com sua argumentação. Poly(n,s)
Marc