I denne artikkelen vil vi se hvordan du bygger en Tilfeldig skogklassifisering bruker Scikit-Learn bibliotek av Python programmeringsspråk og for å gjøre dette bruker vi IRIS datasett som er et ganske vanlig og kjent datasett.
Tilfeldig skog
De Tilfeldig skog eller Random Decision Forest er en overvåket maskinlæringsalgoritme som brukes til klassifisering, regresjon og andre oppgaver ved hjelp av beslutningstrær. Random Forests er spesielt godt egnet for å håndtere store og komplekse datasett, håndtere høydimensjonale funksjonsrom og gi innsikt i funksjonens betydning. Denne algoritmens evne til å opprettholde høy prediktiv nøyaktighet og samtidig minimere overtilpasning gjør den til et populært valg på tvers av ulike domener, inkludert finans, helsevesen og bildeanalyse, blant andre.
Tilfeldig skogklassifisering
Den tilfeldige skogklassifisereren lager en sett av beslutningstrær fra en tilfeldig valgt undergruppe av treningssettet. Det er et sett med beslutningstrær (DT) fra en tilfeldig valgt undergruppe av treningssettet, og deretter samler den inn stemmene fra forskjellige beslutningstrær for å avgjøre den endelige prediksjonen.
Tilfeldig skogklassifisering
hvor mange null for en million
I tillegg kan den tilfeldige skogklassifikatoren håndtere både klassifiserings- og regresjonsoppgaver, og dens evne til å gi funksjonsviktighetspoeng gjør den til et verdifullt verktøy for å forstå betydningen av forskjellige variabler i datasettet.
Hvordan tilfeldig skogklassifisering fungerer
Random Forest Classification er en ensemblelæringsteknikk designet for å forbedre nøyaktigheten og robustheten til klassifiseringsoppgaver. Algoritmen bygger en mengde beslutningstrær under trening og gir ut klasse det er modusen for klassifiseringsklassene. Hvert beslutningstre i den tilfeldige skogen er konstruert ved å bruke en undergruppe av treningsdataene og en tilfeldig undergruppe av funksjoner som introduserer mangfold blant trærne, noe som gjør modellen mer robust og mindre utsatt for overtilpasning.
Den tilfeldige skogalgoritmen bruker en teknikk som kalles bagging (Bootstrap Aggregating) for å lage disse forskjellige undersettene.
I løpet av treningsfasen, hver tre er bygget ved å rekursivt partisjonere dataene basert på funksjonene. På hver dele, Algoritmen velger den beste funksjonen fra det tilfeldige delsettet, og optimaliserer for informasjonsforsterkning eller Gini-urenhet. Prosessen fortsetter til et forhåndsdefinert stoppkriterium er oppfylt, for eksempel å nå en maksimal dybde eller ha et minimum antall prøver i hver bladnode.
Når den tilfeldige skogen er trent, kan den lage spådommer ved å bruke hvert tre stemmer for en klasse, og klassen med flest stemmer blir den forutsagte klassen for inngangsdataene.
Funksjonsvalg i tilfeldige skoger
Funksjonsvalg i Random Forests er iboende innebygd i konstruksjonen av individuelle beslutningstrær og aggregeringsprosessen.
I løpet av opplæringsfasen bygges hvert beslutningstre ved å bruke et tilfeldig delsett av funksjoner, noe som bidrar til mangfold blant trærne. Prosessen er, kjent som feature bagging, bidrar til å forhindre dominansen av en enkelt funksjon og fremmer en mer robust modell.
Algoritmen evaluerer ulike delsett av funksjoner ved hvert splittpunkt, og velger den beste funksjonen for nodedeling basert på kriterier som informasjonsforsterkning eller Gini-urenhet. Følgelig inkluderer Random Forests naturligvis en form for funksjonsvalg, som sikrer at ensemblet drar nytte av et mangfoldig sett med funksjoner for å forbedre generalisering og redusere overtilpasning.
Random Forest Classifier i maskinlæring
Trinn 1: Laster inn datasett
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()> |
>
>
Trinn 2: Sjekke datasettinnhold og funksjonsnavn som finnes i det.
python3
print>(iris.target_names)> |
>
>
Produksjon:
[‘setosa’ ‘versicolor’ ‘virginica’]>
python3
print>(iris.feature_names)> |
>
sove i javascript
>
Produksjon:
[‘sepal length (cm)’, ’sepal width (cm)’, ’petal length (cm)’, ’petal width (cm)’]>
Trinn 3: Train Test Split
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>)> |
>
>
Trinn 4: Importer Random Forest Classifier-modul.
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})> |
>
>
Oversikt over datasettet
python3
# printing the top 5 datasets in iris dataset> print>(data.head())> |
>
>
Produksjon:
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>
Trinn 5: Opplæring av modell
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))> |
java matematikk
>
>
Produksjon:
ACCURACY OF THE MODEL: 0.9238095238095239>
Trinn 6: Forutsigelser
Python3
# predicting which type of flower it is.> clf.predict([[>3>,>3>,>2>,>2>]])> |
>
>
Produksjon:
array([0])>
Dette innebærer at det er det silkeaktig blomstertype slik vi fikk de tre artene eller klassene i datasettet vårt: Setosa, Versicolor og Virginia.
Sjekk de viktige funksjonene
Nå vil vi også finne ut de viktige funksjonene eller velge funksjoner i IRIS-datasettet ved å bruke følgende kodelinjer.
python3
tøm npm cache
# 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> |
>
>
Produksjon:
petal length (cm) 0.440050 petal width (cm) 0.423437 sepal length (cm) 0.103293 sepal width (cm) 0.033220 dtype: float64>
Tilfeldige skoger i Python's Scikit-Learn biblioteket kommer med et sett med hyperparametre som lar deg finjustere oppførselen til modellen. Å forstå og velge passende hyperparametere er avgjørende for å optimalisere modellytelsen.
Tilfeldige skogklassifiseringsparametere
- n_estimators: Antall trær i skogen.
- Flere trær fører generelt til bedre ytelse, men på bekostning av beregningstid.
- Start med en verdi på 100 og øk etter behov.
- max_depth: Maksimal dybde på hvert tre.
- Dypere trær kan fange opp mer komplekse mønstre, men også risikere overfitting.
- Eksperimenter med verdier mellom 5 og 15, og vurder lavere verdier for mindre datasett.
- max_features: Antall funksjoner som vurderes for deling ved hver node.
- En vanlig verdi er 'sqrt' (kvadratrot av det totale antallet funksjoner).
- Juster basert på datasettstørrelsen og funksjonens betydning.
- kriterium: Funksjon som brukes til å måle delt kvalitet ('gini' eller 'entropi').
- Gini-urenheter er ofte litt raskere, men begge er generelt like i ytelse.
- min_samples_split: Minimumsprøver som kreves for å dele en node.
- Høyere verdier kan forhindre overmontering, men for høye kan hindre modellens kompleksitet.
- Start med 2 og juster etter behov.
- min_samples_leaf: Minimumsprøver som kreves for å være ved en bladnode.
- Ligner på min_samples_split, men fokusert på bladnoder.
- Start med 1 og juster etter behov.
- Støvelhempe: Om du skal bruke bootstrap-sampling når du bygger trær (sant eller usant).
- Bootstrapping kan forbedre modellvarians og generalisering, men kan øke skjevheten litt.
Fordeler med Random Forest Classifier
- Ensemblenaturen til Random Forests, som kombinerer flere trær, gjør dem mindre utsatt for overfitting sammenlignet med individuelle beslutningstrær.
- Effektiv på datasett med et stort antall funksjoner, og den kan håndtere irrelevante variabler godt.
- Tilfeldige skoger kan gi innsikt i funksjonens betydning, hjelpe til med funksjonsvalg og forståelse av datasettet.
Ulemper med Random Forest Classifier
- Tilfeldige skoger kan være beregningsmessig dyre og kan kreve mer ressurser på grunn av bygging av flere beslutningstrær.
- Ensemblenaturen gjør det utfordrende å tolke resonnementet bak individuelle spådommer sammenlignet med et enkelt beslutningstre.
- I ubalanserte datasett kan tilfeldige skoger være partisk mot majoritetsklassen, noe som påvirker den prediktive ytelsen for minoritetsklasser.
Konklusjon
Som konklusjon fremstår Random Forests, med deres ensemble av beslutningstrær, som en robust løsning for ulike maskinlæringsoppgaver, og viser deres allsidighet og effektivitet.
Ofte stilte spørsmål (FAQs)
Sp. Hva er den tilfeldige skogklassifisereren?
Random Forest Classifier er en ensemblelæringsmetode som bruker flere beslutningstrær for klassifiseringsoppgaver, og forbedrer nøyaktigheten. Den utmerker seg i å håndtere komplekse data, redusere overtilpasning og gi robuste spådommer med viktige funksjoner.
Sp. Kan tilfeldig skog brukes til regresjon?
Random Forest kan brukes til både regresjons- og klassifiseringsoppgaver, noe som gjør det til en allsidig maskinlæringsalgoritme.
Q. Hva er prinsippet for tilfeldig skog?
Random Forest bygger flere beslutningstrær ved å bruke tilfeldige delsett av datasettet og kombinerer utdataene deres for forbedret nøyaktighet.
Q. Hva er bruken av tilfeldig skog?
Virkelige applikasjoner inkluderer:
- Medisinsk diagnose: Identifisering av sykdommer basert på pasientdata.
- Finansiere: Kredittscoring for risikovurdering i utlån.