Последнее обновление: 2018–12–09

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

Содержание организовано следующим образом.

  • Что такое случайный лес
  • Интерпретация случайного леса
  • Смещение к функциям с большим количеством категорий
  • Обработка избыточных функций
  • Обнаружение выбросов
  • Кластеризация

Что такое случайный лес

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

Мы используем набор данных ниже, чтобы проиллюстрировать, как построить случайное дерево леса. Примечание Class = XOR (X1, X2). X3 идентичен X2 (для иллюстративных целей в следующих разделах).

На рисунке ниже показано, как построить случайное лесное дерево.

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

Интерпретация случайного леса

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

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

Давайте добавим нерелевантный объект X4 в иллюстративный набор данных. Оценки важности показаны ниже. Ясно, что X1 и X4, соответственно, имеют наибольшие и наименьшие оценки. X2 и X3 идентичны и как бы разделяют оценки важности.

График частичной зависимости

Оценка важности объекта не говорит о том, как соотносятся объект и класс. График частичной зависимости может визуализировать предельное влияние функции на вероятность класса.

Когда объект коррелирует с классом, график выглядит, как на левом рисунке ниже, что указывает на то, что X1 ≤ 0,5 и X1> 0,5 связаны с разными классами.

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

Причина в том, что X1 должен взаимодействовать с X2 или X3, чтобы предсказывать класс. Сам по себе X1 не является прогностическим. Следовательно, в этом случае графики частичной зависимости могут вводить в заблуждение.

inTrees

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

Для иллюстративного набора данных взаимодействия с высокой степенью прогнозирования и связанные с ними классы могут быть извлечены с помощью inTrees и показаны ниже. Частота (0–100%) измеряет популярность взаимодействия в случайном лесу, а точность (0–1) измеряет, насколько точно взаимодействие предсказывает класс.

Смещение к функциям с большим количеством категорий

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

Одно из решений - выполнить выбор функции. Например, в пакете randomForest R можно использовать влияние функций на точность (важность $ MeanDecreaseAccuracy) для оценки функций. График влияния на точность ниже показывает, что влияние X5 на точность довольно мало по сравнению с действительно информативными функциями, что указывает на то, что эта функция сбивает модель с толку и должна быть удалена перед установкой классификатора.

Обработка избыточных функций

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

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

Обнаружение выбросов с помощью случайных лесов

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

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

На основе набора данных строится случайный лес. Затем классификатор можно применить к экземплярам тестовых данных. Если предсказанный класс является «случайным», то он определяется как выброс. Выявленные выбросы показаны на левом рисунке ниже.

Мы можем понять, какие функции способствуют обнаружению выбросов, посмотрев на оценку важности. Для иллюстрации мы добавляем случайную функцию X3, которая не имеет отношения к классам. Оценки важности показаны на правом рисунке ниже. X1 и X2 определены как важные функции, в то время как X3 менее важен.

Кластеризация со случайными лесами

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

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

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

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

Резюме

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

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

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

Вы приветствовали участие в пакете inTrees или RRF на github.

Дополнительную информацию можно найти в моей книге, которая находится в свободном доступе на сайте dataanalyticsbook.info.