Случайные леса считаются черными ящиками, но недавно я подумал, какие знания можно получить из случайного леса?
Наиболее очевидной вещью является важность переменных, в простейшем варианте это можно сделать, просто рассчитав количество вхождений переменной.
Второе, о чем я думал, это взаимодействие. Я думаю, что если количество деревьев достаточно велико, можно проверить количество вхождений пар переменных (что-то вроде независимости хи-квадрат). Третье - это нелинейности переменных. Моей первой идеей было просто посмотреть на график переменной Vs, но я пока не уверен, имеет ли это смысл.
Добавлено 23.01.2012
Мотивация
Я хочу использовать эти знания для улучшения модели логита. Я думаю (или, по крайней мере, я надеюсь), что можно найти взаимодействия и нелинейности, которые были упущены.
источник
Ответы:
Случайные леса вряд ли являются черным ящиком. Они основаны на деревьях решений, которые очень легко интерпретировать:
Это приводит к простому дереву решений:
Если Petal.Length <4.95, это дерево классифицирует наблюдение как «другое». Если оно больше 4,95, оно классифицирует наблюдение как «virginica». Случайный лес - это просто набор из множества таких деревьев, каждое из которых обучается на случайном подмножестве данных. Затем каждое дерево «голосует» за окончательную классификацию каждого наблюдения.
Вы даже можете вытащить отдельные деревья из рф и посмотреть на их структуру. Формат немного отличается от
rpart
моделей, но вы можете проверить каждое дерево, если хотите, и посмотреть, как оно моделирует данные.Более того, ни одна модель действительно не является черным ящиком, потому что вы можете проверить прогнозируемые ответы и фактические ответы для каждой переменной в наборе данных. Это хорошая идея, независимо от того, какую модель вы строите:
Я нормализовал переменные (длина и ширина чашелистика и лепестка) в диапазоне 0-1. Ответ также 0-1, где 0 - другое, а 1 - virginica. Как видите, случайный лес - хорошая модель, даже на тестовом наборе.
Кроме того, случайный лес вычислит различную меру переменной важности, которая может быть очень информативной:
Эта таблица показывает, насколько удаление каждой переменной снижает точность модели. Наконец, есть много других графиков, которые вы можете сделать из модели случайного леса, чтобы посмотреть, что происходит в черном ящике:
Вы можете просмотреть файлы справки для каждой из этих функций, чтобы лучше понять, что они отображают.
источник
Некоторое время назад мне пришлось обосновать соответствие модели RF некоторым химикам в моей компании. Я потратил много времени, пробуя разные методы визуализации. В ходе этого процесса я также случайно придумал несколько новых методов, которые я поместил в пакет R ( forestFloor ) специально для визуализации случайных лесов.
Классическим подходом являются графики частичной зависимости, поддерживаемые: Rminer (анализ чувствительности на основе данных - это повторная частичная зависимость), или partPlot в пакете randomForest . Я считаю пакет с частичной зависимостью iceBOX элегантным способом обнаружения взаимодействий. Я не использовал пакет edarf , но, похоже, у него есть несколько прекрасных визуализаций, посвященных RF. Пакет ggRandomForest также содержит большой набор полезных визуализаций.
В настоящее время forestFloor поддерживает объекты randomForest (поддержка других реализаций RF уже доступна). Также вклады характеристик могут быть рассчитаны для деревьев с градиентным усилением, поскольку эти деревья после обучения мало чем отличаются от случайных лесных деревьев. Таким образом, forestFloor может поддерживать XGBoost в будущем. Графики частичной зависимости полностью модельно инвариантны.
Все пакеты имеют общее для визуализации геометрической структуры сопоставления модели из пространства признаков в пространство назначения. Кривая синуса y = sin (x) будет отображением от x до y и может быть построена в 2D. Для непосредственного построения RF-отображения часто требуется слишком много измерений. Вместо этого общая структура отображения может быть спроецирована, разрезана или разложена таким образом, что вся структура отображения сводится к последовательности 2D предельных графиков. Если ваша RF-модель имеет только основные эффекты и не взаимодействует между переменными, классические методы визуализации подойдут просто отлично. Тогда вы можете упростить структуру вашей модели следующим образом:y=F(X)≈f1(x1)+f2(x2)+...+fd(xd) , Тогда каждая частичная функция по каждой переменной может быть визуализирована как синусоида. Если ваша модель RF зафиксировала значительные взаимодействия, то это более проблематично. Трехмерные фрагменты структуры могут визуализировать взаимодействие между двумя элементами и выходными данными. Проблема состоит в том, чтобы знать, какую комбинацию функций визуализировать ( iceBOX действительно решает эту проблему). Также нелегко определить, не учитываются ли другие скрытые взаимодействия.
В этой статье я использовал очень раннюю версию forestFloor, чтобы объяснить, какие именно биохимические взаимосвязи были обнаружены очень маленькой радиочастотной моделью. И в этой статье мы подробно опишем визуализации возможностей, визуализации лесов на случайных лесах .
Я вставил смоделированный пример из пакета forestFloor, где я показываю, как раскрыть смоделированную скрытую функцию noisey=x12+sin(x2π)+2∗x3∗x4+
Наконец, код для графиков частичной зависимости, закодированный A.Liaw, описанный J.Friedman. Что хорошо для основных эффектов.
источник
Чтобы дополнить эти прекрасные ответы, я бы упомянул использование деревьев с градиентным усилением (например, пакет GBM в R ). В R я предпочитаю это случайным лесам, потому что пропущенные значения допустимы по сравнению с randomForest, где требуется вменение. Имеются переменные значения и частичные графики (как в randomForest), помогающие в выборе объектов и исследовании нелинейных преобразований в вашей модели логита. Кроме того, взаимодействие с переменными решается с помощью H-статистики Фридмана (
interact.gbm
) со ссылкой, заданной какJ.H. Friedman and B.E. Popescu (2005). “Predictive Learning via Rule Ensembles.” Section 8.1
. Коммерческая версия под названием TreeNet доступна от Salford Systems, и эта видеопрезентация рассказывает о том, как они оценивают переменное взаимодействие. Видео .источник
Поздний ответ, но я наткнулся на недавний пакет R
forestFloor
(2015), который помогает вам автоматически выполнять эту задачу «unblackboxing». Это выглядит очень многообещающе!Производит следующие участки:
Он также обеспечивает трехмерную визуализацию, если вы ищете взаимодействия.
источник
Как упомянул Зак, один из способов понять модель - это построить ответ, когда предсказатели меняются. Вы можете сделать это легко для "любой" модели с пакетом plotmo R. Например
который дает
Это изменяет одну переменную, в то время как другие сохраняют их медианные значения. Для графиков взаимодействия это меняет две переменные. (Примечание добавлено в ноябре 2016 года:
plotmo
теперь также поддерживаются графики частичной зависимости.)В приведенном выше примере используются только две переменные; более сложные модели можно визуализировать по частям, просматривая одну или две переменные одновременно. Поскольку «другие» переменные хранятся в своих медианных значениях, это показывает только часть данных, но все еще может быть полезным. Некоторые примеры приведены в виньетке для пакета plotmo . Другие примеры приведены в главе 10 « Построение деревьев rpart с помощью пакета rpart.plot» .
источник
Я очень заинтересован в подобных вопросах. Я думаю, что есть много информации, которую мы можем получить из случайного леса.
Что касается взаимодействий, кажется, что Брейман и Культер уже пытались взглянуть на это, особенно для классификации RF.
Насколько мне известно, это не было реализовано в пакете randomForest R. Может быть, потому что это может быть не так просто и потому что значение «переменных взаимодействий» очень зависит от вашей проблемы.
Что касается нелинейности, я не уверен, что вы ищете, лес регрессии используется для нелинейных задач множественной регрессии без каких-либо априоров относительно того, какой тип нелинейной функции использовать.
источник
Позднее в игре, но есть некоторые новые разработки в этой области, например LIME и SHAP . Также стоит проверить пакет DALEX (в частности, если используется R, но в любом случае он содержит отличные читы и т. Д.), Хотя в данный момент он не охватывает взаимодействия. И все это не зависит от модели, поэтому будет работать для случайных лесов, GBM, нейронных сетей и т. Д.
источник
Небольшая модификация случайных лесов, которые предоставляют больше информации о данных, - это недавно разработанные методы причинно-следственных связей. Смотрите R-пакет GRF и мотивационную статью здесь . Идея состоит в том, чтобы использовать базовые методы случайного леса, чтобы найти неоднородность в причинных эффектах.
В более ранней статье ( здесь ) подробно описывается простой причинный лес. На странице 9 статьи приведена пошаговая процедура выращивания причинного дерева, которое затем можно распространить до леса обычными способами.
Уравнение 4:
Уравнение 5:
источник
Поздний ответ связан с моим вопросом здесь ( Можем ли мы сделать Случайный Лес на 100% интерпретируемым, исправив начальное число? ):
источник