Perché gli alberi decisionali non sono costosi dal punto di vista computazionale?


38

In An Introduction to Statistical Learning with Applications in R , gli autori scrivono che il montaggio di un albero decisionale è molto veloce, ma questo non ha senso per me. L'algoritmo deve passare attraverso ogni funzione e partizionarla in ogni modo possibile per trovare la divisione ottimale. Per le funzioni numeriche con osservazioni, ciò potrebbe comportare n partizioni per ciascuna funzione.nn

Sto fraintendendo come funziona la divisione binaria? O c'è una ragione per cui questo algoritmo non richiederebbe molto tempo?


1
+1 per la domanda. Puoi iniziare a controllare questa nota della lezione , pagina 15, usa l' algoritmo invece di O ( N 2 ) . O(N)O(N2)
Haitao Du,

Risposte:


40

Gli algoritmi degli alberi decisionali non calcolano tutti gli alberi possibili quando si adattano a un albero. Se lo facessero, risolverebbero un NP-difficileproblema. Gli algoritmi di adattamento dell'albero decisionale in genere prendono decisioni avide nel processo di adattamento: in ogni fase ottimizzano il sotto-problema per trovare una divisione ottimale con i dati nel nodo dato e continuano ad avanzare nel processo di adattamento. Inoltre, man mano che ci si sposta più in profondità nell'albero decisionale, si dispone di un set di dati più piccolo che è arrivato al nodo specificato in modo da ottimizzare la regola di divisione su un sottoinsieme di dati più piccolo. Tutte queste scelte sono scansioni lineari dei dati nel nodo dato. Questo non è complicato da fare, ma può diventare un po 'costoso dal punto di vista computazionale se hai un gran numero di osservazioni o un gran numero di covariate su cui dividere. Tuttavia, gran parte del lavoro può essere suddiviso e inviato a macchine diverse su cui lavorare, quindi ci sono modi per costruire la tua architettura computazionale per ingrandirla.


10
In altre parole, è più o meno paragonabile a una ricerca binaria.
Robert Harvey,

1
log2(N)

2
D'accordo, ma il principio è ancora valido. (Ecco perché ho usato le parole "più o meno")
Robert Harvey,

2

Esistono alcune differenze tra gli algoritmi CART e C4.5 per la creazione di alberi decisionali. Ad esempio, CART utilizza Gini Impurity per selezionare le funzionalità mentre C.4.5 utilizza Shannon Entropy. Non penso che le differenze siano rilevanti per la risposta, quindi non distinguerò tra quelle.

Ciò che rende gli alberi decisionali più veloci di quanto si pensi è:

  1. Come altri hanno già detto, questi algoritmi sono algoritmi 1-lookahead. Eseguono ottimizzazioni locali. In ogni ramo, scelgono la regola che massimizza / minimizza qualunque metrica utilizzino (Gini o Entropy). Ciò significa che potrebbero mancare delle regole in cui l'uso di un operatore logico come andsi tradurrebbe in un albero migliore. Ciò significa che dovresti essere molto attento / intelligente quando fai ingegneria delle caratteristiche. Ad esempio, supponiamo che tu stia cercando di prevedere quante persone bevono, potresti voler presentare cose come l'ingegnere new_feature = hour > 22 & hour < 4 & (friday_night | saturday_night). Gli alberi decisionali potrebbero non rispettare tali regole o dare loro meno importanza di quanto dovrebbero.
  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. Gli alberi decisionali possono essere parallelizzati. Ogni nodo è composto da due rami che sono indipendenti. Pertanto, ad ogni ramo, hai l'opportunità di parallelizzare la creazione dell'albero. Inoltre, anche la selezione della funzione stessa può essere parallelizzata. Questo è ciò che rende i pacchetti xgboostcosì veloci. L'aumento del gradiente è sequenziale e non può essere parallelizzato, ma gli alberi stessi possono farlo.

1

Solo per arricchire le risposte,

Gli alberi decisionali gerarchici ad assi paralleli sono veloci (CART, C4.5) ma ci sono altre alternative come alberi decisionali non gerarchici o quelli che eseguono partizioni oblique che non lo sono, sebbene possano essere più precisi. Controlla i seguenti riferimenti se sei interessato (non sono una selezione esaustiva).

Non-gerarchica:

Grubinger, T., Zeileis, A. e Pfeiffer, K.-., 2014. Evtree: Apprendimento evolutivo della classificazione e degli alberi di regressione ottimali a livello globale in RJStat Software 61 (1), 1-29.

Spaccature oblique:

Murthy, SK, Kasif, S. e Salzberg, S., 1994. Un sistema per l'induzione di alberi decisionali obliqui. J. Artif. Intell. Res. 2 (1), 1-32. http://dx.doi.org/doi:10.1613/jair.63 . Cantú-Paz, E. e Kamath, C., 2003. Inducendo alberi decisionali obliqui con algoritmi evolutivi. 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. Induzione di alberi decisionali obliqui. J. Artif. Intell. Res. 2 (2), 1002-1007.

In bocca al lupo!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.