GH GambleHub

Sistemi di raccomandazione

Sistemi di raccomandazione

Il sistema di raccomandazione non è solo un modello CTR. Si tratta di una catena di montaggio di dati i candidati a classificare la politica, l'azione e il feedback che ottimizza il valore incrementale sotto i limiti reali (velocità, caps di frequenza, varietà, etica/compilation).

1) Dati, segnali e visualizzazioni

Eventi: visualizzazioni/clic/aggiunta/acquisto/depositi, dwell-time, annullamenti.
Contenuto/catalogo: attributi (categorie/generi/studi/prezzo/freschezza/volatilità).
I profili utente sono RFM, preferenze, dispositivi/canali, time slot.
Contesto: ore/giorno/festività/partite, locale/TZ, sito di proiezione.
Qualità: prescrizioni point-in-time, idampotenza degli eventi, deadup/antibot, maschera PII.
Embedding: user/item/text nello spazio comune (MF/Word2Vec2Rec/trasformers), multimodali (testo/immagini).

2) Architettura: Recall → Rank → Re-rank → Action

1. Candidate recall (200-5.000 candidati): ANN (FAISS/ScaNN), popolarità/trend, filtri rule-based.
2. Ranking (20-200): LTR (GBM/NN), architetture tower, target binari/multi-target (click, conversion, value).
3. Policy-aware re-rank (5-30 nella lista finale): diversificazione/novità/serendipità, quote di marchi/categorie, RG/compilation, caps di frequenza, fairness.
4. Action: mostra/spina/posta/vetrina personale con cooldown e orologi silenziosi.
5. Feedback: log' impression→click→action→value ', feedback negativo (skip, denuncia).

3) Paradigmi di modello

Content-based - Intimità per item e profilo ideale per la partenza fredda degli item.
Filtraggio collaudato: user-user/item-item per matrice di interazioni.
Fattorizzazioni/embeddings: MF/BPR/NeuMF, MLP (user tower x item tower).
Learning-to-Rank: pairwise/listwise (LambdaMART, RankNet), ottimizzazione NDCG @ k.
Sessione/sequenza: GRU4Rec, SASRec, Trasformers (T5-style) - ordine/contesto nella sessione.
Gruppi contestuali: LinUCB/Thompson per adattamenti online rapidi e creativi.
RL: SlateQ/DQN/Policy Gradient per premio multi-collage (ritenzione/LTV).
Approcci causali/uplift: raccomandazioni che prendono in considerazione l'aumento anziché «crude CTR».

4) Obiettivi, limiti e formulazione dell'attività

Obiettivi: CTR/CTCVR, reddito/margine/LTV, trattenimento, soddisfazione, velocità.
Limitazioni: diversificazione, quote di provider/categorie, caps di frequenza, RG/compilation, fairness/etica, SLA p95.

Policy-aware re-rank (esempio di scalarizzazione):
[
\textstyle Score = \alpha \cdot \hat p_{\text{click}} + \beta \cdot \text{Value}

\gamma \cdot \text{Fatigue} + \delta \cdot \text{Novelty} - \sum_j \lambda_j \cdot \text{Penalty}_j
]

dove Penalty è una violazione di quote/RG/frequenza/monotonia.

5) Metriche e valutazione

Offline

Rilevanza/classificazione: AUC/PR-AUC, Recall @ k, MAP, NDCG @ k.
Business: eRPM/eCPM, proxy-LTV, margine previsto.
Calibrazione: Brier, ECE (importante per le soglie/regole).
Списки: coverage/diversity/novelty/serendipity.

Online

A/B/test multi-ram: CTR, CTCVR, reddito/sessione, trattenimento, reclamo/dimissione (guardrail), latency/timeout.
Valutazione causale: CUPED, quasi-espatrio (DiD/controllo sintetico) per randomizzazione limitata.
Metriche Uplift: Qini/AUUC, uplift @ k - per linee guida treatment-aware.

6) Partenza fredda e diluizione

Nuovi utenti: popolare @ segment, sondaggio di contenuti, contenuti based per il primo click, bandito con un'ampia ricognizione.
Nuovi item: metadati/embedding di testo/immagini + look-alike per studio/categoria.
Piccoli domini: transfer learning, multi-task (shared tower), cross-domain distillation.

7) Diversificazione, novità, serendipia

Algoritmi: MMR, xQuAD, PM-2; multe per somiglianza.
Quote: min/max per categorie/marchi/classe di rischio.
Stabilità degli elenchi: inerzia delle posizioni, isteresi degli aggiornamenti; Non «lampeggiate» con il rilascio.

8) Infrastruttura e MLOs

Feature Store: ricette PIT, TTL per Fich di sessione, parità online/offline.
Servizi ANN: FAISS/ScaNN, sharding/cash, replica.
Ranker: real-time, calibrazione, etichette di versione.
Policy/Re-rank livello: vincoli/quote/RG/frequenza/diversity.
SLA: end-to-end p95 ≤ 100–300 мс; fallback (popolare-safe) in caso di degrado.
Osservabilità: tracciabili'correlation _ id ', filo-drift (PSI), metriche in linea di qualità, «stop-rubinetto».

9) Sicurezza, privacy, etica

Ridurre al minimo PII, RLS/CLS, mascherare.
Filtri di compilazione RG prima della visualizzazione, gap di frequenza, orologio silenzioso.
Diagnostica Fairness per segmenti Spiegazione dei motivi della visualizzazione Il percorso dell'appello.

10) Codice pseudonimo: ibrido Recall → Rank → Re-rank

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]

Tompson Sampling per creativi (sketch)

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 negativo e caps di frequenza

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) Decection table (sketch criterio)

CondizioneContestoAzioneVincoliCommento
`new_user & low_history`onboordingpopular@segment + content-seedcaps frequenza, RGpartenza fredda
`session_len>3 & diversity_low`sessioneMMR/xQuAD re-rankmin 3 categorieserendipalità
`uplift_push≥τ`OfferTasca personaleDo-Not-Disturb, zhaloby≤KhIncremento, non CTR
`risk_RG≥τ`chiunqueblocco di contenuti a rischioRG/compilazionesicurezza

13) Anti-pattern

Ottimizzazione del «CTR grezzo» al posto dell'incorporazione e del valore.
L'assenza di un strato re-rank è un eccesso di monotonia, un tunnel visivo.
Leekie dal futuro; miscelazione TZ definizioni di segnali non modificate.
Nessuna calibrazione delle probabilità per le soglie/politiche sbagliate.
Ignora RG/etica/fairness → reclami/rischi/multe.
Online/offline Rassincron Fich e Metrik, in vendita.
Senza fallback e senza rubinetto.

14) Assegno foglio di avvio del raccomandatore

  • Sistema passaporto: obiettivi, limitazioni, metriche, proprietari, versioni
  • Recall/Rank/Re-rank divorziati; ANN riscaldato, caschi configurati
  • Fici PIT, calibrazione, benchmark offline (NDCG/PR-AUC) superati
  • Design A/B e guardrail; Report decection-ready (effetto/rischi)
  • Vincoli: diversity/quote/RG/caps di frequenza - implementati e monitor
  • SLA p95, traccia, alert, «rubinetto stop» e popolare-safe fallback
  • Documentazione, runibuki, piano di miglioramento incrementale

Totale

Un forte sistema di raccomandazione è una catena di montaggio policy-aware: ibrida Recall/Rank/Re-rank, che ottimizza il valore incrementale sotto i limiti di velocità, etica e diversità. Aggiungendo bandi/RL per l'adattamento online, la disciplina MLOs e la corretta valutazione causale, non si ottengono «elenchi per elenchi», ma soluzioni gestite che migliorano ROMI, LTV e la soddisfazione degli utenti - in modo stabile e sicuro.

Contact

Mettiti in contatto

Scrivici per qualsiasi domanda o richiesta di supporto.Siamo sempre pronti ad aiutarti!

Avvia integrazione

L’Email è obbligatoria. Telegram o WhatsApp — opzionali.

Il tuo nome opzionale
Email opzionale
Oggetto opzionale
Messaggio opzionale
Telegram opzionale
@
Se indichi Telegram — ti risponderemo anche lì, oltre che via Email.
WhatsApp opzionale
Formato: +prefisso internazionale e numero (ad es. +39XXXXXXXXX).

Cliccando sul pulsante, acconsenti al trattamento dei dati.