I den här artikeln kommer vi att se hur man bygger en Random Forest Classifier använda Scikit-Learn bibliotek av Python programmeringsspråk och för att göra detta använder vi IRIS dataset vilket är ett ganska vanligt och känt dataset.
Random Forest
De Slumpmässig skog eller Random Decision Forest är en övervakad maskininlärningsalgoritm som används för klassificering, regression och andra uppgifter med hjälp av beslutsträd. Random Forests är särskilt väl lämpade för att hantera stora och komplexa datauppsättningar, hantera högdimensionella funktionsutrymmen och ge insikter om egenskapens betydelse. Denna algoritms förmåga att bibehålla hög förutsägande noggrannhet samtidigt som den minimerar överanpassning gör den till ett populärt val inom olika domäner, inklusive ekonomi, hälsovård och bildanalys, bland annat.
Random Forest Classifier
Random forest classifier skapar en uppsättning av beslutsträd från en slumpmässigt vald delmängd av träningsuppsättningen. Det är en uppsättning beslutsträd (DT) från en slumpmässigt vald delmängd av träningsuppsättningen och sedan samlar den in rösterna från olika beslutsträd för att avgöra den slutliga förutsägelsen.
Random Forest Classifier
Dessutom kan den slumpmässiga skogsklassificeraren hantera både klassificerings- och regressionsuppgifter, och dess förmåga att tillhandahålla särdragsviktighetspoäng gör den till ett värdefullt verktyg för att förstå betydelsen av olika variabler i datamängden.
Hur slumpmässig skogsklassificering fungerar
Random Forest Classification är en ensembleinlärningsteknik utformad för att förbättra noggrannheten och robustheten i klassificeringsuppgifter. Algoritmen bygger en mängd beslutsträd under träning och matar ut klass det är läget för klassificeringsklasserna. Varje beslutsträd i den slumpmässiga skogen är konstruerad med hjälp av en delmängd av träningsdata och en slumpmässig delmängd av funktioner som introducerar mångfald bland träden, vilket gör modellen mer robust och mindre benägen att överanpassa.
Den slumpmässiga skogsalgoritmen använder en teknik som kallas bagging (Bootstrap Aggregating) för att skapa dessa olika delmängder.
Under utbildningsfasen, var och en träd byggs genom att rekursivt partitionera data baserat på funktionerna. På varje dela, Algoritmen väljer den bästa funktionen från den slumpmässiga delmängden, och optimerar för informationsvinst eller Gini-orenhet. Processen fortsätter tills ett fördefinierat stoppkriterium är uppfyllt, såsom att nå ett maximalt djup eller ha ett minsta antal prover i varje bladnod.
myflixr
När den slumpmässiga skogen har tränats kan den göra förutsägelser genom att använda varje trädröster för en klass, och klassen med flest röster blir den förutsagda klassen för indata.
Funktionsval i Random Forests
Funktionsval i Random Forests är naturligt inbäddat i konstruktionen av individuella beslutsträd och aggregeringsprocessen.
Under träningsfasen byggs varje beslutsträd med hjälp av en slumpmässig delmängd av funktioner, vilket bidrar till mångfalden bland träden. Processen är, känd som funktionspåsar, hjälper till att förhindra dominansen av en enskild funktion och främjar en mer robust modell.
Algoritmen utvärderar olika delmängder av funktioner vid varje delningspunkt och väljer den bästa funktionen för noddelning baserat på kriterier som informationsvinst eller Gini-orenhet. Följaktligen innehåller Random Forests naturligt en form av funktionsval, vilket säkerställer att ensemblen drar nytta av en mångsidig uppsättning funktioner för att förbättra generaliseringen och minska överutrustning.
Random Forest Classifier i maskininlärning
Steg 1: Laddar datauppsättning
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()> |
>
>
Steg 2: Kontrollera datauppsättningens innehåll och funktioners namn som finns i den.
python3
print> (iris.target_names)> |
>
>
Produktion:
[‘setosa’ ‘versicolor’ ‘virginica’]>
python3
print> (iris.feature_names)> |
>
>
Produktion:
[‘sepal length (cm)’, ’sepal width (cm)’, ’petal length (cm)’, ’petal width (cm)’]>
Steg 3: Tågtestdelning
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> )> |
>
>
Steg 4: Importera 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})> |
>
>
Översikt över datamängden
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>
Steg 5: Utbildning av modell
sträng hitta c++
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))> |
textstorlek i latex
>
>
Produktion:
ACCURACY OF THE MODEL: 0.9238095238095239>
Steg 6: Förutsägelser
Python3
# predicting which type of flower it is.> clf.predict([[> 3> ,> 3> ,> 2> ,> 2> ]])> |
>
>
Produktion:
array([0])>
Detta innebär att det är det silkig blomtyp som vi fick de tre arterna eller klasserna i vår datamängd: Setosa, Versicolor och Virginia.
Kontrollera de viktiga funktionerna
Nu kommer vi också att ta reda på de viktiga funktionerna eller välja funktioner i IRIS-datauppsättningen genom att använda följande kodrader.
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> |
>
>
Produktion:
petal length (cm) 0.440050 petal width (cm) 0.423437 sepal length (cm) 0.103293 sepal width (cm) 0.033220 dtype: float64>
Random Forests in Python's Scikit-Learn biblioteket kommer med en uppsättning hyperparametrar som låter dig finjustera modellens beteende. Att förstå och välja lämpliga hyperparametrar är avgörande för att optimera modellens prestanda.
Random Forest Classifier Parametrar
- n_estimators: Antal träd i skogen.
- Fler träd leder i allmänhet till bättre prestanda, men på bekostnad av beräkningstid.
- Börja med ett värde på 100 och öka efter behov.
- Max djup: Maximalt djup för varje träd.
- Djupare träd kan fånga mer komplexa mönster, men riskerar också att överanpassas.
- Experimentera med värden mellan 5 och 15 och överväg lägre värden för mindre datauppsättningar.
- max_features: Antal funktioner som övervägs för delning vid varje nod.
- Ett vanligt värde är 'sqrt' (kvadratroten av det totala antalet funktioner).
- Justera baserat på datauppsättningsstorlek och funktionsviktighet.
- kriterium: Funktion som används för att mäta delad kvalitet ('gini' eller 'entropi').
- Gini-orenhet är ofta något snabbare, men båda är generellt lika i prestanda.
- min_samples_split: Minsta prov som krävs för att dela en nod.
- Högre värden kan förhindra övermontering, men för höga kan hindra modellens komplexitet.
- Börja med 2 och justera efter behov.
- min_samples_leaf: Minsta prov som krävs för att vara vid en lövnod.
- Liknar min_samples_split, men fokuserad på lövnoder.
- Börja med 1 och justera efter behov.
- bootstrap: Om man ska använda bootstrap-sampling när man bygger träd (Sant eller Falskt).
- Bootstrapping kan förbättra modellvarians och generalisering, men kan öka bias något.
Fördelar med Random Forest Classifier
- Random Forests ensemblekaraktär, som kombinerar flera träd, gör dem mindre benägna att överanpassas jämfört med individuella beslutsträd.
- Effektiv på datauppsättningar med ett stort antal funktioner, och den kan hantera irrelevanta variabler bra.
- Random Forests kan ge insikter om funktioners betydelse, vilket hjälper till att välja funktioner och förstå datasetet.
Nackdelar med Random Forest Classifier
- Random Forests kan vara beräkningsmässigt dyra och kan kräva mer resurser på grund av konstruktionen av flera beslutsträd.
- Ensemblenaturen gör det utmanande att tolka resonemanget bakom individuella förutsägelser jämfört med ett enda beslutsträd.
- I obalanserade datauppsättningar kan slumpmässiga skogar vara partiska mot majoritetsklassen, vilket påverkar den prediktiva prestandan för minoritetsklasser.
Slutsats
Sammanfattningsvis framstår Random Forests, med sin ensemble av beslutsträd, som en robust lösning för olika maskininlärningsuppgifter, som visar upp deras mångsidighet och effektivitet.
Vanliga frågor (FAQs)
F. Vad är den slumpmässiga skogsklassificeraren?
Random Forest Classifier är en ensembleinlärningsmetod som använder flera beslutsträd för klassificeringsuppgifter, vilket förbättrar noggrannheten. Det utmärker sig när det gäller att hantera komplexa data, mildra överanpassning och tillhandahålla robusta förutsägelser med funktionviktighet.
F. Kan slumpmässig skog användas för regression?
Random Forest kan användas för både regression och klassificeringsuppgifter, vilket gör det till en mångsidig maskininlärningsalgoritm.
F. Vad är principen för slumpmässig skog?
Random Forest bygger flera beslutsträd med hjälp av slumpmässiga delmängder av datamängden och kombinerar deras utdata för förbättrad noggrannhet.
F. Vilka är tillämpningarna av slumpmässig skog?
Verkliga applikationer inkluderar:
- Medicinsk diagnos: Identifiera sjukdomar baserat på patientdata.
- Finansiera: Kreditvärdering för riskbedömning vid utlåning.