Classificatore forestale casuale: panoramica, come funziona, pro e contro

Pubblicato: 2021-06-18

Ti chiedi mai come Netflix scelga un film da consigliarti? O come Amazon sceglie i prodotti da mostrare nel tuo feed?

Tutti utilizzano sistemi di raccomandazione, una tecnologia che utilizza il classificatore forestale casuale.

Il classificatore di foresta casuale è tra gli algoritmi di classificazione più popolari. Oggi impareremo a conoscere questo robusto algoritmo di apprendimento automatico e vedremo come funziona. Imparerai anche la sua implementazione mentre condivideremo un tutorial passo-passo su come utilizzare il classificatore di foreste casuali in un problema reale.

Tratteremo i vantaggi e gli svantaggi di random forest sklearn e molto altro nei seguenti punti.

Sommario

Classificatore casuale della foresta: un'introduzione

Il classificatore di foresta casuale è un algoritmo di apprendimento supervisionato che puoi utilizzare per problemi di regressione e classificazione. È tra gli algoritmi di apprendimento automatico più popolari grazie alla sua elevata flessibilità e facilità di implementazione.

Perché il classificatore di foresta casuale è chiamato foresta casuale?

Questo perché è costituito da più alberi decisionali proprio come una foresta ha molti alberi. Inoltre, usa la casualità per migliorare la sua precisione e combattere l'overfitting, che può essere un grosso problema per un algoritmo così sofisticato. Questi algoritmi creano alberi decisionali basati su una selezione casuale di campioni di dati e ottengono previsioni da ogni albero. Successivamente, selezionano la migliore soluzione praticabile attraverso i voti.

Ha numerose applicazioni nella nostra vita quotidiana come selettori di funzionalità, sistemi di raccomandazione e classificatori di immagini. Alcune delle sue applicazioni reali includono il rilevamento delle frodi, la classificazione delle domande di prestito e la previsione delle malattie. Costituisce la base per l'algoritmo Boruta, che seleziona le caratteristiche vitali in un set di dati.

Come funziona?

Supponendo che il tuo set di dati abbia funzionalità "m", la foresta casuale sceglierà casualmente le funzionalità "k" dove k < m. Ora, l'algoritmo calcolerà il nodo radice tra le k caratteristiche selezionando un nodo che ha il più alto guadagno di informazioni.

Successivamente, l'algoritmo divide il nodo in nodi figlio e ripete questo processo "n" volte. Ora hai una foresta con n alberi. Infine, eseguirai il bootstrapping, ovvero combinerai i risultati di tutti gli alberi decisionali presenti nella tua foresta.

È sicuramente uno degli algoritmi più sofisticati poiché si basa sulla funzionalità degli alberi decisionali.

Tecnicamente, è un algoritmo di insieme. L'algoritmo genera i singoli alberi decisionali attraverso un'indicazione di selezione degli attributi. Ogni albero si basa su un campione casuale indipendente. In un problema di classificazione, ogni albero vota e la classe più popolare è il risultato finale. D'altra parte, in un problema di regressione, calcolerai la media di tutti gli output dell'albero e questo sarebbe il tuo risultato finale.

Un'implementazione Python della foresta casuale è molto più semplice e robusta di altri algoritmi non lineari utilizzati per problemi di classificazione.

L'esempio seguente ti aiuterà a capire come usi il classificatore forestale casuale nella tua vita quotidiana:

Esempio

Supponi di voler acquistare una nuova auto e di chiedere al tuo migliore amico Supratik i suoi consigli. Ti chiederebbe le tue preferenze, il tuo budget e le tue esigenze e condividerebbe anche le sue esperienze passate con la sua auto per darti una raccomandazione.

Qui, Supratik utilizza il metodo Decision Tree per darti un feedback in base alla tua risposta. Dopo i suoi suggerimenti, ti senti rischioso riguardo ai suoi consigli, quindi chiedi ad Aditya i suoi consigli e lui ti chiede anche le tue preferenze e altri requisiti.

Supponiamo di ripetere questo processo e di porre questa domanda a 'n' amici. Ora hai diverse auto tra cui scegliere. Raccogli tutti i voti dei tuoi amici e decidi di acquistare l'auto che ha più voti. Ora hai utilizzato il metodo della foresta casuale per scegliere un'auto da acquistare.

Tuttavia, più ripeti questo processo, più sei incline all'overfitting. Questo perché il tuo set di dati negli alberi decisionali continuerà a diventare più specifico. La foresta casuale combatte questo problema usando la casualità.

Pro e contro del classificatore di foreste casuali

Ogni algoritmo di apprendimento automatico ha i suoi vantaggi e svantaggi. Di seguito sono riportati i vantaggi e gli svantaggi dell'algoritmo di classificazione delle foreste casuali:

Vantaggi

  • L'algoritmo della foresta casuale è significativamente più accurato della maggior parte dei classificatori non lineari.
  • Questo algoritmo è anche molto robusto perché utilizza più alberi decisionali per arrivare al suo risultato.
  • Il classificatore di foresta casuale non affronta il problema dell'overfitting perché prende la media di tutte le previsioni, annullando le distorsioni e, quindi, risolvendo il problema dell'overfitting.
  • È possibile utilizzare questo algoritmo sia per problemi di regressione che di classificazione, rendendolo un algoritmo altamente versatile.
  • Le foreste casuali non consentono ai valori mancanti di causare problemi. Possono utilizzare i valori mediani per sostituire le variabili continue o calcolare la media ponderata per prossimità dei valori mancanti per risolvere questo problema.
  • Questo algoritmo ti offre un'importanza relativa delle funzionalità che ti consente di selezionare facilmente le funzionalità che contribuiscono maggiormente al tuo classificatore.

Svantaggi

  • Questo algoritmo è sostanzialmente più lento di altri algoritmi di classificazione perché utilizza più alberi decisionali per fare previsioni. Quando un classificatore forestale casuale fa una previsione, ogni albero della foresta deve fare una previsione per lo stesso input e votare lo stesso. Questo processo può richiedere molto tempo.
  • A causa del suo ritmo lento, i classificatori forestali casuali possono non essere adatti per le previsioni in tempo reale.
  • Il modello può essere piuttosto difficile da interpretare rispetto a un albero decisionale in quanto è possibile effettuare una selezione seguendo il percorso dell'albero. Tuttavia, ciò non è possibile in una foresta casuale poiché ha più alberi decisionali.

Differenza tra foresta casuale e alberi decisionali

Un albero decisionale, come suggerisce il nome, è un diagramma di flusso ad albero con rami e nodi. L'algoritmo divide i dati in base alle caratteristiche di input in ogni nodo e genera più rami come output. È un processo iterativo e aumenta il numero di rami creati (output) e la differenziazione dei dati. Questo processo si ripete finché non viene creato un nodo in cui quasi tutti i dati appartengono alla stessa classe e non sono possibili più rami o suddivisioni.

D'altra parte, una foresta casuale utilizza più alberi decisionali, da cui il nome "foresta". Raccoglie i voti dai vari alberi decisionali utilizzati per fare la previsione richiesta.

Quindi, la differenza principale tra un classificatore forestale casuale e un albero decisionale è che il primo utilizza una raccolta del secondo. Ecco alcune ulteriori differenze tra i due:

  • Gli alberi decisionali affrontano il problema dell'overfitting, ma le foreste casuali no. Questo perché i classificatori di foreste casuali utilizzano sottoinsiemi casuali per contrastare questo problema.
  • Gli alberi decisionali sono più veloci delle foreste casuali. Le foreste casuali utilizzano più alberi decisionali, il che richiede molta potenza di calcolo e quindi più tempo.
  • Gli alberi decisionali sono più facili da interpretare rispetto alle foreste casuali e puoi convertire facilmente i primi in base alle regole, ma è piuttosto difficile fare lo stesso con i secondi.

Costruire l'algoritmo (Random Forest Sklearn)

Nell'esempio seguente, abbiamo eseguito un'implementazione Python della foresta casuale utilizzando la libreria scikit-learn. Puoi seguire i passaggi di questo tutorial per creare un tuo classificatore di foresta casuale.

Sebbene l'80% di qualsiasi attività di data science richieda l'ottimizzazione dei dati, che include la pulizia dei dati, la pulizia, la correzione dei valori mancanti e molto altro. Tuttavia, in questo esempio, ci concentreremo esclusivamente sull'implementazione del nostro algoritmo.

Primo passaggio: importare le librerie e caricare il set di dati

Innanzitutto, dovremo importare le librerie richieste e caricare il nostro set di dati in un frame di dati.

Ingresso:

#Importazione delle librerie richieste

importa panda come pd

importa numpy come np

importa matplotlib.pyplot come plt

#Importazione del set di dati

da sklearn.datasets importa load_iris
set di dati = carico_iris ()

Secondo passaggio: suddividere il set di dati in un set di addestramento e un set di test

Dopo aver importato le librerie necessarie e caricato i dati, dobbiamo dividere il nostro set di dati in un set di addestramento e un set di test. Il set di addestramento ci aiuterà ad addestrare il modello e il set di test ci aiuterà a determinare quanto sia effettivamente accurato il nostro modello.

Ingresso:

# Adatta il classificatore al training set

da sklearn.tree import DecisionTreeClassifier

modello = DecisionTreeClassifier(criterion = 'entropy' , splitter = 'best' , random_state = 0)

model.fit(X_treno, y_treno)

Produzione:

DecisionTreeClassifier(class_weight=Nessuno, criterion='entropia' , max_depth=Nessuno,
max_features=Nessuno, max_leaf_nodes=Nessuno,
min_impurity_decrease=0.0, min_impurity_split=Nessuno,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, presort=Falso, random_state=0,

splitter='migliore')

Terzo passaggio: creare un classificatore foresta casuale

Ora creeremo il nostro classificatore di foresta casuale usando Python e scikit-learn.

Ingresso:

#Adattamento del classificatore al training set

da sklearn.ensemble importa RandomForestClassifier

modello = RandomForestClassifier(n_estimators=100, criterio-'entropy', random_state = 0)

model.fit(X_treno, y_treno)

Produzione:

RandomForestClassifier(bootstrap=True, class_weight=Nessuno, criterion='entropia',

max_depth=Nessuno, max_features='auto', max_leaf_nodes=Nessuno,

min_impurity_decrease=0.0, min_impurity_split=Nessuno,

min_samples_leaf=1, min_sampes_split=2,

min_weight_fraction_leaf=0.0, n_estimators=100, n_jobs=Nessuno,

oob_score=Falso, random_state=0, verbose=0, warm_start=Falso)

Quarto passaggio: prevedere i risultati e creare la matrice di confusione

Una volta creato il nostro classificatore, possiamo prevedere i risultati utilizzandolo sul set di test e creare la matrice di confusione e ottenere il punteggio di precisione per il modello. Più alto è il punteggio, più accurato è il nostro modello.

Ingresso:

#Prevedi i risultati del set di test

y_pred = mode.predict(X_test)

#Crea la matrice di confusione

da sklearn.metrics import confusion_matrix

cm = matrice_confusione(y_test, y_pred)

cm

Uscita :

matrice ([[16, 0, 0]

[0, 17, 1]

[0, 0, 11]])

Ingresso :

#Ottieni il punteggio per il tuo modello

model.score(X_test, y_test)

Uscita :

0.977777777777777777

Conclusione

I classificatori di foreste casuali hanno molte applicazioni. Sono tra gli algoritmi di machine learning più robusti e sono un must per qualsiasi professionista di AI e ML.

Se sei interessato a saperne di più sull'intelligenza artificiale, dai un'occhiata al programma Executive PG di IIIT-B e upGrad in Machine Learning e AI, progettato per i professionisti che lavorano e offre oltre 450 ore di formazione rigorosa, oltre 30 casi di studio e incarichi, IIIT -B Status di Alumni, oltre 5 progetti pratici pratici e assistenza sul lavoro con le migliori aziende.

Che cos'è Random Forest nell'apprendimento automatico?

Random Forest è un metodo di apprendimento d'insieme che può fornire previsioni più accurate rispetto alla maggior parte degli altri algoritmi di apprendimento automatico. È comunemente usato nell'apprendimento dell'albero decisionale. Una foresta viene creata utilizzando alberi decisionali, ogni albero decisionale è un forte classificatore a sé stante. Questi alberi decisionali vengono utilizzati per creare una foresta di classificatori forti. Questa foresta di classificatori forti offre una previsione migliore rispetto agli alberi decisionali o ad altri algoritmi di apprendimento automatico.

Quali sono le differenze tra foresta casuale e alberi decisionali?

Un albero decisionale è un diagramma di flusso che descrive il processo di analisi per un determinato problema. Tendiamo a usarli più frequentemente per problemi di classificazione. Un albero decisionale descrive il processo di eliminazione necessario per effettuare una classificazione. A differenza dell'albero decisionale, la foresta casuale si basa su un insieme di alberi e molti studi dimostrano che è più potente dell'albero decisionale in generale. Inoltre, la foresta casuale è più resistente all'overfitting ed è più stabile in presenza di dati mancanti.

Quali sono gli svantaggi della foresta casuale?

Random Forest è un modello leggermente complesso. Non è un modello a scatola nera e non è facile interpretare i risultati. È più lento di altri modelli di apprendimento automatico. Richiede un gran numero di funzioni per ottenere una buona precisione. Le foreste casuali sono un tipo di metodo di apprendimento dell'insieme come altri metodi dell'insieme come il bagging, il boosting o lo stacking. Questi metodi tendono ad essere instabili, il che significa che se i dati di addestramento cambiano leggermente, il modello finale può cambiare drasticamente.