Найти тему
Властелин машин

Что прячет структура дерева решений

Оглавление

Алгоритм работы дерева решений является одним из наиболее эффективных и легко интерпретируемых среди инструментов машинного обучения. В этой статье разберем способы получения его ключевых метрик, для лучшего понимания и повышения его результативности.

Ранее мы рассмотрели способ классификации с использованием дерева решений, заключающийся в серии разбиений данных на два поднабора по некоторому признаку (k) и порогу (tk), чтобы члены в группах были максимально "похожими".

Математической интерпретацией этого выступает максимизация прироста информации на каждом шаге:

-2

В качестве меры загрязненности узла для задачи классификации использовалась энтропия:

-3

Теперь посмотрим, какие существуют в библиотеках Python инструменты для упрощения понимания дерева решений и извлечения его ключевых метрик.

Сначала напишем простой сценарий, обучающий дерево классифицировать, есть или нет у пациента заболевание сердца (переменная num), основываясь на двух признаках: пол (sex) и наличие/отсутсвие стенокардии (exang) из игрушечного набора (сохранен локально как desease.csv):

-4

-5

Визуализация

Для визуализации дерева можно воспользоваться функцией plot_tree из модуля sklearn.tree:

-6

Загрязненность

Энтропию каждого узла можно получить через свойство tree_.impurity классификатора с указанием в квадратных скобках номера узла. Вот как это сделать для корня дерева:

-7

Дочерние узлы

Энтропии узлов следующего уровня можно получить после извлечения их номеров с помощью свойств классификатора tree_.children_left tree_.children_right с указанием в квадратных скобках индекса родителя:

-8
-9
-10

Количество наблюдений в узле и прирост информации

Теперь посчитаем прирост информации IG после первого разбиения. Предварительно нам понадобится узнать количество наблюдений в корне и двух последующих узлах с помощью свойства классификатора tree_.n_node_samples с указанием в квадратных скобках номера узла:

-11

Таким образом, IG в соответствии с приведенной выше формулой получилась равной 0.119.

 по
по