logo

Náhodný lesní algoritmus

Random Forest je populární algoritmus strojového učení, který patří k technice učení pod dohledem. Může být použit pro klasifikační i regresní problémy v ML. Vychází z konceptu souborové učení, což je proces kombinace více klasifikátorů k vyřešení složitého problému a ke zlepšení výkonu modelu.

Jak název napovídá, 'Random Forest je klasifikátor, který obsahuje řadu rozhodovacích stromů pro různé podmnožiny daného souboru dat a bere průměr ke zlepšení prediktivní přesnosti tohoto souboru dat.' Místo toho, aby se spoléhalo na jeden rozhodovací strom, náhodný les bere předpověď z každého stromu a na základě většinového hlasování předpovědí a předpovídá konečný výstup.

Větší počet stromů v lese vede k vyšší přesnosti a zabraňuje problémům s přesazováním.

java metody

Níže uvedený diagram vysvětluje fungování algoritmu Random Forest:

Náhodný lesní algoritmus

Poznámka: Abyste lépe porozuměli algoritmu Random Forest, měli byste znát algoritmus rozhodovacího stromu.

Předpoklady pro Random Forest

Vzhledem k tomu, že náhodná doménová struktura kombinuje více stromů k predikci třídy datové sady, je možné, že některé rozhodovací stromy mohou předpovídat správný výstup, zatímco jiné nikoli. Ale společně všechny stromy předpovídají správný výstup. Níže jsou proto uvedeny dva předpoklady pro lepší klasifikátor náhodného lesa:

  • V proměnné funkce datové sady by měly být nějaké skutečné hodnoty, aby klasifikátor mohl předvídat přesné výsledky spíše než odhadovaný výsledek.
  • Předpovědi z každého stromu musí mít velmi nízké korelace.

Proč používat Random Forest?

Níže jsou uvedeny některé body, které vysvětlují, proč bychom měli používat algoritmus Random Forest:

  • Ve srovnání s jinými algoritmy trvá trénink méně času.
  • Předpovídá výstup s vysokou přesností, a to i pro velký soubor dat, který běží efektivně.
  • Dokáže také zachovat přesnost, když chybí velká část dat.

Jak funguje algoritmus Random Forest?

Random Forest funguje ve dvou fázích, první je vytvořit náhodnou doménovou strukturu kombinací N rozhodovacího stromu a druhá je vytvářet předpovědi pro každý strom vytvořený v první fázi.

Pracovní proces lze vysvětlit níže uvedenými kroky a diagramem:

Krok 1: Vyberte náhodných K datových bodů z trénovací sady.

Krok 2: Sestavte rozhodovací stromy spojené s vybranými datovými body (podmnožiny).

Krok 3: Vyberte počet N pro rozhodovací stromy, které chcete postavit.

Krok 4: Opakujte kroky 1 a 2.

bash pro smyčku 1 až 10

Krok 5: Pro nové datové body najděte předpovědi každého rozhodovacího stromu a přiřaďte nové datové body kategorii, která získá většinu hlasů.

Fungování algoritmu lze lépe pochopit na níže uvedeném příkladu:

Příklad: Předpokládejme, že existuje datová sada, která obsahuje více obrázků ovoce. Tato datová sada je tedy přiřazena náhodnému klasifikátoru lesa. Datová sada je rozdělena do podmnožin a dána každému rozhodovacímu stromu. Během trénovací fáze každý rozhodovací strom vytváří výsledek predikce, a když se objeví nový datový bod, pak na základě většiny výsledků klasifikátor Random Forest předpovídá konečné rozhodnutí. Zvažte následující obrázek:

Náhodný lesní algoritmus

Aplikace Random Forest

Náhodné lesy se většinou používají ve čtyřech sektorech:

    Bankovnictví:Bankovní sektor tento algoritmus nejčastěji využívá pro identifikaci úvěrového rizika.Lék:Pomocí tohoto algoritmu lze identifikovat trendy onemocnění a rizika onemocnění.Využívání půdy:Pomocí tohoto algoritmu můžeme identifikovat oblasti podobného využití půdy.Marketing:Pomocí tohoto algoritmu lze identifikovat marketingové trendy.

Výhody Random Forest

  • Random Forest je schopen provádět klasifikační i regresní úkoly.
  • Je schopen zpracovávat velké datové sady s vysokou dimenzí.
  • Zvyšuje přesnost modelu a zabraňuje problémům s přesazením.

Nevýhody Random Forest

  • Přestože lze náhodný les použít pro klasifikační i regresní úlohy, není vhodnější pro regresní úlohy.

Implementace algoritmu Random Forest v Pythonu

Nyní implementujeme strom Random Forest Algorithm pomocí Pythonu. K tomu použijeme stejnou datovou sadu 'user_data.csv', kterou jsme používali v předchozích klasifikačních modelech. Použitím stejného datasetu můžeme porovnat klasifikátor Random Forest s jinými klasifikačními modely jako např Klasifikátor rozhodovacího stromu, KNN, SVM, logistická regrese atd.

kolik uncí je 10 mililitrů

Kroky implementace jsou uvedeny níže:

  • Krok předběžného zpracování dat
  • Přizpůsobení algoritmu náhodného lesa k tréninkové sadě
  • Předpovídání výsledku testu
  • Testovací přesnost výsledku (Creation of Confusion matrix)
  • Vizualizace výsledku testovací sady.

1. Krok předběžného zpracování dat:

Níže je uveden kód pro krok předběžného zpracování:

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

Ve výše uvedeném kódu jsme data předem zpracovali. Kde jsme načetli datovou sadu, která je dána jako:

Náhodný lesní algoritmus

2. Přizpůsobení algoritmu Random Forest do trénovací sady:

Nyní přizpůsobíme trénovací množinu algoritmus Random Forest. Aby se to vešlo, naimportujeme RandomForestClassifier třídy z sklearn.soubor knihovna. Kód je uveden níže:

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

Ve výše uvedeném kódu má objekt klasifikátoru následující parametry:

    n_estimators=Požadovaný počet stromů v Náhodném lese. Výchozí hodnota je 10. Můžeme si vybrat libovolný počet, ale musíme se postarat o problém s přesazením.kritérium =Je to funkce pro analýzu přesnosti rozdělení. Zde jsme vzali „entropii“ pro zisk informací.

Výstup:

 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. Předvídání výsledku testovací sady

Vzhledem k tomu, že náš model je přizpůsoben tréninkové sadě, nyní můžeme předpovědět výsledek testu. Pro predikci vytvoříme nový predikční vektor y_pred. Níže je pro něj uveden kód:

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

Výstup:

Vektor predikce je dán takto:

Náhodný lesní algoritmus

Kontrolou výše uvedeného predikčního vektoru a reálného vektoru testovací sady můžeme určit nesprávné předpovědi provedené klasifikátorem.

co je myspace

4. Vytvoření Confusion Matrix

Nyní vytvoříme matici zmatků pro určení správných a nesprávných předpovědí. Níže je pro něj uveden kód:

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

Výstup:

Náhodný lesní algoritmus

Jak můžeme vidět ve výše uvedené matici, existují 4+4= 8 nesprávných předpovědí a 64+28= 92 správných předpovědí.

5. Vizualizace tréninku Nastavte výsledek

Zde si vizualizujeme výsledek tréninkové sestavy. Pro vizualizaci výsledku trénovací sady vyneseme graf pro klasifikátor Random Forest. Klasifikátor předpoví ano nebo ne pro uživatele, kteří si koupili nebo nezakoupili vůz SUV, jako jsme to udělali v Logistic Regression. Níže je pro něj uveden kód:

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

Výstup:

Náhodný lesní algoritmus

Výše uvedený obrázek je výsledkem vizualizace pro klasifikátor Random Forest pracující s výsledkem trénovací sady. Je velmi podobný klasifikátoru rozhodovacího stromu. Každý datový bod odpovídá každému uživateli uživatelských dat a fialové a zelené oblasti jsou oblasti predikce. Fialová oblast je klasifikována pro uživatele, kteří si nezakoupili vůz SUV, a zelená oblast je určena pro uživatele, kteří si zakoupili SUV.

pokud jinak bash

Takže v klasifikátoru Random Forest jsme vzali 10 stromů, které předpověděly Ano nebo NE pro proměnnou Zakoupené. Klasifikátor vzal většinu předpovědí a poskytl výsledek.

6. Vizualizace výsledku testovací sady

Nyní si vizualizujeme výsledek testovací sady. Níže je pro něj uveden kód:

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

Výstup:

Náhodný lesní algoritmus

Výše uvedený obrázek je výsledkem vizualizace pro testovací sadu. Můžeme zkontrolovat, zda existuje minimální počet nesprávných předpovědí (8) bez problému Overfitting. Jiné výsledky získáme změnou počtu stromů v klasifikátoru.