0.2.2 · блок 0
Базовый ML baseline
Базовый ML baseline
Зачем это нужно
MLOps не исправляет неясную ML-задачу. До контейнера и Kubernetes нужен честный baseline: измеримый, воспроизводимый и достаточно простой, чтобы изменения можно было сравнивать с ним.
Основные идеи
Train / validation / test. На train модель учится, на validation выбирают признаки и настройки, test оставляют нетронутым до финальной оценки. Использовать test много раз для выбора модели — значит незаметно обучаться на test.
Leakage — признак содержит информацию, которой не будет в момент prediction: итоговый статус заказа, будущую дату, target в другом поле. Leakage даёт красивую offline-метрику и плохой prod.
Метрика следует бизнес-риску.
| Задача | Возможная метрика |
|---|---|
| редкий fraud | PR-AUC, recall при заданном precision |
| churn | ROC-AUC, recall/precision, calibration |
| регрессия спроса | MAE, RMSE |
Воспроизводимость. Зафиксируйте dataset snapshot, split, random_state, код, зависимости и метрики. Baseline — артефакт, а не цифра в чате.
Простая модель — сильная отправная точка. Для табличной классификации начните с DummyClassifier и логистической регрессии. Более сложная модель должна выигрывать у baseline на validation и оправдывать цену эксплуатации.
Как это выглядит на практике
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, stratify=y, random_state=42
)
model = LogisticRegression(max_iter=1_000, random_state=42)
model.fit(X_train, y_train)
В metrics.json сохраните метрику, размер выборок и commit SHA. Не загружайте .pkl или joblib из неизвестного источника: эти форматы могут выполнить произвольный код при загрузке.
Что сделать после занятия
- [ ] Сформулируйте target, момент prediction и одну метрику для учебной задачи.
- [ ] Создайте фиксированный train/validation/test split.
- [ ] Обучите простую baseline-модель и сохраните метрику вместе с версией данных.