Хусусияти муҳандисӣ ва интихоби хусусиятҳо
1) Мақсад ва принсипҳо
Ҳадаф: сохтани хусусиятҳои устувор, тафсиршаванда ва иқтисодии байни офлайн ва онлайн мувофиқашуда.
Принсипҳо:- Нуқтаи вақт: хусусиятҳо аз маълумоте, ки дар вақти ҳалли онҳо мавҷуданд, бидуни оянда ҳисоб карда мешаванд (зидди ихроҷ).
- Домен-аввал: хусусиятҳо механикаи тиҷоратро инъикос мекунанд (амонатҳо, сессияҳо, жанрҳои бозӣ, RG/AML).
- Истифодаи такрорӣ ва шартномаҳо: Версияҳои мағозаи хусусият, соҳибон, формулаҳо ва SLO.
- Бо дарки хароҷот: мо таъхирнопазирӣ ва арзиши ҳисоббарорӣ/нигоҳдорӣ § -ро танҳо баргардонидан ба назар мегирем.
- Мушоҳида: монитор дрифт/устуворӣ/калибрченкунӣ; санҷиши эквиваленти онлайн/офлайнӣ.
2) Таксономияи хос барои IGaming
RFM/рафтор: сабукӣ/басомад/пул аз ҷониби тирезаҳо (10m/1h/1d/7d/30d).
Сессия: давомнокӣ, таваққуф, тағирёбии дастгоҳ/ASN, суръати амал.
Молиявӣ: пасандозҳо/бозхондҳо/пардохтҳо, саҳмияҳои усулҳои пардохт, нормализатсияи FX.
Бозӣ: профилҳои жанрӣ, ноустувории провайдер, кластерҳои RTP, win-streak.
Маркетинг: каналҳо/UTM, посухҳои маърака, пуррагӣ/cooldown.
RG/AML: маҳдудиятҳо, парчамҳои худидоракунӣ, намунаҳои суръат, истифодаи такрории BIN/IP.
Geo/вақт: тақвимҳои маҳаллӣ/идҳо, соати камар, шом/шаб.
Графика: истинодҳои корбар-корт-дастгоҳ-ip, марказӣ/ҷузъҳо, ҳалқаҳои қаллобӣ.
NLP/матнҳо: мавзӯъҳо ва оҳанги чиптаҳо/чатҳо; шикоятҳои асосӣ.
Амалиёт: хатогиҳои ақиб/провайдер, устувории сессия (барои моделҳои SRE).
3) Тирезаҳо ва агрегатҳо (нуқтаи вақт)
Тирезаҳои маъмулӣ: 10m/1h/24h/7d/30d. Барои ҳар як тиреза - ҳисоб/сум/миёна/std/last/max/min, таносуб ва меъёри.
Қолаби SQL (пасандозҳои 30d, оянда нестанд):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) Рамзгузории категориявӣ
Як-Hot/Hashing: барои категорияҳои нодир/кардиналӣ (бозиҳо, провайдерҳо).
Рамзгузории мақсаднок (TE): Нишондиҳандаҳои миёнаи мақсаднок бо k-fold/left-one-out ва зидди ихроҷи вақт.
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) Нормализатсия ва миқёс
Min-max/Robust/Z-хол - бо равзанаи омӯзишӣ; параметрҳоро дар артефактҳо захира кунед.
Табдили журнал барои думҳои дароз/гарав.
Box-Cox/Yeo-Johnson - ҳангоми симметризатсия лозим аст.
6) Хусусиятҳои муваққатӣ ва мавсимӣ
Тақвим: рӯзи ҳафта, соат, ҷашни бозор (тақвими тақвим), рӯзи пардохт.
Басомад: ҳаракат ба ҳисоби миёна/expon. ҳамворкунӣ (EMA), дельтҳо (t − t-1).
Дар асоси ҳодиса: вақт аз пасандози охирин/бурд/зиён, "хунуккунӣ".
7) Хусусиятҳои графикӣ (қаллобӣ/AML)
Қуллаҳо: корбар/корт/дастгоҳ/ip. Кунҷҳо: транзаксияҳо/сессияҳо/хусусиятҳои муштарак.
Хусусият: андозаи компонент, дараҷа, ҳамбастагӣ, паганк, сегонаҳо, пайдоиши дубора.
Намуна: партияи шабона графикро § ҷобаҷогузорӣ/мутамарказӣ → кэши онлайн месозад.
8) Хусусиятҳои NLP (дастгирӣ/чатҳо/шарҳҳо)
Асосӣ: Мавзӯъҳои TF-IDF/NMF, ҳиссиёт, дарозӣ, басомади шикоятҳо.
Пешрафта: ҷобаҷогузорӣ (Senture-BERT) → ба ҳисоби миёна чиптаҳо дар як тиреза.
PII: пеш ва пас аз ниқоб (почтаи электронӣ, PAN, телефонҳо) аз рӯи сиёсат.
9) Geo/ASN ва дастгоҳҳо
IP → Geo/ASN: мо кэш ва навсозӣ мекунем; дархостҳои синхронизатсияро дар интернет бидуни танаффус/кэш иҷро накунед.
Хусусиятҳо: устувории ASN/дастгоҳ, басомади гузариш, масофа байни воридшавӣ.
10) Мусолиҳаи зидди ихроҷ ва онлайн/офлайнӣ
Ҳамроҳ кардани нуқта дар вақт, ҳеҷ гуна рӯйдодҳои оянда дар тирезаҳо/тамғакоғазҳо.
Як рамзи табдилдиҳӣ (китобхона) барои офлайн ва онлайн.
Санҷиши эквивалентӣ: аз рӯи намуна 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) Интихоби хусусият
11. 1 Филтр
11. 2 Печондан
RFE/Sequential FS: дар маҷмӯаҳои хурд/регрессияи логистикӣ.
Интихоби устуворӣ: устуворӣ дар интихоби интихоб.
11. 3 Дарунсохт
L1/Lasso/ElasticNet: камёфт.
Дарахтҳо/GBDT: аҳамият/SHAP барои интихоб ва тафсири тиҷорат.
Гурӯҳи Лассо: интихоби гурӯҳ (маҷмӯи хусусиятҳои як тағирёбанда).
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) Устуворӣ, кашиш ва калибрченкунӣ
Дрифт: PSI/KS барои хусусиятҳо ва суръат; ҳушдорҳо ҳангоми зиёд шудани ҳудудҳо.
Устуворӣ: барои "нозук" TE/WOE (кардиналӣ/бастҳо) тамошо кунед.
Калибрченкунӣ: Платт/Изотоникӣ; ҳисоботҳои эътимоднокӣ.
Таҳлили бурида: бозорҳо/провайдерҳо/дастгоҳҳо - ченакҳо ва арзиши интизорравандаи хатогиҳо.
13) Муҳандисии хароҷот ва нишондиҳандаҳо
Арзиш барои як хусусият (CPF): CPU/IO/шабака/нигаҳдорӣ § буҷети моделӣ.
Материализатсия: офлайнии вазнин, онлайн сабук; TTL/кэш барои хусусиятҳои гарм.
Ҷустуҷӯи дурдаст: танҳо async + кэш; p95 <20-30 мс оид ба хусусияти онлайн.
Пардохт: баҳисобгирии арзиши хусусият/хулоса аз рӯи фармон.
14) Дӯкони хусусият (ядрои пайдарҳамӣ)
Феҳрист: ном, формула, соҳиб, SLO, санҷишҳо, версияҳо.
Синхронизатсияи онлайн/офлайнӣ: як рамзи тағирот, санҷиши баробарӣ.
Гузоришҳо/аудитҳо: кӣ формуларо иваз кард; таъсири версия ба ченакҳои моделӣ.
15) Намунаҳо
Ангушт занед: агрегатҳои букмекерӣ: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;
Тарки анти-коррелятсия (идеяи 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 (Масъул): Data Eng (қубурҳо/Дӯкони хусусият), Илми маълумот (хусусияти тарроҳӣ/интихоб/ченакҳо).
A (Ҳисоботдиҳанда): Роҳбари маълумот/CDO.
C (Машварат): Мутобиқат/DPO (PII, истиқомат), Хавф/AML/RG (сиёсат), SRE (SLO/арзиш), Амният.
I (Маълумот): Маҳсулот/Маркетинг/Амалиёт/Дастгирӣ.
17) Харитаи роҳ
MVP (3-5 ҳафта):1. Феҳристи 50 хусусияти боло (Пардохтҳо/Gameplay) бо формулаҳои нуқтаи вақт.
2. Дӯкони хусусият v1 (онлайн/офлайн) + санҷиши эквивалентӣ.
3. Интихоби асосӣ: константҳо/коррелятсияҳо → MI → L1/SHAP рӯйхати мухтасар (то 60 хусусият).
4. Мониторинги хусусиятҳои дрифт ва панели хароҷот.
Марҳилаи 2 (5-10 ҳафта):- TE/WOE бо тасдиқи вақт, хусусиятҳои графикӣ ва тақвимӣ.
- Таҳлили бурида ва адолат, калибрченкунии эҳтимолият.
- Материализатсияи хусусиятҳои вазнини офлайнӣ, кэши онлайн, квотаҳо.
- Тавлиди худкори ҳуҷҷатгузорӣ, интихоби устуворӣ дар CI.
- Худтанзимкунии хусусиятҳои "гарон ва бефоида" (CPF *, vklad↓).
- Муқоисаи A/B маҷмӯи хусусиятҳо, ҳисоботҳо дар бораи хароҷот.
18) Рӯйхати санҷиши пеш аз фурӯш
- Ҳама хусусиятҳо мушаххасот доранд (соҳиб, формула, версияҳо, SLO).
- Санҷишҳои эквиваленти вақт ва онлайн/офлайнӣ гузашт.
- Филтр → дохилшуда (SHAP/L1) → устуворӣ ба анҷом расид.
- Мониторинги дрифт ва эътимоднокӣ танзим карда шудааст; ҳудудҳо ва огоҳиҳо мебошанд.
- CPF/ниҳонӣ ба буҷа мувофиқат мекунад; хусусиятҳои вазнин ба амал омаданд.
- Сиёсати PII мувофиқат карданд (CLS/RLS, токенизатсия, истиқомат).
- Ҳуҷҷатҳо ва ҳолатҳои истифода ба каталог илова карда шуданд.
19) Анти-намунаҳо ва хатарҳо
Лейк (рӯйдодҳои оянда/аксияи баъдӣ).
Формулаҳои номувофиқи онлайн/офлайнӣ.
Аз ҳад зиёд гарм аз категорияҳои баланд-кардиналӣ бидуни hashing/TE.
Хусусиятҳои "гарон" бидуни афзоиши андозагирии сифат.
Набудани таҳлили бурида/адолат - таназзули пинҳон.
TE/WOE бидуни санҷиши байнисоҳавӣ ва бозомӯзӣ.
20) Сатри поён
Муҳандисии хусусият як фанни идорашаванда аст: нуқтаи вақт, ҳисси бизнес, такрористеҳсолкунӣ, мониторинг ва иқтисодиёт. Хусусиятҳои қавӣ + интихоби қатъӣ (филтр/парпеч/дарунсохт) ва як мағозаи хусусият моделҳои устувор, тафсиршаванда ва арзон медиҳанд, ки даромади холисро беҳтар мекунанд, қаллобӣ ва дастгирии RG-ро шаффоф ва мувофиқ мекунанд.