In questo articolo vedremo come costruire un Classificatore casuale delle foreste usando il Libreria Scikit-Learn Di Linguaggio di programmazione Python e per fare questo usiamo il file Set di dati IRIS che è un set di dati abbastanza comune e famoso.
Foresta casuale
IL Foresta casuale o Random Decision Forest è un algoritmo di apprendimento automatico supervisionato utilizzato per la classificazione, la regressione e altre attività utilizzando alberi decisionali. Le foreste casuali sono particolarmente adatte per la gestione di set di dati grandi e complessi, per la gestione di spazi di funzionalità ad alta dimensione e per fornire informazioni sull'importanza delle funzionalità. La capacità di questo algoritmo di mantenere un’elevata precisione predittiva riducendo al minimo l’overfitting lo rende una scelta popolare in vari settori, tra cui finanza, sanità e analisi di immagini, tra gli altri.
Classificatore casuale delle foreste
Il classificatore della foresta casuale crea un file impostato Di alberi decisionali da un sottoinsieme selezionato casualmente del training set. Si tratta di un insieme di alberi decisionali (DT) da un sottoinsieme selezionato casualmente del set di addestramento e quindi raccoglie i voti da diversi alberi decisionali per decidere la previsione finale.
Classificatore casuale delle foreste
Inoltre, il classificatore di foreste casuali può gestire sia attività di classificazione che di regressione e la sua capacità di fornire punteggi di importanza delle caratteristiche lo rende uno strumento prezioso per comprendere il significato delle diverse variabili nel set di dati.
Come funziona la classificazione casuale delle foreste
La classificazione casuale delle foreste è una tecnica di apprendimento d'insieme progettata per migliorare l'accuratezza e la robustezza dei compiti di classificazione. L'algoritmo crea una moltitudine di alberi decisionali durante l'addestramento e restituisce il file classe questa è la modalità delle classi di classificazione. Ogni albero decisionale nella foresta casuale è costruito utilizzando un sottoinsieme di dati di addestramento e un sottoinsieme casuale di caratteristiche che introducono diversità tra gli alberi, rendendo il modello più robusto e meno incline all'overfitting.
L'algoritmo della foresta casuale utilizza una tecnica chiamata bagging (Bootstrap Aggregating) per creare questi diversi sottoinsiemi.
Durante la fase di formazione, ciascuno albero è costruito partizionando ricorsivamente i dati in base alle funzionalità. A ciascuno diviso, l'algoritmo seleziona la caratteristica migliore dal sottoinsieme casuale, ottimizzando per il guadagno di informazioni o l'impurità Gini. Il processo continua finché non viene soddisfatto un criterio di arresto predefinito, come il raggiungimento di una profondità massima o il numero minimo di campioni in ciascun nodo foglia.
Una volta addestrata la foresta casuale, è possibile effettuare previsioni utilizzando i voti di ciascun albero per una classe e la classe con il maggior numero di voti diventa la classe prevista per i dati di input.
Selezione delle funzionalità nelle foreste casuali
Selezione delle funzionalità nelle Random Forests è intrinsecamente incorporato nella costruzione di alberi decisionali individuali e nel processo di aggregazione.
Durante la fase di training, ogni albero decisionale viene costruito utilizzando un sottoinsieme casuale di caratteristiche, contribuendo alla diversità tra gli alberi. Il processo, noto come feature bagging, aiuta a prevenire il predominio di ogni singola funzionalità e promuove un modello più robusto.
L'algoritmo valuta vari sottoinsiemi di caratteristiche in ciascun punto di divisione, selezionando la migliore caratteristica per la suddivisione del nodo in base a criteri come il guadagno di informazioni o l'impurità Gini. Di conseguenza, le foreste casuali incorporano naturalmente una forma di selezione delle caratteristiche, garantendo che l'insieme tragga vantaggio da un insieme diversificato di caratteristiche per migliorare la generalizzazione e ridurre l'overfitting.
Classificatore di foreste casuali nell'apprendimento automatico
Passaggio 1: caricamento del set di dati
python3
strumento di cattura in Ubuntu
# importing required libraries> # importing Scikit-learn library and datasets package> from> sklearn>import> datasets> # Loading the iris plants dataset (classification)> iris>=> datasets.load_iris()> |
>
>
Passaggio 2: controllo del contenuto del set di dati e dei nomi delle funzionalità presenti in esso.
python3
print>(iris.target_names)> |
>
>
Produzione:
[‘setosa’ ‘versicolor’ ‘virginica’]>
python3
print>(iris.feature_names)> |
>
multithreading Java
>
Produzione:
[‘sepal length (cm)’, ’sepal width (cm)’, ’petal length (cm)’, ’petal width (cm)’]>
Passaggio 3: suddivisione del test del treno
python3
# dividing the datasets into two parts i.e. training datasets and test datasets> X, y>=> datasets.load_iris( return_X_y>=> True>)> # Splitting arrays or matrices into random train and test subsets> from> sklearn.model_selection>import> train_test_split> # i.e. 70 % training dataset and 30 % test datasets> X_train, X_test, y_train, y_test>=> train_test_split(X, y, test_size>=> 0.30>)> |
>
>
Passaggio 4: importa il modulo Classificatore di foreste casuali.
python3
# importing random forest classifier from assemble module> from> sklearn.ensemble>import> RandomForestClassifier> import> pandas as pd> # creating dataframe of IRIS dataset> data>=> pd.DataFrame({>'sepallength'>: iris.data[:,>0>],>'sepalwidth'>: iris.data[:,>1>],> >'petallength'>: iris.data[:,>2>],>'petalwidth'>: iris.data[:,>3>],> >'species'>: iris.target})> |
>
>
Panoramica del set di dati
python3
# printing the top 5 datasets in iris dataset> print>(data.head())> |
>
>
Produzione:
sepallength sepalwidth petallength petalwidth species 0 5.1 3.5 1.4 0.2 0 1 4.9 3.0 1.4 0.2 0 2 4.7 3.2 1.3 0.2 0 3 4.6 3.1 1.5 0.2 0 4 5.0 3.6 1.4 0.2 0>
Passaggio 5: formazione del modello
python3
# creating a RF classifier> clf>=> RandomForestClassifier(n_estimators>=> 100>)> # Training the model on the training dataset> # fit function is used to train the model using the training sets as parameters> clf.fit(X_train, y_train)> # performing predictions on the test dataset> y_pred>=> clf.predict(X_test)> # metrics are used to find accuracy or error> from> sklearn>import> metrics> print>()> # using metrics module for accuracy calculation> print>(>'ACCURACY OF THE MODEL:'>, metrics.accuracy_score(y_test, y_pred))> |
directory di rinomina di Linux
>
>
Produzione:
ACCURACY OF THE MODEL: 0.9238095238095239>
Passaggio 6: previsioni
Python3
# predicting which type of flower it is.> clf.predict([[>3>,>3>,>2>,>2>]])> |
>
disegno del rettangolo gimp
>
Produzione:
array([0])>
Ciò implica che lo sia setosa tipo di fiore poiché abbiamo ottenuto le tre specie o classi nel nostro set di dati: Setosa, Versicolor e Virginia.
Controlla le caratteristiche importanti
Ora scopriremo anche le caratteristiche importanti o selezioneremo le caratteristiche nel set di dati IRIS utilizzando le seguenti righe di codice.
python3
# using the feature importance variable> import> pandas as pd> feature_imp>=> pd.Series(clf.feature_importances_, index>=> iris.feature_names).sort_values(ascending>=> False>)> feature_imp> |
>
>
Produzione:
petal length (cm) 0.440050 petal width (cm) 0.423437 sepal length (cm) 0.103293 sepal width (cm) 0.033220 dtype: float64>
Foreste casuali in Python Scikit-Impara la libreria viene fornita con una serie di iperparametri che consentono di ottimizzare il comportamento del modello. Comprendere e selezionare gli iperparametri appropriati è fondamentale per ottimizzare le prestazioni del modello.
Parametri casuali del classificatore della foresta
- n_estimatori: Numero di alberi nella foresta.
- Un numero maggiore di alberi generalmente porta a prestazioni migliori, ma a scapito del tempo di calcolo.
- Inizia con un valore pari a 100 e aumenta secondo necessità.
- profondità massima: Profondità massima di ogni albero.
- Gli alberi più profondi possono catturare modelli più complessi, ma rischiano anche un adattamento eccessivo.
- Sperimenta valori compresi tra 5 e 15 e considera valori più bassi per set di dati più piccoli.
- caratteristiche_massime: Numero di caratteristiche considerate per la suddivisione in ciascun nodo.
- Un valore comune è 'sqrt' (radice quadrata del numero totale di funzionalità).
- Modificare in base alle dimensioni del set di dati e all'importanza delle funzionalità.
- criterio: Funzione utilizzata per misurare la qualità della divisione ('gini' o 'entropia').
- L'impurità Gini è spesso leggermente più veloce, ma entrambe hanno generalmente prestazioni simili.
- min_samples_split: Campioni minimi richiesti per dividere un nodo.
- Valori più elevati possono impedire un adattamento eccessivo, ma un valore troppo elevato può ostacolare la complessità del modello.
- Inizia con 2 e aggiusta secondo necessità.
- min_samples_leaf: I campioni minimi richiesti devono trovarsi in un nodo foglia.
- Simile a min_samples_split, ma focalizzato sui nodi foglia.
- Inizia con 1 e aggiusta secondo necessità.
- bootstrap: Se utilizzare il campionamento bootstrap durante la creazione di alberi (Vero o Falso).
- Il bootstrap può migliorare la varianza e la generalizzazione del modello, ma può aumentare leggermente la distorsione.
Vantaggi del classificatore casuale della foresta
- La natura d'insieme delle foreste casuali, che combinano più alberi, le rende meno inclini al sovradattamento rispetto agli alberi decisionali individuali.
- Efficace su set di dati con un gran numero di funzionalità e può gestire bene variabili irrilevanti.
- Le foreste casuali possono fornire approfondimenti sull'importanza delle funzionalità, aiutando nella selezione delle funzionalità e nella comprensione del set di dati.
Svantaggi del classificatore casuale della foresta
- Le foreste casuali possono essere computazionalmente costose e potrebbero richiedere più risorse a causa della costruzione di più alberi decisionali.
- La natura dell’insieme rende difficile interpretare il ragionamento alla base delle previsioni individuali rispetto a un singolo albero decisionale.
- In set di dati sbilanciati, le foreste casuali possono essere sbilanciate verso la classe maggioritaria, incidendo sulle prestazioni predittive per le classi minoritarie.
Conclusione
In conclusione, le Random Forests, con il loro insieme di alberi decisionali, si distinguono come una soluzione solida per varie attività di machine learning, dimostrando la loro versatilità ed efficacia.
Domande frequenti (FAQ)
D. Cos'è il classificatore di foreste casuali?
Random Forest Classifier è un metodo di apprendimento d'insieme che utilizza più alberi decisionali per attività di classificazione, migliorando la precisione. Eccelle nella gestione di dati complessi, nel mitigare l'overfitting e nel fornire previsioni solide con funzionalità importanti.
D. È possibile utilizzare la foresta casuale per la regressione?
Random Forest può essere utilizzato sia per attività di regressione che di classificazione, rendendolo un versatile algoritmo di apprendimento automatico.
D. Qual è il principio della foresta casuale?
Random Forest crea più alberi decisionali utilizzando sottoinsiemi casuali del set di dati e combina i relativi risultati per una maggiore precisione.
D. Quali sono le applicazioni della foresta casuale?
Le applicazioni reali includono:
- Diagnosi medica: Identificazione delle malattie sulla base dei dati del paziente.
- Finanza: Credit scoring per la valutazione del rischio nei prestiti.