Qual è lo scopo di utilizzare un albero decisionale?


8

Non capisco qual è lo scopo dell'albero decisionale? Per come la vedo io, è una serie di if-else. Perché non uso semplicemente if-else invece di usare un albero decisionale? È perché diminuisce la complessità del mio codice?

Sono ancora risparmiato dal calcolo dell'entropia e del guadagno di informazioni perché ci sono algoritmi precompilati per loro in cui ho appena inserito le regole, giusto? (Come ID3)

Perché lo usiamo con l'apprendimento automatico ora? Perché non dobbiamo nemmeno elaborare le regole prima che ce ne fosse bisogno? La macchina apprende dai dati di addestramento e in base agli attributi può prevedere un risultato?

L'implementazione di ML nel mio codice riduce di più l'overhead e rende il mio codice meno complesso, più efficace, più veloce?


6
Non riguarda il codice, riguarda il modello.
Sycorax dice di reintegrare Monica il

6
"L'implementazione del codice ML nel mio codice riduce ulteriormente le spese generali e rende il mio codice meno complesso, più efficace, più veloce?" Più efficace, a seconda di ciò che fa il tuo codice, ma altrimenti no. ML non esiste per rendere il codice meno complesso o più performante (tende ad avere l'effetto opposto). ML esiste per automatizzare la creazione di algoritmi basati su dati di esempio. Di solito questo non è necessario perché i programmatori possono semplicemente scrivere algoritmi efficaci, ma a volte è troppo difficile da fare, ed è qui che entra in gioco ML.
DarthFennec

Si prega di non effettuare il cross-post. Questo è contro la politica SE proprio per questo motivo; fa perdere molto tempo alle persone.
gung - Ripristina Monica

@DarthFennec Quotable!
Jim

Risposte:


21

Per come la vedo io, è una serie di if-else. Perché non uso semplicemente if-else invece di usare un albero decisionale?

Hai assolutamente ragione. Un albero decisionale non è altro che una serie di istruzioni if-else. Tuttavia, è il modo in cui interpretiamo queste affermazioni come un albero che ci consente di creare automaticamente queste regole ... Ad esempio, abbiamo fornito un set di esempi di input ... qual è il miglior set di regole che descrive quale valore ha dato un nuovo input ? ID3 e simili ci consentono di creare automaticamente queste regole. Non si tratta davvero dell'albero una volta costruito, si tratta di come l'abbiamo creato.(x1,y1),...,(xN,yN)yx

A parte questo, quasi mai si usa un albero decisionale da solo, il motivo è proprio quello che dici: è un modello piuttosto semplicistico che manca di espressività. Tuttavia, ha un grande vantaggio rispetto ad altri modelli: si può calcolare un singolo albero decisionale abbastanza velocemente. Ciò significa che possiamo inventare algoritmi che addestrano molti molti alberi decisionali (boosting, ovvero AdaBoost e GradientBoosting) su grandi set di dati. Questa raccolta di (di solito più di 500) di questi modelli semplicistici (chiamati foresta) può quindi esprimere forme molto più complicate.

Potresti anche immaginarlo in questo modo: data una funzione 'bella' (cioè continua) ma complicata potremmo provare ad approssimare questa funzione usando le linee. Se la funzione è complicata (come o giù di lì) allora produciamo un grosso errore. Tuttavia, potremmo combinare le linee nel modo in cui dividiamo l'intervallo in parti più piccole e su ciascuna proviamo ad approssimare (ovverof:[a,b]Rsin(x)[a,b]a=a0<a1<...<aM=bai,ai+1f|(ai,ai+1)flimitato a questo intervallo) da una riga. Con la matematica di base (analisi) possiamo quindi approssimare la funzione arbitrariamente chiusa (ovvero fare un errore arbitrariamente piccolo) se prendiamo abbastanza righe. Quindi, abbiamo costruito un modello complicato ma preciso da quelli molto semplici. Questa è esattamente la stessa idea che (ad esempio) usa GradientBoosting: costruisce una foresta da alberi di decisione molto "stupidi".


2
L'altro grande vantaggio è essere accessibile per l'ispezione umana ("aaah, ecco perché!").
dedObed

1
sì, gli alberi delle decisioni sono perfetti per spiegare a persone senza background statistico perché sono molto intuitivi.
qwr

1

Sto solo aggiungendo alla risposta di @Fabian Werner - ricordi di aver fatto la regola delle somme di Riemann in un'introduzione all'integrazione? Bene, anche quello era un insieme di istruzioni if ​​suddivise uniformemente che usi per calcolare l'area sotto la funzione.

Se si disegna una funzione 1D e si disegna in modo uniforme le partizioni, ciò che si troverà è che nelle aree in cui la funzione ha un piccolo gradiente, le partizioni vicine possono essere unite senza una grande perdita di precisione. Allo stesso modo, nelle partizioni con gradiente elevato l'aggiunta di più partizioni migliorerà significativamente l'approssimazione.

Qualsiasi set di partizioni approssima la funzione ma alcuni sono chiaramente migliori di altri.

Passando ai modelli CART, vediamo i dati sotto forma di punti rumorosi da questa funzione e ci viene chiesto di approssimare la funzione. Aggiungendo troppe partizioni possiamo sovrautilizzare ed essenzialmente eseguire un modello di tipo vicino più vicino. Per evitare ciò, limitiamo il numero di partizioni che il nostro modello può utilizzare (di solito sotto forma di profondità massima e campioni minimi per divisione). Quindi ora dove dovremmo posizionare queste divisioni? Questa è la domanda affrontata dai criteri di scissione. Le aree con una maggiore "complessità" dovrebbero ricevere più divisioni come regola empirica e questo è ciò che gini, entropia, ecc. Si sforzano di fare.

Fare previsioni è solo affermazioni if-else ma nel contesto dell'apprendimento automatico che non è da dove viene il potere del modello. Il potere deriva dalla capacità del modello di scambiarsi sopra e sotto in forma in modo scalabile e può essere derivato in un quadro probabilistico coerente con garanzie teoriche nel limite dei dati. Infine, se prendiamo una visione astratta simile dei modelli ML, possiamo dire che le reti neurali, i metodi del kernel, gli approcci di Monte Carlo e molti altri sono semplicemente addizione e moltiplicazione. Sfortunatamente, questa non è una visione molto utile della letteratura.


0

Un albero decisionale è un partizionamento del dominio problematico in sottoinsiemi, per mezzo di condizioni. Di solito è implementato come if-then-elses in cascata. Puoi vederlo come un termine che descrive una complessa logica decisionale.

Gli alberi decisionali non sono né più efficienti né più "di supporto" dell'apprendimento automatico rispetto ai test logici. Essi sono test logici.

Inoltre, tieni presente che qualsiasi algoritmo non è altro che una combinazione di calcoli e test aritmetici, vale a dire un albero decisionale (di solito enorme).


Per completezza, menzioniamo che in alcuni contesti, come l'apprendimento automatico, gli alberi decisionali complessi vengono creati automaticamente da algoritmi. Ma questo non cambia la loro natura.

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.