Дрейф моделей и обновление данных
1) Зачем это важно
В iGaming распределения трафика, платежей и игрового поведения быстро меняются (сезонность, провайдеры, акции, регуляторные правила). Без системного контроля дрейфа растет expected cost ошибок: потери в Net Revenue, ложные RG/AML-интервенции, рост абьюза бонусов. Цель — рано обнаруживать дрейф, диагностировать причину, безопасно обновлять данные и модели.
2) Таксономия дрейфа (что может «поплыть»)
Covariate drift (X): изменились фичи (например, доля мобильного/ASN, микс провайдеров).
Label/Outcome drift (Y): изменилась база событий (chargeback-rate, click/convert-rate).
3) Сигналы и пороги (ориентиры)
PSI (Population Stability Index): 0.10–0.20 предупреждение, >0.20 — событие дрейфа.
KL-дивергенция / JS: рост к порогам по ключевым фичам/скору.
KS для скоров (при лейблах): рост расхождения CDF.
ECE (калибровка): >0.05 предупреждение, >0.07 — действие.
Expected-cost@threshold: рост на X% к базовой модели.
Coverage и Missing-rate: падение покрытия <99%, рост missing/timeout > порога.
Slice-метрики: PR-AUC/ECE/expected-cost по рынкам/девайсам; триггеры на падение >Y%.
Выбор окна: оперативно — 1ч/6ч/24ч (скользящее), отчетно — D+1/D+7 (учет задержанных лейблов).
4) Окна и лейблы (задержки)
Быстрые прокси-лейблы: клик, депозит 7д, завершенный RG-кейc — для ранней оценки.
Задержанные лейблы: chargeback (45–90д), churn/LTV — для ретроспективной валидации и корректировки порогов/калибровки.
As-of дисциплина: ни в фичах, ни в лейблах — «событий из будущего».
5) Диагностика первопричин (RCA чек-лист)
1. Данные: PSI/KL по топ-фичам, missing/lag, schema diffs, новые категории.
2. Источник: алерты поставщиков (PSP/провайдер игр), ошибки API/timeout.
3. Сезонность/акции: пик миссий/турниров, изменения RTP/каталога.
4. Регион/резидентность: сдвиг трафика по рынкам, новые правила KYC/RG.
5. Техника: деградация фича-кэша, медленный CDC, small files шторм.
6. Справочники/курсы валют/календари: устарели? (FX/праздники).
7. Справедливость: провал качества в конкретных слайсах.
6) Playbook действий при дрейфе
6.1 Covariate/Feature drift
Быстро: обновить калибровку (Platt/Isotonic D+1), подстроить порог по expected-cost.
Среднесрочно: частичный refeature (устойчивые агрегаты/окна), обновить TE/WOE с time-aware CV.
Долгосрочно: retrain с новыми выборками/окнами, при необходимости пересмотреть архитектуру фич.
6.2 Label/Outcome drift
Пересчитать пороги по свежим лейблам (D+1, D+7), пере-калибровать.
Зафиксировать guardrails (ограничить агрессивные действия до стабилизации).
6.3 Concept drift
Shadow-обучение новой версии на последних данных → canary → полный rollout.
Рассмотреть доменную декомпозицию (отдельные модели по сегментам/рынкам).
6.4 Schema/Operational drift
Включить двойную запись v1/v2 схем, тест эквивалентности online/offline.
Починить источники, включить кэш/фолбэки, компенсировать пропуски backfill.
6.5 Fairness drift
Временные слайс-пороги/калибровка, targeted retrain / ребаланс фич, аудит прокси-переменных.
6.6 Эскалации
Kill-switch (guardrails breach) → безопасный fallback/предыдущая версия.
Rollback one-click при росте 5xx/latency/expected-cost.
7) Политика обновления данных
7.1 Инкременты и CDC
Стабильные watermarks/лог-репликация; идемпотентные MERGE/UPSERT.
7.2 Backfill/Reprocessing
Backfill: догон за диапазон (с квотами и окнами).
Reprocessing: перерасчет при изменении логики/исправлении ошибок.
Метки: `logic_version`, `reprocessed_at`, `reason`; отчет о влиянии (метрики/стоимость).
7.3 Time-travel/WORM
ACID-таблицы (Delta/Iceberg/Hudi), WORM-архивы отчетов/релизов.
«Как было на дату»: воспроизводимость регуляторной отчетности.
7.4 Справочники/FX/Календари
Авто-обновления, подпись, версии и проверка свежести (SLO на latency и age).
8) Метрики и алерты (минимальный набор)
Данные: PSI/KL по топ-фичам, missing-rate, feature-fetch latency.
Качество: PR-AUC/KS (на прокси-лейблах), ECE, expected-cost@thr.
Операции: p95/p99 latency, 5xx, coverage, autoscaling, cost/request.
Fairness: слайс-панели (рынки/устройства/провайдеры).
Контракты: schema-violations, online/offline equivalence test.
9) Процедуры обновления модели
1. Shadow: новая модель на копиях запросов, сравнение latency/quality/cost.
2. Canary: 5–10% → 25% → 50% → 100% при зеленых SLO.
3. Порог/калибровка: рассчитываем на D+1; пороги — конфиг в реестре.
4. Документация: карточка модели (данные, окна, метрики, риски, fairness).
5. Архив: WORM релиза (веса, калибровка, журналы тестов, отчеты дрейфа).
10) Примеры (фрагменты)
10.1 PSI в SQL-идеях (бининг заранее подготовлен)
sql
-- ref_dist(bin, p_ref), prod_dist(bin, p_prod) для фичи amount_base
SELECT SUM((p_prod - p_ref) LN((p_prod + 1e-9)/(p_ref + 1e-9))) AS psi
FROM (
SELECT bin, COUNT()/SUM(COUNT()) OVER() AS p_prod
FROM prod_binned GROUP BY bin
) p
JOIN (
SELECT bin, COUNT()/SUM(COUNT()) OVER() AS p_ref
FROM ref_binned GROUP BY bin
) r USING (bin);
10.2 Корректировка порога по expected-cost (псевдокод)
python thr_grid = np. linspace(0. 01, 0. 99, 99)
costs = [expected_cost(y_true, y_prob >= t, c_fp, c_fn) for t in thr_grid]
thr_best = thr_grid[int(np. argmin(costs))]
10.3 Эквивалентность online/offline фич
python diff = np. abs(f_online. values - f_offline. values)
assert np. quantile(diff, 0. 95) < MAX_ABS_DIFF_95
10.4 Backfill с ограничением нагрузки (идея оркестрации)
yaml job: backfill_gold_ggr limits: {concurrency: 1, max_partitions_per_run: 4}
guards:
- window: "02:00-06:00"
- markets: ["EEA","UK"]
- budget: "compute_hours<=50"
11) Тесты и контроль изменений
Контракты схем/фич: consumer-driven tests, двойная запись v1/v2.
Регрессионные тесты метрик: не ухудшать PR-AUC/ECE/expected-cost за рамки допуска.
Тесты эквивалентности online/offline: на эталонной выборке.
Chaos-тесты: отказ фича-кэша, таймауты источников, burst-трафик.
12) Fairness и комплаенс
Slice-отчеты (disparate impact, equalized odds), слайс-пороги/калибровка.
PII-минимизация, резидентность (EEA/UK/BR), DSAR/RTBF, Legal Hold.
Аудит решений: `policy_id`, `threshold`, причины интервенций, WORM-логи.
13) Стоимость и производительность
Cost dashboards: cost/request, cost/feature, state-size стрима, IO/scan/GB для batch.
Оптимизация: материализация тяжелых фич офлайн, кэш горячих окон, INT8/FP16 при равном качестве.
Квоты: лимиты на backfill/реплеи, бюджет на retrain по рынкам/командам.
14) RACI
R (Responsible): MLOps (мониторинг/реестр/выкаты), Data Eng (данные/CDC/backfill/контракты), Data Science (диагностика/калибровка/retrain/fairness).
A (Accountable): Head of Data / CDO.
C (Consulted): Compliance/DPO (PII/RG/AML/DSAR), Security (KMS/аудит), SRE (SLO/стоимость), Finance (бюджеты/ROI).
I (Informed): Продукт/Маркетинг/Операции/Поддержка.
15) Дорожная карта
MVP (2–4 недели):1. PSI/KL по топ-фичам и score, ECE, expected-cost на прокси-лейблах.
2. Дашборды coverage/missing/feature-lag, алерты и runbook’и.
3. Процедуры recalibration (D+1) и порогов; shadow-путь для новых моделей.
4. Контракты схем/фич и тест эквивалентности online/offline.
Фаза 2 (4–8 недель):- RCA-панель, slice/fairness-мониторинг, backfill-план с квотами.
- Авто-перекат калибровки/порогов, симулятор порогов (what-if).
- Архив WORM отчетов дрейфа и релизов.
- Авто-retrain по событиям дрейфа (канареечно), мульти-региональная политика.
- Cost-квоты/chargeback, chaos-/DR-учения, автоген документации.
16) Чек-лист перед продом
- SLI/SLO и алерты настроены (PSI/ECE/expected-cost/coverage/latency/5xx).
- Контракты схем/фич и двойная запись v1/v2 — зеленые.
- Процедуры recalibration/threshold-update документированы и автоматизированы.
- Shadow/canary с one-click rollback проверены.
- Backfill/reprocessing с квотами и окнами — готовы; WORM-архив включен.
- Slice/fairness-панели и владельцы сегментов назначены.
- Политики PII/DSAR/RTBF/Legal Hold соблюдены; аудит включен.
- Стоимость под контролем (cost/request, cost/feature), кэш/TTL настроены.
17) Анти-паттерны и риски
Увидели высокий PSI — сразу retrain «вслепую», без RCA и калибровки.
Нет учета задержанных лейблов → ложные выводы, «пиление порогов» каждый день.
Отсутствие теста эквивалентности online/offline → «двойная реальность».
Игнор fairness: провалы в рынках/устройствах остаются невидимыми.
Backfill без квот/окон → удар по стоимостям и SLA.
Порог фиксирован «навсегда» → рост expected-cost при сезонности.
18) Итог
Управление дрейфом — это не одноразовый retrain, а процесс: наблюдаемость → диагностика → минимально-рисковое действие (калибровка/порог) → безопасный retrain/рефичеринг → контроль стоимости и аудита. С такой дисциплиной модели остаются точными, этичными и комплаентными, даже когда поведение игроков, провайдеров и рынок меняются.