Algoritmii pe bază de arbori sunt metode populare de învățare automată utilizate pentru rezolvarea problemelor de învățare supravegheate. Acești algoritmi sunt flexibili și pot rezolva orice fel de problemă la îndemână (clasificare sau regresie).

Algoritmii pe bază de arbori tind să folosească Rău pentru caracteristici continue sau modul pentru caracteristici categorice atunci când se fac predicții asupra eșantioanelor de formare în regiunile din care aparțin. De asemenea, produc predicții cu precizie ridicată, stabilitate, și uşura de interpretare.

Exemple de algoritmi bazati pe arbori

Există diferiți algoritmi pe bază de arbori pe care îi puteți utiliza, cum ar fi

  • Arbori de decizie
  • Pădure aleatorie
  • Amplificarea gradientului
  • Bagging (Bootstrap Aggregation)

Deci, fiecare om de știință al datelor ar trebui să învețe acești algoritmi și să-i folosească în proiectele lor de învățare automată.

În acest articol, veți afla mai multe despre algoritmul de pădure aleatorie. După finalizarea acestui articol, ar trebui să fiți priceput la utilizarea algoritmului forestier aleatoriu pentru a rezolva și a construi modele predictive pentru problemele de clasificare cu scikit-learn.

ad-banner

Ce este Random Forest?

Pădurea aleatorie este unul dintre cei mai populari algoritmi de învățare supravegheați pe bază de arbori. Este, de asemenea, cel mai flexibil și ușor de utilizat.

Algoritmul poate fi utilizat pentru a rezolva atât probleme de clasificare, cât și probleme de regresie. Pădurea aleatorie tinde să combine sute de copaci de decizie și apoi antrenează fiecare arbore de decizie pe un eșantion diferit de observații.

Predicțiile finale ale pădurii aleatorii sunt făcute prin media predicțiilor fiecărui copac individual.

Beneficiile pădurilor aleatorii sunt numeroase. Arborii de decizie individuali tind să overfit la datele de instruire, dar pădurea aleatorie poate atenua această problemă prin medie predicția rezultă din copaci diferiți. Acest lucru oferă pădurilor aleatorii o precizie predictivă mai mare decât un singur arbore de decizie.

Algoritmul forestier aleatoriu vă poate ajuta, de asemenea, să găsiți caracteristici care sunt important în setul dvs. de date. Se află la baza Algoritmul Boruta, care selectează caracteristici importante dintr-un set de date.

Pădurea aleatorie a fost utilizată într-o varietate de aplicații, de exemplu pentru a oferi clienților recomandări de diferite produse în comerțul electronic.

În medicină, un algoritm forestier aleatoriu poate fi utilizat pentru a identifica boala pacientului prin analiza dosarului medical al pacientului.

De asemenea, în sectorul bancar, acesta poate fi utilizat pentru a determina cu ușurință dacă clientul este fraudulos sau legitim.

Cum funcționează algoritmul Random Forest?

Algoritmul forestier aleator funcționează parcurgând următorii pași:

Pasul 1: Algoritmul selectează probe aleatorii din setul de date furnizat.

Pasul 2: Algoritmul va crea un arbore de decizie pentru fiecare eșantion selectat. Apoi va obține un rezultat de predicție din fiecare arbore de decizie creat.

Pasul 3: Voting va fi apoi efectuat pentru fiecare rezultat prezis. Pentru o problemă de clasificare, se va folosi modul, și pentru o problemă de regresie, se va folosi Rău.

Pasul 4: Și, în cele din urmă, algoritmul va selecta cel mai votat rezultat al predicției ca predicție finală.

Tutorial clasificator aleator de padure Cum se utilizeaza algoritmi bazati
cum functioneaza

Pădure aleatorie în practică

Acum, că știți intrările și ieșirile algoritmului pădurilor aleatorii, să construim un clasificator al pădurilor aleatoriu.

Vom construi un clasificator forestier aleatoriu folosind setul de date Pima Indians Diabetes. Setul de date Pima Indians Diabetes implică prezicerea apariției diabetului în 5 ani pe baza detaliilor medicale furnizate. Aceasta este o problemă de clasificare binară.

Sarcina noastră este să analizăm și să creăm un model pe setul de date Pima Indian Diabetes pentru a prezice dacă un anumit pacient este expus riscului de a dezvolta diabet, având în vedere alți factori independenți.

Vom începe prin importarea pachetelor importante pe care le vom folosi pentru a încărca setul de date și pentru a crea un clasificator de pădure aleatoriu. Vom folosi scikit-learn bibliotecă pentru a încărca și utiliza algoritmul forestier aleatoriu.

# import important packages
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

%matplotlib inline

from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
from sklearn.preprocessing import StandardScaler, MinMaxScaler
import pandas_profiling

from matplotlib import rcParams
import warnings

warnings.filterwarnings("ignore")

# figure size in inches
rcParams["figure.figsize"] = 10, 6
np.random.seed(42)

Set de date

Apoi încărcați setul de date din directorul de date:

# Load dataset
data = pd.read_csv("../data/pima_indians_diabetes.csv")

Acum putem observa eșantionul setului de date.


# show sample of the dataset
data.sample(5)
1611568328 601 Tutorial clasificator aleator de padure Cum se utilizeaza algoritmi bazati

După cum puteți vedea, în setul nostru de date avem caracteristici diferite cu valori numerice.

Să înțelegem lista caracteristicilor pe care le avem în acest set de date.

# show columns
data.columns
1611568328 696 Tutorial clasificator aleator de padure Cum se utilizeaza algoritmi bazati

În acest set de date, există 8 caracteristici de intrare și 1 caracteristică de ieșire / țintă. Se crede că valorile lipsă sunt codificate cu valori zero. Semnificația numelor variabilelor este următoarea (de la prima la ultima caracteristică):

  • De câte ori este gravidă.
  • Concentrația de glucoză plasmatică la 2 ore într-un test oral de toleranță la glucoză.
  • Tensiunea arterială diastolică (mm Hg).
  • Grosimea cutiei tricepsului (mm).
  • 2 ore insulină serică (mu U / ml).
  • Indicele masei corporale (greutate în kg / (înălțime în m) ^ 2).
  • Funcția de pedigree a diabetului.
  • Vârsta (ani).
  • Variabilă de clasă (0 sau 1).

Apoi împărțim setul de date în caracteristici independente și caracteristică țintă. Funcția noastră țintă pentru acest set de date se numește clasă.

# split data into input and taget variable(s)

X = data.drop("class", axis=1)
y = data["class"]

Preprocesarea setului de date

Înainte de a crea un model, trebuie să ne standardizăm caracteristicile independente folosind standardScaler metoda din scikit-learn.

# standardize the dataset
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

Puteți afla mai multe despre cum și de ce să vă standardizați datele din acest articol făcând clic pe aici.

Împărțirea setului de date în date de instruire și testare

Acum ne-am împărțit setul de date procesat în date de formare și testare. Datele testului vor reprezenta 10% din întregul set de date procesat.

# split into train and test set
X_train, X_test, y_train, y_test = train_test_split(
    X_scaled, y, stratify=y, test_size=0.10, random_state=42
)

Construirea clasificatorului forestier aleatoriu

Acum este timpul să creăm clasificatorul nostru forestier aleatoriu și apoi să îl antrenăm pe setul de trenuri. De asemenea, vom trece numărul copacilor (100) din pădurea pe care dorim să o folosim prin parametru numit n_estimatori.

# create the classifier
classifier = RandomForestClassifier(n_estimators=100)

# Train the model using the training sets
classifier.fit(X_train, y_train)
1611568328 757 Tutorial clasificator aleator de padure Cum se utilizeaza algoritmi bazati

Ieșirea de mai sus arată diferite valori ale parametrilor clasificatorului forestier aleatoriu utilizat în timpul procesului de instruire pe datele trenului.

După antrenament putem efectua predicții cu privire la datele testului.

# predictin on the test set
y_pred = classifier.predict(X_test)

Apoi verificăm acuratețea folosind valorile reale și prezise din datele testului.

# Calculate Model Accuracy
print("Accuracy:", accuracy_score(y_test, y_pred))

Precizie: 0,8051948051948052

Precizia noastră este de aproximativ 80,5%, ceea ce este bun. Dar oricând o putem îmbunătăți.

Identificați caracteristici importante

După cum am spus mai înainte, putem verifica și caracteristicile importante folosind caracteristici_importanțe_ variabilă din algoritmul forestier aleatoriu în scikit-learn.

# check Important features
feature_importances_df = pd.DataFrame(
    {"feature": list(X.columns), "importance": classifier.feature_importances_}
).sort_values("importance", ascending=False)

# Display
feature_importances_df
1611568328 595 Tutorial clasificator aleator de padure Cum se utilizeaza algoritmi bazati
Caracteristici importante

Figura de mai sus arată importanța relativă a caracteristicilor și contribuția lor la model. De asemenea, putem vizualiza aceste caracteristici și scorurile lor folosind bibliotecile seaborn și matplotlib.

# visualize important featuers

# Creating a bar plot
sns.barplot(x=feature_importances_df.feature, y=feature_importances_df.importance)
# Add labels to your

plt.xlabel("Feature Importance Score")
plt.ylabel("Features")
plt.title("Visualizing Important Features")
plt.xticks(
    rotation=45, horizontalalignment="right", fontweight="light", fontsize="x-large"
)
plt.show()
1611568328 162 Tutorial clasificator aleator de padure Cum se utilizeaza algoritmi bazati

Din figura de mai sus, puteți vedea caracteristică triceps_skinfold_thickness are o importanță redusă și nu contribuie prea mult la predicție.

Aceasta înseamnă că putem elimina această caracteristică și ne putem antrena din nou clasificatorul de pădure aleatoriu și apoi vom vedea dacă își poate îmbunătăți performanța pe datele de testare.

# load data with selected features
X = data.drop(["class", "triceps_skinfold_thickness"], axis=1)
y = data["class"]

# standardize the dataset
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# split into train and test set
X_train, X_test, y_train, y_test = train_test_split(
    X_scaled, y, stratify=y, test_size=0.10, random_state=42
)

Vom instrui algoritmul forestier aleatoriu cu caracteristicile procesate selectate din setul nostru de date, vom efectua predicții și apoi vom găsi acuratețea modelului.

# Create a Random Classifier
clf = RandomForestClassifier(n_estimators=100)

# Train the model using the training sets
clf.fit(X_train, y_train)

# prediction on test set
y_pred = clf.predict(X_test)

# Calculate Model Accuracy,
print("Accuracy:", accuracy_score(y_test, y_pred))

Precizie: 0,8181818181818182

Acum, precizia modelului a crescut de la 80,5% la 81,8% după ce am eliminat cea mai puțin importantă caracteristică numită triceps_skinfold_thickness.

Acest lucru sugerează că este foarte important să verificați caracteristicile importante și să vedeți dacă puteți elimina cele mai puțin importante caracteristici pentru a crește performanța modelului.

Înfășurându-se

Algoritmii pe bază de arbori sunt cu adevărat importanți pentru ca fiecare om de știință să învețe. În acest articol, ați învățat elementele de bază ale algoritmilor pe bază de arbori și cum să creați un model de clasificare utilizând algoritmul forestier aleatoriu.

De asemenea, vă recomand să încercați alte tipuri de algoritmi bazați pe copaci, cum ar fi Algoritm extra-copaci.

Puteți descărca setul de date și blocnotesul utilizat în acest articol aici: https://github.com/Davisy/Random-Forest-classification-Tutorial

Felicitări, ai ajuns la sfârșitul acestui articol!

Dacă ați aflat ceva nou sau v-a plăcut să citiți acest articol, vă rugăm să îl împărtășiți, astfel încât să poată fi văzut de alții. Până atunci, ne vedem în următoarea postare! Pot fi contactat și pe Twitter @Davis_McDavid