Beslissingsboom: leren

Machine Learning met boomgebaseerde modellen in Python

Elie Kawerk

Data Scientist

Bouwstenen van een beslissingsboom

  • Beslissingsboom: datastructuur met een hiërarchie van knopen.

  • Knoop: vraag of voorspelling.

Machine Learning met boomgebaseerde modellen in Python

Bouwstenen van een beslissingsboom

Drie soorten knopen:

  • Wortel: geen ouderknoop, vraag die leidt tot twee kindknopen.

  • Interne knoop: één ouderknoop, vraag die leidt tot twee kindknopen.

  • Blad: één ouderknoop, geen kindknopen --> voorspelling.

Machine Learning met boomgebaseerde modellen in Python

Voorspelling

DT-gelabeld

Machine Learning met boomgebaseerde modellen in Python

Informatiewinst (IG)

IG-diagram

Machine Learning met boomgebaseerde modellen in Python

Informatiewinst (IG)

IG-formule

Criteria om de onzuiverheid van een knoop $I (node)$ te meten:

  • gini-index,
  • entropie. ...
Machine Learning met boomgebaseerde modellen in Python

Beslissingsboom: leren

  • Knopen worden recursief gegroeid.

  • Splits bij elke knoop de data op basis van:

    • feature $f$ en splitpunt $sp$ om $IG(\text{node})$ te maximaliseren.
  • Als $IG (\text{node})$ = 0, maak de knoop een blad.

    ...

Machine Learning met boomgebaseerde modellen in Python
# Import DecisionTreeClassifier
from sklearn.tree import DecisionTreeClassifier
# Import train_test_split
from sklearn.model_selection import train_test_split
# Import accuracy_score
from sklearn.metrics import accuracy_score
# Split dataset into 80% train, 20% test
X_train, X_test, y_train, y_test= train_test_split(X, y, 
                                                   test_size=0.2, 
                                                   stratify=y,
                                                   random_state=1)
# Instantiate dt, set 'criterion' to 'gini'
dt = DecisionTreeClassifier(criterion='gini', random_state=1)
Machine Learning met boomgebaseerde modellen in Python

Informatiescore in scikit-learn

# Fit dt to the training set
dt.fit(X_train,y_train)

# Predict test-set labels
y_pred= dt.predict(X_test)

# Evaluate test-set accuracy
accuracy_score(y_test, y_pred)
0.92105263157894735
Machine Learning met boomgebaseerde modellen in Python

Laten we oefenen!

Machine Learning met boomgebaseerde modellen in Python

Preparing Video For Download...