Systèmes de recommandation
Systèmes de recommandation
Le système de recommandation n'est pas seulement un « modèle CTR ». C'est le convoyeur donné → les candidats → le classement → la politique → l'action → la liaison en retour, optimisant инкрементальную la valeur sous les restrictions réelles (la vitesse, les protège-dents de fréquence, la variété, l'éthique/komplaens).
1) Données, signaux et représentations
Événements : vues/clics/ajouts/achats/dépôts, dwell-time, annulations.
Contenu/catalogue : attributs (catégories/genres/studios/prix/fraîcheur/volatilité).
Profils utilisateur : RFM, préférences, périphériques/canaux, temporisateurs.
Contexte : heure/jour/vacances/match, local/TZ, zone de projection.
Qualité : recettes point-in-time, idempotence des événements, dedup/antibot, masque PII.
Embeddings : user/item/context dans l'espace commun (MF/Word2Vec2Rec/transformers), multimodal (texte/images).
2) Architecture : Recall → Rank → Re-rank → Action
1. Candidate recall (200-5000 candidats) : ANN (FAISS/ScaNN), popularité/tendances, filtres rule-based.
2. Classement (20-200) : LTR (GBM/NN), architectures de tour, ciblages binaires/multi-cibles (click, conversion, value).
3. Policy-aware re-rank (5-30 dans la liste finale) : diversification/nouveauté/sérénité, quotas de marques/catégories, RG/conformité, caps de fréquence, fairness.
4. Action : affichage/push/e-mail/vitrine personnelle avec couldauns et « heures silencieuses ».
5. Feedback : log' impression→click→action→value ', rétroaction négative (skip, plainte).
3) Modèles paradigmes
Contenu basé : proximité selon les caractéristiques de l'aitem et le profil ; idéal pour un démarrage froid des aitems.
Filtrage collaboratif : user-user/item-item par matrice d'interactions.
Factorisations/embeddings : MF/BPR/NeuMF, MLP à deux barres (tour user × tour item).
Apprentissage-to-Rank : pairwise/listwise (LambdaMART, RankNet), optimisation NDCG @ k.
Session/série : GRU4Rec, SASRec, Transformers (T5-style) - ordre/contexte dans la session.
Bandits contextuels : LinUCB/Thompson pour des adaptations rapides et créatives en ligne.
RL : SlateQ/DQN/Policy Gradient pour le prix Multi-Cash (holding/LTV).
Approches causales/uplift : recommandations qui tiennent compte des gains plutôt que des « CTR bruts ».
4) Objectifs, limites et formulation de la tâche
Objectifs : CTR/CTCVR, revenu/marge/LTV, rétention, satisfaction, rapidité.
Restrictions : diversification, quotas de fournisseurs/catégories, caps de fréquence, RG/conformité, fairness/éthique, 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
]
où Penalty est une violation des quotas/RG/fréquence/monotonie.
5) Métriques et évaluation
Hors ligne
Pertinence/classement : AUC/PR-AUC, Recall @ k, MAP, NDCG @ k.
Activité : eRPM/eCPM, proxy-LTV, marge attendue.
Étalonnage : Brier, ECE (important pour les seuils/politiques).
Списки: coverage/diversity/novelty/serendipity.
En ligne
A/B/tests multiraciaux : CTR, CTCVR, revenu/session, rétention, plaintes/désistements (guardrails), latency/timeout.
Évaluation causale : CUPED, quasi-expérimentations (DiD/contrôle synthétique) avec randomisation limitée.
Métriques uplift : Qini/AUUC, uplift @ k - pour les recommandations de traitement.
6) Démarrage à froid et dispersion
Nouveaux utilisateurs : popular @ segment, sondage sur le contenu, basé sur le contenu au premier clic, bandit avec un large renseignement.
Nouveaux aytems : métadonnées/embeddings de texte/images + look-alike par studio/catégorie.
Petits domaines : transfer learning, multi-task (tour partagée), distillation cross-domain.
7) Diversification, nouveauté, sérénité
Algorithmes : MMR, xQuQAD, PM-2 ; amendes pour monotonie.
Quotas : min/max par catégorie/marque/classe de risque.
Stabilité des listes : inertie des positions, hystérésis des mises à jour ; Ne « flashez » pas l'émission.
8) Infrastructures et MLOps
Feature Store : Recettes PIT, TTL pour les fiches de session, parité en ligne/hors ligne.
Services ANN : FAISS/ScaNN, sharding/cache, réplication.
Ranker : fiches temps réel, calibrage, signatures de version.
Couche Policy/Re-rank : limites/quotas/RG/fréquences/diversité.
SLA: end-to-end p95 ≤ 100–300 мс; fallback (popular-safe) en cas de dégradation.
Observabilité : traces "correlation _ id', fich-drift (PSI), métriques de qualité en ligne," stop-grue ".
9) Sécurité, vie privée, éthique
Minimisation PII, RLS/CLS, masquage.
RG/filtres de conformité avant l'affichage, caps de fréquence, « heures silencieuses ».
Diagnostic Fairness par segment ; L'explication des raisons de l'affichage ; la voie de l'appel.
10) Pseudo-code : Hybride 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]
Thompson Sampling pour les créateurs (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 : rétroaction négative et caps de fréquence
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) Table de décision (croquis de la politique)
13) Anti-modèles
Optimiser le « CTR brut » au lieu de l'incrément et de la valeur.
L'absence de couche re-rank → un excès de monotonie, un tunnel de vision.
Les visages du futur ; Mélange de TZ ; définitions non converties des signaux.
Il n'y a pas d'étalonnage des probabilités → des seuils/politiques incorrects.
Ignorer RG/éthique/fairness → plaintes/risques/amendes.
En ligne/hors ligne, les fiches et les métriques sont des « échecs » dans la vente.
L'absence de fallback et de « grue stop ».
14) Chèque de démarrage du conseiller
- Passeport du système : objectifs, restrictions, métriques, propriétaires, versions
- Recall/Rank/Re-rank divorcé ; ANN va se réchauffer, keshi mis en place
- fiches PIT, étalonnage, benchmarks hors ligne (NDCG/PR-AUC) passés
- A/B-design et guardrails ; rapport decision-ready (effets/risques)
- Limites : diversité/quotas/RG/caps de fréquence - mis en œuvre et surveillés
- SLA p95, traçages, alertes, « stop grue » et fallback popular-safe
- Documentation, runibooks, plan d'amélioration incrémentielle
Total
Un système de recommandation fort est un convoyeur policy-aware : un système hybride Recall/Rank/Re-rank qui optimise la valeur incrémentale sous les contraintes de vitesse, d'éthique et de diversité. En ajoutant des bandits/RL pour l'adaptation en ligne, la discipline des MLOps et une évaluation causale correcte, vous n'obtenez pas des « listes pour les listes », mais des solutions gérables qui augmentent ROMI, LTV et la satisfaction des utilisateurs - stable et sûre.