Почему Random Forest не обрабатывает пропущенные значения в предикторах?


42

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


3
Они обрабатываются в partyпакете R. Одна статья в блоге здесь: exegetic.biz/blog/2013/05/…
Стефан Лоран,

Ответы:


34

Gradient Boosting Trees использует деревья CART (в стандартной настройке, как это было предложено его авторами). Деревья CART также используются в случайных лесах. То, что сказал @ user777, верно, что РЧ-деревья обрабатывают пропущенные значения либо посредством вменения со средним, либо по грубому усреднению / режиму, либо по усреднению / режиму на основе приближений. Эти методы были предложены Брейманом и Катлером и используются для РФ. Это ссылка от авторов Пропущенные значения в тренировочном наборе .

Однако можно построить GBM или RF с другими типами деревьев решений. Обычной заменой CART является C4.5, предложенный Quinlan. В C4.5 пропущенные значения не заменяются в наборе данных. Вместо этого, вычисленная функция примесей учитывает отсутствующие значения, штрафуя показатель примесей с соотношением отсутствующих значений. В тестовом наборе для оценки в узле, в котором есть тест с пропущенным значением, прогноз создается для каждого дочернего узла и агрегируется позднее (путем взвешивания).

Теперь во многих реализациях вместо CART используется C4.5. Основная причина заключается в том, чтобы избежать дорогостоящих вычислений (CART использует более строгие статистические подходы, которые требуют большего количества вычислений), результаты кажутся схожими, полученные деревья часто меньше (поскольку CART является двоичным, а C4.5 - нет). Я знаю, что Weka использует этот подход. Я не знаю других библиотек, но я ожидаю, что это не будет особой ситуацией. Если это так с вашей реализацией GBM, то это будет ответом.



Вы затронули тему «Начисление нечистоты за счет пропущенных значений». Как это напрямую влияет на выбор оптимальных значений измерений, выбранных на определенном уровне / ветви дерева?
Джавадба

16

«Каковы [теоретические] причины [для ВЧ] не обрабатывать пропущенные значения? Машины повышения градиента, деревья регрессии обрабатывают пропущенные значения. Почему Случайный Лес не делает этого?»

РФ делает ручки пропущенных значений, но только не в то же самое , что ВОЗ и другие аналогичные алгоритмы решения дерева делают. User777 правильно описывает два метода, используемые RF для обработки пропущенных данных (срединное вменение и / или мера на основе близости), тогда как Фрэнк Харрелл правильно описывает, как пропущенные значения обрабатываются в CART (суррогатное разбиение). Для получения дополнительной информации см. Ссылки на отсутствующую обработку данных для CART (или его двоюродного брата FOSS: RPART ) и RF .

Ответ на ваш реальный вопрос четко освещен, ИМХО, в статье Ишварана и др. 2008 года, озаглавленной « Случайные леса выживания» . Они дают следующее правдоподобное объяснение того, почему RF не обрабатывает недостающие данные так же, как CART или аналогичные классификаторы единого дерева решений:

«Хотя суррогатное расщепление хорошо работает для деревьев, этот метод может не очень хорошо подходить для лесов. Скорость - это одна из проблем. Поиск суррогатного расщепления требует больших вычислительных ресурсов и может стать невозможным при выращивании большого количества деревьев, особенно для полностью насыщенных деревьев, используемых Кроме того, суррогатное разбиение может даже не иметь смысла в лесной парадигме. RF случайным образом выбирает переменные при разбиении узла, и, как таковые, переменные внутри узла могут быть некоррелированными, и разумного суррогатного разбиения может не существовать. Другая проблема заключается в том, что суррогатное расщепление изменяет интерпретацию переменной, которая влияет на такие показатели, как [Значение переменной].

По этим причинам для РФ требуется другая стратегия ».

Это в стороне, но для меня это ставит под сомнение тех, кто утверждает, что RF использует ансамбль моделей CART. Я видел это заявление во многих статьях, но я никогда не видел таких заявлений, связанных с каким-либо авторитетным текстом по РФ. С одной стороны, деревья в RF выращиваются без обрезки , что обычно не является стандартным подходом при построении модели CART. Другой причиной может быть та, на которую вы намекаете в своем вопросе: CART и другие ансамбли деревьев решений обрабатывают пропущенные значения, тогда как [оригинальная] RF не делает, по крайней мере, внутренне, как это делает CART.

Имея в виду эти предостережения, я думаю, что вы могли бы сказать, что RF использует ансамбль CART-подобных деревьев решений (т. Е. Набор необрезанных деревьев, выращенных в максимальной степени, без возможности обрабатывать недостающие данные посредством суррогатного расщепления). Возможно, это одно из тех точечных семантических различий, но я думаю, стоит отметить это.


РЕДАКТИРОВАТЬ : На моей стороне примечание, которое не связано с фактическим заданным вопросом, я заявил, что «я никогда не видел таких заявлений, связанных с какой-либо авторитетный текст по РФ». Оказывается, Брейман DID определенно утверждал, что деревья решений CART используются в исходном алгоритме RF:

«Простейший случайный лес со случайными объектами формируется путем случайного выбора в каждом узле небольшой группы входных переменных, на которые нужно разделить. Вырастите дерево с использованием методологии CART до максимального размера и не обрезайте его». [Мой акцент]

Источник: стр.9 Случайных лесов. Брейман (2001)

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


11

Случайный лес обрабатывает недостающие данные, и есть два отличных способа сделать это:

1) Без вменения отсутствующих данных, но с предоставлением вывода. 2) Импутация данных. Вмененные данные затем используются для вывода.

Оба метода реализованы в моем R-пакете randomForestSRC (в соавторстве с Удайей Когалур). Во-первых, важно помнить, что поскольку в случайных лесах используется случайный выбор объектов, традиционные методы отсутствующих данных, используемые отдельными деревьями (CART и т. П.), Не применяются. Эта точка зрения была сделана в Ishwaran et al. (2008), "Случайные леса выживания", Летопись прикладной статистики , 2 , 3 , и хорошо сформулированы одним из комментаторов.

Метод (1) является методом «вменения на лету» (OTFI). До разделения узла отсутствующие данные для переменной вменяются путем случайного извлечения значений из не пропущенных данных в пакете. Цель этих вмененных данных состоит в том, чтобы сделать возможным присваивать наблюдения дочерним узлам в случае, если узел разделен на переменную с отсутствующими данными. Однако вмененные данные не используются для расчета статистики разделения, которая использует только не пропущенные данные. После разбиения узла вмененные данные сбрасываются до отсутствия и процесс повторяется до тех пор, пока не будут достигнуты конечные узлы. OTFI сохраняет целостность данных вне пакета, и поэтому значения производительности, такие как переменная важность (VIMP), остаются несмещенными. Алгоритм OTFI был описан в Ishwaran et al (2008) и реализован в устаревшем пакете randomSurvivalForest,

Метод (2) реализован с использованием функции «impute» в randomForestSRC. Доступны неконтролируемые, рандомизированные и многомерные методы разделения для вменения данных. Например, многомерное расщепление обобщает весьма успешный метод импутации missForest ( Stekhoven & Bühlmann (2012), «MissForest - непараметрическое вменение пропущенного значения для данных смешанного типа», Bioinformatics , 28 , 1 ). Вызов функции вменения с отсутствующими данными вернет вмененный фрейм данных, который можно подогнать, используя основную функцию леса "rfsrc".

Детальное сравнение различных алгоритмов пропущенных данных о лесах, реализованных с использованием «вменения», было описано в недавней статье Фэй Танга «Алгоритмы пропущенных данных по случайным лесам», 2017 . Я рекомендую обратиться к файлам справки "rfsrc" и "impute" из randomForestSRC для получения более подробной информации о вменении и OTFI.


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

1
Спасибо за интересный ответ (+1). Я позволил себе добавить полные ссылки и ссылки для пары цитируемых работ, но не смог найти Tang & Ishwaran (2015), «Алгоритмы с отсутствующими данными в случайном лесу». Это уже опубликовано?
Scortchi - Восстановить Монику

9

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


7

Случайный лес имеет два метода для обработки пропущенных значений, согласно Лео Брейману и Адель Катлер, которые изобрели его.

Первый - быстрый и грязный: он просто заполняет медианное значение для непрерывных переменных или самое распространенное не пропущенное значение в классе .

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


Спасибо за ваш ответ! Но оба эти метода заменяют отсутствующие значения. Но в GBM или деревьях регрессии пропущенные значения не заменяют ничего. Какова теоретическая разница между, например, GBM и RF в этом смысле?
Федоренко Кристина

Я не эксперт по GBM, но обработка пропущенных значений по РЧ, похоже, основана на идее вменения, en.wikipedia.org/wiki/Imputation_(statistics). В тех случаях, когда пропущенные значения не пропущены случайно, ваш результаты могут быть предвзятыми из-за отсутствия. Импутация пытается восстановить эти пропущенные значения и уменьшить смещение.
Восстановить Монику

2

Вместо того, чтобы использовать медианные значения и т. Д., Я бы настоятельно рекомендовал взглянуть на пакет missRanger (в настоящее время разрабатывается на Github) или на пакет R. missForest). В обоих этих пакетах используются случайные леса, которые сначала вменяют ваши данные, используя метод, аналогичный множественному вменению через цепочечные уравнения (MICE). Это был бы подходящий метод вменения, чтобы использовать, поскольку он близко соответствует вашей фактической модели анализа. После этого вы можете использовать все свои данные, не беспокоясь о том, чтобы отбросить отдельные строки из-за пропущенных наблюдений. Кроме того, вмененные значения будут гораздо более реалистичными, чем просто выбор медианы или режимов.

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


0

Для CART вы можете применить подход пропущенных атрибутов (MIA). То есть для категориальных предикторов вы кодируете как отдельную категорию. Для числовых предикторов вы создаете две новые переменные для каждой переменной с пропусками: одну, где вы кодируете пропуски как -Inf, и одну, где вы кодируете пропуски как + Inf. Затем вы применяете функцию случайного леса, как обычно, к вашим данным.

Преимущества MIA: 1) в вычислительном отношении дешевый, 2) не дает нескольких наборов данных и, следовательно, моделирует, как это делает многократное вменение (литература по вменению отсутствующих данных обычно соглашается с тем, что одного вмененного набора данных недостаточно), 3) не требует Вы должны выбрать статистический метод и / или модель для вменения данных.

Функции ctree()и cforest()из пакета partykit позволяют применять MIA путем передачи ctree_control(MIA = TRUE)их controlаргументов.

Программа Джерома Фридмана RuleFit, похоже, использует MIA для борьбы с пропусками, см. Https://statweb.stanford.edu/~jhf/r-rulefit/rulefit3/RuleFit_help.html#xmiss .

Описание подхода МВД можно найти в Twala et al. (2008):

Twala, BETH, Jones, MC, и Hand, DJ (2008). Хорошие методы для работы с отсутствующими данными в деревьях решений. Письма о распознавании образов, 29 (7), 950-956.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.