Выберите корневой атрибут дерева

Обновлено: 15.09.2024

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

Статья подготовлена на основе перевода: How to Create a Perfect Decision Tree by Upasana Priyadarshiny.

Основные задачи, которые дерево решений решает в машинном обучении, анализе данных и статистике:

  • Классификация — когда нужно отнести объект к конкретной категории, учитывая его признаки.
  • Регрессия — использование данных для прогнозирования количественного признака с учетом влияния других признаков.

Деревья решений также могут помочь визуализировать процесс принятия решения и сделать правильный выбор в ситуациях, когда результаты одного решения влияют на результаты следующих решений. Попробуем объяснить, как это работает на простых примерах из жизни.

Что такое дерево решений

Визуально дерево решений можно представить как карту возможных результатов из ряда взаимосвязанных выборов. Это помогает сопоставить возможные действия, основываясь на их стоимости (затратах), вероятности и выгоде.

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

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

В дереве решений могут быть три разных типа узлов:

  • Decision nodes — узлы решения, они показывают решение, которое нужно принять.
  • Chance nodes — вероятностные узлы, демонстрируют вероятность определенных результатов.
  • End nodes — замыкающие узлы, показывают конечный результат пути решения.

Преимущества и недостатки методики дерева решений

Преимущества метода :

  • Деревья решений создаются по понятным правилам, они просты в применении и интерпретации.
  • Можно обрабатывать как непрерывные, так и качественные (дискретные) переменные.
  • Можно работать с пропусками в данных, деревья решений позволяют заполнить пустое поле наиболее вероятным значением.
  • Помогают определить, какие поля больше важны для прогнозирования или классификации.

Недостатки метода :

Как создать дерево решений

Для примера предлагаем сценарий, в котором группа астрономов изучает планету — нужно выяснить, сможет ли она стать новой Землей.

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

Задачу будем исследовать через дерево решений.

  • Пригодная для обитания температура находится в диапазоне от 0 до 100 градусов Цельсия?
  • Подвержена ли поверхность планеты штормам?

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

Правила классификации

Правила классификации — это случаи, в которых учитываются все сценарии, и каждому присваивается переменная класса.

Переменная класса — это конечный результат, к которому приводит наше решение. Переменная класса присваивается каждому конечному, или листовому, узлу.

Вот правила классификации из примера дерева решений про исследование новой планеты:

  • Если температура не находится в диапазоне от -0,15 °C до 99,85 °C, то выживание затруднительно.
  • Если температура находится в диапазоне от -0,15 °C до 99,85 °C, но нет воды, то выживание затруднительно.
  • Если температура находится в диапазоне от -0,15 °C до 99,85 °C, есть вода, но нет флоры и фауны, то выживание затруднительно.
  • Если температура находится в диапазоне от -0,15 °C до 99,85 °C, есть вода, есть флора и фауна, поверхность не подвержена штормам, то выживание возможно.
  • Если температура находится в диапазоне от -0,15 °C до 99,85 °C, есть вода, есть флора и фауна, но поверхность подвержена штормам, то выживание затруднительно.

Почему сложно построить идеальное дерево решений

В структуре дерева решений выделяют следующие компоненты:

Есть разные способы найти максимально подходящее дерево решений для конкретной ситуации. Ниже расскажем об одном из них.

Как использовать жадный алгоритм для построения дерева решений

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

Упрощенно алгоритм можно объяснить так:

  • На каждом узле выбирайте оптимальный способ проверки.
  • После разбейте узел на все возможные результаты (внутренние узлы).
  • Повторите шаги, пока все условия не приведут к конечным узлам.
  • Энтропия — в дереве решений это означает однородность. Если данные полностью однородны, она равна 0; в противном случае, если данные разделены (50-50%), энтропия равна 1. Проще этот термин можно объяснить так — это то, как много информации, значимой для принятия решения, мы не знаем.
  • Прирост информации — величина обратная энтропии, чем выше прирост информации, тем меньше энтропия, меньше неучтенных данных и лучше решение.

Итого — мы выбираем атрибут, который имеет наибольший показатель прироста информации, чтобы пойти на следующий этап разделения. Это помогает выбрать лучшее решение на любом узле.

Смотрите на примере. У нас есть большое количество таких данных:

Дерево решений – это один из наиболее часто и широко используемых алгоритмов контролируемого машинного обучения, который может выполнять как регрессионные, так и классификационные задачи. Интуиция, лежащая в основе алгоритма дерева решений, проста, но в то же время очень мощна.

Для каждого атрибута в наборе данных алгоритм decision tree формирует узел, где наиболее важный атрибут помещается в корневой узел. Для оценки мы начинаем с корневого узла и продвигаемся вниз по дереву, следуя за соответствующим узлом, который удовлетворяет нашему условию или “решению”. Этот процесс продолжается до тех пор, пока не будет достигнут конечный узел, содержащий предсказание или результат дерева решений.

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

  1. Является ли этот человек близким другом или просто знакомым? Если человек просто знакомый, то отклоните просьбу; если человек друг, то переходите к следующему шагу.
  2. Человек просит машину в первый раз? Если это так, одолжите им машину, в противном случае переходите к следующему шагу.
  3. Была ли машина повреждена в прошлый раз, когда они возвращали машину? Если да, отклоните просьбу; если нет, одолжите им машину.

Дерево решений для вышеупомянутого сценария выглядит следующим образом:

Преимущества деревьев решений

Использование деревьев решений для прогнозного анализа имеет ряд преимуществ:

  1. Деревья решений могут быть использованы для прогнозирования как непрерывных, так и дискретных значений, т. е. они хорошо работают как для задач регрессии, так и для задач классификации.
  2. Они требуют относительно меньших усилий для обучения алгоритма.
  3. Они могут быть использованы для классификации нелинейно разделимых данных.
  4. Они очень быстры и эффективны по сравнению с KNN и другими алгоритмами классификации.

Реализация деревьев решений с помощью Python Scikit Learn

В этом разделе мы реализуем алгоритм дерева решений с помощью библиотеки Python Scikit-Learn . В следующих примерах мы будем решать как классификационные, так и регрессионные задачи с использованием дерева решений.

Примечание : Задачи классификации и регрессии были выполнены в записной книжке Jupyter IPython.

1. Дерево решений для классификации

В этом разделе мы будем предсказывать, является ли банкнота подлинной или поддельной в зависимости от четырех различных атрибутов изображения банкноты. К атрибутам относятся дисперсия вейвлет-преобразованного изображения, эксцесс изображения, энтропия и асимметрия изображения.

Набор данных

Набор данных для этой задачи можно загрузить по этой ссылке:

Набор данных для этой задачи можно загрузить по этой ссылке:

Для получения более подробной информации об этом наборе данных ознакомьтесь с UCI ML repo для этого набора данных.

Остальные шаги по реализации этого алгоритма в Scikit-Learn идентичны любой типичной задаче машинного обучения: мы импортируем библиотеки и наборы данных, выполняем некоторый анализ данных, разделяем данные на обучающие и тестовые наборы, обучаем алгоритм, делаем прогнозы и, наконец, оцениваем производительность алгоритма на нашем наборе данных.

Импорт библиотек

Следующий сценарий импортирует необходимые библиотеки:

Импорт набора данных

Импорт набора данных

Импорт набора данных

Анализ данных

Выполните следующую команду, чтобы увидеть количество строк и столбцов в нашем наборе данных:

Результат покажет “(1372,5)”, что означает, что наш набор данных имеет 1372 записи и 5 атрибутов.

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

Результат будет выглядеть следующим образом:

0 -0.44699 -2.8073 8.6661 3.62160 0
0 -1.46210 -2.4586 8.1674 4.54590 1
0 0.10645 1.9242 -2.6383 3.86600 2
0 -3.59440 -4.0112 9.5228 3.45660 3
0 -0.98880 4.5718 -4.4552 0.32924 4

Подготовка данных

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

Чтобы разделить данные на атрибуты и метки, выполните следующий код:

Здесь переменная X содержит все столбцы из набора данных, кроме столбца “Класс”, который является меткой. Переменная y содержит значения из столбца “Класс”. Переменная X – это наш набор атрибутов, а переменная y содержит соответствующие метки.

Заключительный этап предварительной обработки состоит в том, чтобы разделить наши данные на обучающие и тестовые наборы. Библиотека model_selection Scikit-Learn содержит метод train_test_split , который мы будем использовать для случайного разделения данных на обучающие и тестовые наборы. Для этого выполните следующий код:

В приведенном выше коде параметр test_size указывает отношение тестового набора, которое мы используем для разделения 20% данных в тестовом наборе и 80% для обучения.

Обучение и составление прогнозов

После того, как данные были разделены на обучающие и тестовые наборы, последний шаг состоит в том, чтобы обучить алгоритм дерева решений на этих данных и сделать прогнозы. Scikit-Learn содержит библиотеку tree , которая содержит встроенные классы/методы для различных алгоритмов дерева решений. Поскольку мы собираемся выполнить здесь задачу классификации, мы будем использовать класс DecisionTreeClassifier для этого примера. Метод fit этого класса вызывается для обучения алгоритма на обучающих данных, которые передаются в качестве параметра методу fit . Выполните следующий сценарий для обучения алгоритма:

Теперь, когда наш классификатор обучен, давайте сделаем прогнозы по тестовым данным. Для составления прогнозов используется метод predict класса Decision Tree Classifier|/. Взгляните на следующий код для использования:

Оценка алгоритма

На данный момент мы обучили наш алгоритм и сделали некоторые прогнозы. Теперь посмотрим, насколько точен наш алгоритм. Для задач классификации обычно используются такие метрики, как матрица путаницы , точность, отзыв и оценка F1 . К счастью для нас, библиотека Scikit=-Learn metrics содержит методы classification_report и confusion_matrix , которые могут быть использованы для расчета этих метрик для нас:

Это приведет к следующей оценке:

Из матрицы путаницы вы можете видеть, что из 275 тестовых экземпляров наш алгоритм неправильно классифицировал только 4. Это 98,5 % точности. Не так уж и плохо!

2. Дерево решений для регрессии

Процесс решения регрессионной задачи с деревом решений с помощью Scikit Learn очень похож на процесс классификации. Однако для регрессии мы используем класс DecisionTreeRegressor древовидной библиотеки. Кроме того, оценочные показатели регрессии отличаются от показателей классификации. В остальном процесс почти такой же.

Набор данных

Набор данных, который мы будем использовать для этого раздела, такой же, как и в статье о линейной регрессии. Мы будем использовать этот набор данных, чтобы попытаться предсказать потребление газа (в миллионах галлонов) в 48 штатах США на основе налога на газ (в центах), дохода на душу населения (в долларах), мощеных автомагистралей (в милях) и доли населения с водительскими правами.

Набор данных доступен по этой ссылке:

Набор данных доступен по этой ссылке:

Подробности набора данных можно найти в оригинальном источнике .

Первые два столбца в приведенном выше наборе данных не содержат никакой полезной информации, поэтому они были удалены из файла набора данных.

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

Импорт библиотек
Импорт набора данных
Анализ данных

Мы снова будем использовать функцию head фрейма данных, чтобы увидеть, как на самом деле выглядят наши данные:

Вывод выглядит следующим образом:

9.0 0 3571 1976 541 0.525
9.0 1 4092 1250 524 0.572
9.0 2 3865 1586 561 0.580
7.5 3 4870 2351 414 0.529
8.0 4 4399 431 410 0.544

Вывод выглядит следующим образом:

48.000000 Вывод выглядит следующим образом: 48.000000 48.000000 48.000000 48.000000
7.668333 Вывод выглядит следующим образом: 4241.833333 5565.416667 576.770833 0.570333
0.950770 станд 573.623768 3491.507166 111.885816 0.055470
5.000000 минута 3063.000000 431.000000 344.000000 0.451000
7.000000 25% 3739.000000 3110.250000 509.500000 0.529750
7.500000 50% 4298.000000 4735.500000 568.500000 0.564500
8.125000 75% 4578.750000 7156.000000 632.750000 0.595250
10.000000 максимум 5342.000000 17782.000000 986.000000 0.724000
максимум

Здесь переменная X содержит все столбцы из набора данных, кроме столбца ‘Petrol_Consumption’, который является меткой. Переменная y содержит значения из столбца ‘Petrol_Consumption’, что означает, что переменная X содержит набор атрибутов, а переменная y содержит соответствующие метки.

Здесь переменная || X || содержит все столбцы из набора данных, кроме столбца ‘Petrol_Consumption’, который является меткой. Переменная || y || содержит значения из столбца ‘Petrol_Consumption’, что означает, что переменная || X || содержит набор атрибутов, а переменная || y || содержит соответствующие метки.

Здесь переменная || X || содержит все столбцы из набора данных, кроме столбца ‘Petrol_Consumption’, который является меткой. Переменная || y || содержит значения из столбца ‘Petrol_Consumption’, что означает, что переменная || X || содержит набор атрибутов, а переменная || y || содержит соответствующие метки.

Здесь переменная X содержит все столбцы из набора данных, кроме столбца ‘Petrol_Consumption’, который является меткой. Переменная y содержит значения из столбца ‘Petrol_Consumption’, что означает, что переменная

Здесь переменная X содержит все столбцы из набора данных, кроме столбца ‘Petrol_Consumption’, который является меткой. Переменная y содержит значения из столбца ‘Petrol_Consumption’, что означает, что переменная

Здесь переменная X содержит все столбцы из набора данных, кроме столбца ‘Petrol_Consumption’, который является меткой. Переменная

Теперь давайте сравним некоторые из наших прогнозируемых значений с фактическими значениями и

Теперь давайте сравним некоторые из наших прогнозируемых значений с фактическими значениями и

699 631.0 41
561 524.0 2
525 510.0 12
640 704.0 36
648 524.0 38
498 510.0 9
460 510.0 24
508 603.0 13
644 631.0 35

Теперь давайте сравним некоторые из наших прогнозируемых значений с фактическими значениями и

Теперь давайте сравним некоторые из наших прогнозируемых значений с фактическими значениями и

Для оценки эффективности регрессионного алгоритма обычно используются следующие метрики: средняя абсолютная ошибка , среднеквадратичная ошибка и

Для оценки эффективности регрессионного алгоритма обычно используются следующие метрики: || средняя абсолютная ошибка||, || среднеквадратичная ошибка || и ||

Средняя абсолютная ошибка для нашего алгоритма составляет 54,7, что составляет менее 10 процентов от среднего значения всех значений в столбце “Petrol_Consumption”.

Средняя абсолютная ошибка для нашего алгоритма составляет 54,7, что составляет менее 10 процентов от среднего значения всех значений в столбце “Petrol_Consumption”.

Хотите узнать больше о Scikit-Learn и других полезных алгоритмах машинного обучения? Я бы рекомендовал проверить некоторые более подробные ресурсы, такие как онлайн-курс:

Вывод

В этой статье мы показали, как можно использовать популярную библиотеку Scikit-Learn Python для использования деревьев решений как для задач классификации, так и для задач регрессии. Будучи довольно простым алгоритмом сам по себе, реализация деревьев решений с помощью Scikit-Learn еще проще.

В целом, анализ дерева решений — это инструмент прогнозного моделирования, который можно применять во многих областях. Деревья решений могут быть построены с помощью алгоритмического подхода, который может разбить набор данных по-разному в зависимости от условий. Решения Tress являются наиболее мощными алгоритмами, которые подпадают под категорию контролируемых алгоритмов.

Их можно использовать как для задач классификации, так и для регрессии. Две основные сущности дерева — это узлы принятия решений, где данные разделяются и удаляются, где мы получаем результат. Пример бинарного дерева для предсказания, подходит ли человек или нет, предоставляя различную информацию, такую ​​как возраст, пищевые привычки и физические упражнения, приведен ниже —

Дерево решений Введение

В приведенном выше дереве решений вопрос — это узлы решения, а конечные результаты — это листья. У нас есть следующие два типа деревьев решений.

Деревья решений классификации — В деревьях такого типа переменная решения является категориальной. Приведенное выше дерево решений является примером дерева решений классификации.

Деревья решений регрессии. В деревьях решений такого типа переменная решения является непрерывной.

Деревья решений классификации — В деревьях такого типа переменная решения является категориальной. Приведенное выше дерево решений является примером дерева решений классификации.

Деревья решений регрессии. В деревьях решений такого типа переменная решения является непрерывной.

Реализация алгоритма дерева решений

Индекс Джини

Чем выше значение индекса Джини, тем выше однородность. Идеальное значение индекса Джини равно 0, а худшее — 0,5 (для задачи 2 класса). Индекс Джини для разделения можно рассчитать с помощью следующих шагов —

Сначала вычислите индекс Джини для подузлов, используя формулу p ^ 2 + q ^ 2 , которая является суммой квадрата вероятности успеха и неудачи.

Затем вычислите индекс Джини для разделения, используя взвешенную оценку Джини для каждого узла этого разделения.

Сначала вычислите индекс Джини для подузлов, используя формулу p ^ 2 + q ^ 2 , которая является суммой квадрата вероятности успеха и неудачи.

Затем вычислите индекс Джини для разделения, используя взвешенную оценку Джини для каждого узла этого разделения.

Алгоритм дерева классификации и регрессии (CART) использует метод Джини для генерации двоичных разбиений.

Сплит Создание

Разделение в основном включает в себя атрибут в наборе данных и значение. Мы можем создать разделение в наборе данных с помощью следующих трех частей —

Часть 1: Расчет баллов Джини. Мы только что обсудили эту часть в предыдущем разделе.

Часть 2. Разделение набора данных. Его можно определить как разделение набора данных на два списка строк, имеющих индекс атрибута и значение разделения этого атрибута. Получив две группы — правую и левую, из набора данных, мы можем вычислить значение разделения, используя показатель Джини, рассчитанный в первой части. Значение разделения будет определять, в какой группе будет находиться атрибут.

Часть 3: Оценка всех расщеплений. Следующая часть после нахождения оценки Джини и набора данных расщепления — это оценка всех расщеплений. Для этого, во-первых, мы должны проверить каждое значение, связанное с каждым атрибутом, как разделение кандидатов. Затем нам нужно найти наилучшее возможное разделение, оценив стоимость разделения. Наилучшее разделение будет использоваться в качестве узла в дереве решений.

Часть 1: Расчет баллов Джини. Мы только что обсудили эту часть в предыдущем разделе.

Часть 2. Разделение набора данных. Его можно определить как разделение набора данных на два списка строк, имеющих индекс атрибута и значение разделения этого атрибута. Получив две группы — правую и левую, из набора данных, мы можем вычислить значение разделения, используя показатель Джини, рассчитанный в первой части. Значение разделения будет определять, в какой группе будет находиться атрибут.

Часть 3: Оценка всех расщеплений. Следующая часть после нахождения оценки Джини и набора данных расщепления — это оценка всех расщеплений. Для этого, во-первых, мы должны проверить каждое значение, связанное с каждым атрибутом, как разделение кандидатов. Затем нам нужно найти наилучшее возможное разделение, оценив стоимость разделения. Наилучшее разделение будет использоваться в качестве узла в дереве решений.

Строим дерево

Как известно, у дерева есть корневой узел и конечные узлы. После создания корневого узла мы можем построить дерево, выполнив две части:

Максимальная глубина дерева — как следует из названия, это максимальное количество узлов в дереве после корневого узла. Мы должны прекратить добавлять терминальные узлы, как только дерево достигнет максимальной глубины, т.е. как только дерево получит максимальное количество терминальных узлов.

Записи минимального узла — его можно определить как минимальное количество шаблонов обучения, за которое отвечает данный узел. Мы должны прекратить добавлять терминальные узлы, когда дерево достигнет этих минимальных записей узлов или ниже этого минимума.

Максимальная глубина дерева — как следует из названия, это максимальное количество узлов в дереве после корневого узла. Мы должны прекратить добавлять терминальные узлы, как только дерево достигнет максимальной глубины, т.е. как только дерево получит максимальное количество терминальных узлов.

Записи минимального узла — его можно определить как минимальное количество шаблонов обучения, за которое отвечает данный узел. Мы должны прекратить добавлять терминальные узлы, когда дерево достигнет этих минимальных записей узлов или ниже этого минимума.

Терминальный узел используется для окончательного прогноза.

Часть 2: Рекурсивное расщепление

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

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

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

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

Предположения

Ниже приведены некоторые предположения, которые мы делаем при создании дерева решений:

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

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

На основе значений атрибута записи распределяются рекурсивно.

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

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

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

На основе значений атрибута записи распределяются рекурсивно.

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

Реализация в Python

пример

В следующем примере мы собираемся реализовать классификатор дерева решений для индийского диабета Пима —

Во-первых, начните с импорта необходимых пакетов Python —

Затем загрузите набор данных iris с веб-ссылки следующим образом:

беременная глюкоза BP кожа инсулин индекс массы тела Родословная Возраст этикетка
0 6 148 72 35 0 33,6 0,627 50 1
1 1 85 66 29 0 33,6 0,627 50 1
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

Теперь разделите набор данных на объекты и целевую переменную следующим образом:

Далее, мы разделим данные на разделение на поезда и тесты. Следующий код разделит набор данных на 70% данных обучения и 30% данных тестирования.

Затем обучаем модель с помощью класса sklearn класса DecisionTreeClassifier следующим образом —

Наконец нам нужно сделать прогноз. Это можно сделать с помощью следующего скрипта —

Далее мы можем получить оценку точности, матрицу путаницы и отчет о классификации следующим образом:

Визуализация дерева решений

Приведенное выше дерево решений можно визуализировать с помощью следующего кода:

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

Статья подготовлена на основе перевода: How to Create a Perfect Decision Tree by Upasana Priyadarshiny.

Основные задачи, которые дерево решений решает в машинном обучении, анализе данных и статистике:

  • Классификация — когда нужно отнести объект к конкретной категории, учитывая его признаки.
  • Регрессия — использование данных для прогнозирования количественного признака с учетом влияния других признаков.

Деревья решений также могут помочь визуализировать процесс принятия решения и сделать правильный выбор в ситуациях, когда результаты одного решения влияют на результаты следующих решений. Попробуем объяснить, как это работает на простых примерах из жизни.

Что такое дерево решений

Визуально дерево решений можно представить как карту возможных результатов из ряда взаимосвязанных выборов. Это помогает сопоставить возможные действия, основываясь на их стоимости (затратах), вероятности и выгоде.

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

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


В дереве решений могут быть три разных типа узлов:

  • Decision nodes — узлы решения, они показывают решение, которое нужно принять.
  • Chance nodes — вероятностные узлы, демонстрируют вероятность определенных результатов.
  • End nodes — замыкающие узлы, показывают конечный результат пути решения.

Преимущества и недостатки методики дерева решений

Преимущества метода:

  1. Деревья решений создаются по понятным правилам, они просты в применении и интерпретации.
  2. Можно обрабатывать как непрерывные, так и качественные (дискретные) переменные.
  3. Можно работать с пропусками в данных, деревья решений позволяют заполнить пустое поле наиболее вероятным значением.
  4. Помогают определить, какие поля больше важны для прогнозирования или классификации.

Недостатки метода:

Как создать дерево решений

Для примера предлагаем сценарий, в котором группа астрономов изучает планету — нужно выяснить, сможет ли она стать новой Землей.

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

Задачу будем исследовать через дерево решений.

  1. Пригодная для обитания температура находится в диапазоне от 0 до 100 градусов Цельсия?





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

Правила классификации

Сначала определимся с терминами и их значениями.

Правила классификации — это случаи, в которых учитываются все сценарии, и каждому присваивается переменная класса.

Переменная класса — это конечный результат, к которому приводит наше решение. Переменная класса присваивается каждому конечному, или листовому, узлу.

Вот правила классификации из примера дерева решений про исследование новой планеты:

  1. Если температура не находится в диапазоне от -0,15 °C до 99,85 °C, то выживание затруднительно.
  2. Если температура находится в диапазоне от -0,15 °C до 99,85 °C, но нет воды, то выживание затруднительно.
  3. Если температура находится в диапазоне от -0,15 °C до 99,85 °C, есть вода, но нет флоры и фауны, то выживание затруднительно.
  4. Если температура находится в диапазоне от -0,15 °C до 99,85 °C, есть вода, есть флора и фауна, поверхность не подвержена штормам, то выживание возможно.
  5. Если температура находится в диапазоне от -0,15 °C до 99,85 °C, есть вода, есть флора и фауна, но поверхность подвержена штормам, то выживание затруднительно.

Почему сложно построить идеальное дерево решений

В структуре дерева решений выделяют следующие компоненты:

Есть разные способы найти максимально подходящее дерево решений для конкретной ситуации. Ниже расскажем об одном из них.

Как использовать жадный алгоритм для построения дерева решений

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

Упрощенно алгоритм можно объяснить так:

  • На каждом узле выбирайте оптимальный способ проверки.
  • После разбейте узел на все возможные результаты (внутренние узлы).
  • Повторите шаги, пока все условия не приведут к конечным узлам.
  1. Энтропия — в дереве решений это означает однородность. Если данные полностью однородны, она равна 0; в противном случае, если данные разделены (50-50%), энтропия равна 1. Проще этот термин можно объяснить так — это то, как много информации, значимой для принятия решения, мы не знаем.
  2. Прирост информации — величина обратная энтропии, чем выше прирост информации, тем меньше энтропия, меньше неучтенных данных и лучше решение.

Итого — мы выбираем атрибут, который имеет наибольший показатель прироста информации, чтобы пойти на следующий этап разделения. Это помогает выбрать лучшее решение на любом узле.

Читайте также: