V tomto článku uvidíme, ako zostaviť a Náhodný klasifikátor lesa pomocou Knižnica Scikit-Learn z programovací jazyk Python a na to používame súbor údajov IRIS čo je celkom bežný a známy súbor údajov.
Náhodný les
The Náhodný les alebo Random Decision Forest je riadený algoritmus strojového učenia, ktorý sa používa na klasifikáciu, regresiu a iné úlohy využívajúce rozhodovacie stromy. Náhodné lesy sú obzvlášť vhodné na prácu s veľkými a zložitými súbormi údajov, na prácu s vysokorozmernými priestormi prvkov a na poskytovanie prehľadov o dôležitosti prvkov. Schopnosť tohto algoritmu udržiavať vysokú predikčnú presnosť a zároveň minimalizovať nadmernú montáž z neho robí obľúbenú voľbu v rôznych oblastiach vrátane financií, zdravotnej starostlivosti a analýzy obrazu.
Náhodný klasifikátor lesa
Náhodný lesný klasifikátor vytvára a nastaviť z rozhodovacie stromy z náhodne vybranej podmnožiny tréningovej množiny. Je to množina rozhodovacích stromov (DT) z náhodne vybranej podmnožiny trénovacej množiny a potom zbiera hlasy z rôznych rozhodovacích stromov, aby rozhodla o konečnej predikcii.
Náhodný klasifikátor lesa
Náhodný lesný klasifikátor navyše dokáže zvládnuť úlohy klasifikácie aj regresie a jeho schopnosť poskytovať skóre dôležitosti funkcií z neho robí cenný nástroj na pochopenie významu rôznych premenných v súbore údajov.
Ako funguje náhodná klasifikácia lesov
Random Forest Classification je súborná technika učenia navrhnutá na zvýšenie presnosti a odolnosti klasifikačných úloh. Algoritmus vytvára počas tréningu množstvo rozhodovacích stromov a vytvára výstupy trieda to je spôsob klasifikačných tried. Každý rozhodovací strom v náhodnom lese je skonštruovaný pomocou podmnožiny trénovacích údajov a náhodnej podmnožiny funkcií, ktoré zavádzajú rozmanitosť medzi stromami, vďaka čomu je model robustnejší a menej náchylný na nadmerné prispôsobenie.
Algoritmus náhodného lesa využíva na vytvorenie týchto rôznych podmnožín techniku nazývanú vrecovanie (Bootstrap Aggregating).
Počas tréningovej fázy každý strom je vytvorený rekurzívnym delením údajov na základe funkcií. Na každého rozdeliť, algoritmus vyberie najlepšiu vlastnosť z náhodnej podmnožiny, pričom optimalizuje zisk informácií alebo nečistoty Gini. Proces pokračuje, kým nie je splnené vopred definované kritérium zastavenia, ako je dosiahnutie maximálnej hĺbky alebo minimálny počet vzoriek v každom listovom uzle.
Keď je náhodný les natrénovaný, môže robiť predpovede pomocou hlasov každého stromu pre triedu a trieda s najväčším počtom hlasov sa stane predpovedanou triedou pre vstupné údaje.
Výber funkcií v náhodných lesoch
Výber funkcií v náhodných lesoch je neodmysliteľne súčasťou konštrukcie jednotlivých rozhodovacích stromov a procesu agregácie.
Počas tréningovej fázy je každý rozhodovací strom vytvorený pomocou náhodnej podmnožiny funkcií, čo prispieva k rozmanitosti medzi stromami. Tento proces, známy ako vrecovanie funkcií, pomáha predchádzať dominancii akejkoľvek jednotlivej funkcie a podporuje robustnejší model.
Algoritmus vyhodnocuje rôzne podmnožiny funkcií v každom bode rozdelenia a vyberá najlepšiu vlastnosť na rozdelenie uzlov na základe kritérií, ako je zisk informácií alebo nečistota Gini. V dôsledku toho Random Forests prirodzene zahŕňa formu výberu funkcií, čím zaisťuje, že súbor ťaží z rozmanitej sady funkcií na zlepšenie zovšeobecnenia a zníženie nadmerného vybavenia.
Náhodný lesný klasifikátor v strojovom učení
Krok 1: Načítavanie množiny údajov
python3
# 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 množiny údajov a názvov funkcií, ktoré sa v nej nachádzajú.
python3
print>(iris.target_names)> |
>
>
Výkon:
[‘setosa’ ‘versicolor’ ‘virginica’]>
python3
print>(iris.feature_names)> |
>
>
Výkon:
[‘sepal length (cm)’, ’sepal width (cm)’, ’petal length (cm)’, ’petal width (cm)’]>
Krok 3: Rozdelenie testu na vlak
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>)> |
>
>
Krok 4: Import modulu Random Forest Classifier.
python3
Spojené štáty americké koľko miest
# 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})> |
>
>
Prehľad množiny údajov
python3
# printing the top 5 datasets in iris dataset> print>(data.head())> |
>
>
Výkon:
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: Školenie modelu
python3
gimp ukladanie ako jpeg
# 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))> |
>
>
Výkon:
ACCURACY OF THE MODEL: 0.9238095238095239>
Krok 6: Predpovede
Python3
# predicting which type of flower it is.> clf.predict([[>3>,>3>,>2>,>2>]])> |
>
>
Výkon:
array([0])>
To znamená, že áno hodvábna typ kvetu, pretože v našom súbore údajov máme tri druhy alebo triedy: Setosa, Versicolor a Virginia.
Skontrolujte dôležité funkcie
Teraz tiež zistíme dôležité funkcie alebo výber funkcií v súbore údajov IRIS pomocou nasledujúcich riadkov 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ýkon:
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 Pythone Scikit-Learn knižnica prichádza so sadou hyperparametre ktoré vám umožňujú doladiť správanie modelu. Pochopenie a výber vhodných hyperparametrov je rozhodujúci pre optimalizáciu výkonu modelu.
Náhodné parametre lesného klasifikátora
- n_estimators: Počet stromov v lese.
- Viac stromov vo všeobecnosti vedie k lepšiemu výkonu, ale za cenu výpočtového času.
- Začnite s hodnotou 100 a podľa potreby ju zvyšujte.
- max_depth: Maximálna hĺbka každého stromu.
- Hlbšie stromy môžu zachytiť zložitejšie vzory, ale tiež riskujú nadmerné vybavenie.
- Experimentujte s hodnotami medzi 5 a 15 a pre menšie množiny údajov zvážte nižšie hodnoty.
- max_features: Počet prvkov zvažovaných pre rozdelenie v každom uzle.
- Bežnou hodnotou je „sqrt“ (druhá odmocnina z celkového počtu objektov).
- Upravte na základe veľkosti množiny údajov a dôležitosti funkcie.
- kritérium: Funkcia používaná na meranie kvality rozdelenia („gini“ alebo „entropia“).
- Nečistota Gini je často o niečo rýchlejšia, ale obe majú vo všeobecnosti podobný výkon.
- min_samples_split: Minimálne vzorky potrebné na rozdelenie uzla.
- Vyššie hodnoty môžu zabrániť nadmernému vybaveniu, ale príliš vysoké môžu brániť zložitosti modelu.
- Začnite s 2 a upravte podľa potreby.
- min_samples_leaf: Minimálne vzorky požadované na to, aby boli v uzle listu.
- Podobné ako min_samples_split, ale zamerané na listové uzly.
- Začnite s 1 a upravte podľa potreby.
- bootstrap: Či použiť bootstrap vzorkovanie pri stavbe stromov (pravda alebo nepravda).
- Bootstrapping môže zlepšiť rozptyl a zovšeobecnenie modelu, ale môže mierne zvýšiť zaujatosť.
Výhody náhodného klasifikátora lesa
- Súborová povaha náhodných lesov, ktoré kombinujú viacero stromov, spôsobuje, že sú menej náchylné na nadmernú montáž v porovnaní s jednotlivými rozhodovacími stromami.
- Efektívne na množiny údajov s veľkým počtom funkcií a dobre si poradí s nepodstatnými premennými.
- Náhodné lesy môžu poskytnúť prehľad o dôležitosti funkcií, pomôcť pri výbere funkcií a porozumieť množine údajov.
Nevýhody náhodného lesného klasifikátora
- Náhodné lesy môžu byť výpočtovo drahé a môžu vyžadovať viac zdrojov v dôsledku konštrukcie viacerých rozhodovacích stromov.
- Povaha súboru sťažuje interpretáciu zdôvodnenia jednotlivých predpovedí v porovnaní s jedným rozhodovacím stromom.
- V nevyvážených súboroch údajov môžu byť náhodné lesy zaujaté voči väčšinovej triede, čo má vplyv na prediktívny výkon pre menšinové triedy.
Záver
Záverom možno povedať, že Random Forests so svojím súborom rozhodovacích stromov vynikajú ako robustné riešenie pre rôzne úlohy strojového učenia a predvádzajú svoju všestrannosť a efektivitu.
Často kladené otázky (FAQ)
Otázka: Čo je náhodný klasifikátor lesa?
Random Forest Classifier je súborová metóda učenia využívajúca viacero rozhodovacích stromov na klasifikačné úlohy, čím sa zlepšuje presnosť. Vyniká v spracovaní zložitých údajov, zmierňovaní nadmerného vybavenia a poskytovaní robustných predpovedí s dôležitými funkciami.
Otázka: Môže byť náhodný les použitý na regresiu?
Random Forest možno použiť na regresné aj klasifikačné úlohy, čo z neho robí všestranný algoritmus strojového učenia.
Otázka: Aký je princíp náhodného lesa?
Random Forest vytvára viacero rozhodovacích stromov pomocou náhodných podmnožín množiny údajov a kombinuje ich výstupy na zvýšenie presnosti.
Otázka: Aké sú aplikácie náhodného lesa?
Skutočné aplikácie zahŕňajú:
- Lekárska diagnóza: Identifikácia chorôb na základe údajov o pacientoch.
- Financie: Úverové hodnotenie pre hodnotenie rizika pri poskytovaní úverov.