Ссылка: Введение в статистическое обучение
Все изображения, опубликованные в этом посте, взяты из ссылки.

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

Смоделированный пример прогнозирования гипертонии

Допустим, мы хотим предсказать риск гипертонии для отдельных лиц. Дерево начинается с узла (Ожирение), который разбивает данные на ДА и НЕТ. Ветвь
YES прекращается, так как у этих людей прогнозируется гипертония. Люди в ветви НЕТ еще более разделены в зависимости от наличия стресса или его отсутствия. Точно так же те, у кого есть стресс, прогнозируются как ДА, а те, у кого его нет, далее делятся на возраст старше 50 лет. Наконец, те, кто старше 50 лет, прогнозируются как ДА, а те, кому нет, прогнозируются как НЕТ.

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

Аналогия дерева

Дерево имеет внутренние узлы, которые разбивают дерево (данные) на разные конечные узлы или листья (Rn: область). Сегменты в дереве, такие как те, которым назначено НЕТ ожирения, которые далее разделены стрессом, называются ветвями.

Деревья классификации

Прогноз

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

Расчет убытков

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

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

Индекс Джини

Индекс Джини — это показатель общей дисперсии K классов. Эта формула на самом деле сопоставима с дисперсией бинарного распределения, которая равна np(1-p), где n — количество наблюдений, а p — вероятность заранее определенного результата. Обратите внимание, что поскольку каждый узел в дереве представляет собой бинарную классификацию, здесь применяется биномиальное распределение.

Из формулы 8.6 индекс Джини будет иметь малое значение, если все pmk близки к 0 или 1 (когда pmk ~ 0, G ~ 0; когда pmk ~ 1, 1-pmk ~ 0, G ~ 0), а это означает, что узел способен классифицировать наблюдения в нужную область; этот узел называется «чистым узлом».

Энтропия

Альтернативой индексу Джини является энтропия. Точно так же энтропия будет приближаться к небольшому значению, если все pmk близки к 0 или 1.

Индекс Джини и энтропия называются показателями «загрязнения узла». Другими словами, индекс Джини и энтропия лучше, чем частота ошибок классификации с точки зрения чистоты узла, поскольку предыдущие две меры учитывают все регионы, тогда как частота ошибок классификации учитывает только max (pmk) — лучший регион — для узла производительность.

Для узла RestECG‹1 два расщепления дают прогноз ДА. Однако 7/11 наблюдений на левом листе — да, а 9/9 на правом листе — да. Оба листа помечены как «Да», поскольку большинство классов в каждом листе — «Да». В этом случае частота ошибок классификации равна 0, так как max(pmk) = 1, тогда как индекс Джини равен >0, поскольку он вычисляет все области от узла, в котором существует примесь (7/11) в одной области.

(См. мой предыдущий пост Чувствительность, специфичность, ошибка типа I, ошибка типа II и? для типичной оценки бинарных результатов машинного обучения)

Деревья регрессии

Прогноз

Подобно дереву классификации, дерево регрессии присваивает результаты обучающим наблюдениям. Но вместо присвоения метки «да/нет» на основе пропорций класса листа/региона назначается средний ответ региона. Для данных Hitters на рис. 5, Years и Hits — это два узла, которые выводят три области прогнозирования для Salary.

Процесс разработки такого дерева включает в себя два этапа:

  1. Определите набор возможных значений (например, Hits ‹ 117,5), которые делят обучающие наблюдения на отдельные и непересекающиеся области.
  2. Сделайте прогноз для каждого региона (зарплаты) по среднему отклику обучающих данных в регионе.

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

Расчет убытков

Дерево регрессии минимизирует потери модели по остаточной сумме квадратов (RSS), классической концепции линейной регрессии (см. мой предыдущий пост Методы выбора линейной модели — выбор подмножества для получения подробной информации о RSS).

Цель дерева регрессии состоит в том, чтобы найти комбинацию регионов, которая минимизирует RSS в формуле 8.1.

Чем дерево регрессии отличается от линейной регрессии?

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

Способы вырастить дерево

Рекурсивное бинарное разбиение

На Рисунке 1, Рисунке 4 и Рисунке 5 показан жадный метод сверху вниз для выращивания дерева, известный как рекурсивное двоичное разбиение. Сверху вниз означает, что дерево начинается сверху, а затем данные последовательно разбиваются; он жадный, потому что модель лучше всего подходит к узлу, а не к тому, какой вклад этот узел внесет в следующие разбиения.

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

Меньшее дерево с помощью жадного подхода сверху вниз

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

Обрезка

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

Сокращение сложности стоимости

Вместо того, чтобы рассматривать все поддеревья, мы используем параметр настройки (⍺), чтобы ограничить количество узлов (T) дерева.

Для каждого значения ⍺ определяется T — ⍺ контролирует компромисс между подгонкой модели (RSS) и сложностью дерева (T). Эта концепция аналогична регуляризации модели.

По умолчанию в Python sklearn используется жадный подход сверху вниз. Чтобы использовать отсечение сложности стоимости (ссылка на sklearn), нужно использовать следующий код:

clf = DecisionTreeClassifier(criterion='gini')
clf.cost_complexity_pruning_path(X, y)

Важность функции

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

Вспомните данные Hitters и дерево на рисунке 5. Мы можем интерпретировать дерево следующим образом: Годы — это наиболее важные характеристики для прогнозирования результата Зарплата. Для тех, кто имеет опыт работы ≥ 4,5 лет, Хиты являются второй важной характеристикой для определения Зарплаты. С другой стороны, для тех, чей стаж ‹ 4,5 лет, количество Хитов не так важно для прогноза Зарплаты и поэтому достигает конечного узла.

В пакете Python можно использовать sklearn, DecisionTreeClassifier и DecisionTreeRegressor. В DecisionTreeClassifier критерием важности признаков по умолчанию является Джини, а другим параметром является энтропия. В DecisionTreeRegressor критерием по умолчанию является squared_error, а другие параметры включают friedman_mse, absolute_error и poisson.

#X: training input, y: training output
#DecisionTreeClassifier
clf = DecisionTreeClassifier(criterion='gini')
clf.fit(X, y) 
print(clf.feature_importances_)
#DecisionTreeRegressor
reg = DecisionTreeRegressor(criterion='squared_error')
reg.fit(X, y)
print(reg.feature_importances_)

Плюсы и минусы деревьев решений

Плюсы

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

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

Минусы

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

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

Это краткое изложение главы 8 книги Введение в статистическое обучение. Надеюсь, вам понравится статья и книга.