Ensembling и stacking на собеседовании Data Scientist

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.

Зачем разбирать на собесе

Ensembling — в Kaggle / production даёт +1-3% perf. На собесе DS: «как stack правильно», «без leakage».

Voting

Hard voting. Majority class.

Soft voting. Average probabilities, then argmax.

from sklearn.ensemble import VotingClassifier

voter = VotingClassifier([
    ('rf', RandomForestClassifier()),
    ('gb', GradientBoostingClassifier()),
    ('lr', LogisticRegression())
], voting='soft')

Easy, often works. Soft typically better чем hard.

Blending

Simple weighted average.

final_pred = 0.5 * model_1 + 0.3 * model_2 + 0.2 * model_3

Weights tuned на validation.

Pros: simple. Cons: мало flexibility.

Stacking

Train meta-model на predictions base models.

Level 0: RF, GB, NN — каждая делает predictions.
Level 1: meta-model (часто LR / Ridge) on stacked predictions.
from sklearn.ensemble import StackingClassifier

stacking = StackingClassifier(
    estimators=[('rf', rf), ('gb', gb)],
    final_estimator=LogisticRegression(),
    cv=5
)

Pros: часто лучше voting. Meta-model учит когда какая base model better.

Cons: complexity. Hard to debug.

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

OOF predictions

Главный paradigm для stacking без leakage.

Wrong approach. Train base на all train → predict на train для meta. Leakage — base уже видела data.

Correct. Out-of-Fold predictions.

For каждый fold:
  Train base на other folds.
  Predict на this fold (out-of-fold).
Stack OOF predictions для meta training.

cross_val_predict в sklearn.

Leakage и pitfalls

Train base on all → predict for meta. Leakage. Use OOF.

Different splits для base и meta. Inconsistent.

Hyperparameter tuning на OOF predictions multiple times. Indirect leakage.

Не сохранять fold индексы. Невоспроизводимо.

Meta-model overfits. Если мало base models / много params — meta может выучить noise.

Production deployment complex. Need run все base + meta. Latency накапливается.

В Kaggle stacking стандарт. В production — frequently не оправдан (cost > +1% accuracy).

Связанные темы

FAQ

Это официальная информация?

Нет. Статья основана на работах Wolpert 1992 (stacking) и Kaggle community practices.


Тренируйте Data Science — откройте тренажёр с 1500+ вопросами для собесов.