logo

Random Forest Clasifier folosind Scikit-learn

În acest articol, vom vedea cum să construim un Clasificator de pădure aleatoriu folosind Biblioteca Scikit-Learn de Limbajul de programare Python și pentru a face acest lucru, folosim Setul de date IRIS care este un set de date destul de comun și celebru.

Pădurea aleatorie

The pădure întâmplătoare sau Random Decision Forest este un algoritm de învățare automată supravegheat utilizat pentru clasificare, regresie și alte sarcini folosind arbori de decizie. Pădurile aleatoare sunt deosebit de potrivite pentru a gestiona seturi de date mari și complexe, pentru a se ocupa de spații de caracteristici cu dimensiuni mari și pentru a oferi informații despre importanța caracteristicilor. Capacitatea acestui algoritm de a menține o acuratețe predictivă ridicată, minimizând în același timp supraadaptarea, îl face o alegere populară în diverse domenii, inclusiv finanțe, asistență medicală și analiza imaginilor, printre altele.

Clasificator de pădure aleatoriu

Clasificatorul de pădure aleatoriu creează a a stabilit de arbori de decizie dintr-un subset aleatoriu al setului de antrenament. Este un set de arbori de decizie (DT) dintr-un subset selectat aleatoriu al setului de antrenament și apoi colectează voturile din arbori de decizie diferiți pentru a decide predicția finală.



Clasificator de pădure aleatoriu

În plus, clasificatorul de pădure aleatoriu poate gestiona atât sarcini de clasificare, cât și de regresie, iar capacitatea sa de a furniza scoruri de importanță a caracteristicilor îl face un instrument valoros pentru înțelegerea semnificației diferitelor variabile din setul de date.

Cum funcționează clasificarea aleatorie a pădurilor

Clasificarea aleatorie a pădurilor este o tehnică de învățare prin ansamblu concepută pentru a îmbunătăți acuratețea și robustețea sarcinilor de clasificare. Algoritmul construiește o multitudine de arbori de decizie în timpul antrenamentului și dă rezultate clasă acesta este modul claselor de clasificare. Fiecare arbore de decizie din pădurea aleatoare este construit folosind un subset de date de antrenament și un subset aleatoriu de caracteristici care introduc diversitate printre copaci, făcând modelul mai robust și mai puțin predispus la supraadaptare.

Algoritmul forestier aleatoriu folosește o tehnică numită bagging (Bootstrap Aggregating) pentru a crea aceste subseturi diverse.

În timpul fazei de antrenament, fiecare copac este construit prin partiționarea recursivă a datelor pe baza caracteristicilor. La fiecare Despică, algoritmul selectează cea mai bună caracteristică din subsetul aleatoriu, optimizând pentru câștigul de informații sau impuritatea Gini. Procesul continuă până când este îndeplinit un criteriu de oprire predefinit, cum ar fi atingerea unei adâncimi maxime sau existența unui număr minim de probe în fiecare nod al frunzei.

Odată ce pădurea aleatoare este antrenată, poate face predicții, folosind fiecare copac votează pentru o clasă, iar clasa cu cele mai multe voturi devine clasa prezisă pentru datele de intrare.

Selectarea caracteristicilor în păduri aleatorii

Selectarea caracteristicilor în Random Forests este în mod inerent încorporat în construcția arborilor de decizie individuali și în procesul de agregare.

În timpul fazei de instruire, fiecare arbore de decizie este construit folosind un subset aleatoriu de caracteristici, contribuind la diversitatea dintre arbori. Procesul este, cunoscut sub numele de caracteristică însacătoare, ajută la prevenirea dominației oricărei caracteristici individuale și promovează un model mai robust.

Algoritmul evaluează diferite subseturi de caracteristici la fiecare punct de împărțire, selectând cea mai bună caracteristică pentru împărțirea nodurilor pe baza unor criterii precum câștigul de informații sau impuritatea Gini. În consecință, Random Forests încorporează în mod natural o formă de selecție a caracteristicilor, asigurându-se că ansamblul beneficiază de un set divers de caracteristici pentru a îmbunătăți generalizarea și a reduce supraadaptarea.

Random Forest Clasifier în Machine Learning

Pasul 1: se încarcă setul de date

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

>

>

Pasul 2: Verificarea conținutului setului de date și a numelor caracteristicilor prezente în acesta.

python3




ceva pentru bfs
print>(iris.target_names)>

>

>

Ieșire:

[‘setosa’ ‘versicolor’ ‘virginica’]>

python3




print>(iris.feature_names)>

>

>

Ieșire:

[‘sepal length (cm)’, ’sepal width (cm)’, ’petal length (cm)’, ’petal width (cm)’]>

Pasul 3: Tren Test Split

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

>

>

Pasul 4: Importați modulul 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})>

>

>

Prezentare generală a setului de date

python3




# printing the top 5 datasets in iris dataset> print>(data.head())>

>

>

Ieșire:

 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>

Pasul 5: Antrenarea modelului

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

>

>

Ieșire:

ACCURACY OF THE MODEL: 0.9238095238095239>

Pasul 6: Predicții

Python3




design singleton

# predicting which type of flower it is.> clf.predict([[>3>,>3>,>2>,>2>]])>

>

>

Ieșire:

array([0])>

Aceasta înseamnă că este mătăsos tipul de floare, deoarece am obținut cele trei specii sau clase din setul nostru de date: Setosa, Versicolor și Virginia.

Verificați caracteristicile importante

Acum vom afla și caracteristicile importante sau selectarea caracteristicilor din setul de date IRIS utilizând următoarele linii de cod.

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>

>

>

Ieșire:

petal length (cm) 0.440050 petal width (cm) 0.423437 sepal length (cm) 0.103293 sepal width (cm) 0.033220 dtype: float64>

Păduri aleatorii în Python’s Scikit-Learn biblioteca vin cu un set de hiperparametrii care vă permit să reglați fin comportamentul modelului. Înțelegerea și selectarea hiperparametrilor adecvați este crucială pentru optimizarea performanței modelului.

Parametrii aleatoriu ale clasificatorului de pădure

  • n_estimatori: Numărul de copaci din pădure.
    • Mai mulți copaci conduc în general la performanțe mai bune, dar cu prețul timpului de calcul.
    • Începeți cu o valoare de 100 și creșteți după cum este necesar.
  • adancime maxima: Adâncimea maximă a fiecărui copac.
    • Copacii mai adânci pot capta modele mai complexe, dar riscă și supraadaptarea.
    • Experimentați cu valori între 5 și 15 și luați în considerare valori mai mici pentru seturi de date mai mici.
  • max_features: Numărul de caracteristici luate în considerare pentru împărțire la fiecare nod.
    • O valoare comună este „sqrt” (rădăcina pătrată a numărului total de caracteristici).
    • Ajustați în funcție de dimensiunea setului de date și de importanța caracteristicilor.
  • criteriu: Funcție utilizată pentru a măsura calitatea divizării („gini” sau „entropie”).
    • Impuritatea Gini este adesea puțin mai rapidă, dar ambele sunt în general similare ca performanță.
  • min_samples_split: Eșantioane minime necesare pentru a împărți un nod.
    • Valorile mai mari pot preveni supraadaptarea, dar prea mari pot împiedica complexitatea modelului.
    • Începeți cu 2 și ajustați după cum este necesar.
  • min_samples_leaf: Probele minime necesare pentru a fi la un nod frunză.
    • Similar cu min_samples_split, dar concentrat pe nodurile frunzelor.
    • Începeți cu 1 și ajustați după cum este necesar.
  • bootstrap: Dacă folosiți eșantionarea bootstrap atunci când construiți copaci (adevărat sau fals).
    • Bootstrapping poate îmbunătăți varianța și generalizarea modelului, dar poate crește ușor părtinirea.

Avantajele Random Forest Classifier

  • Natura de ansamblu a Pădurilor aleatorii, care combină mai mulți arbori, îi face mai puțin predispuși la supraadaptare în comparație cu arborii de decizie individuali.
  • Eficient pe seturi de date cu un număr mare de caracteristici și poate gestiona bine variabilele irelevante.
  • Random Forests poate oferi informații despre importanța caracteristicilor, ajutând la selectarea caracteristicilor și la înțelegerea setului de date.

Dezavantajele Random Forest Classifier

  • Pădurile aleatorii pot fi costisitoare din punct de vedere computațional și pot necesita mai multe resurse datorită construcției de arbori de decizie multipli.
  • Natura ansamblului face dificilă interpretarea raționamentului din spatele predicțiilor individuale în comparație cu un singur arbore de decizie.
  • În seturile de date dezechilibrate, Pădurile aleatoare pot fi părtinitoare spre clasa majoritară, impactând performanța predictivă pentru clasele minoritare.

Concluzie

În concluzie, Random Forests, cu ansamblul lor de arbori de decizie, se remarcă ca o soluție robustă pentru diverse sarcini de învățare automată, arătându-și versatilitatea și eficacitatea.

Întrebări frecvente (Întrebări frecvente)

Î. Ce este clasificatorul de pădure aleatoriu?

Random Forest Classifier este o metodă de învățare prin ansamblu care utilizează mai mulți arbori de decizie pentru sarcini de clasificare, îmbunătățind acuratețea. Excelează în gestionarea datelor complexe, atenuarea supraadaptării și furnizarea de predicții robuste cu importanță caracteristică.

Î. Poate fi folosită pădurea aleatoare pentru regresie?

Random Forest poate fi folosit atât pentru regresie, cât și pentru sarcini de clasificare, ceea ce îl face un algoritm versatil de învățare automată.

Î. Care este principiul pădurii aleatorii?

Random Forest construiește mai mulți arbori de decizie folosind subseturi aleatorii ale setului de date și combină rezultatele acestora pentru o precizie îmbunătățită.

Î. Care sunt aplicațiile pădurii aleatorii?

Aplicațiile reale includ:

  • Diagnostic medical: Identificarea bolilor pe baza datelor pacientului.
  • Finanţa: Scorul de credit pentru evaluarea riscului în creditare.