- View
Stabla odlučivanja su svestrani algoritmi mašinskog učenja koji mogu obavljati i zadatke klasifikacije i regresije, pa čak i zadatke sa više izlaza. Oni su veoma moćni algoritmi, sposobni da uklope složene skupove podataka.
Stablo odlučivanja je struktura stabla nalik dijagramu toka gde unutrašnji čvor predstavlja funkciju (ili atribut), grana predstavlja pravilo odlučivanja, a svaki čvor lista predstavlja ishod.
Najviši čvor u stablu odlučivanja poznat je kao korenski čvor. Uči da deli na osnovu vrednosti atributa. On particioniše stablo na rekurzivni način koji se zove rekurzivna particija. Ova struktura nalik dijagramu toka pomaže vam u donošenju odluka. To je vizualizacija poput dijagrama toka koji lako oponaša razmišljanje na ljudskom nivou. Zato su stabla odlučivanja lako razumljiva i interpretirana.

Stablo odlučivanja je tip bele kutije ML algoritma. Deli unutrašnju logiku donošenja odluka, koja nije dostupna u algoritmima crne kutije, kao što je neuronska mreža. Vreme obuke je brže u poređenju sa algoritmom neuronske mreže.
Vremenska složenost stabala odlučivanja je funkcija broja zapisa i atributa u datim podacima. Stablo odlučivanja je distribucija bez ili ne-parametarski metod koji ne zavisi od pretpostavki distribucije verovatnoće. Stabla odlučivanja mogu da rukuju visokodimenzionalnim podacima sa dobrom preciznošću.
Kako funkcioniše algoritam stabla odlučivanja?
Osnovna ideja iza bilo kog algoritma stabla odlučivanja je sledeća:
- Izaberite najbolji atribut koristeći Attribute Selection Measures (ASM) da biste podelili zapise.
- Napravite taj atribut čvor odluke i razbija skup podataka u manje podskupove.
- Započnite izgradnju stabla ponavljajući ovaj proces rekurzivno za svako dete dok se jedan od uslova ne podudara:
- Sve torke pripadaju istoj vrednosti atributa.
- Nema više preostalih atributa.
- Nema više slučajeva.

Mere za izbor atributa
Mera izbora atributa je heuristika za odabir kriterijuma razdvajanja koji particionira podatke na najbolji mogući način. Poznat je i kao pravila razdvajanja jer nam pomaže da odredimo tačke prekida za torke na datom čvoru. ASM obezbeđuje rang za svaku funkciju (ili atribut) objašnjavajući datu skup podataka. Atribut najboljeg rezultata će biti izabran kao atribut razdvajanja . U slučaju atributa kontinuirane vrednosti, podelne tačke za grane takođe treba da definišu. Najpopularnije mere selekcije su informacije Dobitak, Gain Ratio, i Gini indeks.
Dobitak informacija
Claude Shannon je izmislio koncept entropije, koji meri nečistoću ulaznog skupa. U fizici i matematici, entropija se naziva slučajnost ili nečistoća u sistemu. U teoriji informacija, to se odnosi na nečistoću u grupi primera. Informacioni dobitak je smanjenje entropije. Dobitak informacija izračunava razliku između entropije pre podele i prosečne entropije nakon podele skupa podataka na osnovu datih vrednosti atributa. ID3 (Iterativni Dichotomiser) algoritam stabla odlučivanja koristi dobitak informacija.
Gde je Pi verovatnoća da proizvoljna torka u D pripada klasi Ci.
Gde:
- Info(D) je prosečna količina informacija potrebnih za identifikaciju oznake klase torke u D.
- |Dj|/|D| deluje kao težina JTH particije.
- InfoA(D) je očekivana informacija potrebna za klasifikaciju torke od D na osnovu podele od strane A.
Atribut A sa najvećim dobitkom informacija, Gain(A), izabran je kao atribut razdvajanja na čvoru N().
Odnos pojačanja
Dobitak informacija je pristrasan za atribut sa mnogim ishodima. To znači da preferira atribut sa velikim brojem različitih vrednosti. Na primer, razmotrite atribut sa jedinstvenim identifikatorom, kao što je customer_ID, koji ima nula info(D) zbog čiste particije. Ovo maksimizira dobijanje informacija i stvara beskorisno particioniranje.
C4.5, poboljšanje ID3, koristi proširenje za dobijanje informacija poznato kao odnos dobitka. Gain odnos bavi pitanje pristrasnosti normalizacijom informacioni dobitak koristeći Split Info. Java implementacija C4.5 algoritma je poznat kao J48, koji je dostupan u VEKA rudarstvu podataka alat.
Gde:
- \( \frac{|D_j|}{|D|} \) deluje kao težina J-te particije.
- v je broj diskretnih vrednosti u atributu A.
Odnos pojačanja može se definisati kao
Atribut sa najvećim odnosom pojačanja je izabran kao atribut razdvajanja (Izvor).
Gini indeks
Još jedan algoritam stabla odlučivanja CART (Klasifikacija i regresijsko stablo) koristi Gini metod za kreiranje podelnih tačaka.
Gde je pi verovatnoća da torka u D pripada klasi Ci.
Gini indeks razmatra binarni podelu za svaki atribut. Možete izračunati ponderisanu sumu nečistoće svake particije. Ako binarna podela na atribut A podeljuje podatke D u D1 i D2, Gini indeks D je:
U slučaju atributa diskretne vrednosti, podskup koji daje minimalni gini indeks za taj izabrani je izabran kao atribut razdvajanja. U slučaju atributa kontinuirane vrednosti, strategija je da se svaki par susednih vrednosti izabere kao moguća tačka razdvajanja, a tačka sa manjim gini indeksom je izabrana kao tačka razdvajanja.
Atribut sa minimalnim Gini indeksom je izabran kao atribut razdvajanja.
Kreiranje klasifikatora stabla odlučivanja u Scikit-learn
Uvoz potrebnih biblioteka
Hajde da prvo učitamo potrebne biblioteke.
# Load libraries
import pandas as pd
from sklearn.tree import DecisionTreeClassifier # Import Decision Tree Classifier
from sklearn.model_selection import train_test_split # Import train_test_split function
from sklearn import metrics #Import scikit-learn metrics module for accuracy calculation
Učitavanje podataka
Hajde da prvo učitamo potreban Pima indijski dijabetes skup podataka koristeći pande 'čitati CSV funkciju. Možete preuzeti skup podataka Kaggle da biste pratili.
col_names = ['pregnant', 'glucose', 'bp', 'skin', 'insulin', 'bmi', 'pedigree', 'age', 'label']
# load dataset
pima = pd.read_csv("diabetes.csv", header=None, names=col_names)
pima.head()
| pregnant | glucose | bp | skin | insulin | bmi | pedigree | age | label | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 6 | 148 | 72 | 35 | 0 | 33.6 | 0.627 | 50 | 1 |
| 1 | 1 | 85 | 66 | 29 | 0 | 26.6 | 0.351 | 31 | 0 |
| 2 | 8 | 183 | 64 | 0 | 0 | 23.3 | 0.672 | 32 | 1 |
| 3 | 1 | 89 | 66 | 23 | 94 | 28.1 | 0.167 | 21 | 0 |
| 4 | 0 | 137 | 40 | 35 | 168 | 43.1 | 2.288 | 33 | 1 |
Izbor funkcija
Da bi razumeli performanse modela, podela skupa podataka u skup za obuku i test skup je dobra strategija.
Hajde da podelimo skup podataka pomoću funkcije train_test_split(). Potrebno je da prođe tri parametra funkcije; cilj, i test_set veličina.
# Split dataset into training set and test set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1) # 70% training and 30% test
Kreiranje modela stabla odlučivanja
# Create Decision Tree classifer object
clf = DecisionTreeClassifier()
# Train Decision Tree Classifer
clf = clf.fit(X_train,y_train)
#Predict the response for test dataset
y_pred = clf.predict(X_test)
Evaluacija modela
Hajde da procenimo koliko tačno klasifikator ili model može da predvidi vrstu sorti.
Tačnost se može izračunati upoređivanjem stvarnih vrednosti testa i predviđenih vrednosti.
# Model Accuracy, how often is the classifier correct?
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))

