I denne artikel vil vi se, hvordan man bygger en Tilfældig skovklassificering bruger Scikit-Learn bibliotek af Python programmeringssprog og for at gøre dette bruger vi IRIS datasæt som er et ganske almindeligt og berømt datasæt.
Tilfældig Skov
Det Tilfældig skov eller Random Decision Forest er en overvåget maskinlæringsalgoritme, der bruges til klassificering, regression og andre opgaver ved hjælp af beslutningstræer. Tilfældige skove er særligt velegnede til håndtering af store og komplekse datasæt, håndtering af højdimensionelle funktionsrum og til at give indsigt i funktioners betydning. Denne algoritmes evne til at opretholde høj prædiktiv nøjagtighed og samtidig minimere overtilpasning gør den til et populært valg på tværs af forskellige domæner, herunder økonomi, sundhedspleje og billedanalyse, blandt andre.
Tilfældig skovklassificering
Tilfældig skovklassifikatoren skaber en sæt af beslutningstræer fra en tilfældigt udvalgt delmængde af træningssættet. Det er et sæt beslutningstræer (DT) fra en tilfældigt udvalgt delmængde af træningssættet, og derefter samler den stemmerne fra forskellige beslutningstræer for at afgøre den endelige forudsigelse.
Tilfældig skovklassificering
preg_match
Derudover kan den tilfældige skovklassifikator håndtere både klassifikations- og regressionsopgaver, og dens evne til at give karakteristika for karakteristika gør det til et værdifuldt værktøj til at forstå betydningen af forskellige variabler i datasættet.
Hvordan tilfældig skovklassificering fungerer
Random Forest Classification er en ensemblelæringsteknik designet til at øge nøjagtigheden og robustheden af klassifikationsopgaver. Algoritmen bygger et væld af beslutningstræer under træning og udsender klasse det er klassifikationsklassernes tilstand. Hvert beslutningstræ i den tilfældige skov er konstrueret ved hjælp af en delmængde af træningsdataene og en tilfældig delmængde af funktioner, der introducerer diversitet blandt træerne, hvilket gør modellen mere robust og mindre tilbøjelig til at overfitte.
Den tilfældige skovalgoritme anvender en teknik kaldet bagging (Bootstrap Aggregating) til at skabe disse forskellige undersæt.
I træningsfasen skal hver træ er bygget ved rekursiv opdeling af data baseret på funktionerne. Ved hver dele, Algoritmen vælger den bedste funktion fra den tilfældige delmængde, og optimerer for informationsforøgelse eller Gini-urenhed. Processen fortsætter, indtil et foruddefineret stopkriterium er opfyldt, såsom at nå en maksimal dybde eller have et minimum antal prøver i hver bladknude.
Når den tilfældige skov er trænet, kan den lave forudsigelser ved at bruge hvert træs stemmer for en klasse, og klassen med flest stemmer bliver den forudsagte klasse for inputdata.
Funktionsvalg i tilfældige skove
Valg af funktioner i Random Forests er i sagens natur indlejret i konstruktionen af individuelle beslutningstræer og aggregeringsprocessen.
I løbet af træningsfasen bygges hvert beslutningstræ ved hjælp af en tilfældig delmængde af funktioner, hvilket bidrager til diversitet blandt træerne. Processen er, kendt som feature bagging, hjælper med at forhindre dominans af en enkelt funktion og fremmer en mere robust model.
Algoritmen evaluerer forskellige undersæt af funktioner ved hvert splitpunkt og vælger den bedste funktion til nodeopdeling baseret på kriterier såsom informationsforstærkning eller Gini-urenhed. Som følge heraf inkorporerer Random Forests naturligvis en form for funktionsvalg, der sikrer, at ensemblet drager fordel af en række forskellige funktioner for at forbedre generalisering og reducere overfitting.
Random Forest Classifier i Machine Learning
Trin 1: Indlæser datasæt
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()> |
>
>
Trin 2: Kontrol af datasætindhold og funktioner, der findes i det.
python3
print>(iris.target_names)> |
>
>
Produktion:
[‘setosa’ ‘versicolor’ ‘virginica’]>
python3
print>(iris.feature_names)> |
>
java streng indeks af
>
Produktion:
[‘sepal length (cm)’, ’sepal width (cm)’, ’petal length (cm)’, ’petal width (cm)’]>
Trin 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>)> |
>
>
Trin 4: Importér 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})> |
>
>
Oversigt over datasættet
python3
# printing the top 5 datasets in iris dataset> print>(data.head())> |
>
>
Produktion:
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>
Trin 5: Træning af 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))> |
java matematik
>
>
Produktion:
ACCURACY OF THE MODEL: 0.9238095238095239>
Trin 6: Forudsigelser
Python3
# predicting which type of flower it is.> clf.predict([[>3>,>3>,>2>,>2>]])> |
>
>
Produktion:
array([0])>
Dette indebærer, at det er det silkeagtig blomstertype, da vi fik de tre arter eller klasser i vores datasæt: Setosa, Versicolor og Virginia.
Tjek de vigtige funktioner
Nu vil vi også finde ud af de vigtige funktioner eller valg af funktioner i IRIS-datasættet ved at bruge følgende kodelinjer.
python3
ryd 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> |
>
>
Produktion:
petal length (cm) 0.440050 petal width (cm) 0.423437 sepal length (cm) 0.103293 sepal width (cm) 0.033220 dtype: float64>
Tilfældige skove i Python's Scikit-Learn bibliotek kommer med et sæt af hyperparametre som giver dig mulighed for at finjustere modellens adfærd. Forståelse og valg af passende hyperparametre er afgørende for at optimere modellens ydeevne.
Tilfældige skovklassificeringsparametre
- n_estimatorer: Antal træer i skoven.
- Flere træer fører generelt til bedre ydeevne, men på bekostning af beregningstid.
- Start med en værdi på 100 og øg efter behov.
- max_depth: Maksimal dybde af hvert træ.
- Dybere træer kan fange mere komplekse mønstre, men også risikere at blive overfittet.
- Eksperimenter med værdier mellem 5 og 15, og overvej lavere værdier for mindre datasæt.
- max_features: Antal funktioner, der overvejes til opdeling ved hver node.
- En almindelig værdi er 'sqrt' (kvadratrod af det samlede antal funktioner).
- Juster baseret på datasættets størrelse og vigtighed af funktioner.
- kriterium: Funktion, der bruges til at måle split kvalitet ('gini' eller 'entropi').
- Gini-urenhed er ofte lidt hurtigere, men begge er generelt ens i ydeevne.
- min_samples_split: Minimumsprøver, der kræves for at opdele en node.
- Højere værdier kan forhindre overfitting, men for høje kan hindre modellens kompleksitet.
- Start med 2 og juster efter behov.
- min_samples_leaf: Minimumsprøver, der kræves for at være ved en bladknude.
- Svarende til min_samples_split, men fokuseret på bladknuder.
- Start med 1 og juster efter behov.
- bootstrap: Om du skal bruge bootstrap-sampling, når du bygger træer (sandt eller falsk).
- Bootstrapping kan forbedre modelvarians og generalisering, men kan øge bias en smule.
Fordele ved Random Forest Classifier
- Tilfældige skoves ensemblekarakter, der kombinerer flere træer, gør dem mindre tilbøjelige til overfitting sammenlignet med individuelle beslutningstræer.
- Effektiv på datasæt med et stort antal funktioner, og det kan godt håndtere irrelevante variabler.
- Tilfældige skove kan give indsigt i funktioners betydning, hvilket hjælper med at vælge funktioner og forstå datasættet.
Ulemper ved Random Forest Classifier
- Tilfældige skove kan være beregningsmæssigt dyre og kan kræve flere ressourcer på grund af konstruktionen af flere beslutningstræer.
- Ensemblenaturen gør det udfordrende at fortolke ræsonnementet bag individuelle forudsigelser sammenlignet med et enkelt beslutningstræ.
- I ubalancerede datasæt kan tilfældige skove være forudindtaget mod majoritetsklassen, hvilket påvirker den prædiktive præstation for minoritetsklasser.
Konklusion
Som konklusion skiller Random Forests sig med deres ensemble af beslutningstræer ud som en robust løsning til forskellige maskinlæringsopgaver, der viser deres alsidighed og effektivitet.
Ofte stillede spørgsmål (FAQs)
Q. Hvad er den tilfældige skovklassifikator?
Random Forest Classifier er en ensemblelæringsmetode, der bruger flere beslutningstræer til klassificeringsopgaver, hvilket forbedrer nøjagtigheden. Den udmærker sig ved at håndtere komplekse data, afbøde overtilpasning og levere robuste forudsigelser med vigtighed af funktioner.
Q. Kan tilfældig skov bruges til regression?
Random Forest kan bruges til både regression og klassifikationsopgaver, hvilket gør det til en alsidig maskinlæringsalgoritme.
Q. Hvad er princippet om tilfældig skov?
Random Forest bygger flere beslutningstræer ved hjælp af tilfældige undersæt af datasættet og kombinerer deres output for forbedret nøjagtighed.
Q. Hvad er anvendelsen af tilfældig skov?
Virkelige applikationer inkluderer:
- Medicinsk diagnose: Identifikation af sygdomme baseret på patientdata.
- Finansiere: Kreditscoring til risikovurdering i udlån.