GH GambleHub

Sisteme de recomandare

Sisteme de recomandare

Sistemul de recomandare nu este doar un "model CTR. "Este o conductă de date candidații clasament politică acțiune, feedback-ul care optimizează valoarea incrementală în condițiile constrângerilor din lumea reală (viteză, capace de frecvență, diversitate, etică/conformitate).

1) Date, semnale și reprezentări

Evenimente: vizualizări/clicuri/adăugări/achiziții/depozite, timp de ședere, anulări.
Continut/catalog: atribute (categorii/genuri/studiouri/pret/prospetime/volatilitate).
Profiluri utilizator: RFM, preferințe, dispozitive/canale, timeslots.
Context: oră/zi/sărbători/meciuri, locale/TZ, site-ul de afișare.
Calitate: retete punctuale, idempotenta evenimentelor, deadup/antiboot, mascare PII.
Embeddings: user/item/context in spatiu partajat (MF/Word2Vec2Rec/transformers), multimodal (text/imagini).

2) Arhitectură: Rechemare → rang → re-rang → acțiune

1. Recall candidat (200-5000 candidați): ANN (FAISS/ScaNN), popularitate/tendințe, filtre bazate pe reguli.
2. Clasament (20-200): LTR (GBM/NN), arhitecturi Tower, obiective binare/multi-țintă (click, conversie, valoare).
3. Policy-conștient re-rank (5-30 în lista finală): diversificare/noutate/serendipity, cote de brand/categorie, RG/conformitate, capace de frecvență, corectitudine.
4. Acțiune: show/push/e-mail/vitrină personală cu răcire și „ore liniștite”.
5. Feedback: jurnal „impression→click→action→value”, feedback negativ (săriți, plângere).

3) Paradigme model

Bazat pe conținut: proximitate prin caracteristici și profil IT; ideal pentru un început rece pentru articole.
Filtrarea colaborativă: utilizator-utilizator/element-element prin matrice de interacțiune.
Factorizare/încorporare: MF/BPR/NeuMF, MLP cu două turnuri (turn utilizator × turn articol).
Learning-to-Rank: pairwise/listwise (LambdaMART, RankNet), optimizare NDCG @ k.
Sesiune/secvențial: GRU4Rec, SASRec, Transformers (T5-style) - ordine/context în sesiune.
Bandiți contextuali: LinUCB/Thompson pentru adaptări online rapide și creative.
RL: SlateQ/DQN/Policy Gradient pentru premiul în mai multe etape (retenție/LTV).
Abordări cauzale/ascendente: recomandări care iau în considerare creșterea și nu „CTR brut”.

4) Obiectivele, limitările și formularea sarcinii

Obiective: CTR/CTCVR, venituri/marjă/LTV, retenție, satisfacție, viteză.
Limitări: diversificare, cote furnizor/categorie, capace de frecvență, RG/conformitate, corectitudine/etică, SLA p95.

Re-rang conștient de politici (exemplu de scalarizare):
[
\ textstyle Scor =\alpha\cdot\hat p_{\text{click}} +\beta\cdot\text {Value}

\ gamma\cdot\text {Oboseală} +\delta\cdot\text {Noutate} -\sum _ j\lambda _ j\cdot\text {Penalty} _ j
]

în cazul în care pedeapsa sunt încălcări de cotă/RG/frecvență/monotonie.

5) Măsurători și notare

Offline

Relevanţă/clasament: ASC/PR-ASC, Recall @ k, MAP, NDCG @ k.
Afaceri: eRPM/eCPM, proxy-LTV, marja așteptată.
Calibrare: Brier, ECE (important pentru praguri/politici).
Списки: acoperire/diversitate/noutate/serendipitate.

Online

Teste A/B/multi-label: CTR, CTCVR, venituri/sesiune, retentie, reclamatii/dezabonare (parapete), latenta/timeout.
Evaluare cauzală: CUPED, cvasi-experimente (control DiD/sintetic) la randomizare limitată.
Măsurători Uplift: Qini/AUUC, uplift @ k - pentru recomandări privind tratamentul.

6) Start rece și rar

Utilizatori noi: popular @ segment, sondaj de conținut, conținut bazat pe primul clic, bandit cu inteligență largă.
Noi aytems: metadate/text embeddings/images + look-alike by studio/category.
Domenii mici: transfer de învățare, multi-task (turn comun), distilare cross-domain.

7) Diversificare, noutate, serendipity

Algoritmi: MMR, xQuAD, PM-2; amenzi pentru monotonie.
Cote: min/max pe categorii/brand/clasa de risc.
Stabilitatea listei: inerția poziției, histereza actualizării; nu „flash” ieșire.

8) Infrastructură și MLOps

Feature Store: rețete PIT, TTL pentru caracteristici de sesiune, paritate online/offline.
Servicii ANN: FAISS/ScaNN, sharding/cache, replicare.
Ranker: caracteristici în timp real, calibrare, semnături de versiune.
Policy/Re-rank layer: limite/cote/RG/frecvențe/diversitate.
SLA: end-to-end p95 ≤ 100-300 мс; rezervă (în condiții de siguranță populară) în curs de degradare.
Observabilitate: corelation _ id urme, feature drift (PSI), metrici de calitate online, stop macara.

9) Securitate, confidențialitate, etică

PII minimizare, RLS/CLS, mascare.
RG/filtre de conformitate înainte de afișare, capace de frecvență, ore liniștite.
Diagnosticarea corectitudinii pe segmente; explicarea motivelor spectacolului; calea de atac.

10) Pseudo-cod: Rechemare → rang → Re-rank hibrid

python
Recall cand_emb = ann.recall(user_embed, topk=500)
cand_rule = popular.by_segment(user.segment, k=200)
cands = dedup(cand_emb + cand_rule)

Rank features = featurize(user, cands, context)   # user/item/context scores = ranker.predict(features)        # p(click), value

Policy-aware re-rank final = rerank(
cands, scores,
constraints=dict(
diversity_min={'category': 3},
brand_quota={'A':0.3,'B':0.3},
rg_filter=True,
freq_caps=get_user_caps(user)
),
objective_weights=dict(ctr=0.6, value=0.3, novelty=0.1)
)
return final[:N]

Thompson Sampling pentru Creatives (schiță)

python beta priors per creative: (α, β)
samples = {cr: np.random.beta(alpha[cr], beta[cr]) for cr in creatives}
chosen = max(samples, key=samples.get)
show(chosen)
update(alpha, beta, reward=click)

11) Pseudo-SQL: feedback negativ și capace de frecvență

sql
-- Последний показ и флаги «скрыть/жалоба» → баним на 7 дней
WITH last_impr AS (
SELECT user_id, item_id,
MAX(ts) AS last_ts,
BOOL_OR(feedback_hide) AS hidden,
BOOL_OR(feedback_report) AS reported
FROM impressions
GROUP BY 1,2
)
SELECT i.
FROM inventory i
LEFT JOIN last_impr l ON l.user_id=:uid AND l.item_id=i.item_id
WHERE COALESCE(l.hidden,false)=false
AND COALESCE(l.reported,false)=false
AND (l.last_ts IS NULL OR l.last_ts < NOW() - INTERVAL '7 day');

12) Tabelul decizional

CondițieContextAcțiuneRestricțiiComentariu
'now _ user & low_history'onboardingpopular @ segment + conținut-semințecapace de frecvență, RGpornire rece
'session _ len> 3 & diversity_low'sesiuneRMM/xQuAD re-clasamentmin 3 categoriiserendipitate
„uplift_push≥τ”oferteîmpingere personalăNu deranjați, zhaloby≤Khincrement, nu CTR
„risk_RG≥τ”Oricebloc de conținut de riscRG/Conformitatesiguranță

13) Anti-modele

Optimizarea „CTR brut” în loc de creștere și valoare.
Lipsa stratului de re-rang → excesul de monotonie, „tunel de viziune”.
Chipuri din viitor; amestecarea TZ; definiții non-versat semnal.
Nici o calibrare a probabilităților → praguri/politici incorecte.
Ignorați RG/etică/corectitudine → reclamații/riscuri/amenzi.
Caracteristică și valori desincronizate online/offline - "drawdown' în alimente.
Absenţa valvei de rezervă şi oprire.

14) Recomandarea de lansare a listei de verificare

  • Pașaport de sistem - Obiective, limitări, metrici, proprietari, versiuni
  • Rechemare/Rang/Re-rank divorțat; ANN încălzit, cache configurat
  • Caracteristicile PIT, calibrarea, reperele offline (NDCG/PR-ASC) au trecut
  • Design A/B și parapeți; raport gata de decizie
  • Restricții: diversitate/cote/RG/capace de frecvență - implementate și monitorizate
  • SLA p95, urme, alerte, macara de oprire și de rezervă populare în condiții de siguranță
  • Documentație, Runibooks, Plan de îmbunătățire incrementală

Rezultat

Un sistem puternic de recomandare este conducta conștientă de politică: un recall hibrid/Rank/Re-rank care optimizează valoarea incrementală în limitele vitezei, eticii și diversității. Prin adăugarea de bandiți/RL pentru adaptarea online, disciplina MLOps și evaluarea cauzală corectă, nu obțineți „liste de dragul listelor”, ci soluții gestionate care cresc satisfacția ROMI, LTV și a utilizatorilor - stabile și sigure.

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ă.