Pourquoi les arbres de décision ne sont-ils pas coûteux en calcul?

38

Dans Une introduction à l'apprentissage statistique avec applications en R , les auteurs écrivent que l'ajustement d'un arbre de décision est très rapide, mais cela n'a aucun sens pour moi. L'algorithme doit passer en revue toutes les fonctionnalités et les partitionner de toutes les manières possibles afin de trouver la division optimale. Pour les entités numériques avec observations, cela peut entraîner partitions pour chaque entité.nn

Est-ce que je comprends mal comment fonctionne la division binaire? Ou y a-t-il une raison pour que cet algorithme ne prenne pas longtemps?

matt_js
la source
1
+1 pour la question. Vous pouvez commencer à consulter cette note de lecture , page 15, en utilisant l' algorithme au lieu de l' algorithme . O(N)O(N2)
Haitao Du

Réponses:

40

Les algorithmes d'arbres de décision ne calculent pas tous les arbres possibles lorsqu'ils correspondent à un arbre. S'ils le faisaient, ils seraient en train de résoudre un NP-difficileproblème. Les algorithmes d’ajustement des arbres décisionnels prennent généralement des décisions gloutonnes dans le processus d’ajustement: à chaque étape, ils optimisent le sous-problème afin de trouver une division optimale avec les données du nœud donné et de continuer à avancer dans le processus d’ajustement. En outre, à mesure que vous avancez dans l'arbre de décision, vous avez un ensemble de données plus petit qui a été redirigé vers le nœud donné, de sorte que vous optimiserez la règle de fractionnement sur un sous-ensemble de données plus petit. Tous ces choix sont des analyses linéaires des données dans le nœud donné. Ce n'est pas compliqué à faire, mais cela peut coûter un peu cher en calcul si vous avez un grand nombre d'observations ou un grand nombre de covariables sur lesquelles vous séparer. Cependant, une grande partie du travail peut être scindée et transmise à différentes machines. Il existe donc des moyens de développer votre architecture informatique afin de l'intensifier.

Lucas Roberts
la source
10
En d'autres termes, c'est plus ou moins comparable à une recherche binaire.
Robert Harvey
1
@ Robert Harvey, je ne pense pas qu'en optimisant les fonctions d'impuretés dans le processus d'adaptation, vous garantissiez ou même encouragiez une division équilibrée. Pour obtenir la recherche binaire équivalent complexité de recherche vous devez appliquer ou au moins encourager le partage équilibré. log2(N)
Lucas Roberts
2
D'accord, mais le principe est toujours valable. (C'est pourquoi j'ai utilisé les mots "plus ou moins")
Robert Harvey
2

Il existe certaines différences entre les algorithmes CART et C4.5 pour la création d'arbres de décision. Par exemple, CART utilise Gini Impurity pour sélectionner des fonctionnalités, tandis que C.4.5 utilise Shannon Entropy. Je ne pense pas que les différences soient pertinentes pour la réponse, donc je ne ferai pas de distinction entre celles-ci.

Ce qui rend les arbres de décision plus rapidement que vous ne le pensez est:

  1. Comme d'autres l'ont dit, ces algorithmes sont des algorithmes à 1 regard. Ils effectuent des optimisations locales. À chaque succursale, ils choisissent la règle qui maximise / minimise la métrique utilisée (Gini ou Entropie). Cela signifie qu'ils risquent de rater des règles dans lesquelles l'utilisation d'un opérateur logique, par exemple, anddonnerait un meilleur arbre. Cela signifie que vous devez être très prudent / intelligent lors de l'ingénierie des fonctionnalités. Par exemple, si vous essayez de prédire la quantité de boissons que les gens boivent, vous voudrez peut-être présenter des éléments tels que ceux d'ingénieur new_feature = hour > 22 & hour < 4 & (friday_night | saturday_night). Les arbres de décision peuvent passer à côté de telles règles ou leur donner moins d'importance qu'ils ne le devraient.
  2. X1={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
  3. Les arbres de décision peuvent être parallélisés. Chaque nœud est composé de deux branches indépendantes. Par conséquent, à chaque branche, vous avez la possibilité de paralléliser la création de l’arbre. De plus, la sélection de caractéristiques elle-même peut également être mise en parallèle. C'est ce qui rend les paquets xgboostsi rapides. L'amélioration du gradient est séquentielle et ne peut pas être mise en parallèle, mais les arbres eux-mêmes le peuvent.
Ricardo Cruz
la source
1

Juste pour enrichir les réponses,

Les arbres de décision parallèles aux axes hiérarchiques sont rapides (CART, C4.5), mais il existe d'autres alternatives telles que les arbres de décision non hiérarchiques ou celles qui effectuent des partitions obliques qui ne le sont pas, bien qu'elles puissent être plus précises. Vérifiez les références suivantes si vous êtes intéressé (elles ne constituent pas une sélection exhaustive).

Non hiérarchique:

Grubinger, T., Zeileis, A. et Pfeiffer, K.-., 2014. Evtree: apprentissage évolutif d'arbres de classification et de régression globalement optimaux dans RJStat.Logiciel 61 (1), 1-29.

Fractures obliques:

Murthy, SK, Kasif, S. et Salzberg, S., 1994. Système d'induction d'arbres de décision obliques. J. Artif. Intell. Res. 2 (1), 1-32. http://dx.doi.org/doi:10.1613/jair.63 . Cantú-Paz, E. et Kamath, C., 2003. Induire des arbres de décision obliques avec des algorithmes d'évolution. IEEE Trans. Evol. Comput. 7 (1), 54-68. http://dx.doi.org/10.1109/TEVC.2002.806857 . Heath, D., Kasif, S. et Salzberg, S., 1993. Induction d'arbres de décision obliques. J. Artif. Intell. Res. 2 (2), 1002-1007.

Bonne chance!

Rafa_Mas
la source