La Casualità della Foresta
Random Forest costruisce un grande numero di alberi decisionali - 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, gli alberi decisionali sono molto sensibili a piccoli cambiamenti nei dati e nelle impostazioni, il che porta naturalmente a una vasta varietà di alberi nella foresta.
Ci sono due fonti di casualità in una 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 albero decisionale 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 già contribuisce 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 le suddivisioni.
Campionamento delle Caratteristiche
In un albero decisionale standard, ogni nodo esamina tutte le caratteristiche disponibili per trovare la migliore suddivisione, solitamente calcolando metriche come l'impurità di Gini. Questo processo è computazionalmente oneroso.
In una Random Forest, solo un sottoinsieme casuale di caratteristiche viene considerato a ciascun nodo. Questo accelera l'addestramento e aggiunge casualità, contribuendo a rendere gli alberi più diversi. Un approccio comune consiste nell'utilizzare la radice quadrata del numero totale di caratteristiche. Ad esempio, se ci sono 9 caratteristiche, 3 potrebbero essere scelte casualmente a ciascun 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 in un singolo 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 scelte più comuni:
max_features='sqrt'
: utilizza la radice quadrata del numero totale di caratteristiche. Questo è un valore predefinito 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 tra 0
e 1
(ad esempio, max_features=0.1
utilizza il 10% delle caratteristiche).
In sintesi, una Random Forest è progettata in modo che ogni albero venga addestrato su un campione diverso dei dati e ogni nodo decisionale all'interno di questi alberi consideri un diverso sottoinsieme casuale 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
Awesome!
Completion rate improved to 4.17
La Casualità della Foresta
Scorri per mostrare il menu
Random Forest costruisce un grande numero di alberi decisionali - 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, gli alberi decisionali sono molto sensibili a piccoli cambiamenti nei dati e nelle impostazioni, il che porta naturalmente a una vasta varietà di alberi nella foresta.
Ci sono due fonti di casualità in una 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 albero decisionale 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 già contribuisce 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 le suddivisioni.
Campionamento delle Caratteristiche
In un albero decisionale standard, ogni nodo esamina tutte le caratteristiche disponibili per trovare la migliore suddivisione, solitamente calcolando metriche come l'impurità di Gini. Questo processo è computazionalmente oneroso.
In una Random Forest, solo un sottoinsieme casuale di caratteristiche viene considerato a ciascun nodo. Questo accelera l'addestramento e aggiunge casualità, contribuendo a rendere gli alberi più diversi. Un approccio comune consiste nell'utilizzare la radice quadrata del numero totale di caratteristiche. Ad esempio, se ci sono 9 caratteristiche, 3 potrebbero essere scelte casualmente a ciascun 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 in un singolo 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 scelte più comuni:
max_features='sqrt'
: utilizza la radice quadrata del numero totale di caratteristiche. Questo è un valore predefinito 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 tra 0
e 1
(ad esempio, max_features=0.1
utilizza il 10% delle caratteristiche).
In sintesi, una Random Forest è progettata in modo che ogni albero venga addestrato su un campione diverso dei dati e ogni nodo decisionale all'interno di questi alberi consideri un diverso sottoinsieme casuale 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!