logo

Atsitiktinis miškų klasifikatorius naudojant Scikit-learn

Šiame straipsnyje pamatysime, kaip sukurti a Atsitiktinis miškų klasifikatorius naudojant Scikit-Learn biblioteka apie Python programavimo kalba ir tam naudojame IRIS duomenų rinkinys kuris yra gana dažnas ir garsus duomenų rinkinys.

Atsitiktinis miškas

The Atsitiktinis miškas arba Random Decision Forest – tai prižiūrimas mašininio mokymosi algoritmas, naudojamas klasifikavimui, regresijai ir kitoms užduotims, naudojant sprendimų medžius. Atsitiktiniai miškai yra ypač tinkami dideliems ir sudėtingiems duomenų rinkiniams tvarkyti, didelės apimties objektų erdvėms ir įžvalgoms apie funkcijų svarbą teikti. Dėl šio algoritmo gebėjimo išlaikyti aukštą nuspėjamąjį tikslumą ir sumažinti perteklinį pritaikymą, jis yra populiarus pasirinkimas įvairiose srityse, įskaitant finansus, sveikatos priežiūrą ir vaizdo analizę.

Atsitiktinis miškų klasifikatorius

Atsitiktinių miškų klasifikatorius sukuria a rinkinys apie sprendimų medžiai iš atsitiktinai parinkto treniruočių rinkinio pogrupio. Tai yra sprendimų medžių (DT) rinkinys iš atsitiktinai pasirinkto mokymo rinkinio poaibio, o tada jis surenka balsus iš skirtingų sprendimų medžių, kad nuspręstų galutinę prognozę.



Atsitiktinis miškų klasifikatorius

Be to, atsitiktinis miškų klasifikatorius gali atlikti tiek klasifikavimo, tiek regresijos užduotis, o dėl jo gebėjimo pateikti savybių svarbos balus jis yra vertingas įrankis norint suprasti skirtingų duomenų rinkinio kintamųjų reikšmę.

Kaip veikia atsitiktinė miškų klasifikacija

Atsitiktinis miškų klasifikavimas yra ansamblio mokymosi metodas, skirtas klasifikavimo užduočių tikslumui ir patikimumui padidinti. Treniruotės metu algoritmas sukuria daugybę sprendimų medžių ir išveda klasė toks yra klasifikavimo klasių būdas. Kiekvienas atsitiktinio miško sprendimų medis yra sukurtas naudojant mokymo duomenų poaibį ir atsitiktinį savybių poaibį, įvedančią medžių įvairovę, todėl modelis tampa tvirtesnis ir mažiau linkęs per daug pritaikyti.

Atsitiktinis miško algoritmas naudoja techniką, vadinamą maišymu (Bootstrap Aggregating), kad sukurtų šiuos įvairius pogrupius.

Treniruotės etape kiekvienas medis sukurtas rekursyviai skirstant duomenis pagal funkcijas. Kiekviename padalinti, algoritmas parenka geriausią savybę iš atsitiktinio pogrupio, optimizuodamas informacijos padidėjimą arba Gini priemaišą. Procesas tęsiasi tol, kol įvykdomas iš anksto nustatytas sustabdymo kriterijus, pvz., pasiekiamas didžiausias gylis arba minimalus mėginių skaičius kiekviename lapo mazge.

Kai atsitiktinis miškas yra apmokytas, jis gali daryti prognozes, naudodamas kiekvieno medžio balsus už klasę, o daugiausiai balsų gavusi klasė tampa numatoma įvesties duomenų klase.

Funkcijų pasirinkimas atsitiktiniuose miškuose

Funkcijos pasirinkimas Atsitiktiniuose miškuose yra neatsiejama nuo individualių sprendimų medžių kūrimo ir agregavimo proceso.

Mokymo etapo metu kiekvienas sprendimų medis kuriamas naudojant atsitiktinį funkcijų poaibį, prisidedantį prie medžių įvairovės. Šis procesas, žinomas kaip funkcijų maišymas, padeda išvengti bet kurios atskiros funkcijos dominavimo ir skatina tvirtesnį modelį.

Algoritmas įvertina įvairius funkcijų pogrupius kiekviename padalijimo taške, pasirinkdamas geriausią mazgo padalijimo funkciją pagal tokius kriterijus kaip informacijos padidėjimas arba Gini priemaiša. Todėl „Random Forests“ natūraliai apima tam tikrą funkcijų atrankos formą, užtikrinančią, kad ansamblis gautų naudos iš įvairių funkcijų rinkinio, siekiant pagerinti apibendrinimą ir sumažinti perteklinį pritaikymą.

Atsitiktinis miškų klasifikatorius mašininiame mokyme

1 veiksmas: įkeliamas duomenų rinkinys

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

>

>

2 veiksmas: patikrinkite duomenų rinkinio turinį ir jame esančių funkcijų pavadinimus.

Python3




udp protokolas
print>(iris.target_names)>

>

>

Išvestis:

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

Python3




print>(iris.feature_names)>

>

>

Išvestis:

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

3 veiksmas: traukinio testo padalijimas

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

>

>

4 veiksmas: importuokite atsitiktinio miško klasifikatoriaus 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})>

>

>

Duomenų rinkinio apžvalga

Python3


kuo skiriasi megabaitas ir gigabaitas



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

>

>

Išvestis:

 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>

5 žingsnis: modelio mokymas

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

Kaip skaityti iš csv failo java

>

>

Išvestis:

ACCURACY OF THE MODEL: 0.9238095238095239>

6 veiksmas: prognozės

Python3




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

>

>

Išvestis:

array([0])>

Tai reiškia, kad yra šilkinis gėlių tipas, nes duomenų rinkinyje yra trys rūšys arba klasės: Setosa, Versicolor ir Virdžinija.

Patikrinkite svarbias funkcijas

Dabar mes taip pat išsiaiškinsime svarbias IRIS duomenų rinkinio funkcijas arba pasirinksime ypatybes naudodami šias kodo eilutes.

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>

>

>

Išvestis:

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

Atsitiktiniai miškai Python's Scikit-Learn biblioteka yra su rinkiniu hiperparametrai kurios leidžia tiksliai sureguliuoti modelio elgesį. Norint optimizuoti modelio veikimą, labai svarbu suprasti ir pasirinkti tinkamus hiperparametrus.

Atsitiktiniai miško klasifikatoriaus parametrai

  • n_estimators: Medžių skaičius miške.
    • Daugiau medžių paprastai pagerina našumą, tačiau tai kainuoja skaičiavimo laiką.
    • Pradėkite nuo 100 vertės ir padidinkite, jei reikia.
  • max_depth: Didžiausias kiekvieno medžio gylis.
    • Gilesni medžiai gali užfiksuoti sudėtingesnius raštus, tačiau taip pat rizikuoja persodinti.
    • Eksperimentuokite su reikšmėmis nuo 5 iki 15 ir apsvarstykite mažesnes mažesnių duomenų rinkinių vertes.
  • max_features: Funkcijų, kurias reikia padalyti kiekviename mazge, skaičius.
    • Įprasta reikšmė yra „sqrt“ (kvadratinė šaknis iš bendro funkcijų skaičiaus).
    • Koreguokite pagal duomenų rinkinio dydį ir funkcijų svarbą.
  • kriterijus: Funkcija, naudojama padalijimo kokybei matuoti („gini“ arba „entropija“).
    • Gini priemaiša dažnai būna šiek tiek greitesnė, tačiau jų abiejų veikimas paprastai yra panašus.
  • min_samples_split: Minimalūs pavyzdžiai, reikalingi mazgui padalinti.
    • Didesnės vertės gali užkirsti kelią permontavimui, tačiau per didelės gali trukdyti modelio sudėtingumui.
    • Pradėkite nuo 2 ir sureguliuokite pagal poreikį.
  • min_samples_leaf: Minimalūs mėginiai turi būti lapo mazge.
    • Panašus į min_samples_split, bet orientuotas į lapų mazgus.
    • Pradėkite nuo 1 ir sureguliuokite pagal poreikį.
  • bootstrap: Ar statant medžius naudoti įkrovos atranką (tiesa, ar klaidinga).
    • Įkrovimas gali pagerinti modelio dispersiją ir apibendrinimą, tačiau gali šiek tiek padidinti šališkumą.

Atsitiktinio miško klasifikatoriaus privalumai

  • Atsitiktinių miškų ansamblio pobūdis, derinant kelis medžius, daro juos mažiau linkusius persodinti, palyginti su atskirų sprendimų medžiais.
  • Veiksmingas duomenų rinkiniams su daugybe funkcijų ir gali gerai tvarkyti nesusijusius kintamuosius.
  • Atsitiktiniai miškai gali suteikti įžvalgų apie objektų svarbą, padėti pasirinkti objektą ir suprasti duomenų rinkinį.

Atsitiktinio miško klasifikatoriaus trūkumai

  • Atsitiktiniai miškai gali būti brangūs skaičiavimais ir jiems gali prireikti daugiau išteklių dėl kelių sprendimų medžių kūrimo.
  • Dėl ansamblio pobūdžio sudėtinga interpretuoti atskirų prognozių motyvus, palyginti su vienu sprendimų medžiu.
  • Nesubalansuotuose duomenų rinkiniuose atsitiktiniai miškai gali būti nukreipti į daugumos klasę, o tai turi įtakos mažumų klasių nuspėjamiesiems rezultatams.

Išvada

Apibendrinant galima pasakyti, kad „Random Forests“ su sprendimų medžių visuma išsiskiria kaip patikimas sprendimas įvairioms mašininio mokymosi užduotims, parodydamas jų universalumą ir efektyvumą.

Dažnai užduodami klausimai (DUK)

K. Kas yra atsitiktinis miškų klasifikatorius?

Atsitiktinis miško klasifikatorius yra ansamblinis mokymosi metodas, kuriame naudojami keli sprendimų medžiai klasifikavimo užduotims atlikti, siekiant pagerinti tikslumą. Jis puikiai tvarko sudėtingus duomenis, sumažina perteklinį pritaikymą ir teikia patikimas prognozes, turinčias svarbių funkcijų.

K. Ar atsitiktinis miškas gali būti naudojamas regresijai?

Random Forest gali būti naudojamas tiek regresijos, tiek klasifikavimo užduotims atlikti, todėl tai yra universalus mašininio mokymosi algoritmas.

K. Koks yra atsitiktinio miško principas?

„Random Forest“ sukuria kelis sprendimų medžius, naudodamas atsitiktinius duomenų rinkinio pogrupius ir sujungia jų išvestis, kad pagerintų tikslumą.

K. Kokie yra atsitiktinio miško pritaikymai?

Realios programos apima:

  • Medicininė diagnozė: Ligų nustatymas pagal paciento duomenis.
  • Finansai: Kredito įvertinimas rizikos vertinimui skolinant.