A Random Forest egy népszerű gépi tanulási algoritmus, amely a felügyelt tanulási technikához tartozik. ML osztályozási és regressziós problémáihoz egyaránt használható. A koncepción alapul együttes tanulás, amely egy folyamat több osztályozó kombinálása egy összetett probléma megoldására és a modell teljesítményének javítására.
Ahogy a név is sugallja, 'A Random Forest egy olyan osztályozó, amely számos döntési fát tartalmaz az adott adatkészlet különböző részhalmazairól, és az átlagot veszi az adatkészlet prediktív pontosságának javítása érdekében.' Ahelyett, hogy egy döntési fára hagyatkozna, a véletlenszerű erdő minden fáról és az előrejelzések többségi szavazatai alapján veszi az előrejelzést, és megjósolja a végső kimenetet.
A nagyobb számú fa az erdőben nagyobb pontosságot eredményez, és megakadályozza a túlillesztés problémáját.
Sai Pallavi színésznő
Az alábbi diagram bemutatja a Random Forest algoritmus működését:
Megjegyzés: A Random Forest Algoritmus jobb megértéséhez ismernie kell a döntési fa algoritmust.
A Random Forest feltételezései
Mivel a véletlenszerű erdő több fát kombinál az adatkészlet osztályának előrejelzéséhez, lehetséges, hogy egyes döntési fák előre jelezhetik a helyes kimenetet, míg mások nem. De együtt az összes fa megjósolja a helyes kimenetet. Ezért az alábbiakban két feltételezés található egy jobb véletlenszerű erdőosztályozóhoz:
- Az adatkészlet jellemzőváltozójában szerepelnie kell néhány tényleges értéknek, hogy az osztályozó pontos eredményeket tudjon előre jelezni, nem pedig feltételezett eredményt.
- Az egyes fák előrejelzéseinek nagyon alacsony korrelációjúaknak kell lenniük.
Miért használja a Random Forestet?
Az alábbiakban felsorolunk néhány pontot, amelyek megmagyarázzák, miért érdemes a Random Forest algoritmust használnunk:
- Más algoritmusokhoz képest kevesebb edzési időt vesz igénybe.
- Nagy pontossággal jósolja meg a kimenetet, még a hatékonyan futó nagy adatkészletek esetén is.
- Akkor is megőrizheti a pontosságot, ha az adatok nagy része hiányzik.
Hogyan működik a Random Forest algoritmus?
A Random Forest kétfázisban működik, először is létrehozza a véletlenszerű erdőt N döntési fa kombinálásával, másodszor pedig előrejelzéseket készít az első fázisban létrehozott minden egyes fára.
A munkafolyamat az alábbi lépésekkel és diagrammal magyarázható:
1. lépés: Válasszon ki véletlenszerűen K adatpontot a képzési halmazból.
2. lépés: Építse fel a kiválasztott adatpontokhoz (Részhalmazokhoz) társított döntési fákat.
3. lépés: Válassza ki az N számot a felépíteni kívánt döntési fákhoz.
4. lépés: Ismételje meg az 1. és 2. lépést.
5. lépés: Új adatpontok esetén keresse meg az egyes döntési fák előrejelzéseit, és rendelje hozzá az új adatpontokat ahhoz a kategóriához, amelyik a többségi szavazatot nyerte.
egyesült államok hány város
Az algoritmus működése jobban megérthető az alábbi példával:
Példa: Tegyük fel, hogy van egy adatkészlet, amely több gyümölcsképet tartalmaz. Tehát ezt az adatkészletet a véletlenszerű erdőosztályozó kapja. Az adatkészlet részhalmazokra van felosztva, és minden döntési fához hozzá van rendelve. A betanítási szakaszban minden döntési fa előrejelzési eredményt ad, és amikor új adatpont jön létre, akkor az eredmények többsége alapján a Random Forest osztályozó megjósolja a végső döntést. Tekintsük az alábbi képet:
A Random Forest alkalmazásai
Főleg négy szektor van, ahol a Random erdőt leginkább használják:
A Random Forest előnyei
- A Random Forest képes osztályozási és regressziós feladatok elvégzésére is.
- Nagy adathalmazok nagy dimenziójú kezelésére alkalmas.
- Növeli a modell pontosságát és megakadályozza a túlillesztést.
A Random Forest hátrányai
- Bár a véletlenszerű erdő mind osztályozási, mind regressziós feladatokhoz használható, regressziós feladatokra nem alkalmasabb.
A Random Forest Algorithm Python megvalósítása
Most a Random Forest Algorithm fát fogjuk megvalósítani Python segítségével. Ehhez ugyanazt a „user_data.csv” adatkészletet fogjuk használni, amelyet a korábbi osztályozási modellekben is használtunk. Ugyanazon adatkészlet használatával összehasonlíthatjuk a Random Forest osztályozót más osztályozási modellekkel, mint pl Döntési fa osztályozó, KNN, SVM, logisztikai regresszió stb.
A megvalósítás lépései az alábbiak:
sql szám külön
- Adatok előfeldolgozási lépése
- A Véletlenszerű erdő algoritmus illesztése a képzési halmazhoz
- A teszt eredményének előrejelzése
- Az eredmény tesztelési pontossága (Confusion mátrix létrehozása)
- A tesztkészlet eredményének megjelenítése.
1. Adat-előfeldolgozási lépés:
Az alábbiakban található az előfeldolgozási lépés kódja:
# 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)
A fenti kódban előzetesen feldolgoztuk az adatokat. Ahová betöltöttük az adatkészletet, amely így van megadva:
2. A Random Forest algoritmus illesztése a képzési készlethez:
Most a Random forest algoritmust illesztjük a tanítókészlethez. Az illesztéshez importáljuk a RandomForestClassifier osztályból a sklearn.együttes könyvtár. A kód alább található:
#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)
A fenti kódban az osztályozó objektum az alábbi paramétereket veszi fel:
Kimenet:
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. A tesztkészlet eredményének előrejelzése
Mivel modellünk az edzéskészlethez van illesztve, így most már megjósolhatjuk a teszt eredményét. Az előrejelzéshez létrehozunk egy új y_pred predikciós vektort. Alább található a kódja hozzá:
#Predicting the test set result y_pred= classifier.predict(x_test)
Kimenet:
A predikciós vektort a következőképpen adjuk meg:
A fenti predikciós vektor és teszthalmaz valós vektor ellenőrzésével megállapíthatjuk, hogy az osztályozó milyen hibás előrejelzéseket adott.
4. Zavart mátrix létrehozása
Most létrehozzuk a zavaros mátrixot a helyes és helytelen előrejelzések meghatározásához. Alább található a kódja hozzá:
könyvtár átnevezése linuxban
#Creating the Confusion matrix from sklearn.metrics import confusion_matrix cm= confusion_matrix(y_test, y_pred)
Kimenet:
Amint a fenti mátrixban láthatjuk, vannak 4+4= 8 hibás előrejelzés és 64+28= 92 helyes jóslat.
5. Az edzés megjelenítése Állítsa be az eredményt
Itt vizualizáljuk az edzéskészlet eredményét. A képzési halmaz eredményének megjelenítéséhez grafikont készítünk a véletlenszerű erdőosztályozóhoz. Az osztályozó igent vagy nemet jósol azoknak a felhasználóknak, akik megvásárolták vagy nem vásárolták meg a SUV-autót, ahogyan azt a Logisztikai regresszióban tettük. Alább található a kódja hozzá:
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()
Kimenet:
A fenti kép a képzési halmaz eredményével dolgozó Random Forest osztályozó vizualizációs eredménye. Nagyon hasonlít a határozati fa osztályozóhoz. Minden adatpont megfelel a user_data minden egyes felhasználójának, és a lila és zöld régiók az előrejelzési régiók. A lila régió azoknak a felhasználóknak van besorolva, akik nem vásárolták a SUV autót, a zöld régió pedig a SUV-t vásároló felhasználókat.
Tehát a Random Forest osztályozóban 10 olyan fát vettünk, amelyek a Vásárolt változóhoz igent vagy NEM-et jósoltak. Az osztályozó a jóslatok többségét átvette és megadta az eredményt.
6. A tesztkészlet eredményének megjelenítése
Most vizualizáljuk a tesztkészlet eredményét. Alább található a kódja hozzá:
válasszon többtáblás sql-t
#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()
Kimenet:
A fenti kép a tesztkészlet vizualizációs eredménye. Ellenőrizhetjük, hogy van-e minimális számú helytelen előrejelzés (8) a túlillesztési probléma nélkül. Az osztályozóban lévő fák számának megváltoztatásával eltérő eredményeket kapunk.