La Casualità della Foresta
Scorri per mostrare il menu
Random Forest costruisce un grande numero di Decision Trees - tipicamente intorno a 100 o anche di più. Creare così tanti alberi diversi non è semplice solo modificando le impostazioni, quindi viene introdotta la casualità per aiutare. Fortunatamente, i Decision Trees sono molto sensibili a piccoli cambiamenti nei dati e nelle impostazioni, il che porta naturalmente a una grande varietà di alberi nella foresta.
Ci sono due fonti di casualità in un Random Forest:
- Campionamento dei dati per ogni albero;
- Campionamento delle caratteristiche a ogni nodo decisionale di ciascun albero.
Campionamento dei dati
Per creare un set di addestramento diverso per ogni Decision Tree in una foresta, si utilizza il metodo bootstrap (noto anche come bagging). L'idea è di campionare, con reinserimento, un dataset della stessa dimensione per ogni albero.
Per impostazione predefinita, la dimensione del dataset di ciascun albero corrisponde alla dimensione del dataset originale. Il campionamento con reinserimento può essere visto come una selezione casuale di un punto dati dal set di addestramento - simile all'estrazione di una carta da un mazzo. Tuttavia, a differenza dell'estrazione normale, ogni punto dati selezionato non viene rimosso, quindi lo stesso punto dati può essere scelto più volte.
Ogni albero viene addestrato su un sottoinsieme diverso dei dati, il che contribuisce già a rendere gli alberi eterogenei. Per aggiungere ancora più casualità e velocizzare l'addestramento, è possibile anche limitare il numero di caratteristiche che ogni albero considera durante la suddivisione.
Campionamento delle caratteristiche
In un albero decisionale standard, ogni nodo esamina tutte le caratteristiche disponibili per trovare la migliore suddivisione, solitamente calcolando metriche come la impurità di Gini. Questo processo è computazionalmente costoso.
In una Random Forest, solo un sottoinsieme casuale di caratteristiche viene considerato a ciascun nodo. Questo velocizza l'addestramento e aggiunge casualità, contribuendo a rendere gli alberi più eterogenei. Un approccio comune è utilizzare la radice quadrata del numero totale di caratteristiche. Ad esempio, se ci sono 9 caratteristiche, 3 potrebbero essere scelte casualmente a ogni nodo; se ci sono 10.000 caratteristiche, circa 100 potrebbero essere selezionate.
Le caratteristiche vengono campionate senza reinserimento, quindi la stessa caratteristica non apparirà più di una volta nello stesso nodo. Il numero di caratteristiche da considerare può essere regolato in base al caso d'uso.
È possibile controllare quante caratteristiche vengono considerate a ciascun nodo decisionale utilizzando il parametro max_features nell'implementazione di scikit-learn. Ecco alcune delle opzioni più comuni:
max_features='sqrt': utilizza la radice quadrata del numero totale di caratteristiche. Questa è una scelta predefinita comune che bilancia accuratezza ed efficienza;max_features='log2': utilizza il logaritmo in base 2 del numero totale di caratteristiche, offrendo ancora più casualità;max_features=0.1: utilizza il 10% delle caratteristiche, dove il valore è trattato come proporzione.
È anche possibile impostare max_features su qualsiasi proporzione compresa tra 0 e 1 (ad esempio, max_features=0.1 utilizza il 10% delle caratteristiche).
In sintesi, una Random Forest è progettata in modo che ciascun albero venga addestrato su un campione diverso dei dati e ogni nodo decisionale all'interno di questi alberi consideri un sottoinsieme casuale diverso di caratteristiche. Questa casualità integrata porta a una collezione diversificata di alberi, che alla fine migliora le prestazioni complessive del modello.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione