Обучение дерева классификации

Машинное обучение на основе древовидных моделей в Python

Elie Kawerk

Data Scientist

Элементы дерева решений

  • Дерево решений: структура данных, представляющая иерархию узлов.

  • Узел: вопрос или прогноз.

Машинное обучение на основе древовидных моделей в Python

Элементы дерева решений

Три типа узлов:

  • Корень: нет родительского узла, вопрос порождает два дочерних узла.

  • Внутренний узел: один родительский узел, вопрос порождает два дочерних узла.

  • Лист: один родительский узел, нет дочерних узлов --> прогноз.

Машинное обучение на основе древовидных моделей в Python

Прогнозирование

DT с метками

Машинное обучение на основе древовидных моделей в Python

Прирост информации (IG)

Схема прироста информации

Машинное обучение на основе древовидных моделей в Python

Прирост информации (IG)

Формула IG

Критерии для измерения неоднородности узла $I (node)$:

  • индекс Джини,
  • энтропия. ...
Машинное обучение на основе древовидных моделей в Python

Обучение дерева классификации

  • Узлы строятся рекурсивно.

  • В каждом узле данные разбиваются по:

    • признаку $f$ и точке разбиения $sp$ для максимизации $IG(\text{node})$.
  • Если $IG (\text{node})$= 0, узел объявляется листом.

    ...

Машинное обучение на основе древовидных моделей в 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)
Машинное обучение на основе древовидных моделей в Python

Критерий качества в 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
Машинное обучение на основе древовидных моделей в Python

Давайте потренируемся!

Машинное обучение на основе древовидных моделей в Python

Preparing Video For Download...