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.
[
\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)
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.