GH GambleHub

Systemy rekomendacji

Systemy rekomendacji

System rekomendacji to nie tylko "model CTR. "Jest to rurociąg danych → kandydaci → ranking → polityka → działanie, → informacje zwrotne, które optymalizują wartość przyrostową w warunkach ograniczeń realnych (prędkość, czapki częstotliwości, różnorodność, etyka/zgodność).

1) Dane, sygnały i reprezentacje

Wydarzenia: widoki/kliknięcia/dodaje/zakupy/depozyty, czas zamieszkania, anulowanie.
Zawartość/katalog: atrybuty (kategorie/gatunki/studia/cena/świeżość/zmienność).
Profile użytkowników: RFM, preferencje, urządzenia/kanały, timeslots.
Kontekst: godzina/dzień/wakacje/mecze, locale/TZ, strona wyświetlania.
Jakość: przepisy punktowe w czasie, idempotencja zdarzeń, deadup/antiboot, maskowanie PII.
Osadzenia: użytkownik/element/kontekst w przestrzeni udostępnionej (MF/Word2Vec2Rec/transformatory), multimodalne (tekst/obrazy).

2) Architektura: Przypomnij → Rank → Re-rank → Akcja

1. Rekomendacja kandydatów (200-5000 kandydatów): ANN (FAISS/ScaNN), popularność/trendy, filtry oparte na zasadach.
2. Ranking (20-200): LTR (GBM/NN), architektury wieży, cele binarne/multi-target (kliknij, konwersja, wartość).
3. Zmiana rangi polityki (5-30 w ostatecznym wykazie): dywersyfikacja/nowość/serendipity, kwoty marki/kategorii, RG/zgodność, pułapy częstotliwości, uczciwość.
4. Akcja: pokaż/push/e-mail/osobista prezentacja z chłodnicami i „cichymi godzinami”.
5. Informacje zwrotne: log 'impression → click → action → value', negatywne opinie (skip, complaint).

3) Paradygmaty modelowe

Oparte na treści: bliskość przez funkcje IT i profil; idealny do zimnego startu na przedmioty.
Filtrowanie współpracy: użytkownik-użytkownik/element-element według macierzy interakcji.
Faktoryzacja/osadzanie: MF/BPR/NeuMF, dwupolowa MLP (wieża użytkownika × wieża elementowa).
Learning-to-Rank: para/listwise (LambdaMART, RankNet), NDCG optimization @ k.
Sesja/sekwencyjna: GRU4Rec, SASRec, Transformers (T5-style) - kolejność/kontekst w sesji.
Bandyci kontekstowi: LinUCB/Thompson do szybkich adaptacji online i kreatywności.
RL: SlاQ/DQN/Policy Gradient for multi-step award (retention/LTV).
Podejście przyczynowo-podwyższające: zalecenia uwzględniające wzrost, a nie „surowy CTR”.

4) Cele, ograniczenia i formułowanie zadania

Cele: CTR/CTCVR, przychód/marża/LTV, zatrzymywanie, satysfakcja, prędkość.
Ograniczenia: dywersyfikacja, kwoty dostawcy/kategorii, pułapy częstotliwości, RG/zgodność, sprawiedliwość/etyka, SLA p95.

Zmiana rangi polityki (przykład skalaryzacji):
[
\ 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 {Kara} _ j
]

w przypadku gdy karą są naruszenia kwot/RG/częstotliwości/monotonii.

5) Metryka i punktacja

Offline

Znaczenie/ranking: AUC/PR-AUC, Recall @ k, MAP, NDCG @ k.
Biznes: eRPM/eCPM, proxy-LTV, oczekiwany margines.
Kalibracja: Brier, ECE (ważne dla progów/polityk).
Сбиска: zasięg/różnorodność/nowość/serendipity.

Online

Testy A/B/multi-label: CTR, CTCVR, dochód/sesja, zatrzymanie, skargi/rezygnacje (poręcze), opóźnienie/wyczucie czasu.
Ocena przyczynowa: CUPED, quasi-eksperymenty (DiD/kontrola syntetyczna) przy ograniczonej randomizacji.
Uplift metrics: Qini/AUUC, uplift @ k - dla zaleceń terapeutycznych.

6) Zimny początek i słabość

Nowi użytkownicy: popularny @ segment, ankieta treści, zawartość na podstawie pierwszego kliknięcia, bandyta z szeroką inteligencją.
Nowe aytemy: metadane/osadzanie tekstu/obrazy + wygląd-podobne według studio/kategorii.
Małe domeny: transfer learning, multi-task (shared tower), cross-domain distillation.

7) Dywersyfikacja, nowość, serendipity

Algorytmy: MMR, xQuAD, PM-2; grzywny za monotonię.
Kwoty: min/max według kategorii/marki/klasy ryzyka.
Stabilność listy: bezwładność pozycji, histereza aktualizacji; nie „flash” wyjścia.

8) Infrastruktura i MLOp

Sklep funkcyjny: Przepisy PIT, TTL dla funkcji sesji, parytet online/offline.
Usługi ANN: FAISS/ScaNN, shading/cache, replikacja.
Ranker: funkcje w czasie rzeczywistym, kalibracja, podpisy wersji.
Polityka/warstwa re-ranking: limity/kwoty/RG/częstotliwości/różnorodność.
SLA: end-to-end p95 ≤ 100-300 са; upadek (popularne-bezpieczne) pod degradacją.
Obserwability: correlation _ id traces, feature drift (PSI), online quality metrics, stop crane.

9) Bezpieczeństwo, prywatność, etyka

Minimalizacja PII, RLS/CLS, maskowanie.
Filtry RG/zgodności przed wyświetlaczem, czapki częstotliwości, ciche godziny.
diagnostyka uczciwości według segmentów; wyjaśnienie przyczyn pokazu; ścieżka odwoławcza.

10) Pseudo-kod: Przypomnij → Rank → Re-rank hybrydowy

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 dla kreatywnych (szkic)

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: negatywne informacje zwrotne i czapki częstotliwości

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) Tabela decyzji

WarunekKontekstDziałanieOgraniczeniaKomentarz
'new _ user & low_history'na pokładziepopularny @ segment + zawartość-nasionaczapki częstotliwości, RGzimny początek
"session _ len> 3 & diversity_low'sesjaPonowny stopień MMR/xQuADmin 3 kategorieserendipity
„uplift _ push ≥”ofertyosobisty pushDo-Not-Disturb, zhaloby ≤ Khprzyrost, nie CTR
„risk _ RG ≥”Wszelkieblok zawartości ryzykaRG/Zgodnośćbezpieczeństwo

13) Anty-wzory

Optymalizacja „surowego CTR” zamiast przyrostu i wartości.
Brak warstwy re-rank → nadmiar monotonii, „tunel wzroku”.
Twarze z przyszłości; mieszanie TZ; definicje sygnałów nieujednoliconych.
Brak kalibracji prawdopodobieństwa → nieprawidłowe progi/zasady.
Ignoruj RG/etyka/uczciwość → skargi/ryzyko/grzywny.
Online/offline desynchronizowana funkcja i mierniki - „drawdown” w żywności.
Brak zaworu awaryjnego i stopu.

14) Lista kontrolna uruchomienia rekomendacji

  • Paszport systemowy - cele, ograniczenia, mierniki, właściciele, wersje
  • Recall/Rank/Re-rank rozwiedziony; ANN rozgrzane, bufory skonfigurowane
  • Przeszły funkcje PIT, kalibracja, wskaźniki offline (NDCG/PR-AUC)
  • Konstrukcja i szyny ochronne A/B; gotowe do podjęcia decyzji sprawozdanie
  • Ograniczenia: różnorodność/kwoty/RG/pułapy częstotliwości - wdrożone i monitorowane
  • SLA p95, ślady, wpisy, dźwig stop i popularny bezpieczny upadek
  • Dokumentacja, Runibooks, Plan poprawy przyrostowej

Wynik

Silnym systemem rekomendacji jest rurociąg polityczny: hybrydowy Recall/Rank/Re-rank, który optymalizuje wartość przyrostową pod względem prędkości, etyki i ograniczeń różnorodności. Dodając bandytów/RL do adaptacji online, MLOps dyscypliny i prawidłowej oceny przyczynowej, otrzymujesz nie „listy dla dobra list”, ale zarządzane rozwiązania, które zwiększają ROMI, LTV i zadowolenie użytkownika - stabilne i bezpieczne.

Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.