Feature Engineering және белгілерді іріктеу
1) Мақсаты және қағидаттары
Мақсаты: офлайн және онлайн арасында келісілген орнықты, түсіндірілетін және үнемді белгілерді құрастыру.
Принциптері:- Point-in-time: фичтер шешу сәтінде қол жетімді деректерден келешексіз есептеледі (anti-leakage).
- Domain-first: фичтер бизнес-механиктерді (депозиттер, сессиялар, ойындар жанрлары, RG/AML) көрсетеді.
- Reuse & Contracts: фичи - Feature Store-дағы нұсқалар, иелері, формулалар және SLO.
- Cost-aware: latency және есептеу/сақтау құнын есептейміз → тек өзін-өзі ақтайтын материалданамыз.
- Observability: мониторинг дрейф/тұрақтылық/калибрлеу; online/offline баламалық тест.
2) iGaming үшін белгілердің таксономиясы
RFM/мінез-құлық: терезелер бойынша recency/frequency/monetary (10м/1ч/1д/7д/30д).
Сессиялық: ұзақтығы, үзілістері, құрылғыларды ауыстыру/ASN, әрекет жылдамдығы.
Қаржылық: депозиттер/қорытындылар/чарджбектер, төлем әдістерінің үлестері, FX-қалыпқа келтіру.
Ойын: жанрлық профильдер, провайдерлердің құбылмалылығы, RTP-кластерлер, win-streak.
Маркетингтік: арналар/UTM, науқанға жауап, saturation/cooldown.
RG/AML: лимиттер, өздігінен алып тастау жалаулары, velocity-паттерндер, BIN/IP қайта пайдалану.
Гео/уақыт: жергілікті күнтізбелер/мерекелер, белдеулер сағаты, кешкі/түнгі.
Графалық: user-card-device-ip байланыстары, орталықтығы/компоненттері, фрод «сақиналары».
NLP/мәтіндер: тақырыптар және тикеттер/чаттардың үндестігі; негізгі шағымдар.
Операциялық: провайдерлердің артта қалуы/қателіктері, сессиялардың тұрақтылығы (SRE-модельдер үшін).
3) Терезелер мен агрегаттар (point-in-time)
Типтік терезелер: 10м/1с/24с/7д/30д. Әрбір терезе үшін - count/sum/mean/std/last/max/min, ratio және rate.
SQL-шаблон (30д депозиттер, болашағы жоқ):sql
SELECT u.user_pseudo_id, t.asof,
SUM(CASE WHEN e.type='deposit'
AND e.event_time>=t.asof - INTERVAL '30' DAY
AND e.event_time< t.asof THEN e.amount_base ELSE 0 END) AS dep_30d,
COUNT(CASE WHEN e.type='bet'
AND e.event_time>=t.asof - INTERVAL '7' DAY
AND e.event_time< t.asof THEN 1 END) AS bets_7d
FROM silver.fact_events e
JOIN (SELECT user_pseudo_id, DATE(event_time) AS asof
FROM silver.fact_events GROUP BY 1,2) t USING(user_pseudo_id)
JOIN dim.users_scd u ON u.user_pseudo_id=t.user_pseudo_id
AND t.asof >= u.valid_from AND (u.valid_to IS NULL OR t.asof < u.valid_to)
GROUP BY 1,2;
4) Санаттық кодтау
One-Hot/Hashing: сирек/жоғары-түбегейлі санаттар үшін (ойындар, провайдерлер).
Target Encoding (TE): k-fold/leave-one-out және time-aware тегістеумен (anti-leakage) таргет бойынша орташа.
WOE/IV (тәуекел-скоринг): IV және тұрақтылықты бақылайтын монотонды биндер.
python for fold in time_folds:
train_idx, val_idx = split_by_time(fold)
te_map = target_mean(train[["provider_id","label"]])
val["provider_te"] = val["provider_id"].map(te_map).fillna(global_mean)
5) Қалыпқа келтіру және скейлинг
Мин-макс/Robust/Z-score - жаттығу терезесі бойынша; параметрлерді артефактілерде сақтаймыз.
Сомалар/ставкалардың ұзын қалдықтары үшін лог-түрлендіру.
Box-Cox/Yeo-Johnson - симметрияландыру қажет болғанда.
6) Уақытша және маусымдық фичтер
Күнтізбелік: апта күні, сағат, базар мерекесі (ref. calendar), pay-day.
Кезеңділігі: жылжымалы орташа/экспон. тегістеу (EMA), deltas (t − t-1).
Event-based: соңғы депозит/ұтыс/ұтыс, «салқындату» уақыты.
7) Графалық белгілер (фрод/AML)
Ұштары: user/card/device/ip. Қабырғалар: транзакциялар/сессиялар/бірлескен белгілері.
Фич: компонент өлшемі, degree, betweenness, pagerank, triads, қайта пайда болу.
Шаблон: nightly batch баған жасайды → эмбеддингтер/орталықтығы → online кэш.
8) NLP-фичтер (саппорт/чат/ревью)
Негізгі: TF-IDF/NMF тақырып, sentiment, ұзындығы, шағым жиілігі.
Ілгерілетілген: эмбеддингтер (Sentence-BERT) → терезеден тикеттер бойынша орташалау.
PII: саясат бойынша қосымша және пост-бүркемелеу (email, PAN, телефондар).
9) Гео/ASN және құрылғылар
IP → Geo/ASN: кэштеу және жаңарту; синхронды сұрауларды онлайн режимінде таймаут/кэшсіз жасамаңыз.
Фичтер: ASN/DeviceID тұрақтылығы, ауысым жиілігі, логиндер арасындағы қашықтық.
10) Anti-Leakage және online/offline келісу
Point-in-time join, терезелерде/лейблдерде болашақ оқиғалар жоқ.
Офлайн және онлайн үшін бір трансформация коды (library).
Баламалық тест: T іріктемесінде фичтің онлайн-мәндерін офлайнмен (MAE/MAPE) салыстырамыз.
yaml name: deposits_sum_10m owner: ml-risk slo: {latency_ms_p95: 20, availability: 0.999}
offline:
source: silver.payments transform: "SUM(amount_base) OVER 10m BY user_pseudo_id"
online:
compute: "streaming_window: 10m"
tests:
- compare_online_offline_max_abs_diff: 0.5
11) Белгілерді іріктеу (feature selection)
11. 1 Filter
11. 2 Wrapper
RFE/Sequential FS: шағын жиынтықтарда/логистикалық регрессияда.
Stability Selection: бутстрэп-сэмплинг кезіндегі тұрақтылық.
11. 3 Embedded
L1/Lasso/ElasticNet: сирету.
Ағаштар/GBDT: importance/SHAP іріктеу және бизнес-интерпретация үшін.
Group Lasso: топтық іріктеу (бір айнымалының бин-фич жинақтары).
python
X = preprocess(raw) # one-hot/TE/scale
X = drop_const_and_corr(X, thr=0.95)
rank_mi = mutual_info_rank(X, y)
keep1 = topk(rank_mi, k=200)
model = LGBMClassifier(...)
model.fit(X[keep1], y)
shap_vals = shap.TreeExplainer(model).shap_values(X[keep1])
keep2 = stable_topk_by_shap(shap_vals, k=60, bootstrap=20)
final = keep2
12) Тұрақтылық, дрейф және калибрлеу
Drift: PSI/KS фигура және жиілік бойынша; шектен асқан кездегі аллергия.
Тұрақтылық: «нәзік» TE/WOE (түбегейлілік/ілгерілеу) қадағалаймыз.
Калибрлеу: Platt/Isotonic; reliability есептері.
Slice-талдау: нарықтар/провайдерлер/құрылғылар - метриктердің бэнчмаркалары және күтілетін қателер құны.
13) Cost-инжиниринг және өнімділік
Cost per Feature (CPF): CPU/IO/желі/сақтау → модельге бюджет.
Материалдандыру: ауыр offline, жеңіл online; Ыстық фич үшін TTL/кэш.
Қашықтағы lookups: тек async + кэш; p95 <20-30 мс онлайн фичке.
Chargeback: командалар бойынша фич/инференс құнын есепке алу.
14) Feature Store (келісім өзегі)
Тізілім: аты, формуласы, иесі, SLO, тесттер, нұсқалары.
Online/Offline синхрондау: бір трансформация коды, теңдік тесті.
Логи/аудит: формуланы кім өзгертті; нұсқаның модель метрикасына әсері.
15) Мысалдар
ClickHouse: минуттық ставкалар агрегаттары:sql
CREATE MATERIALIZED VIEW mv_bets_1m
ENGINE = SummingMergeTree()
PARTITION BY toDate(event_time)
ORDER BY (toStartOfMinute(event_time), user_pseudo_id)
AS
SELECT toStartOfMinute(event_time) AS ts_min,
user_pseudo_id,
sum(stake_base) AS stake_sum_1m,
count() AS bets_1m
FROM stream.game_events
GROUP BY ts_min, user_pseudo_id;
Anti-correlation drop (SQL идеясы):
sql
-- вычислить корреляции и удалить пары с ρ >0.95, сохранив более «дешевую» фичу
WOE биннинг (нобайы):
python bins = monotonic_binning(x, y, max_bins=10)
woe = compute_woe(bins)
iv = compute_iv(bins)
16) Процестер және RACI
R (Responsible): Data Eng (конвейерлер/Feature Store), Data Science (дизайн фич/іріктеу/метрика).
A (Accountable): Head of Data / CDO.
C (Consulted): Compliance/DPO (PII, residency), Risk/AML/RG (ережелер), SRE (SLO/құны), Security.
I (Informed): Өнім/Маркетинг/Операциялар/Қолдау.
17) Жол картасы
MVP (3-5 апта):1. point-in-time формулалары бар топ-50 фич каталогы (Payments/Gameplay).
2. Feature Store v1 (online/offline) + баламалық тест.
3. Негізгі іріктеу: константалар/корреляциялар → MI → L1/SHAP shortlist (60 бетке дейін).
4. Дрейф мониторингі және cost-дашборд.
2-фаза (5-10 апта):- Time-aware валидациясы бар TE/WOE, графикалық және күнтізбелік фичтер.
- Slice-талдау және fairness, ықтималдықтарды калибрлеу.
- Ауыр офлайн фич, кэш онлайн, квоталарды материалдандыру.
- Құжаттама автогенерациясы fich stability-selection в CI.
- «Қымбат және пайдасыз» фичтерді авто-деактивациялау (CPF ↑, салым ↓).
- A/B фич жиынтықтарын салыстыру, expected-cost есептері.
18) Азық-түлік алдындағы чек-парағы
- Барлық фичтердің ерекшеліктері бар (owner, формула, нұсқалар, SLO).
- point-in-time және online/offline баламалылығы тесттерінен өтті.
- Таңдау орындалды: filter → embedded (SHAP/L1) → stability.
- Дрейф және reliability мониторингі теңшелген; табалдырықтар да бар.
- CPF/latency бюджетке жазылады; ауыр фичтер материалданған.
- PII-саясат сақталған (CLS/RLS, токенизация, резиденттік).
- Құжаттамалар мен пайдалану мысалдары каталогқа қосылды.
19) Анти-паттерндер және тәуекелдер
Лейкедж (болашақ оқиғалар/промо салдары).
Келісілмеген online/offline формулалары.
Hashing/TE жоқ жоғары-түбегейлі санаттардан артық one-hot.
«Қымбат» сапа өсімі өлшенбейтін фичтер.
Талдау slice/fairness болмауы - жасырын тозулар.
TE/WOE уақыт-aware кросс-валидациясы жоқ → қайта оқыту.
20) Қорытынды
Feature Engineering - бұл басқарылатын пән: point-in-time, бизнес-мағынасы, жаңғыртылуы, мониторинг және экономика. Күшті фичтер + қатаң іріктеу (filter/wrapper/embedded) және бірыңғай Feature Store тұрақты, түсінікті және арзан модельдер береді, олар Net Revenue жақсартады, фродты азайтады және RG қолдайды - мөлдір және комплаентті.