Ensembling и stacking на собеседовании Data Scientist
Карьерник — 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_3Weights 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.
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).
Связанные темы
- Bagging vs Boosting для DS
- Cross-validation на собесе DS
- XGBoost vs LightGBM vs CatBoost для DS
- Bias-variance trade-off для DS
- Подготовка к собесу Data Scientist
FAQ
Это официальная информация?
Нет. Статья основана на работах Wolpert 1992 (stacking) и Kaggle community practices.
Тренируйте Data Science — откройте тренажёр с 1500+ вопросами для собесов.