Какие значения могут принимать предсказания в случае бустинга?

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

Ответ

В задачах регрессии предсказания бустинга (например, Gradient Boosting, XGBoost, LightGBM) — это вещественные числа (ℝ), так как результат представляет собой взвешенную сумму предсказаний базовых моделей (обычно деревьев решений).

В задачах классификации значения зависят от реализации и функции потерь:

  • Бинарная классификация: Модель обычно предсказывает логарифм шансов (log-odds). Чтобы получить вероятность класса, это значение пропускается через сигмоидальную функцию.
  • Мультиклассовая классификация: Для K классов модель предсказывает K значений (логитов), которые затем преобразуются в вероятности с помощью функции softmax.

Пример с XGBoost:

import xgboost as xgb
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=1000, n_features=20)
model = xgb.XGBClassifier(objective='binary:logistic')
model.fit(X, y)

# Получить "сырые" предсказания (логарифмы шансов) до преобразования в вероятность
raw_predictions = model.predict(X, output_margin=True)
print(f"Диапазон сырых предсказаний: от {raw_predictions.min():.2f} до {raw_predictions.max():.2f}")
# Вывод: Диапазон сырых предсказаний: от -X.XX до X.XX (ℝ)

# Получить вероятности
probabilities = model.predict_proba(X)[:, 1]
print(f"Диапазон вероятностей: от {probabilities.min():.2f} до {probabilities.max():.2f}")
# Вывод: Диапазон вероятностей: от 0.00 до 1.00