Tässä artikkelissa näemme kuinka rakentaa a Satunnainen metsäluokitin käyttämällä Scikit-Learn-kirjasto / Python ohjelmointikieli ja tätä varten käytämme IRIS-tietojoukko joka on melko yleinen ja kuuluisa tietojoukko.
Satunnainen metsä
The Satunnainen metsä tai Random Decision Forest on valvottu koneoppimisalgoritmi, jota käytetään luokitteluun, regressioon ja muihin tehtäviin päätöspuiden avulla. Random Forests soveltuu erityisen hyvin suurten ja monimutkaisten tietojoukkojen käsittelyyn, suurien ominaisuustilojen käsittelyyn ja näkemysten tarjoamiseen ominaisuuden tärkeydestä. Tämän algoritmin kyky ylläpitää korkea ennustetarkkuus ja minimoimalla yliasennus tekee siitä suositun valinnan useilla eri aloilla, mukaan lukien rahoitus, terveydenhuolto ja kuva-analyysi.
Satunnainen metsäluokitin
Random metsäluokitin luo a aseta / päätöspuita harjoitusjoukon satunnaisesti valitusta osajoukosta. Se on joukko päätöspuita (DT) satunnaisesti valitusta harjoitusjoukon osajoukosta ja sitten se kerää äänet eri päätöspuista päättääkseen lopullisen ennusteen.
Satunnainen metsäluokitin
Lisäksi satunnainen metsäluokitin pystyy käsittelemään sekä luokittelu- että regressiotehtäviä, ja sen kyky antaa ominaisuuden tärkeyspisteitä tekee siitä arvokkaan työkalun tietojoukon eri muuttujien merkityksen ymmärtämiseen.
Kuinka satunnainen metsäluokitus toimii
Random Forest Classification on ryhmäoppimistekniikka, joka on suunniteltu parantamaan luokitustehtävien tarkkuutta ja kestävyyttä. Algoritmi rakentaa lukuisia päätöspuita harjoituksen aikana ja tulostaa luokkaa se on luokitusluokkien tapa. Jokainen satunnaisessa metsässä oleva päätöspuu on rakennettu käyttämällä harjoitustietojen osajoukkoa ja satunnaista ominaisuuksien osajoukkoa, jotka tuovat puiden monimuotoisuutta, mikä tekee mallista kestävämmän ja vähemmän altis ylisovitukselle.
Satunnainen metsäalgoritmi käyttää tekniikkaa, jota kutsutaan pussitukseksi (Bootstrap Aggregating), luodakseen nämä erilaiset osajoukot.
Harjoitteluvaiheen aikana jokainen puu on rakennettu osioiden rekursiivisesti ominaisuuksien perusteella. Jokaisessa jakaa, Algoritmi valitsee parhaan ominaisuuden satunnaisesta osajoukosta optimoiden tiedon vahvistuksen tai Gini-epäpuhtaudet. Prosessi jatkuu, kunnes ennalta määritetty pysäytyskriteeri täyttyy, kuten maksimisyvyyden saavuttaminen tai vähimmäismäärä näytteitä kussakin lehtisolmussa.
Kun satunnainen metsä on koulutettu, se voi tehdä ennusteita käyttämällä kunkin puun ääniä luokkaa varten, ja eniten ääniä saanut luokasta tulee syötetietojen ennustettu luokka.
Ominaisuusvalinta satunnaisissa metsissä
Ominaisuuden valinta Random Forestsissa on luonnostaan upotettu yksittäisten päätöspuiden rakentamiseen ja yhdistämisprosessiin.
Harjoitteluvaiheen aikana jokainen päätöspuu rakennetaan käyttämällä satunnaista ominaisuuksien osajoukkoa, mikä edistää puiden monimuotoisuutta. Prosessi tunnetaan ominaisuuspussituksena, se auttaa estämään yksittäisen ominaisuuden hallitsevan aseman ja edistää kestävämpää mallia.
Algoritmi arvioi eri ominaisuuksien osajoukkoja kussakin jakopisteessä ja valitsee parhaan ominaisuuden solmun jakamiseen kriteerien, kuten tiedon vahvistuksen tai Gini-epäpuhtauden, perusteella. Näin ollen Random Forests sisältää luonnollisesti ominaisuuksien valinnan, mikä varmistaa, että kokonaisuus hyötyy monipuolisista ominaisuuksista, jotka lisäävät yleistämistä ja vähentävät ylisovitusta.
Satunnainen metsäluokitin koneoppimisessa
Vaihe 1: Ladataan tietojoukkoa
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()> |
osittainen johdannaissymboli lateksi
>
>
Vaihe 2: Tarkista tietojoukon sisältö ja siinä olevat ominaisuuksien nimet.
python3
print>(iris.target_names)> |
>
>
Lähtö:
[‘setosa’ ‘versicolor’ ‘virginica’]>
python3
jquery tätä napsautusta
print>(iris.feature_names)> |
>
>
Lähtö:
[‘sepal length (cm)’, ’sepal width (cm)’, ’petal length (cm)’, ’petal width (cm)’]>
Vaihe 3: Junatestin jako
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>)> |
>
>
Vaihe 4: Tuo Random Forest Classifier -moduuli.
python3
java-merkkijono taulukkoon
# 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})> |
>
>
Tietojoukon yleiskatsaus
python3
# printing the top 5 datasets in iris dataset> print>(data.head())> |
>
>
Lähtö:
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>
Vaihe 5: Mallin koulutus
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))> |
>
>
Lähtö:
ACCURACY OF THE MODEL: 0.9238095238095239>
Vaihe 6: Ennusteet
Python 3
seleenin perusasiat
# predicting which type of flower it is.> clf.predict([[>3>,>3>,>2>,>2>]])> |
>
>
Lähtö:
array([0])>
Tämä tarkoittaa, että se on silkkinen kukkatyyppi, koska tietojoukossamme on kolme lajia tai luokkaa: Setosa, Versicolor ja Virginia.
Tarkista tärkeät ominaisuudet
Nyt selvitetään myös IRIS-tietojoukon tärkeät ominaisuudet tai valintaominaisuudet käyttämällä seuraavia koodirivejä.
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> |
>
Näyttelijä Rekha
>
Lähtö:
petal length (cm) 0.440050 petal width (cm) 0.423437 sepal length (cm) 0.103293 sepal width (cm) 0.033220 dtype: float64>
Satunnaiset metsät Pythonissa Scikit-Learn kirjaston mukana tulee sarja hyperparametrit joiden avulla voit hienosäätää mallin käyttäytymistä. Sopivien hyperparametrien ymmärtäminen ja valitseminen on ratkaisevan tärkeää mallin suorituskyvyn optimoinnissa.
Satunnaiset metsäluokitteluparametrit
- n_estimators: Puiden lukumäärä metsässä.
- Enemmän puita johtaa yleensä parempaan suorituskykyyn, mutta laskenta-ajan kustannuksella.
- Aloita arvolla 100 ja lisää sitä tarpeen mukaan.
- max_depth: Jokaisen puun enimmäissyvyys.
- Syvemmät puut voivat vangita monimutkaisempia kuvioita, mutta myös ylisovittua.
- Kokeile arvoja välillä 5–15 ja harkitse pienempiä arvoja pienemmille tietojoukoille.
- max_features: Kussakin solmussa jaettavien ominaisuuksien lukumäärä.
- Yleinen arvo on 'sqrt' (ominaisuuksien kokonaismäärän neliöjuuri).
- Säädä tietojoukon koon ja ominaisuuksien tärkeyden perusteella.
- kriteeri: Funktio, jota käytetään mittaamaan jaon laatua ('gini' tai 'entropia').
- Gini-epäpuhtaudet ovat usein hieman nopeampia, mutta molemmat ovat yleensä suorituskyvyltään samanlaisia.
- min_samples_split: Solmun jakamiseen vaadittavat vähimmäisnäytteet.
- Suuremmat arvot voivat estää ylisovituksen, mutta liian korkeat voivat haitata mallin monimutkaisuutta.
- Aloita 2:sta ja säädä tarpeen mukaan.
- min_samples_leaf: Vähimmäisnäytteet vaaditaan olemaan lehtisolmussa.
- Samanlainen kuin min_samples_split, mutta keskittyy lehtien solmuihin.
- Aloita numerosta 1 ja säädä tarpeen mukaan.
- bootstrap: Käytetäänkö bootstrap-näytteenottoa puita rakennettaessa (tosi vai epätosi).
- Bootstrapping voi parantaa mallin varianssia ja yleistystä, mutta voi hieman lisätä harhaa.
Random Forest Classifierin edut
- Random Forestsin kokonaisluonne, joka yhdistää useita puita, tekee niistä vähemmän alttiita ylisovitukselle verrattuna yksittäisiin päätöspuihin.
- Tehokas tietojoukoissa, joissa on paljon ominaisuuksia, ja se pystyy käsittelemään hyvin epäolennaisia muuttujia.
- Random Forests voi tarjota näkemyksiä piirteiden tärkeydestä, auttaa ominaisuuksien valinnassa ja tietojoukon ymmärtämisessä.
Random Forest Classifierin haitat
- Satunnaiset metsät voivat olla laskennallisesti kalliita ja voivat vaatia enemmän resursseja useiden päätöspuiden rakentamisen vuoksi.
- Ensemble-luonne tekee haastavaksi tulkita yksittäisten ennusteiden taustalla olevia perusteluja verrattuna yhteen päätöspuuhun.
- Epätasapainoisissa tietokokonaisuuksissa Random Forests -metsät voivat olla puolueellisia enemmistöluokkaa kohden, mikä vaikuttaa vähemmistöluokkien ennakoituun suorituskykyyn.
Johtopäätös
Yhteenvetona voidaan todeta, että Random Forests -ratkaisut erottuvat joukolla päätöspuita vankkana ratkaisuna erilaisiin koneoppimistehtäviin, mikä osoittaa niiden monipuolisuuden ja tehokkuuden.
Usein kysytyt kysymykset (FAQ)
K. Mikä on satunnainen metsäluokitin?
Random Forest Classifier on kokonaisoppimismenetelmä, jossa käytetään useita päätöspuita luokittelutehtäviin, mikä parantaa tarkkuutta. Se on erinomainen monimutkaisten tietojen käsittelyssä, ylisovituksen vähentämisessä ja luotettavien ennusteiden tarjoamisessa ominaisuuksien tärkeyden kanssa.
K. Voidaanko satunnaista metsää käyttää regressioon?
Random Forestia voidaan käyttää sekä regressio- että luokittelutehtäviin, mikä tekee siitä monipuolisen koneoppimisalgoritmin.
K. Mikä on satunnaisen metsän periaate?
Random Forest rakentaa useita päätöspuita käyttämällä tietojoukon satunnaisia osajoukkoja ja yhdistää niiden tulokset tarkkuuden parantamiseksi.
K. Mitkä ovat satunnaisen metsän sovellukset?
Todellisia sovelluksia ovat mm.
- Lääketieteellinen diagnoosi: Sairauksien tunnistaminen potilastietojen perusteella.
- Rahoittaa: Luottoluokitus luotonannon riskien arvioimiseksi.