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.n
Estou entendendo mal como funciona a divisão binária? Ou existe uma razão para que esse algoritmo não demore muito?
Respostas:
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.
fonte
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 é:
and
resultado 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 engenheironew_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.X <= 1
X <= 1.5
X <= 2
X <= 1
X <= 1.5
xgboost
tão rápidos. O aumento de gradiente é seqüencial e não pode ser paralelo, mas as próprias árvores podem.fonte
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!
fonte