Насколько я видел, мнения об этом, как правило, расходятся. Лучшая практика, безусловно, диктует использование перекрестной проверки (особенно если сравнивать RF с другими алгоритмами в одном и том же наборе данных). С другой стороны, исходный источник утверждает, что факт ошибки OOB, вычисляемый во время обучения модели, является достаточным показателем эффективности тестового набора. Даже Тревор Хасти в своих сравнительно недавних беседах говорит, что «Случайные леса обеспечивают бесплатную перекрестную проверку». Интуитивно, это имеет смысл для меня, если я тренируюсь и пытаюсь улучшить модель на основе RF на одном наборе данных.
Может кто-нибудь, пожалуйста, изложите аргументы за и против необходимости перекрестной проверки со случайными лесами?
Ответы:
По умолчанию случайный лес собирает 2/3 данных для обучения и отдыха для тестирования на регрессию и почти 70% данных для обучения и отдыха для тестирования во время классификации. По принципу, поскольку он рандомизирует выбор переменных во время каждого разбиения дерева, он не склонен к переобучению в отличие от другие модели. Однако, если вы хотите использовать CV с использованием nfolds в sklearn, вы все равно можете использовать концепцию набора протяженности, например oob_score (out of bag) = True, которая показывает производительность модели с использованием или без использования CV. Таким образом, в двух словах, использование oob_score = True с nfolds или без него само по себе может сказать, хорошо ли использование CV для ваших данных. В общем, если ваша цель соблюдает определенный дистрибутив и у вас мало данных наблюдения, использование CV не даст много улучшений.
источник
Одно из ключевых отличий состоит в том, что перекрестная проверка обеспечивает отображение всех образцов в наборах для обучения и тестирования, поэтому 100% ваших данных в какой-то момент используются для обучения и тестирования.
В зависимости от размера вашего набора данных начальная загрузка, выборка с заменой, происходящая в случайном лесу, не гарантирует, что расщепления, которые видят деревья, будут содержать все экземпляры. Если в вашем лесу достаточно деревьев, оценка OOB должна асимптотически сходиться к наилучшему значению оценки OOB.
Точность обоих методов будет в некоторой степени зависеть от данных, поэтому может быть целесообразным сравнить оба метода на конкретных данных, которые у вас есть, и посмотреть, дают ли оценки CV и RF OOB одинаковые значения.
Если они этого не делают, то стоило бы изучить дальнейшие оценки истинного уровня ошибок, возможно, по гораздо более высоким значениям K в CV.
источник
Я сделал несколько тестов на наборе данных 50k строк, используя
sklearn.RandomForestRegressor
.Я получаю существенно разные оценки - я использую нормализованный показатель Джини для показателя - в зависимости от того, использую ли я
rf.oob_prediction_
(0,2927) или KFold CV (0,3258 для 7 сгибов и 0,3236 для 3 сгибов).При этом, как представляется, ваша точка зрения о том, что «особенно если сравнивать RF с другими алгоритмами в одном и том же наборе данных», является серьезным соображением относительно использования ручного CV, а не полагаться на прогноз OOB.
источник