В чём суть метода случайных подпространств (Random Subspace Method)?

«В чём суть метода случайных подпространств (Random Subspace Method)?» — вопрос из категории Деревья и ансамбли, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Метод случайных подпространств (Random Subspace Method, RSM) — это ансамблевый метод, направленный на повышение разнообразия базовых моделей за счёт обучения каждой из них на случайно выбранном подмножестве признаков (features) из исходного пространства.

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

Как работает алгоритм:

  1. Для обучения каждого базового классификатора (чаще всего дерева решений) из исходного набора из D признаков случайным образом выбирается подмножество из d признаков (где d < D, обычно d = sqrt(D) или log2(D)).
  2. Модель обучается только на этом подмножестве признаков. Все объекты (строки) используются полностью.
  3. Шаги 1-2 повторяются для N базовых моделей.
  4. При предсказании для нового объекта каждая модель делает прогноз на основе своего набора признаков, а итоговый прогноз ансамбля получается путём агрегации (голосования для классификации, усреднения для регрессии).

Преимущества метода:

  • Снижает переобучение: Разные модели фокусируются на разных аспектах данных, что уменьшает дисперсию ансамбля.
  • Повышает устойчивость к шуму в признаках.
  • Эффективен для данных с большим количеством признаков (high-dimensional data), где многие признаки могут быть избыточными или слабо информативными.
  • Ускоряет обучение каждой отдельной модели, так как она работает с меньшей размерностью.

Связь с Random Forest: Random Forest комбинирует две идеи: бутстрэп агрегирование (bagging), которое создаёт разнообразие за счёт разных подвыборок объектов, и метод случайных подпространств, создающий разнообразие за счёт разных подвыборок признаков. В Random Forest для каждого дерева обычно используется max_features = sqrt(n_features).

Пример реализации с помощью Scikit-learn:

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

# Генерация синтетических данных
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Создание модели Random Forest, которая использует принцип случайных подпространств
# Параметр max_features='sqrt' означает, что для каждого дерева будет выбрано sqrt(20) ~ 4 случайных признака
model = RandomForestClassifier(
    n_estimators=100,
    max_features='sqrt',  # Ключевой параметр, реализующий RSM
    random_state=42,
    n_jobs=-1
)
model.fit(X_train, y_train)

print(f"Точность на тесте: {model.score(X_test, y_test):.3f}")
print(f"Пример размера подпространства для одного дерева: {model.estimators_[0].n_features_in_}")

На практике метод случайных подпространств редко используется в чистом виде, но является ключевым компонентом успешных ансамблевых алгоритмов, таких как Random Forest и ExtraTrees.