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

Давайте начнем с примера. Представьте, что я играю в теннис каждое воскресенье и всегда приглашаю друга пойти со мной.

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

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

И мои данные выглядят примерно так:

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

Давайте составим случайное дерево решений на основе этих факторов:

В этом дереве имеем:

  1. Узлы. Такие факторы, как температура, влажность и ветер, являются узлами.
  2. Ребра. Результатом разделения на следующий узел является ребро.
  3. Корневой: здесь узел Outlook является корневым узлом.
  4. Листья: конечные узлы, которые предсказывают результат. Узлы, окрашенные в красный и зеленый цвета, — это Листья.

Разделение атрибутов в дереве и то, какой атрибут будет разделен, зависит от некоторых индексов, а именно ID3, Gini, c4.5 и т. д. Теоретически наиболее часто используемым является ID3, а в Python индексом по умолчанию для разделения является Gini. Формула для разделения через ID3:

Приложения для дерева решений:

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