Случайный лес
Материал из MachineLearning.
| | Статья написана с использованием LLM DeepSeek V3 и проверена участником Artyom Savov 14:42, 28 июня 2026 (MSD) |
Случа́йный лес (англ. Random Forest) — ансамблевый метод машинного обучения, объединяющий множество решающих деревьев, каждое из которых обучается на случайной подвыборке данных и случайном подмножестве признаков. Предложен Лео Брейманом в 2001 году как развитие идей бэггинга (bagging) и метода случайных подпространств. Относится к классу обучения с учителем и способен решать задачи классификации, регрессии, кластеризации, обнаружения аномалий и анализа выживаемости. Благодаря высокой точности, устойчивости к переобучению и шумам, а также встроенным механизмам оценки важности переменных, случайный лес стал одним из наиболее широко применяемых алгоритмов в индустрии и науке.
История создания
Идейные корни случайного леса прослеживаются в трёх ключевых линиях исследований.
- Бэггинг (англ. bootstrap aggregating), предложенный Л. Брейманом в 1996 году[1]: ансамбль моделей, каждая из которых обучается на бутстрэп-выборке, а их предсказания усредняются (регрессия) или принимаются голосованием (классификация).
- Метод случайных подпространств (англ. random subspace method), разработанный Тин Кам Хо в 1995–1998 гг.[1]: каждое дерево строится в случайно выбранном подпространстве признаков, что декоррелирует деревья и повышает обобщающую способность.
- Алгоритм CART (англ. Classification and Regression Trees) и последующие работы по выращиванию глубоких, необрезанных деревьев.
Синтез этих подходов был выполнен Лео Брейманом в работе "Random Forests" (2001)[1], где были формализованы алгоритм построения ансамбля, метод out-of-bag для оценки ошибки и меры важности переменных. В отечественной науке параллельно развивалась теория композиций алгоритмов и алгебраический подход к синтезу корректных алгоритмов (Ю. И. Журавлёв, 1970‑е гг.), в основе которого лежит идея построения ансамбля простых эвристических алгоритмов, обеспечивающего корректное решение задачи за счёт алгебраического замыкания исходного множества моделей. Этот подход заложил фундамент для последующих ансамблевых методов, включая случайный лес. С тех пор метод непрерывно развивается: созданы версии для несбалансированных классов, потоковых данных, задач вывода причинно-следственных связей.
Основная идея и алгоритм
Случайный лес строит ансамбль из решающих деревьев, каждое из которых обучается на своей бутстрэп-выборке, извлечённой из исходной обучающей выборки размера
. В процессе построения каждого узла дерева расщепление ищется не по всем
признакам, а лишь по случайно выбранному подмножеству из
кандидатов (обычно
для классификации и
для регрессии). Деревья выращиваются до максимальной глубины и не подвергаются прунингу, что делает их слабо смещёнными, но сильно зашумлёнными моделями; усреднение по ансамблю резко снижает дисперсию итогового предсказания.
- Извлечь бутстрэп-выборку
размера
из исходных данных
(с возвращением).
- На выборке
построить бинарное решающее дерево
, рекурсивно повторяя для каждой терминальной вершины:
- Выбрать случайное подмножество из
признаков.
- Среди них найти признак и порог, доставляющие наилучшее разбиение согласно выбранному критерию (Gini impurity для классификации или MSE для регрессии).
- Разбить вершину на две дочерние.
- Остановиться, когда в вершине останется менее
объектов (по умолчанию
для классификации, 5 для регрессии).
- Выбрать случайное подмножество из
- Повторить шаги 1–2 для
.
- Итоговое предсказание:
- Классификация — большинством голосов деревьев (или по средней вероятности класса).
- Регрессия — арифметическим средним предсказаний всех деревьев.
Out-of-bag оценка
При бутстрэпе каждое дерево использует примерно 63% объектов, оставляя ~37% "вне мешка" (англ. out-of-bag, OOB). OOB-объекты не участвуют в обучении дерева и служат естественной тестовой выборкой. Усреднив ошибку предсказаний на OOB-объектах по всем деревьям, получают несмещённую оценку обобщающей способности без необходимости в отдельной кросс-валидации[1]. На практике OOB-ошибка часто хорошо коррелирует с ошибкой на отложенной выборке, что позволяет эффективно настраивать гиперпараметры.
Математический фундамент: разложение смещения и дисперсии
Эффективность случайного леса объясняется с позиций bias-variance tradeoff. Глубокое, нерегуляризованное дерево имеет низкое смещение, но высокую дисперсию. Усреднение некоррелированных деревьев уменьшает дисперсию ансамбля в
раз. Поскольку бутстрэп-выборки перекрываются, деревья остаются коррелированными. Введение случайности в процесс выбора признаков дополнительно декоррелирует их и позволяет достичь более значительного снижения дисперсии при практически неизменном смещении[1]. Таким образом, случайный лес занимает одно из наиболее выгодных положений в спектре моделей.
Гиперпараметры и их настройка
Случайный лес имеет небольшой набор интерпретируемых гиперпараметров, что выгодно отличает его от многих глубоких архитектур.
-
(n_estimators) — число деревьев. Увеличение числа деревьев монотонно снижает дисперсию, не вызывая переобучения, но повышает вычислительные затраты. Обычно выбирают 100–1000; ошибка стабилизируется задолго до исчерпания вычислительного бюджета.
-
(max_features) — число случайно отбираемых признаков для каждого расщепления. Основной параметр, управляющий компромиссом смещения и дисперсии. Рекомендации по умолчанию:
для классификации,
для регрессии. Увеличение
делает деревья более похожими, повышая дисперсию ансамбля, но может снижать смещение.
- min_samples_leaf (или nodesize) — минимальный размер листа. Регуляризатор, препятствующий построению чрезмерно глубоких деревьев, зашумляющих ансамбль. Для классификации часто используют 1–5, для регрессии — 5–20.
- max_depth — максимальная глубина дерева. В оригинальной версии Бреймана не используется, но в реализациях (Scikit-learn) позволяет дополнительно контролировать сложность.
- bootstrap — флаг использования бутстрэпа. Если отключить, все деревья будут обучаться на всей выборке, а случайность останется только за счёт подвыборки признаков (приближаясь к Extra-Trees). Обычно оставляют True.
- Размер бутстрэп-подвыборки (max_samples). Иногда уменьшают долю выборки для каждого дерева, что ускоряет обучение и может улучшить обобщение при работе с очень большими данными.
Оптимизацию гиперпараметров обычно проводят с помощью Grid Search с OOB-оценкой или байесовской оптимизации. Благодаря OOB модель может быть оценена без разделения на тренировочную и валидационную выборки, что ускоряет подбор.
Оценка важности признаков
Одно из главных достоинств случайного леса — встроенные непараметрические меры значимости переменных, широко используемые для отбора признаков и интерпретации.
Mean Decrease in Impurity (MDI)
В процессе построения каждого дерева для каждого узла вычисляется, насколько выбранное разбиение уменьшило критерий неоднородности (примесь Джини или энтропию для классификации; среднеквадратичную ошибку для регрессии). Это уменьшение, взвешенное на число обучающих примеров в узле, суммируется по всем узлам, где использовался данный признак, и усредняется по всем деревьям. Метрика быстро вычисляется, но склонна завышать важность признаков с большим количеством уникальных значений (смещение отбора)[1].
Permutation Importance (Mean Decrease in Accuracy)
На OOB-выборке каждого дерева измеряется точность предсказания. Затем значения -го признака случайным образом перемешиваются, нарушая связь с целевой переменной, и снова оценивается точность. Падение точности, усреднённое по деревьям, служит мерой важности. Этот подход менее подвержен смещению отбора, но требует дополнительных вычислений[1]. В реализации через библиотеку Scikit-learn используется как `permutation_importance`.
Проблемы и усовершенствования
MDI-важность отдаёт предпочтение непрерывным признакам и признакам с большим числом категорий. Для устранения этого эффекта разработаны условные леса (англ. Conditional Inference Forests)[1], использующие статистические тесты для отбора расщеплений, и метод корректировки на основе суррогатных разбиений. В последние годы всё чаще применяют SHAP (SHapley Additive exPlanations) значения[1], дающие аддитивное и теоретически обоснованное представление о вкладе каждого признака в индивидуальное предсказание.
Интерпретация модели
Хотя ансамбль из сотен деревьев является "чёрным ящиком" по сравнению с одиночным деревом, разработаны мощные инструменты визуализации и объяснения.
- Частичная зависимость (англ. Partial Dependence Plot, PDP) показывает усреднённое маржинальное влияние одного или двух признаков на предсказание, интегрируя по остальным переменным[1].
- Индивидуальные условные ожидания (англ. Individual Conditional Expectation, ICE) — семейство кривых, аналогичных PDP, но для каждого объекта отдельно, что выявляет гетерогенность влияния.
- SHAP-значения обеспечивают согласованное распределение вклада признаков для любого прогноза случайного леса, связывая игру коалиций теории игр и локальную интерпретацию[1]. Библиотека `shap` предоставляет эффективную реализацию для ансамблей деревьев — Tree SHAP.
Варианты и расширения
Модель случайного леса породила множество специализированных модификаций.
- Extremely Randomized Trees (Extra-Trees) — дополнительно вносят случайность в выбор порога: для каждого признака-кандидата порог выбирается случайно, а не оптимальным образом. Это ускоряет обучение и часто улучшает обобщение при сильной зашумлённости данных[1].
- Conditional Inference Forests (cForest) — используют проверку гипотез независимости для выбора расщепления, избегая смещения в сторону признаков с многими значениями и создавая деревья, не требующие прунинга[1].
- Isolation Forest — применяет ансамбль предельно мелких деревьев, обученных на подвыборках без целевой переменной, для эффективного обнаружения аномалий. Изоляция аномальных точек требует в среднем меньшего числа расщеплений[1].
- Random Survival Forest — адаптирует случайный лес к цензурированным данным анализа выживаемости, используя критерии расщепления на основе лог-рангового теста и оценку функции накопленного риска в листьях[1].
- Generalized Random Forest (GRF) — обобщает идею леса на задачи оценки гетерогенных причинных эффектов, инструментальных переменных и квантильной регрессии. Каждое дерево решает локальную систему оценивающих уравнений, а ансамбль агрегирует взвешенные решения[1].
- Честные леса (англ. Honest Forests) — разделяют выборку на две части: одна используется для построения структуры дерева, другая — для расчёта значений в листьях. Это позволяет строить асимптотически нормальные оценки и доверительные интервалы для предсказаний[1].
- Кластеризация на основе случайного леса — через матрицу близости (англ. proximity matrix), определяющую, как часто два объекта попадают в один терминальный узел. Матрица используется как мера сходства для кластерного анализа и многомерного шкалирования[1].
Преимущества и недостатки
Преимущества
На практике Random Forest заслуженно считается эталонным baseline-алгоритмом для широкого круга задач: он работает "из коробки", демонстрируя высокую точность без тонкой настройки гиперпараметров, и устойчив к переобучению даже при глубоких деревьях. К основным достоинствам также относятся:
- Высокая предсказательная точность, сравнимая с градиентным бустингом, при существенно меньших усилиях по настройке.
- Естественная устойчивость к выбросам и шумам в признаках.
- Встроенная оценка обобщающей способности (OOB) без кросс-валидации.
- Непараметрическая природа: не требует предположений о распределении данных, допускает нелинейные зависимости и взаимодействия.
- Масштабируемость: деревья строятся независимо, что позволяет легко распараллелить вычисления на многоядерных процессорах и кластерах.
- Встроенные меры важности признаков, упрощающие отбор переменных.
- Хорошая работа с пропущенными данными через суррогатные расщепления или импутацию с помощью самого леса (missForest).
Недостатки
- Интерпретация отдельного предсказания сложнее, чем у линейных моделей или одиночного решающего дерева (требуются SHAP / LIME).
- Склонность к смещению оценок важности для признаков с большим числом категорий или уникальных значений; требуется коррекция.
- Большое количество деревьев (500–1000) приводит к значительным размерам модели, что может быть критично для встраиваемых систем, хотя существуют методы сжатия.
- На несбалансированных выборках может смещать предсказания в сторону доминирующего класса. Решается взвешиванием классов или сбалансированной бутстрэп-выборкой.
- Производительность снижается на данных сверхвысокой размерности (миллионы признаков), где случайный выбор подпространств может оказаться неэффективным.
Программные реализации
Случайный лес реализован во всех популярных экосистемах анализа данных.
- Python: `sklearn.ensemble.RandomForestClassifier` и `RandomForestRegressor` в Scikit-learn — классическая реализация; `xgboost` и `lightgbm` включают режим случайного леса (`boosting_type='rf'`); `imbalanced-learn` предлагает сбалансированные варианты.
- R: пакет `randomForest` (оригинальная реализация Бреймана и Катлера), `ranger` — быстрая альтернатива на C++ с поддержкой многопоточности и вероятностных лесов, `party` для conditional inference forests.
- Распределённые вычисления: MLlib в Apache Spark содержит `RandomForestClassifier` и `RandomForestRegressor`, способные обрабатывать петабайтные наборы.
- Другие: `H2O.ai` (распределённая in-memory платформа), `TensorFlow Decision Forests` (интеграция с TensorFlow).
Применения
Случайный лес — один из универсальных "рабочих инструментов" науки о данных. Примеры областей:
- Биоинформатика — классификация генов, предсказание структуры белков, анализ экспрессии.
- Финансы — оценка кредитного скоринга, выявление мошеннических транзакций, прогнозирование оттока клиентов.
- Медицина — диагностика заболеваний по медицинским изображениям и биомаркерам, прогноз выживаемости.
- Экология и дистанционное зондирование — классификация типов землепользования по спутниковым снимкам, моделирование распределения видов.
- Промышленность — предиктивное обслуживание оборудования, детекция аномалий в сенсорных потоках.
- Социальные науки — оценка гетерогенных эффектов образовательных и социальных программ с помощью GRF.
Современные исследования и открытые вопросы
Интерес к случайному лесу не ослабевает. Актуальные направления включают:
- Статистические свойства: доказательство асимптотической нормальности предсказаний честных лесов, построение строгих доверительных интервалов без предположения о независимости деревьев[1].
- Объяснимый искусственный интеллект: совершенствование локальных и глобальных методов объяснения на базе Tree SHAP, визуализация взаимодействий.
- Динамические и потоковые данные: разработка онлайн-версий случайного леса, способных к инкрементному дообучению без хранения всей истории.
- Глубокие леса (англ. Deep Forest) — попытка построить глубокие иерархические композиции из ансамблей деревьев как альтернативу глубоким нейронным сетям, не требующую обратного распространения ошибки.
- Сжатие и дистилляция: методы уменьшения числа деревьев в ансамбле без существенной потери точности (ансамблевый прунинг).
- Борьба со смещением важности: создание робастных мер значимости, инвариантных к типу и распределению признаков.
См. также
- Градиентный бустинг
- Бэггинг
- Решающее дерево
- Метод случайных подпространств
- Ансамблевый метод
- SHAP
- XGBoost
- Обнаружение аномалий
- Причинно-следственный вывод
Примечания
Литература
- Breiman, L. (1996). Bagging predictors. Machine Learning, 24(2), 123–140.
- Ho, T. K. (1998). The Random Subspace Method for Constructing Decision Forests. IEEE Transactions on Pattern Analysis and Machine Intelligence, 20(8), 832–844.
- Breiman, L. (2001). Random Forests. Machine Learning, 45(1), 5–32.
- Geurts, P., Ernst, D., Wehenkel, L. (2006). Extremely randomized trees. Machine Learning, 63(1), 3–42.
- Hothorn, T., Hornik, K., Zeileis, A. (2006). Unbiased Recursive Partitioning: A Conditional Inference Framework. Journal of Computational and Graphical Statistics, 15(3), 651–674.
- Ishwaran, H., Kogalur, U. B., Blackstone, E. H., Lauer, M. S. (2008). Random survival forests. Annals of Applied Statistics, 2(3), 841–860.
- Liu, F. T., Ting, K. M., Zhou, Z.-H. (2008). Isolation Forest. Proceedings of the 8th IEEE International Conference on Data Mining (ICDM), 413–422.
- Hastie, T., Tibshirani, R., Friedman, J. (2009). The Elements of Statistical Learning: Data Mining, Inference, and Prediction (2nd ed.). Springer.
- Louppe, G., Wehenkel, L., Sutera, A., Geurts, P. (2013). Understanding variable importances in forests of randomized trees. Advances in Neural Information Processing Systems (NIPS), 26, 431–439.
- Lundberg, S. M., Lee, S.-I. (2017). A Unified Approach to Interpreting Model Predictions. Advances in Neural Information Processing Systems (NIPS), 30, 4765–4774.
- Wager, S., Athey, S. (2018). Estimation and Inference of Heterogeneous Treatment Effects using Random Forests. Journal of the American Statistical Association, 113(523), 1228–1242.
- Athey, S., Tibshirani, J., Wager, S. (2019). Generalized Random Forests. Annals of Statistics, 47(2), 1148–1178.

