RandomForestRegressor
RandomForestRegressor — модель регрессии, которая строит много деревьев решений и усредняет их прогнозы.
Идея случайного леса
Заголовок раздела «Идея случайного леса»Одно дерево решений может слишком сильно подстроиться под конкретные обучающие данные. Случайный лес уменьшает эту проблему: он строит много деревьев, а затем объединяет их ответы.
Для регрессии итоговый прогноз — это среднее значение прогнозов отдельных деревьев.
Например:
дерево 1: 12.4дерево 2: 13.1дерево 3: 12.8
итог: примерно 12.8Отличие от DecisionTreeRegressor
Заголовок раздела «Отличие от DecisionTreeRegressor»| Модель | Как работает |
|---|---|
DecisionTreeRegressor | строит одно дерево |
RandomForestRegressor | строит много деревьев и усредняет их прогнозы |
Одно дерево проще объяснить, но оно часто нестабильно. Случайный лес сложнее устроен, зато обычно точнее и устойчивее.
Когда использовать
Заголовок раздела «Когда использовать»RandomForestRegressor полезен, когда зависимость между признаками и ответом нелинейная, а одно дерево даёт слишком грубый прогноз.
Модель хорошо подходит для табличных данных с числовыми признаками: например, для прогноза цены квартиры по площади, числу комнат, этажу и расстоянию до метро.
Пример: цены квартир
Заголовок раздела «Пример: цены квартир»В примере модель предсказывает цену квартиры по числу комнат, площади, площади кухни, этажу, числу этажей в доме и времени до метро.
uses MLABC;
begin var ds := Datasets.MoscowHousing; var df := ds.Data;
var features := [ 'rooms', 'area', 'kitchen_area', 'floor', 'floors_total', 'metro_minutes' ];
var target := 'price';
var (trainDf, testDf) := df.TrainTestSplit(0.2, seed := 42);
var Xtrain := trainDf.ToMatrix(features); var ytrain := trainDf.ToVector(target);
var Xtest := testDf.ToMatrix(features); var ytest := testDf.ToVector(target);
var model := new RandomForestRegressor(seed := 42);
model.Fit(Xtrain, ytrain);
var pred := model.Predict(Xtest);
Println('R²:', Metrics.R2(ytest, pred):0:3);end.Вывод:
R²: 0.896R² = 0.896 означает, что модель объясняет примерно 89.6% разброса цен на тестовой выборке.
Для модели с таким небольшим набором признаков это сильный результат. Но важно помнить: R² — это не процент ошибки. Он показывает, насколько хорошо модель объясняет различия между объектами по сравнению с простым прогнозом средним значением.
Основные параметры
Заголовок раздела «Основные параметры»nTrees— сколько деревьев построить;maxDepth— максимальная глубина каждого дерева;minSamplesLeaf— минимальное число объектов в листе;seed— фиксирует случайность, чтобы результат можно было повторить.
Для первого запуска часто достаточно указать только seed.
Преимущества
Заголовок раздела «Преимущества»- обычно точнее одного дерева;
- устойчивее к случайным особенностям данных;
- не требует масштабирования признаков;
- умеет описывать нелинейные зависимости.
Ограничения
Заголовок раздела «Ограничения»- хуже объясняется, чем одно дерево;
- работает медленнее одного дерева;
- итоговый прогноз нельзя прочитать как одно простое дерево.
Что дальше
Заголовок раздела «Что дальше»Следующая ансамблевая модель — GradientBoostingRegressor. Она тоже строит много деревьев, но делает это последовательно: каждое следующее дерево исправляет ошибки предыдущих.