Por que as árvores de decisão não são computacionalmente caras?

38

Em Introdução ao aprendizado estatístico com aplicações em R , os autores escrevem que o ajuste de uma árvore de decisão é muito rápido, mas isso não faz sentido para mim. O algoritmo precisa passar por todos os recursos e particioná-lo de todas as maneiras possíveis para encontrar a divisão ideal. Para recursos numéricos com observações, isso pode resultar em partições para cada recurso.nnn

Estou entendendo mal como funciona a divisão binária? Ou existe uma razão para que esse algoritmo não demore muito?

matt_js
fonte
1
+1 para a pergunta. Você pode começar a verificar esta nota de aula , página 15, usar O(N) vez do algoritmo O(N2) .
Haitao Du

Respostas:

40

Os algoritmos das árvores de decisão não calculam todas as árvores possíveis quando se ajustam a uma árvore. Se o fizessem, resolveriam um problema NP-hardproblema. Os algoritmos de ajuste de árvore de decisão geralmente tomam decisões gananciosas no processo de ajuste - em cada estágio, eles otimizam o subproblema para encontrar uma divisão ideal com os dados no nó fornecido e continuam avançando no processo de ajuste. Além disso, à medida que você avança mais fundo na árvore de decisão, você tem um conjunto menor de dados que chegou ao nó fornecido, para otimizar a regra de divisão sobre um subconjunto menor de dados. Todas essas opções são verificações lineares dos dados no nó fornecido. Isso não é complicado de fazer, mas pode se tornar um pouco caro computacionalmente se você tiver um grande número de observações ou um grande número de covariáveis ​​para dividir. No entanto, grande parte do trabalho pode ser dividida e enviada para diferentes máquinas para trabalhar, para que haja maneiras de construir sua arquitetura computacional para aumentar a escala.

Lucas Roberts
fonte
10
Em outras palavras, é mais ou menos comparável a uma pesquisa binária.
Robert Harvey
1
@ Robert Harvey, não acho que, ao otimizar as funções de impureza no processo de ajuste, você garanta ou até incentive a divisão equilibrada. Para obter a complexidade de pesquisa equivalente à pesquisa binária seria necessário impor ou pelo menos incentivar a divisão balanceada. log2(N)
22417 Lucas Lucas
2
Concordou, mas o princípio ainda se mantém. (É por isso que eu usei as palavras "mais ou menos")
Robert Harvey
2

Existem algumas diferenças entre os algoritmos CART e C4.5 para construir árvores de decisão. Por exemplo, o CART usa Gini Impurity para selecionar recursos, enquanto o C.4.5 usa Shannon Entropy. Não acho que as diferenças sejam relevantes para a resposta, portanto não diferenciarei essas.

O que torna as árvores de decisão mais rápidas do que você imagina é:

  1. Como outros já disseram, esses algoritmos são algoritmos com 1 lookahead. Eles executam otimizações locais. Em cada filial, eles escolhem a regra que maximiza / minimiza qualquer métrica que eles usam (Gini ou Entropy). Isso significa que eles podem perder regras quando o uso de um operador lógico, como andresultado de uma árvore melhor. Isso significa que você deve ter muito cuidado / inteligência ao fazer a engenharia de recursos. Por exemplo, digamos que você esteja tentando prever quanto as pessoas bebem, convém destacar coisas como engenheiro new_feature = hour > 22 & hour < 4 & (friday_night | saturday_night). As árvores de decisão podem perder essas regras ou dar-lhes menos importância do que deveriam.
  2. Mais importante, as métricas usadas pelas árvores de decisão podem ser calculadas incrementalmente. Digamos que você tenha um recurso . A árvore de decisão não precisa calcular a métrica para , depois computar novamente para , depois novamente para etc. Gini e Entropy foram escolhidos porque podem ser calculados de forma incremental. Antes de tudo, cada recurso é classificado, para que você tenha . Em segundo lugar, quando você calcula , pode usar o resultado para calcular facilmente . É como fazer uma média. Se você tiver uma média de uma amostra, , e eu fornecer outro valor , você poderá atualizar sua média de maneira barata,X 1 = { 1 , 1,5 , 2 , 2,5 , 3 } ˉ x v ˉ xn ˉ x + vX1={3,1.5,2.5,2,1}X <= 1X <= 1.5X <= 2X1={1,1.5,2,2.5,3}X <= 1X <= 1.5x¯vx¯nx¯+vn+1 . O coeficiente de Gini é calculado como uma fração das somas, que podem ser facilmente calculadas incrementalmente para a amostra.
  3. As árvores de decisão podem ser paralelizadas. Cada nó é composto por dois ramos independentes. Portanto, em cada ramificação, você tem a oportunidade de paralelizar a criação da árvore. Além disso, a própria seleção de recursos também pode ser paralelizada. É isso que torna os pacotes xgboosttão rápidos. O aumento de gradiente é seqüencial e não pode ser paralelo, mas as próprias árvores podem.
Ricardo Cruz
fonte
1

Apenas para enriquecer as respostas,

As árvores de decisão hierárquicas em paralelo ao eixo são rápidas (CART, C4.5), mas existem outras alternativas, como árvores de decisão não hierárquicas ou aquelas que executam partições oblíquas que não são, embora possam ser mais precisas. Verifique as seguintes referências se você estiver interessado (elas não são uma seleção exaustiva).

Não hierárquico:

Grubinger, T., Zeileis, A. e Pfeiffer, K.-., 2014. Evtree: Aprendizagem evolutiva das árvores de classificação e regressão globalmente ótimas no RJStat.Software 61 (1), 1-29.

Divisões oblíquas:

Murthy, SK, Kasif, S. e Salzberg, S., 1994. Um sistema para indução de árvores de decisão oblíquas. J. Artif. Intell. Res. 2 (1), 1-32. http://dx.doi.org/doi:10.1613/jair.63 . Cantú-Paz, E. e Kamath, C., 2003. Induzindo árvores de decisão oblíquas com algoritmos evolutivos. IEEE Trans. Evol. Comput. 7 (1), 54-68. http://dx.doi.org/10.1109/TEVC.2002.806857 . Heath, D., Kasif, S. e Salzberg, S., 1993. Indução de árvores de decisão oblíquas. J. Artif. Intell. Res. 2 (2), 1002-1007.

Boa sorte!

Rafa_Mas
fonte