logo

Satunnainen metsäalgoritmi

Random Forest on suosittu koneoppimisalgoritmi, joka kuuluu valvottuun oppimistekniikkaan. Sitä voidaan käyttää sekä luokitus- että regressio-ongelmiin ML:ssä. Se perustuu käsitteeseen ryhmäoppiminen, joka on prosessi useiden luokittimien yhdistäminen monimutkaisen ongelman ratkaisemiseksi ja mallin suorituskyvyn parantamiseksi.

Kuten nimestä voi päätellä, 'Random Forest on luokitin, joka sisältää joukon päätöspuita tietyn tietojoukon eri osajoukoista ja ottaa keskiarvon parantaakseen kyseisen tietojoukon ennustetarkkuutta.' Sen sijaan, että luottaisi yhteen päätöspuuhun, satunnainen metsä ottaa ennusteen jokaisesta puusta ja ennusteiden enemmistön äänten perusteella ja ennustaa lopullisen tuotoksen.

Suurempi puiden määrä metsässä parantaa tarkkuutta ja estää yliasennusongelman.

mikä on prolog

Alla oleva kaavio selittää Random Forest -algoritmin toiminnan:

Satunnainen metsäalgoritmi

Huomautus: Satunnaisen metsäalgoritmin ymmärtämiseksi paremmin sinun tulee tuntea päätöspuualgoritmi.

Oletukset Random Forestille

Koska satunnainen metsä yhdistää useita puita ennustaakseen tietojoukon luokan, on mahdollista, että jotkut päätöspuut voivat ennustaa oikean tuloksen, kun taas toiset eivät. Mutta yhdessä kaikki puut ennustavat oikean tuloksen. Siksi alla on kaksi oletusta parempaan satunnaiseen metsäluokittajaan:

  • Tietojoukon ominaisuusmuuttujassa tulee olla joitain todellisia arvoja, jotta luokitin voi ennustaa tarkkoja tuloksia arvatun tuloksen sijaan.
  • Jokaisen puun ennusteilla on oltava hyvin alhainen korrelaatio.

Miksi käyttää Random Forestia?

Alla on joitain kohtia, jotka selittävät, miksi meidän pitäisi käyttää Random Forest -algoritmia:

  • Se vie vähemmän harjoitusaikaa verrattuna muihin algoritmeihin.
  • Se ennustaa ulostulon suurella tarkkuudella, jopa suurelle tietojoukolle, jota se toimii tehokkaasti.
  • Se voi myös säilyttää tarkkuuden, kun suuri osa tiedoista puuttuu.

Kuinka Random Forest -algoritmi toimii?

Random Forest toimii kahdessa vaiheessa. Ensinnäkin luodaan satunnainen metsä yhdistämällä N päätöspuuta ja toiseksi tehdään ennusteita jokaiselle ensimmäisessä vaiheessa luodulle puulle.

Työprosessi voidaan selittää alla olevilla vaiheilla ja kaaviolla:

Vaihe 1: Valitse satunnainen K datapistettä harjoitusjoukosta.

Vaihe 2: Rakenna valittuihin tietopisteisiin (osajoukot) liittyvät päätöspuut.

Vaihe 3: Valitse numero N päätöspuille, jotka haluat rakentaa.

Vaihe 4: Toista vaiheet 1 ja 2.

Vaihe 5: Uusien tietopisteiden osalta etsi kunkin päätöspuun ennusteet ja määritä uudet tietopisteet enemmistön ääniä saavalle kategorialle.

Algoritmin toiminta voidaan ymmärtää paremmin alla olevan esimerkin avulla:

"primin algoritmi"

Esimerkki: Oletetaan, että on tietojoukko, joka sisältää useita hedelmäkuvia. Joten tämä tietojoukko annetaan satunnaiselle metsäluokittajalle. Tietojoukko jaetaan osajoukkoihin ja annetaan jokaiselle päätöspuulle. Harjoitteluvaiheessa jokainen päätöspuu tuottaa ennustetuloksen, ja kun uusi datapiste syntyy, Random Forest -luokitin ennustaa suurimman osan tuloksista lopullisen päätöksen. Harkitse alla olevaa kuvaa:

Satunnainen metsäalgoritmi

Random Forestin sovellukset

Random-metsiä käytettiin pääasiassa neljällä sektorilla:

    Pankkitoiminta:Pankkisektori käyttää enimmäkseen tätä algoritmia lainariskin tunnistamiseen.Lääke:Tämän algoritmin avulla voidaan tunnistaa sairauden trendit ja taudin riskit.Maankäyttö:Tällä algoritmilla voimme tunnistaa samankaltaisia ​​maankäyttöalueita.Markkinointi:Markkinointitrendit voidaan tunnistaa tällä algoritmilla.

Random Forestin edut

  • Random Forest pystyy suorittamaan sekä luokitus- että regressiotehtäviä.
  • Se pystyy käsittelemään suuria datajoukkoja, joilla on korkea ulottuvuus.
  • Se parantaa mallin tarkkuutta ja estää yliasennusongelman.

Random Forestin haitat

  • Vaikka satunnaista metsää voidaan käyttää sekä luokitus- että regressiotehtäviin, se ei sovellu paremmin regressiotehtäviin.

Satunnaisen metsäalgoritmin Python-toteutus

Nyt toteutamme Random Forest Algorithm -puun Pythonilla. Tätä varten käytämme samaa tietojoukkoa 'user_data.csv', jota olemme käyttäneet aiemmissa luokitusmalleissa. Käyttämällä samaa aineistoa voimme verrata Random Forest -luokittajaa muihin luokitusmalleihin, kuten Päätöspuun luokitin, KNN, SVM, logistinen regressio jne.

Käyttöönoton vaiheet on annettu alla:

  • Tietojen esikäsittelyvaihe
  • Satunnaisen metsäalgoritmin sovittaminen harjoitussarjaan
  • Testituloksen ennustaminen
  • Testaa tuloksen tarkkuus (Sekaannusmatriisin luominen)
  • Testisarjan tuloksen visualisointi.

1. Tietojen esikäsittelyvaihe:

Alla on esikäsittelyvaiheen koodi:

vektorin koko c++
 # importing libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd #importing datasets data_set= pd.read_csv('user_data.csv') #Extracting Independent and dependent Variable x= data_set.iloc[:, [2,3]].values y= data_set.iloc[:, 4].values # Splitting the dataset into training and test set. from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test= train_test_split(x, y, test_size= 0.25, random_state=0) #feature Scaling from sklearn.preprocessing import StandardScaler st_x= StandardScaler() x_train= st_x.fit_transform(x_train) x_test= st_x.transform(x_test) 

Yllä olevassa koodissa olemme esikäsitelleet tiedot. Mihin olemme ladanneet tietojoukon, joka annetaan seuraavasti:

Satunnainen metsäalgoritmi

2. Random Forest -algoritmin sovittaminen harjoitussarjaan:

Nyt sovitetaan satunnainen metsäalgoritmi harjoitusjoukkoon. Sovitaksemme sen tuomme maahan RandomForestClassifier luokasta alkaen sklearn.ensemble kirjasto. Koodi annetaan alla:

 #Fitting Decision Tree classifier to the training set from sklearn.ensemble import RandomForestClassifier classifier= RandomForestClassifier(n_estimators= 10, criterion='entropy') classifier.fit(x_train, y_train) 

Yllä olevassa koodissa luokitinobjekti ottaa seuraavat parametrit:

tuple java
    n_estimators=Tarvittava määrä puita Random Forestissa. Oletusarvo on 10. Voimme valita minkä tahansa luvun, mutta meidän on huolehdittava yliasennusongelmasta.kriteeri =Se on funktio analysoida jaon tarkkuutta. Tässä olemme ottaneet 'entropian' tiedon saamiseksi.

Lähtö:

 RandomForestClassifier(bootstrap=True, class_weight=None, criterion='entropy', max_depth=None, max_features='auto', max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=None, oob_score=False, random_state=None, verbose=0, warm_start=False) 

3. Testisarjan tuloksen ennustaminen

Koska mallimme on sovitettu harjoitussarjaan, voimme nyt ennustaa testituloksen. Ennustusta varten luomme uuden ennustevektorin y_pred. Alla on koodi sille:

 #Predicting the test set result y_pred= classifier.predict(x_test) 

Lähtö:

Ennustevektori annetaan seuraavasti:

Satunnainen metsäalgoritmi

Tarkistamalla yllä oleva ennustevektori ja testijoukon reaalivektori, voimme määrittää luokittelijan tekemät väärät ennusteet.

4. Sekaannusmatriisin luominen

Nyt luomme hämmennysmatriisin oikeiden ja virheellisten ennusteiden määrittämiseksi. Alla on koodi sille:

 #Creating the Confusion matrix from sklearn.metrics import confusion_matrix cm= confusion_matrix(y_test, y_pred) 

Lähtö:

Satunnainen metsäalgoritmi

Kuten yllä olevasta matriisista näemme, niitä on 4+4= 8 väärää ennustetta ja 64+28= 92 oikeaa ennustetta.

java on yhtä suuri

5. Harjoittelun visualisointi Aseta tulos

Tässä visualisoimme harjoitussarjan tuloksen. Harjoitusjoukon tuloksen visualisoimiseksi piirrämme kaavion satunnaiselle metsäluokittajalle. Luokitin ennustaa kyllä ​​tai ei käyttäjille, jotka ovat joko ostaneet tai eivät ostaneet maastoautoa, kuten teimme Logistic Regressionissa. Alla on koodi sille:

 from matplotlib.colors import ListedColormap x_set, y_set = x_train, y_train x1, x2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step =0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(x1, x2, classifier.predict(nm.array([x1.ravel(), x2.ravel()]).T).reshape(x1.shape), alpha = 0.75, cmap = ListedColormap(('purple','green' ))) mtp.xlim(x1.min(), x1.max()) mtp.ylim(x2.min(), x2.max()) for i, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap(('purple', 'green'))(i), label = j) mtp.title('Random Forest Algorithm (Training set)') mtp.xlabel('Age') mtp.ylabel('Estimated Salary') mtp.legend() mtp.show() 

Lähtö:

Satunnainen metsäalgoritmi

Yllä oleva kuva on visualisointitulos Random Forest -luokittimelle, joka työskentelee harjoitusjoukon tuloksen kanssa. Se on hyvin samanlainen kuin päätöspuun luokitin. Jokainen datapiste vastaa kutakin user_data-argumentin käyttäjää, ja violetti ja vihreä alue ovat ennustealueita. Violetti alue luokitellaan käyttäjille, jotka eivät ostaneet SUV-autoa, ja vihreä alue on tarkoitettu käyttäjille, jotka ostivat SUV-auton.

Joten Random Forest -luokittimessa olemme ottaneet 10 puuta, jotka ovat ennustaneet Kyllä tai EI Ostettu-muuttujalle. Luokittelija otti suurimman osan ennusteista ja antoi tuloksen.

6. Testisarjan tuloksen visualisointi

Nyt visualisoimme testisarjan tuloksen. Alla on koodi sille:

 #Visulaizing the test set result from matplotlib.colors import ListedColormap x_set, y_set = x_test, y_test x1, x2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step =0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(x1, x2, classifier.predict(nm.array([x1.ravel(), x2.ravel()]).T).reshape(x1.shape), alpha = 0.75, cmap = ListedColormap(('purple','green' ))) mtp.xlim(x1.min(), x1.max()) mtp.ylim(x2.min(), x2.max()) for i, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap(('purple', 'green'))(i), label = j) mtp.title('Random Forest Algorithm(Test set)') mtp.xlabel('Age') mtp.ylabel('Estimated Salary') mtp.legend() mtp.show() 

Lähtö:

Satunnainen metsäalgoritmi

Yllä oleva kuva on testisarjan visualisointitulos. Voimme tarkistaa, että virheellisiä ennusteita on vähimmäismäärä (8) ilman Overfitting-ongelmaa. Saamme erilaisia ​​tuloksia muuttamalla puiden lukumäärää luokittimessa.