GH GambleHub

Ingineria caracteristicilor și selecția caracteristicilor

1) Scop și principii

Obiectiv: construirea unor caracteristici stabile, interpretabile și economice convenite între offline și online.

Principii:
  • Punct în timp: caracteristicile sunt calculate din datele disponibile în momentul soluției, fără viitor (anti-scurgere).
  • Domeniu-primul: caracteristici reflectă mecanica de afaceri (depozite, sesiuni, genuri de joc, RG/AML).
  • Reutilizare și contracte: versiuni Feature Store, proprietari, formule și SLO-uri.
  • Conștienți de costuri: considerăm că latența și costul de calcul/stocare → materializa numai răzbunarea.
  • Observabilitate: monitor drift/stabilitate/calibrare; testul de echivalență online/offline.

2) taxonomie caracteristică pentru iGaming

RFM/comportamental: recency/frequency/monetary by windows (10m/1h/1d/7d/30d).
Sesiune: durate, pauze, modificări de dispozitiv/ASN, viteza de acțiune.
Financiar: depozite/retrageri/chargebacks, acțiuni ale metodelor de plată, normalizare FX.
Gaming: profiluri de gen, volatilitatea furnizorului, clustere RTP, win-streak.
Marketing: canale/UTM, răspunsuri la campanie, saturație/cooldown.
RG/AML: limite, steaguri de auto-excludere, modele de viteză, reutilizare BIN/IP.
Geo/ora: calendare/sarbatori locale, ora centurii, seara/noapte.
Grafic: user-card-device-ip link-uri, centralitate/componente, inele de fraudă.
NLP/texte: teme și tonul biletelor/chat-urilor; principalele plângeri.
Operațional: erori de întârziere/furnizor, stabilitatea sesiunii (pentru modelele SRE).


3) Ferestre și agregate (punct în timp)

Ferestre tipice: 10m/1h/24h/7d/30d. Pentru fiecare fereastră - numărul/suma/media/std/ultimul/max/min, raportul și rata.

Șablon SQL (depozite 30d, fără viitor):
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) Codificări categorice

One-Hot/Hashing: pentru categorii rare/high-cardinal (jocuri, furnizori).
Codare țintă (TE): medii țintă cu k-fold/leave-one-out și anti-scurgere conștientă de timp.
VAI/IV (scor de risc): pubele monotonice cu control IV și stabilitate.

TE (pseudocod, timp):
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) Normalizare și scalare

Min-max/Robust/Z-score - prin fereastra de antrenament; salvați parametrii în artefacte.
Conversii jurnal pentru cozi lungi de sumă/pariu.
Box-Cox/Yeo-Johnson - când este necesară simetrizarea.


6) Caracteristici temporare și sezoniere

Calendar: ziua săptămânii, ora, sărbătoarea pieței (ref. calendar), ziua plății.
Frecvență: medii în mișcare/expon. netezire (EMA), delte (t − t-1).
Bazat pe evenimente: timpul de la ultima depunere/câștig/pierdere, „răcire”.


7) Caracteristicile graficului (fraudă/LMA)

Noduri: utilizator/card/dispozitiv/ip. Margini: tranzacții/sesiuni/caracteristici comune.
Caracteristică: dimensiune componentă, grad, betweeness, pagerank, triade, reapariție.
Model: lot de noapte construiește un grafic → încorporarea/centralitatea → memoria cache online.


8) Caracteristici NLP (suport/chat-uri/recenzii)

De bază: subiecte TF-IDF/NMF, sentiment, lungime, frecvența plângerilor.
Avansat: încorporări (Propoziție-BERT) → medii pe bilete pe fereastră.
PII: pre- și post-mascare (e-mail, PAN, telefoane) prin politica.


9) Geo/ASN și dispozitive

IP→Geo/ASN: facem cache și actualizăm; nu face cereri sincrone on-line, fără un timeout/cache.
Caracteristici: stabilitatea ASN/DeviceID, frecvența de schimbare, distanța dintre conectări.


10) Reconcilierea anti-scurgere și online/offline

Punct-in-time se alăture, nici un eveniment viitor în ferestre/etichete.
Un cod de transformare (bibliotecă) pentru offline și online.
Test de echivalență: pe eșantionul T, comparăm valorile online ale caracteristicii cu offline (MAE/MAPE).

Caracteristica specificațiilor YAML:
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) Selectarea caracteristicilor

11. 1 Filtru

Variație/corelație: eliminați constantele,ρ>0. 95 de duplicate.
Informații reciproce (MI) -Range relații neliniare.
IV/KS (risc): pentru obiective binare în AML/RG.

11. 2 Ambalaj

RFE/FS secvențial: pe seturi mici/regresie logistică.
Selectarea stabilității: stabilitate în eșantionarea bootstrap.

11. 3 Încorporat

L1/Lasso/ElasticNet: rarefacție.
Copaci/GBDT: importanță/SHAP pentru selecție și interpretare de afaceri.
Grupul Lasso: selecție de grup (seturi de bin-caracteristici ale unei variabile).

Conducte (schiță):
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) Stabilitate, derivă și calibrare

Drift: PSI/KS pentru caracteristici și viteză; alerte atunci când pragurile sunt depășite.
Stabilitate: ceas pentru „fragile” TE/VAI (cardinalitate/schimburi).
Calibrare: Platt/Isotonic; rapoarte de fiabilitate.
Analiza feliilor: piețe/furnizori/dispozitive - valori și costul estimat al erorilor.


13) Ingineria costurilor și performanța

Cost per caracteristică (CPF): CPU/IO/rețea/stocare → bugetul modelului.
Materializare: heavy offline, light online; TTL/cache pentru caracteristici fierbinți.
Căutări la distanță: numai async + cache; p95 <20-30 ms on feature online.
Chargeback: contabilizarea costului caracteristicii/inferenței prin comandă.


14) Feature Store (kernel de consistență)

Registry: nume, formulă, proprietar, SLO, teste, versiuni.
Sincronizare online/offline: un cod de transformare, test de egalitate.
Jurnale/audituri: cine a schimbat formula; efectul versiunii asupra măsurătorilor modelului.


15) Exemple

ClickHouse: agregate de pariuri minut:
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;
Picătură anti-corelare (idee SQL):
sql
-- вычислить корреляции и удалить пары с     ρ    >0.95, сохранив более «дешевую» фичу
Vai de tine (schiţă):
python bins = monotonic_binning(x, y, max_bins=10)
woe = compute_woe(bins)
iv = compute_iv(bins)

16) Procese și RACI

R (Responsible): Data Eng (pipelines/Feature Store), Data Science (design feature/selection/metrics).
A (Responsabil): șef de date/CDO.
C (Consultat): Conformitate/DPO (PII, rezidență), Risc/AML/RG (politică), SRE (SLO/cost), Securitate.
I (Informat): Produs/Marketing/Operațiuni/Suport.


17) Foaie de parcurs

MVP (3-5 săptămâni):

1. Catalog de funcții de top 50 (Plăți/Gameplay) cu formule point-in-time.

2. Feature Store v1 (online/offline) + test de echivalență.

3. Selecție de bază: constante/corelații → MI → L1/SHAP listă scurtă (până la 60 de caracteristici).

4. Monitorizarea caracteristicilor derivei și a tablourilor de bord.

Faza 2 (5-10 săptămâni):
  • TE/VAI cu caracteristici de validare, grafic și calendar care conțin timp.
  • Analiza felie și corectitudine, probabilitatea de calibrare.
  • Materializarea caracteristicilor offline grele, cache online, cote.
Faza 3 (10-16 săptămâni):
  • Generarea automată a documentației, selectarea stabilității în CI.
  • Dezactivarea automată a caracteristicilor „scumpe și inutile” (CPF↑, vklad↓).
  • Compararea A/B a seturilor de caracteristici, rapoartele de costuri așteptate.

18) Lista de verificare pre-vânzare

  • Toate caracteristicile au specificații (proprietar, formulă, versiuni, SLO).
  • A trecut testele de echivalență point-in-time și online/offline.
  • Filtru → încorporat (SHAP/L1) → stabilitate finalizată.
  • Drift de monitorizare și fiabilitate configurat; praguri și alerte sunt.
  • CPF/latență se încadrează în buget; caracteristici grele materializate.
  • Politicile PII îndeplinite (CLS/RLS, tokenizare, rezidență).
  • Documentația și cazurile de utilizare au fost adăugate în catalog.

19) Anti-modele și riscuri

Lac (evenimente viitoare/după promo).
Formule online/offline inconsistente.
Supraalimentat din categorii cardinale înalte fără hashing/TE.
Caracteristici „scumpe” fără o creștere măsurabilă a calității.
Lipsa de analiză felie/corectitudine - degradare ascunsă.
TE/VAI fără validare încrucișată → reconversie profesională.


20) Linia de jos

Feature Engineering este o disciplină gestionată: punct-in-time, sens de afaceri, reproductibilitate, monitorizare și economie. Caracteristici puternice + selecție strictă (filtru/înveliș/încorporat) și un singur Feature Store oferă modele stabile, interpretabile și ieftine care îmbunătățesc veniturile nete, reduc frauda și sprijină RG - transparent și conform.

Contact

Contactați-ne

Scrieți-ne pentru orice întrebare sau solicitare de suport.Suntem mereu gata să ajutăm!

Pornește integrarea

Email-ul este obligatoriu. Telegram sau WhatsApp sunt opționale.

Numele dumneavoastră opțional
Email opțional
Subiect opțional
Mesaj opțional
Telegram opțional
@
Dacă indicați Telegram — vă vom răspunde și acolo, pe lângă Email.
WhatsApp opțional
Format: cod de țară și număr (de exemplu, +40XXXXXXXXX).

Apăsând butonul, sunteți de acord cu prelucrarea datelor dumneavoastră.