Sobes.tech
Назад к вопросам
Middle — Senior
11

На каком этапе выбираются случайные признаки в случайном лесу: на каждом разбиении или для всего дерева?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

В случайном лесу случайные признаки выбираются не один раз на всё дерево, а заново на каждом разбиении узла. Это и даёт разнообразие между деревьями, снижая корреляцию и риск переобучения. Обычно говорят, что на каждом сплите модель рассматривает только случайное подмножество признаков.

Определение:

Случайный лес строит много деревьев решений на разных подвыборках данных. При каждом разбиении узла дерево не перебирает все признаки, а проверяет только случайно выбранный набор признаков. Среди них выбирается лучший сплит по целевой метрике.

Пример использования:

Например, в задаче скоринга клиента на каждом узле дерева модель может оценивать не все поля анкеты, а только случайные 5–10 признаков из общего набора. На следующем узле набор признаков будет уже другим.

from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier(
    n_estimators=200,
    max_features="sqrt",  # случайное подмножество признаков на каждом разбиении
    random_state=42
)

Пояснение кода:

Код показывает настройку случайного леса в scikit-learn. Параметр max_features="sqrt" означает, что на каждом разбиении будет рассматриваться случайное подмножество признаков размером примерно как квадратный корень от общего числа признаков. Это не выбор признаков на всё дерево, а именно на каждый узел при поиске лучшего сплита.

Ключевые моменты:

  • Случайные признаки выбираются на каждом разбиении узла, а не один раз для всего дерева.
  • На каждом сплите рассматривается случайное подмножество признаков.
  • Это снижает корреляцию между деревьями и повышает устойчивость ансамбля.
  • Если бы признаки фиксировались на всё дерево, разнообразие деревьев было бы меньше.
  • Обычно вместе со случайными признаками используют и bootstrap-выборку объектов.