Основная тема этой статьи - попытаться объяснить, насколько эффективны методы, основанные на дереве решений, но при этом очень легко интерпретируемые и выступающие в качестве моста между методами простого вывода (например, линейная регрессия) и методами черного ящика (например, нейронными сетями). Итак, приступим.

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

Это довольно простой алгоритм, т.е. пройти по оси X и найти лучшее (с минимальной общей ошибкой) разбиение, затем перейти к каждому из двух разбиений, найти лучшее разбиение в этих разбиениях и так далее. Схема кажется простой, но легко понять, какое дерево изучает. Только если бы мы могли иметь такую ​​интерпретируемость и в то же время обладать современной предсказательной силой, это было бы желательной комбинацией. К счастью, есть Random Forests и Boosting, это метаалгоритмы.

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

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

Определение относительной важности функции

Важность функции основана на идее, что функции, которая приводит к максимальному снижению RMSE для группы split, присваивается высокий балл важности. Скажем более формально

Приведенная выше формула говорит, что для данного дерева (T) с J конечными узлами (следовательно, J-1 внутренних узлов) для данной переменной 'k' мы суммируем по всем узлам (где переменная 'k' использовалась для создания split) увеличение mse для этого узла. Это интуитивно понятно, что наибольшее значение придается переменной с наибольшей дискриминирующей способностью. Эту формулу можно использовать при настройке классификации, а также для замены расчета усиления на «Энтропийное усиление» или эквивалент.

Естественное расширение этого применяется к алгоритмам дерева ансамбля, таким как Random Forest и Gradient Boosting. Здесь мы суммируем вклад переменной «k» по всем узлам всех деревьев, как в приведенной ниже формуле.

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

Подход на основе случайных перестановок

Этот метод интуитивно понятен и не зависит от модели, чтобы определить важность функции с помощью этого метода, случайным образом переставьте точки данных функции, которую вы хотите вычислить, важность сохранения остальных столбцов нетронутыми. Сделайте прогноз, используя, скажем, набор проверки до и после перестановки. Меньшая разница в потерях до и после перестановки ясно говорит о том, что функция не имеет сильной корреляции / предсказательной силы в отношении целевой переменной. Обратите внимание, что здесь мы можем использовать набор проверки, а в случае Bagging (в случайном лесу) мы можем сделать это на образцах Out of Bag (OOB), все это снижает зависимость от обучающего набора.

Визуализация деревьев для вывода

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

Это пример набора данных радужной оболочки, верхние ветви дерева, начинающиеся от корня, могут использоваться для генерации функций, которые представляют собой комбинацию, скажем, petal_ length и petal_width, которые другой класс моделей не сможет захватить.

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

использованная литература

  1. Тревор Хасти, Роберт Тибширани и Джером Фридман. Элемент статистического обучения. п. 593.