Вопрос или проблема
Насколько я видел, мнения по этому вопросу сильно различаются. Наилучшей практикой было бы использовать кросс-валидацию (особенно если сравнивать случайные леса с другими алгоритмами на одном и том же наборе данных). С другой стороны, в оригинальном источнике говорится, что то, что ошибка OOB рассчитывается во время обучения модели, является достаточным индикатором производительности на тестовом наборе. Даже Тревор Хасти в относительно недавних выступлениях говорит, что “Случайные леса обеспечивают бесплатную кросс-валидацию”. Интуитивно это имеет смысл для меня, если обучать и пытаться улучшить модель, основанную на случайном лесе, на одном наборе данных.
Может ли кто-то изложить аргументы за и против необходимости кросс-валидации с случайными лесами?
По умолчанию случайный лес использует 2/3 данных для обучения и оставшиеся для тестирования при регрессии, а почти 70% данных для обучения и оставшиеся для тестирования при классификации. По своей сути, поскольку он рандомизирует выбор переменных при каждом разбиении дерева, он не склонен к переобучению, в отличие от других моделей. Однако если вы хотите использовать CV с использованием nfolds в sklearn, вы все равно можете использовать концепцию hold out set, такую как oob_score=True
(оценка вне пакета), которая показывает производительность модели с использованием или без использования CV.
Таким образом, в двух словах, использование oob_score=True
с или без nfolds может само по себе указать, является ли использование CV хорошим для ваших данных. Обычно, если ваша целевая переменная следует определённому распределению и у вас не так много наблюдательных данных, то использование CV не даст значительного улучшения.
Одно из ключевых различий заключается в том, что кросс-валидация гарантирует, что все образцы появятся в тренировочных и тестовых наборах, так что 100% ваших данных будет использовано в какой-то момент для обучения и тестирования.
В зависимости от размера вашего набора данных, бутстрэппинг, выборка с возвращением, происходящая в случайном лесе, не гарантирует, что разбиения, которые видят деревья, будут содержать все экземпляры. Если в вашем лесу достаточно деревьев, оценка OOB должна асимптотически сходиться к наилучшей оценке OOB.
Точность для обоих методов будет в какой-то степени зависеть от данных, поэтому целесообразно сравнить оба метода на конкретных данных, которые у вас есть, и посмотреть, дают ли оценки CV и RF OOB схожие значения.
Если они не совпадают, то стоит рассмотреть дальнейшие оценки истинной ошибки, возможно, с использованием значительно больших значений K в CV.
Я провёл несколько тестов на наборе данных из 50 тысяч строк, используя sklearn.RandomForestRegressor
.
Я получаю значительно разные оценки – я использую нормализованный индекс Джини для метрики – в зависимости от того, использую ли я rf.oob_prediction_
(0.2927) или кросс-валидацию KFold (0.3258 для 7 фолдов и 0.3236 для 3 фолдов).
Таким образом, ваше замечание о “особенно если сравнивать RF с другими алгоритмами на одном наборе данных” является серьёзным аргументом в пользу использования ручной CV вместо того, чтобы полагаться на предсказания OOB.
Ответ или решение
Моделирование с использованием случайных лесов (Random Forests) не обязательно требует кросс-валидации, однако наличие таких практик, как кросс-валидация, несомненно, может сыграть важную роль в оценке производительности модели. В этой дискуссии есть аргументы как в пользу, так и против необходимости использования кросс-валидации при работе с Random Forests.
Аргументы в пользу использования кросс-валидации:
-
Улучшение оценки производительности: Кросс-валидация (например, K-сfold) обеспечивает более стабильную и точную оценку производительности модели, так как все данные проходят через процесс обучения и тестирования. Это позволяет учесть возможные варианты распределения данных.
-
Сравнение моделей: Если вы планируете сравнить случайные леса с другими алгоритмами, кросс-валидация обеспечивает более объективное и надежное сравнение, поскольку все алгоритмы будут обучаться и тестироваться на одних и тех же подвыборках.
-
Зависимость от данных: Разные наборы данных могут демонстрировать разные уровни сложности и изменчивости. Кросс-валидация позволяет выявить, как модель будет реагировать на различные выборки данных, что может быть очень полезно для понимания её устойчивости.
Аргументы против использования кросс-валидации:
-
OOB оценка: Случайные леса используют метод "выборки с возвратом", что означает, что при построении каждой деревяшки не все данные используются для обучения (примерно 1/3 данных остается для тестирования). Это позволяет вычислить OOB (Out-Of-Bag) ошибку, которая может служить достоверной оценкой производительности модели без необходимости в дополнительной кросс-валидации.
-
Скорость вычислений: Кросс-валидация требует больше вычислительных ресурсов и времени на обучение, особенно для больших наборов данных. Если OOB оценка дает достаточные результаты для конкретного случая, использование кросс-валидации может быть избыточным.
-
Случайная природа: Благодаря случайной выборке и построению множества деревьев, случайные леса, как правило, менее подвержены переобучению по сравнению с другими моделями. Это делает K-кратную кросс-валидацию менее критичной.
Заключение:
Таким образом, необходимость в кросс-валидации при работе с случайными лесами зависит от конкретной ситуации, качества данных и целевых задач. Важно провести эмпирическую проверку обеих методик на вашем наборе данных. Если результаты OOB и кросс-валидации существенно различаются, стоит более глубоко изучить природу данных и рассмотреть возможность более детального анализа с использованием кросс-валидации. В конечном счете, подход с кросс-валидацией может предложить более жесткие гарантии о обобщающей способности вашей модели.