TakéRecommendation engine, Doporučovací engine, RecSys, Personalizace obsahuPokročilý

Definice

Doporučovací systém je software, který každému uživateli vybírá z rozsáhlého katalogu malou množinu položek, jež ho pravděpodobně zaujmou. Odhad staví na historii chování (kliknutí, nákupy, hodnocení), na vlastnostech položek nebo na kombinaci obojího. Nasazuje se v e-shopech, streamovacích službách i zpravodajských aplikacích všude tam, kde je nabídka větší, než dokáže člověk projít.

Kategorie: Strojové učeníAktualizováno

Proč doporučovací systém vznikl

Katalog o statisících položek nelze zobrazit najednou. Doporučovací systém řeší situaci, kdy uživatel neumí formulovat dotaz: nepřijde s tím, že chce konkrétní film, ale chce „něco dobrého na večer“. Zatímco vyhledávání reaguje na explicitní záměr, doporučování ho odhaduje ze stop, které uživatel zanechal dřív, i ze stop ostatních lidí s podobným chováním.

Tři rodiny přístupů

Kolaborativní filtrování

Kolaborativní filtrování pracuje výhradně s maticí interakcí uživatel × položka. Nezajímá ho, co položka je; stačí, že lidé, kteří si koupili A a B, si často koupí i C. Klasickým řešením je maticová faktorizace, která uživatele i položky promítne do sdíleného prostoru latentních faktorů a predikci spočítá jako skalární součin vektorů.

Obsahové doporučování

Obsahové doporučování popisuje položku jejími atributy: žánrem, značkou, cenovou hladinou, textovým popisem převedeným na vektor. Profil uživatele je pak agregát atributů toho, co konzumoval. Výhodou je, že nová položka je doporučitelná od první minuty, protože nepotřebuje historii interakcí.

Hybridní systémy

Hybridní systémy obě rodiny kombinují a v praxi převažují. Typicky běží ve dvou fázích: rychlý kandidátní výběr zúží katalog na stovky položek a teprve poté je nákladnější model (gradient boosting nebo neuronová síť) přeřadí podle pravděpodobnosti kliknutí či konverze.

Problém studeného startu

Studený start je nejcitelnější slabina celého oboru. Nový uživatel nemá historii, nová položka nemá interakce, a čistě kolaborativní model o nich neví nic. Obvyklá řešení jsou nejprodávanější položky jako záloha, krátký onboardingový dotazník, využití atributů položky nebo kontextu (zařízení, lokalita, referrer). Podobným rizikem je zpětnovazební smyčka: model doporučuje to, co už dřív doporučil, sbírá na to data a postupně zužuje nabídku. Proto se do výsledků záměrně přidává explorace a měří se diverzita, ne jen přesnost.

Jak se měří kvalita

Offline metriky (precision@k, recall@k, NDCG) se počítají na historických datech a slouží k rychlému výběru modelu. Rozhodující je ale online A/B test, protože offline data jsou zkreslená předchozím doporučovačem. Sledují se CTR, konverze, tržba na návštěvu i dlouhodobé udržení uživatele, které se s krátkodobým CTR umí rozejít.

Právní rámec a data

Doporučovací systém stojí na osobních datech o chování, takže spadá pod GDPR: potřebuje právní titul, transparentní informování a respekt k odvolání souhlasu. Nařízení EU o digitálních službách navíc u větších platforem vyžaduje vysvětlení hlavních parametrů doporučování a možnost volby varianty bez profilování. Kvalita vstupu bývá důležitější než volba algoritmu: konzistentní identifikace uživatele, čistý feed produktů a spolehlivé logování událostí rozhodují víc než výběr mezi dvěma modely.

Příklady z praxe

  1. E-shop s doplňkovým prodejem

    E-shop s elektronikou zobrazuje na detailu produktu blok „Často kupováno společně“. Systém vytáhne z historie objednávek dvojice produktů, které se opakovaně objevují ve stejném košíku, a odfiltruje triviální kombinace typu stejný produkt v jiné barvě. Blok se vyhodnocuje samostatným A/B testem proti statickému seznamu příslušenství podle kategorie.

    -- kandidáti nakupovaní společně s produktem 4711
    SELECT b.product_id, COUNT(*) AS spolu
    FROM order_items a
    JOIN order_items b ON a.order_id = b.order_id
    WHERE a.product_id = 4711 AND b.product_id <> 4711
    GROUP BY b.product_id
    HAVING COUNT(*) >= 20
    ORDER BY spolu DESC
    LIMIT 10;
  2. Skóre podobnosti u nové položky

    Zpravodajský web publikuje článek, který zatím nikdo nečetl, takže kolaborativní model ho neumí doporučit. Redakční systém proto spočítá vektor z titulku a perexu a najde nejbližší dříve úspěšné články. Po prvních zhruba tisíci zobrazeních přebírá řízení kolaborativní model, který už má dost interakcí.

    import numpy as np
    
    def cosine(a, b):
        return float(a @ b / (np.linalg.norm(a) * np.linalg.norm(b)))
    
    novy = embed("Titulek nového článku")
    poradi = sorted(katalog, key=lambda c: cosine(novy, c.vector), reverse=True)
    doporuceni = poradi[:5]

Časté omyly

MýtusDoporučovací systém potřebuje hodnocení hvězdičkami.
Ve skutečnostiExplicitní hodnocení tvoří v reálném provozu zlomek dat a bývá zkreslené. Většina produkčních systémů staví na implicitní zpětné vazbě: zobrazení, kliknutí, doba čtení, přidání do košíku, dokončený nákup.
MýtusStačí nasadit lepší model a doporučení se zlepší.
Ve skutečnostiPřínos obvykle přichází z kvality dat a z návrhu produktu: kde se blok zobrazuje, kolik má míst, jak se řeší studený start a jaká metrika se optimalizuje. Výměna algoritmu bez těchto základů posune výsledek jen okrajově.
MýtusVyšší přesnost doporučení znamená spokojenějšího uživatele.
Ve skutečnostiModel optimalizovaný čistě na kliknutí sklouzává k nabízení už známých nebo bulvárních položek. Bez měření diverzity, novosti a dlouhodobého udržení může krátkodobé CTR růst a hodnota služby přitom klesat.

Časté dotazy

Kolik dat potřebuje doporučovací systém, aby dával smysl?
Doporučovací systém založený na kolaborativním filtrování obvykle potřebuje řádově desítky tisíc interakcí a dostatečnou hustotu, tedy aby průměrný uživatel měl víc než jednu či dvě události. Menší projekty proto začínají jednoduššími pravidly: nejprodávanější položky v kategorii, nedávno prohlížené, produkty společně nakupované. Tato pravidla poslouží zároveň jako záložní varianta, když model nemá dost dat. Přechod na naučený model se vyplatí ve chvíli, kdy A/B test ukáže, že pravidla už nepokrývají rozdíly mezi uživateli.
Jak řešit studený start u nového uživatele?
Studený start u nového uživatele se řeší kombinací několika signálů. Prvním je kontext dostupný okamžitě: vstupní stránka, zdroj návštěvy, zařízení, region, roční období. Druhým je popularita v rámci segmentu, která funguje jako rozumný výchozí stav. Třetím je rychlé učení v rámci relace, kdy systém po prvních dvou třech kliknutích už zužuje nabídku. Některé služby volí krátký onboarding s výběrem zájmů, ten ale zvyšuje odchodovost, takže se testuje jako každá jiná změna.
Musí být doporučovací systém real-time?
Doporučovací systém nemusí být plně real-time. Běžná architektura počítá embeddingy a kandidátní seznamy dávkově, typicky jednou za noc, a v požadavku probíhá jen rychlé přeřazení podle aktuální relace. Real-time zpracování se vyplatí tam, kde se záměr rychle mění: zpravodajství, marketplace s krátkou životností nabídky, streamování. Pro e-shop se stabilním katalogem přináší denní dávka většinu efektu za zlomek provozní složitosti a nákladů na infrastrukturu.
Jaké jsou právní povinnosti při provozu doporučovacího systému v EU?
Provoz doporučovacího systému v EU podléhá GDPR, protože chování uživatele je osobní údaj, pokud jde spojit s identifikátorem. Provozovatel potřebuje právní titul, informuje o zpracování a musí umět profil smazat. Nařízení o digitálních službách navíc ukládá online platformám popsat srozumitelně hlavní parametry doporučování, a u velmi velkých platforem nabídnout i variantu, která není založena na profilování. U reklamních doporučení hraje roli také souhlas s ukládáním údajů v koncovém zařízení.

Zdroje

  1. Recommender system(otevře se v novém okně)Wikipedia
  2. Recommendations AI documentation(otevře se v novém okně)Google Cloud
  3. arXiv(otevře se v novém okně)Cornell University
  4. Amazon Personalize Documentation(otevře se v novém okně)Amazon Web Services
  5. Digital Services Act(otevře se v novém okně)European Commission

Související pojmy

Potřebujete to vyřešit v praxi?

Poradíme, jak na to ve vašem projektu

Vysvětlit pojem je jedna věc, navrhnout kolem něj funkční řešení druhá. Ozvěte se a probereme, co dává smysl u vás.