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

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

На каждом этапе наилучшее разделение определяется путем получения максимального информационного выигрыша (IG):

Три основных способа вычисления информации:

  1. Примесь Джини (индекс Джини):

2. Энтропия:

Это много формулы ... Давайте посмотрим на пример.

Это мой 5-летний щенок, улун. Я учил его командам в тот день, когда удочерил его. Вскоре я понял, что улун - очень избирательная собака. Уровень успеха сильно зависит от типов команд и наград. Вот небольшая схема, показывающая результат тренировки за 30 дней.

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

Использование примеси Джини в качестве критерия:

Использование энтропии в качестве критерия:

В результате и примесь Джини, и энтропия показывают вознаграждение с более высоким объемом информации, следовательно, это более эффективное разделение.

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

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

  1. Установка минимального количества выборок на листовом узле или максимальной глубины дерева
  2. Обрежьте дерево, чтобы уменьшить размер деревьев, удалив участки деревьев, которые не давали возможности прогнозирования. Есть два типа обрезки. Предварительная обрезка останавливает рост дерева, когда информация становится ненадежной, в то время как после обрезки берется полностью выросшее дерево, а затем удаляются листовые узлы, только если это немного улучшает производительность модели.
  3. Метод ансамбля, такой как мешковина или бустинг. Он объединяет несколько слабых учеников, чтобы создать сильных учеников. Случайный лес - это пример пакетирования, который создает несколько деревьев решений с использованием случайно выбранного подмножества обучающих данных и функций. Выходные данные рассчитываются путем усреднения прогнозов отдельных деревьев решений. AdaBoost - еще один пример повышения. Вместо взрослого дерева вырастают пни (слабый ученик, использующий только маленькие особенности). Затем последовательно создаются разные модели. Более новая модель создается путем изучения ошибки старой модели.

Надеюсь, эта статья окажется для вас полезной. О Random forest и AdaBoost мы поговорим подробнее в разных статьях.