Sistemas de recomendação
Sistemas de recomendação
O sistema de recomendação não é apenas um modelo CTR. Esta é uma linha de montagem de dados candidatos classificação política ação de feedback que otimiza o valor incorporativo sob limitações reais (velocidade, capas de frequência, variedade, ética/complacência).
1) Dados, sinais e apresentações
Eventos: visualização/clique/adição/compra/depósito, dwell-time, cancelamento.
Conteúdo/catálogo: atributos (categorias/gêneros/estúdios/preço/frescura/volatilidade).
Perfis de usuário: RFM, preferências, dispositivos/canais, slots de tempo.
Contexto: hora/dia/feriado/jogos, local/TZ, local de exibição.
Qualidade: receitas point-in-time, idempotidade de eventos, deadup/antibot, camuflagem PII.
Embeddings: user/item/context em espaço compartilhado (MF/Word2Vec2Rec/transformers), multimodais (texto/imagem).
2) Arquitetura: Recall → Rank → Re-rank → Action
1. Candidate recall (200-5.000 candidatos): ANNE (FAISS/ScaNN), popularidade/tendências, filtros rule-based.
2. Ranking (20-200): LTR (GBM/NN), arquitetura tower, tarefas binárias/multiuso (click, conversion, value).
3. Policy-aware re-rank (5-30 na lista final): diversificação/novidade/serendiposidade, quotas de marcas/categorias, RG/complance, capas de frequência, fairness.
4. Action: exibição/pool/e-mail/vitrine pessoal com cooldowns e «relógios silenciosos».
5. Feedback: logs 'impression→click→action→value', feedback negativo (skip, queixa).
3) Paradigmas de modelo
Conteúdo-based: intimidade por itema e perfil; ideal para uma partida fria de items.
Filtragem de colisão: user-user/item-item pela matriz de interações.
Factorizações/embeddings: MF/BPR/NeuMF, MLP duplo (user tower x item tower).
Learning-to-Rank: pairwise/listwise (LambdaMART, RankNet), otimização NDCG @ k.
Sessão/sequência: GRU4Rec, SASRec, Transformers (T5-style) - ordem/contexto na sessão.
Bandidos contextuais: LinUCB/Thompson para adaptações on-line rápidas e criativos.
RL: SlateQ/DQN/Policy Gradiente para Prémio Multifacetado (Retenção/LTV).
Abordagens causais/uplift: recomendações que levam em conta o crescimento em vez de «CTR crua».
4) Metas, limitações e formulação da tarefa
Metas: CTR/CTCVR, rendimento/margem/LTV, retenção, satisfação, velocidade.
Limitações: diversificação, quotas de provedores/categorias, capas de frequência, RG/complance, fairness/ética, 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
]
onde Penalty - violações de quotas/RG/frequência/monotonia.
5) Métricas e avaliação
Offline
Relevância/classificação: AUC/PR-AUC, Recall @ k, MAP, NDCG @ k.
Negócios: eRPM/eCPM, proxy-LTV, margem prevista.
Calibragem: Brier, ECE (importante para liminares/políticas).
Списки: coverage/diversity/novelty/serendipity.
Online
A/B/testes multirraciais: CTR, CTCVR, rendimento/sessão, retenção, queixas/dispensas (guardas), latency/timeout.
Avaliação causal: CUPED, quasiexportação (DiD/controle sintético) para randomização limitada.
Plift-métricas: Qini/AUUC, uplift @ k - para recomendações treatment-aware.
6) Início frio e descarga
Novos usuários: popular @ segment, pesquisa de conteúdo, conteúdo-based no primeiro clique, bandido com inteligência ampla.
Novos itemas: metadados/embeddings de texto/imagens + look-alike por estúdio/categoria.
Pequenos domínios: transfer learning, multi-task (shared tower), cross-domain distillation.
7) Diversificação, novidade, serendipotência
Algoritmos: MMR, xQuAD, PM-2; Multas de uniformidade.
Quotas: min/max por categorias/marcas/classes de risco.
Estabilidade das listas: inércia das posições, histerese das atualizações; Não «piscem» com a emissão.
8) Infraestrutura e MLOps
Função Store: Receitas PIT, TTL para fies de sessão, paridade online/offline.
Serviços ANN: FAISS/ScaNN, charding/kesh, replicação.
Ranker: real-time fici, calibragem, assinaturas de versões.
Policy/Re-rank camada: limitações/quotas/RG/frequência/diversidade.
SLA: end-to-end p95 ≤ 100–300 мс; fallback (popular-safe) na degradação.
Observabilidade: traçados 'correlation _ id', fich-drift (PSI), métricas de qualidade online, «pare-torneira».
9) Segurança, privacidade, ética
Minimizar PII, RLS/CLS, disfarçar.
Filtros RG/Complance antes da exibição, caps de frequência, «relógios silenciosos».
Diagnóstico Fairness por segmentos; Explicabilidade das razões da exibição; O caminho do recurso.
10) Código pseudo: híbrido 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 para criativos (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 capas de frequência
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) Definição de tabela (esboço de estratégia)
13) Anti-pattern
Otimizar «CTR crua» em vez de valor e incorporação.
Falta de camada de ré-rank → excesso de uniformidade, «túnel de visão».
Leques do futuro; Mistura de TZ; Definições de sinais não versadas.
Não há calibragem de probabilidades → liminares/políticas erradas.
Ignorar RG/ética/fairness → queixas/riscos/multas.
Online/offline Rashhron Fic e métrica - «engarrafamento» em venda.
Falta de fallback e de tornozeleira.
14) Folha de cheque de lançamento do recomendador
- Passaporte do sistema: alvos, limitações, métricas, proprietários, versões
- Recall/Rank/Re-rank divorciados; ANN aquecido, cajus configurados
- Fici PIT, calibrado, benchmark offline (NDCG/PR-AUC) ultrapassados
- Design A/B e guard; relatório de resolução-ready (efeito/risco)
- Restrições: diversity/quotas/RG/caps de frequência - implementados e monitores
- SLA p95, traçados, alertas, «pare-torneira» e popular-safe fallback
- Documentação, runibuki, plano de melhorias incorporativas
Resultado
Um forte sistema de recomendação é uma linha de montagem policy-aware: Recall híbrido/Rank/Re-rank, que otimiza o valor incorporativo sob limites de velocidade, ética e diversidade. Adicionando bandido/RL para adaptação on-line, disciplina MLOps e avaliação causal correta, você não recebe «listas para listas», mas soluções administradas que aumentam ROMI, LTV e satisfação dos usuários - estável e seguro.