master-degree-notes/Foundation of data science/notes/9 Random Forest.md

3.9 KiB

Una Random Forest è un potente algoritmo di apprendimento supervisionato basato sull'idea di combinare molti alberi decisionali (ensemble learning). È utile sia per problemi di classificazione che di regressione.


Idea Principale

L'algoritmo costruisce molti alberi decisionali su sottoinsiemi casuali del dataset e combina le loro predizioni per ottenere un modello più robusto e preciso.

  • Classificazione: Si usa il voto di maggioranza (modalità delle predizioni degli alberi).
  • Regressione: Si usa la media delle predizioni degli alberi.

Fasi del Training

  1. Bootstrap Aggregating (Bagging):

    • Viene creato un sottoinsieme casuale (con rimpiazzo) del dataset originale per ogni albero. Questo approccio riduce l'overfitting.
  2. Random Subspace (Feature Bagging):

    • Ad ogni split di un albero, viene considerato un sottoinsieme casuale delle feature. Questo introduce ulteriore diversità tra gli alberi.
  3. Crescita degli Alberi:

    • Ogni albero è costruito indipendentemente dagli altri, senza potatura, quindi può raggiungere la massima profondità.

Vantaggi di Random Forest

  1. Robustezza:

    • La combinazione di più alberi riduce il rischio di overfitting rispetto a un singolo albero.
    • Resiste al rumore nei dati.
  2. Efficienza:

    • È scalabile e può essere parallelizzato, poiché gli alberi sono indipendenti.
  3. Gestione delle Feature:

    • È efficace anche con dataset ad alta dimensionalità.
    • Può calcolare l'importanza relativa delle feature, utile per interpretare il modello.
  4. Flessibilità:

    • Funziona bene sia per problemi di classificazione che di regressione.

Parametri Importanti

1. Numero di Alberi (n_estimators):

  • Un valore più alto migliora la robustezza, ma aumenta il tempo di calcolo.
  • Valore tipico: 100-500.

2. Numero Massimo di Feature (max_features):

  • Numero di feature da considerare per ogni split.
  • Valori comuni:
    • Classificazione: \sqrt{d}, dove dd è il numero totale di feature.
    • Regressione: d/3.

3. Profondità Massima dell'Albero (max_depth):

  • Limita la profondità degli alberi per prevenire overfitting.
  • Se non specificata, gli alberi cresceranno fino a che ogni nodo foglia contiene meno di min_samples_split campioni.

4. Dimensione del Campione (max_samples):

  • Percentuale del dataset usata per creare ogni albero.
  • Di default, è il 100% con rimpiazzo (bagging completo).

Complessità Computazionale

  • Training:
    Per un singolo albero: O(d \cdot n \log n), dove dd è il numero di feature e nn il numero di campioni.
    Con TT alberi: O(T \cdot d \cdot n \log n).

  • Predizione:
    Predire su un campione richiede O(T \cdot \text{depth}), dove la profondità (\text{depth}) è proporzionale a \log n.


Limiti

  1. Lentezza:

    • L'addestramento può essere costoso con molti alberi o dataset molto grandi.
  2. Interpretabilità:

    • Anche se le singole feature possono essere analizzate, il modello complessivo è meno interpretabile di un singolo albero.
  3. Overfitting su Dati Rumorosi:

    • Se i dati contengono molto rumore, una Random Forest potrebbe comunque sovradattarsi, anche se meno di un singolo albero.

Applicazioni

  1. Classificazione: Diagnosi mediche, analisi di frodi, riconoscimento di immagini.
  2. Regressione: Previsione dei prezzi, analisi delle serie temporali.
  3. Selezione di Feature: Grazie all'analisi dell'importanza delle feature.

Punti Chiave

  • Differenza con Bagging: La Random Forest aggiunge il sottoinsieme casuale di feature al bagging per rendere ogni albero più indipendente.
  • Differenza con Gradient Boosting: La Random Forest crea alberi in parallelo, mentre il Gradient Boosting li costruisce in sequenza ottimizzando errori residui.