Seguici su Telegram, ne vale la pena ❤️ ➡ @trovalost
Vai al contenuto

Alberi decisionali: cosa sono e come funzionano

Immagina di voler cambiare macchina, e di dover prendere una decisione su quale automobile acquistare. Come fare? Puoi ascoltare il parere del concessionario, leggere qualche rivista, guardare le opinioni su Google su ogni modello o basarti su principi molto più blandi come la forma che ti piace, oppure – ancora – considerare gli optional, la presenza di aria condizionata, il costo il il fatto che il motore sia ibrido oppure elettrico. Come regolarti in questa miriade di possibili scelte?

Potresti ad esempio utilizzare un albero decisionale per guidarti in base a diverse caratteristiche e condizioni.

Definizione albero decisionale

Un albero decisionale è un modello di apprendimento supervisionato basato su una struttura ad albero, che viene utilizzato per prendere decisioni e/o fare previsioni suddividendo ripetutamente il set di dati in base alle caratteristiche dei dati stessi. Gli alberi decisionali sono costituiti da nodi e rami, che rappresentano le decisioni e le condizioni che guidano il flusso di apprendimento.

Ecco come un albero decisionale può essere composto:

  1. Radice:  il primo nodo o nodo base dell’albero decisionale.
  2. I rami rappresentano le possibili alternative o risultati di una decisione. I rami si estendono dai nodi e portano ad altri nodi o alle foglie.
  3. I nodi rappresentano le decisioni o le condizioni da valutare (ciò che viene “scritto” sui rami, in pratica). Ogni nodo contiene una caratteristica o una variabile di input e una regola di divisione che definisce come suddividere il set di dati in base a quella caratteristica
  4. Le foglie sono i nodi terminali dell’albero decisionale. Rappresentano le etichette di classe o le previsioni finali. Ogni foglia corrisponde a una classe o a un valore di output.
  5. Una regola di divisione specifica come il set di dati viene suddiviso in base a una caratteristica. Ad esempio, se una caratteristica è numerica, una regola di divisione potrebbe essere “valore <= 10”, che indica che i dati con un valore inferiore o uguale a 10 verranno indirizzati verso un ramo specifico, e gli altri per esclusione sull’altro.
  6. La profondità di un albero decisionale rappresenta il numero di nodi attraversati da un percorso dalla radice a una foglia. Una profondità maggiore indica un albero decisionale più complesso e potenzialmente più specializzato.

Ecco un esempio di quello che intendiamo per l’esempio della macchina:

  1. La radice dell’albero decisionale potrebbe essere “Tipo di automobile da acquistare”.
  2. I nodi rappresentano le decisioni o le condizioni da valutare. Ad esempio, un nodo potrebbe essere “Budget a disposizione”, “colore preferito”, “marca della macchina che usa il collega che invidio”.
  3. I rami rappresentano le alternative o le “conseguenze” delle nostre decisioni. Ad esempio, se il budget disponibile è alto, potresti avere un ramo che porta a “Automobili di lusso” e un altro ramo che porta a “Automobili convenzionali”.
  4. Foglie: Le foglie rappresentano le decisioni finali. Ad esempio, una foglia potrebbe essere “Acquista un’automobile di lusso” o “Acquista un’automobile convenzionale”.
  5. Regola di divisione: La regola di divisione specifica come il set di dati viene suddiviso. Ad esempio, se il budget disponibile è superiore a una determinata soglia, potrebbe essere suddiviso in “Alto” e “Basso” per guidare la scelta tra automobili di lusso o automobili convenzionali.

La complessità dell’argomento è evidente se si pensa che abbiamo sempre un budget limitato, e che la scelta è condizionata da fattori non per forza legati alla qualità della stessa (difetti congeniti nelle auto, chiacchiere da ufficio, valutazioni esteriori non di natura tecnica, suocere, …). In alternativa, potresti prendere altre decisioni basate su caratteristiche come il consumo di carburante, il numero di passeggeri, la marca, ecc., utilizzando ulteriori nodi e rami per arrivare a una decisione finale.

L’albero decisionale nel mondo reale ti aiuta a prendere decisioni organizzate, guidandoti attraverso le diverse caratteristiche e condizioni rilevanti per il problema che stai affrontando. Può semplificare il processo decisionale fornendo una struttura chiara e gerarchica.

Come funziona l’albero decisionale

La costruzione di un albero decisionale coinvolge l’utilizzo di algoritmi di apprendimento specifici, come l’algoritmo CART (Classification and Regression Trees) o l’algoritmo ID3 (Iterative Dichotomiser 3). Questi algoritmi utilizzano criteri di misura dell’impurità, come ad esempio l’entropia, per selezionare la miglior caratteristica di divisione in ogni nodo, passo dopo passo. L’albero decisionale viene costruito in modo ricorsivo, dividendo il set di dati in base alle caratteristiche selezionate fino a quando viene raggiunto un criterio di stop, ad esempio una profondità massima o un numero minimo di campioni in una foglia.

L’obiettivo dell’addestramento di un albero decisionale è quello di creare una struttura che sia in grado di generalizzare bene su nuovi dati, catturando le relazioni e le decisioni all’interno del set di dati di addestramento.

Alberi decisionali in Python: RandomForestClassifier

RandomForestClassifier è un algoritmo di apprendimento supervisionato che appartiene alla famiglia degli alberi decisionali ed è utilizzato per la classificazione. È implementato nella libreria scikit-learn di Python. Un albero decisionale è pertanto un modello di apprendimento che prende decisioni o stima l’etichetta di una classe, suddividendo ripetutamente il set di dati in base alle caratteristiche dei dati. RandomForestClassifier estende questa idea creando un insieme (ensemble) di alberi decisionali e utilizzando la votazione della maggioranza per fare previsioni.

Il processo di creazione di un RandomForestClassifier coinvolge i seguenti passaggi:

  1. Creazione degli alberi: vengono creati diversi alberi decisionali utilizzando un processo chiamato “bagging”. Il bagging coinvolge la creazione di campioni casuali (bootstrap) dal set di dati di addestramento e l’addestramento di alberi decisionali su questi campioni.
  2. Divisione dei nodi: durante la costruzione degli alberi decisionali, in ogni nodo viene selezionata casualmente una sottoinsieme delle caratteristiche (feature) disponibili. Questo processo è chiamato “splitting casuale”. Viene selezionata la migliore caratteristica di split tra quelle selezionate in modo casuale.
  3. Votazione della maggioranza: dopo aver creato tutti gli alberi decisionali, durante la fase di previsione, ciascun albero fa una previsione e viene utilizzata la votazione della maggioranza per determinare la classe finale assegnata dal RandomForestClassifier.

RandomForestClassifier offre diversi vantaggi rispetto agli alberi decisionali singoli. Essendo un ensemble di alberi, può gestire meglio il rumore e la varianza nei dati, riducendo il rischio di overfitting. Inoltre, può gestire grandi set di dati e caratteristiche non lineari. Inoltre, fornisce anche una stima dell’importanza delle caratteristiche, che può essere utile per l’analisi dei dati.

Esempio pratico

Per utilizzare RandomForestClassifier in scikit-learn, è necessario importare la classe RandomForestClassifier dalla libreria sklearn. Quindi, è possibile creare un’istanza del modello, addestrarlo sui dati di addestramento utilizzando il metodo fit(), e fare previsioni utilizzando il metodo predict().

Ecco un esempietto di codice per utilizzare RandomForestClassifier in Python:

from sklearn.ensemble import RandomForestClassifier

# Creare un’istanza di RandomForestClassifier
model = RandomForestClassifier()

# Addestrare il modello sui dati di addestramento
model.fit(X_train, y_train)

# Fare previsioni sui dati di test
y_pred = model.predict(X_test)

Nell’esempio sopra, X_train e y_train rappresentano i dati di addestramento, mentre X_test è il set di dati su cui fare le previsioni. Dopo l’addestramento, le previsioni vengono fatte utilizzando il metodo predict() e memorizzate in y_pred. (immagine di copertina: un albero immaginato da StarryAI)

👇 Da non perdere 👇



Questo portale web esiste da 4462 giorni (12 anni), e contiene ad oggi 6609 articoli (circa 5.287.200 parole in tutto) e 13 servizi online gratuiti. – Leggi un altro articolo a caso
Non ha ancora votato nessuno.

Ti sembra utile o interessante? Vota e fammelo sapere.

Questo sito contribuisce alla audience di sè stesso.
Il nostro network informativo: Lipercubo.it - Pagare.online - Trovalost.it.