logo

Willekeurige bosclassificatie met behulp van Scikit-learn

In dit artikel zullen we zien hoe u een Willekeurige bosclassificatie de ... gebruiken Scikit-Learn-bibliotheek van Python-programmeertaal en om dit te doen, gebruiken we de IRIS-gegevensset wat een vrij veel voorkomende en beroemde dataset is.

Willekeurig bos

De Willekeurig bos of Random Decision Forest is een machine learning-algoritme onder toezicht dat wordt gebruikt voor classificatie, regressie en andere taken met behulp van beslissingsbomen. Willekeurige bossen zijn bijzonder geschikt voor het verwerken van grote en complexe datasets, het omgaan met hoogdimensionale kenmerkruimten en het verschaffen van inzicht in het belang van kenmerken. Het vermogen van dit algoritme om een ​​hoge voorspellende nauwkeurigheid te behouden en tegelijkertijd overfitting te minimaliseren, maakt het een populaire keuze in verschillende domeinen, waaronder financiën, gezondheidszorg en beeldanalyse.

Willekeurige bosclassificatie

De willekeurige bosclassificatie creëert een set van Beslissingsbomen uit een willekeurig geselecteerde subset van de trainingsset. Het is een reeks beslissingsbomen (DT) uit een willekeurig geselecteerde subset van de trainingsset en verzamelt vervolgens de stemmen van verschillende beslissingsbomen om tot de uiteindelijke voorspelling te komen.



Willekeurige bosclassificatie

Bovendien kan de willekeurige forest-classificator zowel classificatie- als regressietaken afhandelen, en zijn vermogen om belangrijkheidsscores voor functies te leveren maakt het tot een waardevol hulpmiddel voor het begrijpen van de betekenis van verschillende variabelen in de dataset.

Hoe willekeurige bosclassificatie werkt

Random Forest Classification is een ensemble-leertechniek die is ontworpen om de nauwkeurigheid en robuustheid van classificatietaken te verbeteren. Het algoritme bouwt tijdens de training een groot aantal beslissingsbomen en voert de klas dat is de modus van de classificatieklassen. Elke beslissingsboom in het willekeurige bos wordt geconstrueerd met behulp van een subset van de trainingsgegevens en een willekeurige subset van kenmerken die diversiteit tussen de bomen introduceren, waardoor het model robuuster wordt en minder vatbaar voor overfitting.

Het willekeurige forest-algoritme maakt gebruik van een techniek genaamd bagging (Bootstrap Aggregating) om deze diverse subsets te creëren.

Tijdens de trainingsfase kan elk boom is gebouwd door de gegevens recursief te verdelen op basis van de functies. Bij elk splitsen, het algoritme selecteert de beste eigenschap uit de willekeurige subset, waarbij wordt geoptimaliseerd voor informatiewinst of Gini-onzuiverheid. Het proces gaat door totdat aan een vooraf gedefinieerd stopcriterium wordt voldaan, zoals het bereiken van een maximale diepte of het hebben van een minimaal aantal monsters in elk bladknooppunt.

polymorfisme in Java

Zodra het willekeurige bos is getraind, kan het voorspellingen doen, waarbij elke boom voor een klasse stemt, en de klasse met de meeste stemmen wordt de voorspelde klasse voor de invoergegevens.

Functieselectie in willekeurige forests

Functieselectie in Random Forests is inherent ingebed in de constructie van individuele beslissingsbomen en het aggregatieproces.

Tijdens de trainingsfase wordt elke beslisboom opgebouwd met behulp van een willekeurige subset van kenmerken, wat bijdraagt ​​aan de diversiteit tussen de bomen. Dit proces, bekend als feature bagging, helpt de dominantie van een afzonderlijk kenmerk te voorkomen en bevordert een robuuster model.

Het algoritme evalueert verschillende subsets van functies op elk splitspunt en selecteert de beste functie voor het splitsen van knooppunten op basis van criteria zoals informatiewinst of Gini-onzuiverheid. Bijgevolg omvatten Random Forests op natuurlijke wijze een vorm van kenmerkselectie, waardoor wordt verzekerd dat het ensemble profiteert van een gevarieerde reeks kenmerken om de generalisatie te verbeteren en overfitting te verminderen.

Willekeurige bosclassificatie in machinaal leren

Stap 1: Gegevensset laden

python3




# importing required libraries> # importing Scikit-learn library and datasets package> from> sklearn>import> datasets> # Loading the iris plants dataset (classification)> iris>=> datasets.load_iris()>

>

>

Stap 2: Controleren van de inhoud van de dataset en de daarin aanwezige namen van functies.

python3




print>(iris.target_names)>

>

>

Uitgang:

[‘setosa’ ‘versicolor’ ‘virginica’]>

python3




print>(iris.feature_names)>

>

>

Uitgang:

[‘sepal length (cm)’, ’sepal width (cm)’, ’petal length (cm)’, ’petal width (cm)’]>

Stap 3: Treintestsplitsing

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>)>

>

>

Stap 4: Importeer de Random Forest Classifier-module.

python3


shehzad poonawala



# 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})>

>

>

Overzicht van de gegevensset

python3




# printing the top 5 datasets in iris dataset> print>(data.head())>

>

>

Uitgang:

 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>

Stap 5: Trainen van het model

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))>

Python sorteerwoordenboek

>

>

Uitgang:

ACCURACY OF THE MODEL: 0.9238095238095239>

Stap 6: Voorspellingen

Python3




# predicting which type of flower it is.> clf.predict([[>3>,>3>,>2>,>2>]])>

>

>

Uitgang:

array([0])>

Dit impliceert dat dit zo is zijdezacht bloemtype zoals we de drie soorten of klassen in onze dataset hebben: Setosa, Versicolor en Virginia.

Controleer de belangrijke kenmerken

Nu zullen we ook de belangrijke kenmerken of het selecteren van kenmerken in de IRIS-dataset ontdekken door de volgende coderegels te gebruiken.

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>

>

>

Uitgang:

petal length (cm) 0.440050 petal width (cm) 0.423437 sepal length (cm) 0.103293 sepal width (cm) 0.033220 dtype: float64>

Willekeurige bossen in Python's Scikit-Leer bibliotheek wordt geleverd met een set hyperparameters waarmee u het gedrag van het model kunt verfijnen. Het begrijpen en selecteren van geschikte hyperparameters is cruciaal voor het optimaliseren van de modelprestaties.

Willekeurige bosclassificatieparameters

  • n_schatters: Aantal bomen in het bos.
    • Meer bomen leiden over het algemeen tot betere prestaties, maar dit gaat ten koste van de rekentijd.
    • Begin met een waarde van 100 en verhoog deze indien nodig.
  • maximale diepte: Maximale diepte van elke boom.
    • Diepere bomen kunnen complexere patronen vastleggen, maar lopen ook het risico van overfitting.
    • Experimenteer met waarden tussen 5 en 15, en overweeg lagere waarden voor kleinere datasets.
  • max_functies: Aantal features dat in aanmerking komt voor splitsing op elk knooppunt.
    • Een veel voorkomende waarde is ‘sqrt’ (vierkantswortel van het totale aantal features).
    • Pas aan op basis van de datasetgrootte en het belang van de functies.
  • criterium: Functie die wordt gebruikt om de splitsingskwaliteit te meten (‘gini’ of ‘entropie’).
    • Gini-onzuiverheid is vaak iets sneller, maar beide presteren over het algemeen vergelijkbaar.
  • min_samples_split: Minimale monsters die nodig zijn om een ​​knooppunt te splitsen.
    • Hogere waarden kunnen overfitting voorkomen, maar te hoge waarden kunnen de complexiteit van het model belemmeren.
    • Begin met 2 en pas indien nodig aan.
  • min_monsters_blad: Het minimale vereiste aantal monsters moet zich op een bladknooppunt bevinden.
    • Vergelijkbaar met min_samples_split, maar gericht op leaf-knooppunten.
    • Begin met 1 en pas indien nodig aan.
  • bootstrap: Of er bootstrap-steekproeven moeten worden gebruikt bij het bouwen van bomen (Waar of Niet waar).
    • Bootstrapping kan de modelvariantie en generalisatie verbeteren, maar kan de bias enigszins vergroten.

Voordelen van Random Forest Classifier

  • Het ensemblekarakter van willekeurige bossen, waarbij meerdere bomen worden gecombineerd, maakt ze minder vatbaar voor overfitting in vergelijking met individuele beslissingsbomen.
  • Effectief op datasets met een groot aantal functies, en kan goed omgaan met irrelevante variabelen.
  • Willekeurige bossen kunnen inzicht bieden in het belang van functies, helpen bij de selectie van functies en het begrijpen van de dataset.

Nadelen van Random Forest Classifier

  • Willekeurige bossen kunnen rekentechnisch duur zijn en vereisen mogelijk meer bronnen vanwege de constructie van meerdere beslissingsbomen.
  • Het ensemblekarakter maakt het een uitdaging om de redenering achter individuele voorspellingen te interpreteren in vergelijking met een enkele beslissingsboom.
  • In onevenwichtige datasets kunnen Random Forests een voorkeur hebben voor de meerderheidsklasse, wat van invloed is op de voorspellende prestaties voor minderheidsklassen.

Conclusie

Concluderend valt op dat Random Forests, met hun ensemble van beslissingsbomen, opvalt als een robuuste oplossing voor verschillende machine learning-taken, wat hun veelzijdigheid en effectiviteit aantoont.

Veelgestelde vragen (FAQ's)

V. Wat is de willekeurige bosclassificatie?

Random Forest Classifier is een ensemble-leermethode die meerdere beslissingsbomen gebruikt voor classificatietaken, waardoor de nauwkeurigheid wordt verbeterd. Het blinkt uit in het verwerken van complexe gegevens, het tegengaan van overfitting en het bieden van robuuste voorspellingen met functiebelang.

V. Kan een willekeurig bos worden gebruikt voor regressie?

Random Forest kan worden gebruikt voor zowel regressie- als classificatietaken, waardoor het een veelzijdig machine learning-algoritme is.

V. Wat is het principe van willekeurig bos?

Random Forest bouwt meerdere beslissingsbomen met behulp van willekeurige subsets van de dataset en combineert hun output voor verbeterde nauwkeurigheid.

V. Wat zijn de toepassingen van willekeurig bos?

Echte toepassingen zijn onder meer:

  • Medische diagnose: Ziekten identificeren op basis van patiëntgegevens.
  • Financiën: Kredietscore voor risicobeoordeling bij kredietverlening.