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.
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
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;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
- Recommender system(otevře se v novém okně)
- Recommendations AI documentation(otevře se v novém okně)
- arXiv(otevře se v novém okně)
- Amazon Personalize Documentation(otevře se v novém okně)
- Digital Services Act(otevře se v novém okně)