Ответ
В контексте алгоритмов бустинга (Gradient Boosting, XGBoost, LightGBM, CatBoost) обучающая выборка (train sample) — это набор данных (X_train, y_train), на котором модель последовательно обучает ансамбль слабых моделей (обычно неглубоких деревьев решений). Ключевая особенность бустинга — итеративное исправление ошибок: каждая следующая модель в ансамбле фокусируется на объектах, которые были плохо предсказаны предыдущими моделями.
Как это работает на практике:
- Первая модель обучается на исходной выборке.
- Вычисляются ошибки (остатки) ее предсказаний.
- Следующая модель обучается не на исходных метках
y, а на этих остатках, пытаясь их предсказать. - Процесс повторяется много раз, а итоговый прогноз — взвешенная сумма прогнозов всех моделей.
Критические аспекты подготовки train-выборки для бустинга:
- Качество данных: Бустинг чувствителен к выбросам и шуму, так как будет пытаться их «исправить» на последующих итерациях, что ведет к переобучению. Важна предварительная очистка.
- Разделение на train/valid/test: Для настройки гиперпараметров (количество деревьев, скорость обучения) и контроля переобучения необходимо валидационное множество.
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingClassifier
# Загрузка данных
data = pd.read_csv('data.csv')
X = data.drop('target', axis=1)
Y = data['target']
# Стратифицированное разделение на train и test
X_train, X_test, y_train, y_test = train_test_split(
X, Y,
test_size=0.2,
random_state=42,
stratify=Y # Сохраняет распределение классов в выборках
)
# Дальнейшее разделение train на train и validation для подбора параметров
X_train_fit, X_val, y_train_fit, y_val = train_test_split(
X_train, y_train,
test_size=0.25, # 20% от исходных данных -> validation set
random_state=42,
stratify=y_train
)
# Обучение модели с ранней остановкой по validation set
model = GradientBoostingClassifier(n_estimators=1000, learning_rate=0.05, random_state=42)
model.fit(
X_train_fit, y_train_fit,
eval_set=[(X_val, y_val)], # Модель будет оценивать качество на валидации
early_stopping_rounds=50, # Остановит обучение, если 50 итераций нет улучшения
verbose=10
)
# Фактическое число построенных деревьев будет <= 1000
Таким образом, train-выборка в бустинге — это не просто пассивные данные для обучения, а основа для итеративного процесса коррекции ошибок, требующая особого внимания к чистоте и правильному разделению.