Требуется ли перекрестная проверка для моделирования со случайными лесами?

23

Насколько я видел, мнения об этом, как правило, расходятся. Лучшая практика, безусловно, диктует использование перекрестной проверки (особенно если сравнивать RF с другими алгоритмами в одном и том же наборе данных). С другой стороны, исходный источник утверждает, что факт ошибки OOB, вычисляемый во время обучения модели, является достаточным показателем эффективности тестового набора. Даже Тревор Хасти в своих сравнительно недавних беседах говорит, что «Случайные леса обеспечивают бесплатную перекрестную проверку». Интуитивно, это имеет смысл для меня, если я тренируюсь и пытаюсь улучшить модель на основе RF на одном наборе данных.

Может кто-нибудь, пожалуйста, изложите аргументы за и против необходимости перекрестной проверки со случайными лесами?

нейрон
источник
Вопросы явно ищут мнения , как правило , не рекомендуются на валютную стопку сайтов, datascience.stackexchange.com/help/dont-ask , возможно , вы могли бы перефразировать вопрос требовать экземпляров в поддержке опыта пользователей? Или искать теоретическую основу для той или иной позиции.
image_doctor
2
Случайные леса с меньшей вероятностью превосходят другие алгоритмы ОД, но перекрестная проверка (или некоторая альтернативная форма оценки) все равно должна быть рекомендована.
Дэвид
Я думаю, что вы должны задать этот вопрос статистику SO: stats.stackexchange.com
Marcin Kosiński
Я бы хотел второй @David ... так или иначе, вы будете делать перекрестную проверку.
Не могли бы вы дать ссылку на заявленное заявление Тревора Хасти?
tipanverella

Ответы:

7

По умолчанию случайный лес собирает 2/3 данных для обучения и отдыха для тестирования на регрессию и почти 70% данных для обучения и отдыха для тестирования во время классификации. По принципу, поскольку он рандомизирует выбор переменных во время каждого разбиения дерева, он не склонен к переобучению в отличие от другие модели. Однако, если вы хотите использовать CV с использованием nfolds в sklearn, вы все равно можете использовать концепцию набора протяженности, например oob_score (out of bag) = True, которая показывает производительность модели с использованием или без использования CV. Таким образом, в двух словах, использование oob_score = True с nfolds или без него само по себе может сказать, хорошо ли использование CV для ваших данных. В общем, если ваша цель соблюдает определенный дистрибутив и у вас мало данных наблюдения, использование CV не даст много улучшений.

0xF
источник
5

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

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

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

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

image_doctor
источник
3

Я сделал несколько тестов на наборе данных 50k строк, используя sklearn.RandomForestRegressor.

Я получаю существенно разные оценки - я использую нормализованный показатель Джини для показателя - в зависимости от того, использую ли я rf.oob_prediction_ (0,2927) или KFold CV (0,3258 для 7 сгибов и 0,3236 для 3 сгибов).

При этом, как представляется, ваша точка зрения о том, что «особенно если сравнивать RF с другими алгоритмами в одном и том же наборе данных», является серьезным соображением относительно использования ручного CV, а не полагаться на прогноз OOB.

инверсия
источник