logo

Nejaušs meža algoritms

Random Forest ir populārs mašīnmācīšanās algoritms, kas pieder pie uzraudzītās mācīšanās tehnikas. To var izmantot gan klasifikācijas, gan regresijas problēmām ML. Tas ir balstīts uz jēdzienu ansambļa mācības, kas ir process vairāku klasifikatoru apvienošana, lai atrisinātu sarežģītu problēmu un uzlabotu modeļa veiktspēju.

Kā norāda nosaukums, 'Random Forest ir klasifikators, kas satur vairākus lēmumu kokus par dažādām dotās datu kopas apakškopām un ņem vidējo, lai uzlabotu šīs datu kopas paredzamo precizitāti.' Tā vietā, lai paļautos uz vienu lēmumu koku, nejaušais mežs ņem prognozi no katra koka, balstoties uz prognožu vairākuma balsīm, un prognozē galīgo rezultātu.

Lielāks koku skaits mežā nodrošina augstāku precizitāti un novērš pārklāšanas problēmu.

trīskārša ziema

Zemāk redzamā diagramma izskaidro Random Forest algoritma darbību:

Nejaušs meža algoritms

Piezīme. Lai labāk izprastu izlases meža algoritmu, jums ir jāzina lēmumu koka algoritms.

Pieņēmumi izlases mežam

Tā kā nejaušais mežs apvieno vairākus kokus, lai prognozētu datu kopas klasi, iespējams, ka daži lēmumu koki var paredzēt pareizo izvadi, bet citi ne. Bet kopā visi koki prognozē pareizo produkciju. Tāpēc zemāk ir divi pieņēmumi labākam izlases meža klasifikatoram:

  • Datu kopas pazīmju mainīgajā ir jābūt dažām faktiskajām vērtībām, lai klasifikators varētu paredzēt precīzus rezultātus, nevis uzminētu rezultātu.
  • Katra koka prognozēm jābūt ļoti zemām korelācijām.

Kāpēc izmantot Random Forest?

Tālāk ir norādīti daži punkti, kas izskaidro, kāpēc mums vajadzētu izmantot Random Forest algoritmu:

  • Tas aizņem mazāk apmācības laika, salīdzinot ar citiem algoritmiem.
  • Tas prognozē izvadi ar augstu precizitāti pat lielai datu kopai, kas darbojas efektīvi.
  • Tas var arī saglabāt precizitāti, ja trūkst lielas datu daļas.

Kā darbojas Random Forest algoritms?

Random Forest darbojas divās fāzēs, pirmkārt, ir izveidot nejaušu mežu, apvienojot N lēmumu koku, un, otrkārt, ir veikt prognozes katram kokam, kas izveidots pirmajā fāzē.

Darba procesu var izskaidrot tālāk norādītajās darbībās un diagrammā:

1. darbība: Atlasiet nejaušus K datu punktus no apmācības kopas.

2. darbība: Izveidojiet lēmumu kokus, kas saistīti ar atlasītajiem datu punktiem (apakškopām).

3. darbība: Izvēlieties numuru N lēmumu kokiem, kurus vēlaties izveidot.

4. darbība: Atkārtojiet 1. un 2. darbību.

5. darbība: Jauniem datu punktiem atrodiet katra lēmumu koka prognozes un piešķiriet jaunos datu punktus kategorijai, kas iegūst vairākuma balsu.

Algoritma darbību var labāk saprast, izmantojot šādu piemēru:

pasūtījuma koka šķērsošana

Piemērs: Pieņemsim, ka ir datu kopa, kurā ir vairāki augļu attēli. Tātad šī datu kopa tiek dota izlases meža klasifikatoram. Datu kopa ir sadalīta apakškopās un tiek dota katram lēmumu kokam. Apmācības fāzē katrs lēmumu koks rada prognozēšanas rezultātu, un, kad rodas jauns datu punkts, tad, pamatojoties uz lielāko daļu rezultātu, Random Forest klasifikators prognozē galīgo lēmumu. Apsveriet tālāk redzamo attēlu:

Nejaušs meža algoritms

Random Forest pielietojumi

Galvenokārt ir četras nozares, kurās visbiežāk tiek izmantots gadījuma mežs:

    Banku darbība:Banku sektors lielākoties izmanto šo algoritmu kredītriska identificēšanai.Medicīna:Ar šī algoritma palīdzību var noteikt slimību tendences un slimības riskus.Zemes izmantošana:Ar šo algoritmu varam identificēt līdzīgas zemes izmantošanas teritorijas.Mārketings:Izmantojot šo algoritmu, var noteikt mārketinga tendences.

Random Forest priekšrocības

  • Random Forest spēj veikt gan klasifikācijas, gan regresijas uzdevumus.
  • Tas spēj apstrādāt lielas datu kopas ar augstu dimensiju.
  • Tas uzlabo modeļa precizitāti un novērš pārmērīgas uzstādīšanas problēmu.

Random Forest trūkumi

  • Lai gan izlases mežu var izmantot gan klasifikācijas, gan regresijas uzdevumiem, tas nav vairāk piemērots Regresijas uzdevumiem.

Python izlases meža algoritma ieviešana

Tagad mēs ieviesīsim Random Forest Algorithm koku, izmantojot Python. Šim nolūkam mēs izmantosim to pašu datu kopu “user_data.csv”, ko izmantojām iepriekšējos klasifikācijas modeļos. Izmantojot to pašu datu kopu, mēs varam salīdzināt Random Forest klasifikatoru ar citiem klasifikācijas modeļiem, piemēram, Lēmumu koka klasifikators, KNN, SVM, loģistikas regresija utt.

Īstenošanas soļi ir norādīti zemāk:

  • Datu priekšapstrādes solis
  • Izlases meža algoritma pielāgošana apmācības komplektam
  • Pārbaudes rezultāta prognozēšana
  • Rezultāta precizitātes pārbaude (apjukuma matricas izveide)
  • Testa kopas rezultāta vizualizācija.

1. Datu iepriekšējas apstrādes solis:

Zemāk ir kods pirmapstrādes solim:

kaudzes kārtošanas algoritms
 # 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) 

Iepriekš minētajā kodā mēs esam iepriekš apstrādājuši datus. Kur mēs esam ielādējuši datu kopu, kas tiek norādīta šādi:

Nejaušs meža algoritms

2. Random Forest algoritma pielāgošana apmācības komplektam:

Tagad mēs pielāgosim izlases meža algoritmu apmācības komplektam. Lai to pielāgotu, mēs importēsim RandomForestClassifier klase no sklearn.ansamblis bibliotēka. Kods ir norādīts zemāk:

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

Iepriekš minētajā kodā klasifikatora objektam ir šādi parametri:

python samazināt
    n_estimators=Nepieciešamais koku skaits Random Forest. Noklusējuma vērtība ir 10. Mēs varam izvēlēties jebkuru skaitli, taču mums ir jārūpējas par pārmērības problēmu.kritērijs =Tā ir funkcija, lai analizētu sadalījuma precizitāti. Šeit mēs esam izmantojuši 'entropiju', lai iegūtu informāciju.

Izvade:

 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. Testa kopas rezultāta prognozēšana

Tā kā mūsu modelis ir piemērots treniņu komplektam, tagad mēs varam paredzēt testa rezultātu. Prognozēšanai mēs izveidosim jaunu prognožu vektoru y_pred. Zemāk ir tā kods:

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

Izvade:

Prognozes vektors tiek dots šādi:

Nejaušs meža algoritms

Pārbaudot iepriekš minēto prognožu vektoru un testa kopas reālo vektoru, mēs varam noteikt klasifikatora veiktās nepareizās prognozes.

4. Apjukuma matricas izveide

Tagad mēs izveidosim neskaidrības matricu, lai noteiktu pareizās un nepareizās prognozes. Zemāk ir tā kods:

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

Izvade:

Nejaušs meža algoritms

Kā mēs redzam iepriekš minētajā matricā, ir 4+4= 8 nepareizas prognozes un 64+28= 92 pareizas prognozes.

binārā koka inorder šķērsošana

5. Treniņa vizualizācija Uzstādiet rezultātu

Šeit mēs vizualizēsim treniņu komplekta rezultātu. Lai vizualizētu treniņu kopas rezultātu, mēs izveidosim grafiku izlases meža klasifikatoram. Klasifikators prognozēs jā vai nē lietotājiem, kuri ir iegādājušies vai nav iegādājušies SUV automašīnu, kā mēs to darījām loģistikas regresijā. Zemāk ir tā kods:

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

Izvade:

Nejaušs meža algoritms

Iepriekš redzamais attēls ir Random Forest klasifikatora vizualizācijas rezultāts, kas strādā ar apmācības kopas rezultātu. Tas ir ļoti līdzīgs Lēmumu koka klasifikatoram. Katrs datu punkts atbilst katram lietotāja_datu lietotājam, un violetie un zaļie reģioni ir prognozēšanas reģioni. Violetais apgabals ir klasificēts lietotājiem, kuri nav iegādājušies SUV automašīnu, un zaļais apgabals ir lietotājiem, kuri iegādājās SUV.

Tātad Random Forest klasifikatorā esam paņēmuši 10 kokus, kuri mainīgajam Iegādātajam ir paredzējuši Jā vai NĒ. Klasifikators paņēma lielāko daļu prognožu un sniedza rezultātu.

6. Testa komplekta rezultāta vizualizācija

Tagad mēs vizualizēsim testa kopas rezultātu. Zemāk ir tā kods:

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

Izvade:

Nejaušs meža algoritms

Iepriekš redzamais attēls ir testa komplekta vizualizācijas rezultāts. Mēs varam pārbaudīt, vai ir minimālais nepareizo prognožu skaits (8) bez Overfitting problēmas. Mainot koku skaitu klasifikatorā, iegūsim dažādus rezultātus.