Каковы теоретические причины не обрабатывать пропущенные значения? Машины повышения градиента, деревья регрессии обрабатывают пропущенные значения. Почему Случайный Лес не делает это?
random-forest
missing-data
gbm
Федоренко Кристина
источник
источник
party
пакете R. Одна статья в блоге здесь: exegetic.biz/blog/2013/05/…Ответы:
Gradient Boosting Trees использует деревья CART (в стандартной настройке, как это было предложено его авторами). Деревья CART также используются в случайных лесах. То, что сказал @ user777, верно, что РЧ-деревья обрабатывают пропущенные значения либо посредством вменения со средним, либо по грубому усреднению / режиму, либо по усреднению / режиму на основе приближений. Эти методы были предложены Брейманом и Катлером и используются для РФ. Это ссылка от авторов Пропущенные значения в тренировочном наборе .
Однако можно построить GBM или RF с другими типами деревьев решений. Обычной заменой CART является C4.5, предложенный Quinlan. В C4.5 пропущенные значения не заменяются в наборе данных. Вместо этого, вычисленная функция примесей учитывает отсутствующие значения, штрафуя показатель примесей с соотношением отсутствующих значений. В тестовом наборе для оценки в узле, в котором есть тест с пропущенным значением, прогноз создается для каждого дочернего узла и агрегируется позднее (путем взвешивания).
Теперь во многих реализациях вместо CART используется C4.5. Основная причина заключается в том, чтобы избежать дорогостоящих вычислений (CART использует более строгие статистические подходы, которые требуют большего количества вычислений), результаты кажутся схожими, полученные деревья часто меньше (поскольку CART является двоичным, а C4.5 - нет). Я знаю, что Weka использует этот подход. Я не знаю других библиотек, но я ожидаю, что это не будет особой ситуацией. Если это так с вашей реализацией GBM, то это будет ответом.
источник
РФ делает ручки пропущенных значений, но только не в то же самое , что ВОЗ и другие аналогичные алгоритмы решения дерева делают. User777 правильно описывает два метода, используемые RF для обработки пропущенных данных (срединное вменение и / или мера на основе близости), тогда как Фрэнк Харрелл правильно описывает, как пропущенные значения обрабатываются в CART (суррогатное разбиение). Для получения дополнительной информации см. Ссылки на отсутствующую обработку данных для CART (или его двоюродного брата FOSS: RPART ) и RF .
Ответ на ваш реальный вопрос четко освещен, ИМХО, в статье Ишварана и др. 2008 года, озаглавленной « Случайные леса выживания» . Они дают следующее правдоподобное объяснение того, почему RF не обрабатывает недостающие данные так же, как CART или аналогичные классификаторы единого дерева решений:
Это в стороне, но для меня это ставит под сомнение тех, кто утверждает, что RF использует ансамбль моделей CART. Я видел это заявление во многих статьях, но я никогда не видел таких заявлений, связанных с каким-либо авторитетным текстом по РФ. С одной стороны, деревья в RF выращиваются без обрезки , что обычно не является стандартным подходом при построении модели CART. Другой причиной может быть та, на которую вы намекаете в своем вопросе: CART и другие ансамбли деревьев решений обрабатывают пропущенные значения, тогда как [оригинальная] RF не делает, по крайней мере, внутренне, как это делает CART.
Имея в виду эти предостережения, я думаю, что вы могли бы сказать, что RF использует ансамбль CART-подобных деревьев решений (т. Е. Набор необрезанных деревьев, выращенных в максимальной степени, без возможности обрабатывать недостающие данные посредством суррогатного расщепления). Возможно, это одно из тех точечных семантических различий, но я думаю, стоит отметить это.
РЕДАКТИРОВАТЬ : На моей стороне примечание, которое не связано с фактическим заданным вопросом, я заявил, что «я никогда не видел таких заявлений, связанных с какой-либо авторитетный текст по РФ». Оказывается, Брейман DID определенно утверждал, что деревья решений CART используются в исходном алгоритме RF:
Источник: стр.9 Случайных лесов. Брейман (2001)
Тем не менее, я все еще придерживаюсь (хотя и более ненадежно) идею о том, что это CART-подобные деревья решений, поскольку они растут без сокращения, в то время как CART обычно никогда не запускается в этой конфигурации, поскольку почти наверняка перегрузит ваши данные ( отсюда и обрезка в первую очередь).
источник
Случайный лес обрабатывает недостающие данные, и есть два отличных способа сделать это:
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.
источник
Рекурсивное разделение использует суррогатные разбиения, основанные на не пропущенных предикторах, которые связаны с предиктором, обладающим отсутствующим значением для наблюдения. Теоретически представляется возможным реализовать случайные леса, использующие ту же идею. Я не знаю, делало ли это какое-либо программное обеспечение случайного леса.
источник
Случайный лес имеет два метода для обработки пропущенных значений, согласно Лео Брейману и Адель Катлер, которые изобрели его.
Первый - быстрый и грязный: он просто заполняет медианное значение для непрерывных переменных или самое распространенное не пропущенное значение в классе .
Второй метод заполняет пропущенные значения, затем запускает RF, затем для пропущенных непрерывных значений RF вычисляет средневзвешенное значение по отсутствию значений. Затем этот процесс повторяется несколько раз. Затем модель обучается в последний раз, используя вмененный RF-набор данных.
источник
Вместо того, чтобы использовать медианные значения и т. Д., Я бы настоятельно рекомендовал взглянуть на пакет missRanger (в настоящее время разрабатывается на Github) или на пакет R. missForest). В обоих этих пакетах используются случайные леса, которые сначала вменяют ваши данные, используя метод, аналогичный множественному вменению через цепочечные уравнения (MICE). Это был бы подходящий метод вменения, чтобы использовать, поскольку он близко соответствует вашей фактической модели анализа. После этого вы можете использовать все свои данные, не беспокоясь о том, чтобы отбросить отдельные строки из-за пропущенных наблюдений. Кроме того, вмененные значения будут гораздо более реалистичными, чем просто выбор медианы или режимов.
Вы можете использовать только один заполненный вмененный набор данных для своих анализов, но лучший способ включить неопределенность в отсутствующие значения - это запустить несколько прогонов этих методов вменения, а затем оценить вашу модель для каждого из результирующих наборов данных (т. Е. Нескольких импутация), а затем объединить оценки, используя правила Рубина (см. пакет Mitools).
источник
Для 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.
источник