V tomto článku uvidíme, jak vytvořit a Náhodný lesní klasifikátor za použití Knihovna Scikit-Learn z Programovací jazyk Python a k tomu používáme datový soubor IRIS což je docela běžný a slavný datový soubor.
Náhodný les
The Náhodný les nebo Random Decision Forest je kontrolovaný algoritmus strojového učení používaný pro klasifikaci, regresi a další úlohy využívající rozhodovací stromy. Náhodné lesy jsou zvláště vhodné pro práci s velkými a komplexními datovými sadami, pro práci s vysoce dimenzionálními prostory prvků a pro poskytování vhledů do důležitosti prvků. Schopnost tohoto algoritmu udržovat vysokou prediktivní přesnost a zároveň minimalizovat nadměrné vybavení z něj činí oblíbenou volbu v různých oblastech, včetně financí, zdravotnictví a analýzy obrazu, mezi jinými.
Náhodný lesní klasifikátor
Náhodný klasifikátor lesa vytvoří a soubor z rozhodovací stromy z náhodně vybrané podmnožiny tréninkové množiny. Jedná se o sadu rozhodovacích stromů (DT) z náhodně vybrané podmnožiny trénovací sady a poté sbírá hlasy z různých rozhodovacích stromů, aby rozhodl o konečné predikci.
Náhodný lesní klasifikátor
Náhodný lesní klasifikátor navíc dokáže zpracovat jak klasifikační, tak regresní úkoly a jeho schopnost poskytovat skóre důležitosti funkce z něj činí cenný nástroj pro pochopení významu různých proměnných v datové sadě.
Jak funguje náhodná klasifikace lesů
Random Forest Classification je souborová učební technika navržená pro zvýšení přesnosti a robustnosti klasifikačních úkolů. Algoritmus během trénování vytváří velké množství rozhodovacích stromů a vytváří výstupy třída to je způsob klasifikačních tříd. Každý rozhodovací strom v náhodné doménové struktuře je konstruován pomocí podmnožiny trénovacích dat a náhodné podmnožiny funkcí zavádějících rozmanitost mezi stromy, díky čemuž je model robustnější a méně náchylný k přemontování.
Algoritmus náhodného lesa využívá k vytvoření těchto různorodých podmnožin techniku zvanou pytlování (Bootstrap Aggregating).
Během tréninkové fáze každý strom je vytvořen rekurzivním rozdělením dat na základě funkcí. U každého rozdělit, algoritmus vybere nejlepší vlastnost z náhodné podmnožiny, optimalizuje pro zisk informací nebo nečistotu Gini. Proces pokračuje, dokud není splněno předem definované kritérium zastavení, jako je dosažení maximální hloubky nebo minimální počet vzorků v každém listovém uzlu.
Jakmile je náhodný les natrénován, může předpovídat pomocí hlasů každého stromu pro třídu a třída s největším počtem hlasů se stane předpovídanou třídou pro vstupní data.
Výběr funkcí v náhodných lesích
Výběr funkcí v Random Forests je neodmyslitelně součástí konstrukce jednotlivých rozhodovacích stromů a procesu agregace.
Během trénovací fáze je každý rozhodovací strom vytvořen pomocí náhodné podmnožiny funkcí, což přispívá k rozmanitosti mezi stromy. Tento proces, známý jako funkce pytlování, pomáhá zabránit dominanci jakékoli jednotlivé funkce a podporuje robustnější model.
Algoritmus vyhodnocuje různé podmnožiny prvků v každém bodě rozdělení a vybírá nejlepší prvek pro rozdělení uzlů na základě kritérií, jako je zisk informací nebo nečistota Gini. V důsledku toho Random Forests přirozeně zahrnují formu výběru funkcí, což zajišťuje, že soubor těží z rozmanité sady funkcí pro zlepšení zobecnění a snížení nadměrného přizpůsobení.
Náhodný lesní klasifikátor ve strojovém učení
Krok 1: Načtení datové sady
python3
aes vs des
# importing required libraries> # importing Scikit-learn library and datasets package> from> sklearn>import> datasets> # Loading the iris plants dataset (classification)> iris>=> datasets.load_iris()> |
>
>
Krok 2: Kontrola obsahu datové sady a názvů funkcí v ní přítomných.
python3
print>(iris.target_names)> |
>
>
Výstup:
[‘setosa’ ‘versicolor’ ‘virginica’]>
python3
print>(iris.feature_names)> |
>
>
Výstup:
[‘sepal length (cm)’, ’sepal width (cm)’, ’petal length (cm)’, ’petal width (cm)’]>
Krok 3: Trénujte testovací rozdělení
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>)> |
>
čtení java csv
>
Krok 4: Import modulu Random Forest Classifier.
python3
# 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})> |
>
>
Přehled datové sady
python3
# printing the top 5 datasets in iris dataset> print>(data.head())> |
>
>
Výstup:
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>
Krok 5: Trénink modelu
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))> |
kolik milionů je v miliardě
>
>
Výstup:
ACCURACY OF THE MODEL: 0.9238095238095239>
Krok 6: Předpovědi
Python3
# predicting which type of flower it is.> clf.predict([[>3>,>3>,>2>,>2>]])> |
>
>
Výstup:
array([0])>
To znamená, že ano hedvábný typ květu, jak jsme získali tři druhy nebo třídy v našem souboru dat: Setosa, Versicolor a Virginia.
Zkontrolujte důležité funkce
Nyní také zjistíme důležité funkce nebo výběr funkcí v datové sadě IRIS pomocí následujících řádků kódu.
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> |
>
>
Výstup:
petal length (cm) 0.440050 petal width (cm) 0.423437 sepal length (cm) 0.103293 sepal width (cm) 0.033220 dtype: float64>
Náhodné lesy v Pythonu Scikit-Learn knihovna přichází se sadou hyperparametry které umožňují doladit chování modelu. Pochopení a výběr vhodných hyperparametrů je zásadní pro optimalizaci výkonu modelu.
Náhodné parametry lesního klasifikátoru
- n_odhadů: Počet stromů v lese.
- Více stromů obecně vede k lepšímu výkonu, ale za cenu výpočetního času.
- Začněte s hodnotou 100 a zvyšujte podle potřeby.
- max_depth: Maximální hloubka každého stromu.
- Hlubší stromy mohou zachytit složitější vzory, ale také riskovat nadměrné vybavení.
- Experimentujte s hodnotami mezi 5 a 15 a pro menší soubory dat zvažte nižší hodnoty.
- max_features: Počet prvků zvažovaných pro rozdělení v každém uzlu.
- Běžná hodnota je „sqrt“ (druhá odmocnina z celkového počtu prvků).
- Upravte na základě velikosti datové sady a důležitosti funkce.
- kritérium: Funkce používaná k měření kvality rozdělení („gini“ nebo „entropie“).
- Nečistota Gini je často o něco rychlejší, ale obě mají obecně podobný výkon.
- min_samples_split: Minimální vzorky potřebné k rozdělení uzlu.
- Vyšší hodnoty mohou zabránit přemontování, ale příliš vysoké mohou bránit složitosti modelu.
- Začněte s 2 a upravte podle potřeby.
- min_samples_leaf: Minimální požadované vzorky musí být v uzlu listu.
- Podobné jako min_samples_split, ale zaměřené na listové uzly.
- Začněte s 1 a upravte podle potřeby.
- bootstrap: Zda použít bootstrap vzorkování při budování stromů (True nebo False).
- Bootstrapping může zlepšit rozptyl a zobecnění modelu, ale může mírně zvýšit zkreslení.
Výhody náhodného lesního klasifikátoru
- Souborová povaha náhodných lesů, které kombinují více stromů, je činí méně náchylnými k nadměrnému přizpůsobení ve srovnání s jednotlivými rozhodovacími stromy.
- Efektivní na datové sady s velkým množstvím funkcí a dobře si poradí s irelevantními proměnnými.
- Náhodné lesy mohou poskytnout přehled o důležitosti funkcí, pomáhají při výběru funkcí a porozumění datové sadě.
Nevýhody náhodného lesního klasifikátoru
- Náhodné lesy mohou být výpočetně nákladné a mohou vyžadovat více zdrojů kvůli konstrukci více rozhodovacích stromů.
- Vzhledem k povaze souboru je obtížné interpretovat zdůvodnění jednotlivých předpovědí ve srovnání s jedním rozhodovacím stromem.
- V nevyvážených souborech dat mohou být náhodné lesy zaujaté vůči většinové třídě, což má dopad na prediktivní výkon pro menšinové třídy.
Závěr
Závěrem lze říci, že Random Forests se svým souborem rozhodovacích stromů vynikají jako robustní řešení pro různé úlohy strojového učení a předvádějí svou všestrannost a efektivitu.
Často kladené otázky (FAQ)
Otázka: Co je náhodný klasifikátor doménové struktury?
Random Forest Classifier je souborová metoda učení využívající více rozhodovacích stromů pro klasifikační úlohy, což zlepšuje přesnost. Vyniká ve zpracování složitých dat, zmírnění nadměrného vybavení a poskytování robustních předpovědí s významem funkcí.
Q. Lze náhodnou doménovou strukturu použít pro regresi?
Random Forest lze použít pro regresní i klasifikační úlohy, což z něj činí všestranný algoritmus strojového učení.
Otázka: Jaký je princip náhodného lesa?
Random Forest vytváří více rozhodovacích stromů pomocí náhodných podmnožin datové sady a kombinuje jejich výstupy pro zvýšení přesnosti.
Otázka: Jaké jsou aplikace náhodného lesa?
Skutečné aplikace zahrnují:
- Lékařská diagnóza: Identifikace nemocí na základě údajů o pacientech.
- Finance: Kreditní skóring pro hodnocení rizik při poskytování úvěrů.