Każdy sklep internetowy chce pokazywać klientom produkty, które ich zainteresują. Ale za hasłem „rekomendacje AI" kryje się kilkadziesiąt różnych metod — od prostych porównań treści, przez analizę zachowań tysięcy klientów, po sieci neuronowe przetwarzające miliardy interakcji. W tym artykule opisujemy najważniejsze z nich — prostym językiem, z przykładami z e-commerce i bez zbędnego żargonu.
Dopasowanie po treści produktu
Najprostsza idea: jeśli klient kupił czerwone buty do biegania, pokaż mu inne czerwone buty do biegania. System patrzy na cechy samego produktu — nazwę, opis, kategorię, atrybuty — i szuka produktów z podobnymi cechami. To jak ekspedient, który słyszy „chcę coś podobnego" i pokazuje podobne modele z półki.
Technicznie działa to tak: system zamienia opis każdego produktu na zbiór ważonych słów kluczowych (im rzadsze słowo, tym ważniejsze — bo „buty" mówi niewiele, ale „gore-tex" dużo). Potem mierzy, jak bardzo opisy dwóch produktów się pokrywają. Im więcej wspólnych, ważnych słów — tym produkty są bardziej „podobne".
Wada? System nie rozumie relacji między klientami. Nie wie, że ludzie kupujący buty trekkingowe często kupują też plecaki turystyczne — bo patrzy tylko na cechy produktów, nie na zachowania klientów. Druga wada to tak zwana bańka filtrująca — system poleca wyłącznie rzeczy bardzo podobne do tego, co klient już zna, i nigdy go nie zaskoczy czymś nowym.
Dopasowanie po zachowaniu klientów
Tutaj system nie patrzy na cechy produktów, tylko na zachowania klientów. Pomysł: jeśli klient A i klient B kupowali podobne rzeczy w przeszłości, to co kupił A, ale nie kupił B — prawdopodobnie spodoba się B. To jak polecenie od znajomego, który ma podobny gust.
Dwa warianty: po klientach albo po produktach
Oba warianty korzystają z tych samych danych — tabeli „kto co kupił". Różnica polega na tym, z której strony tabeli patrzysz.
Po klientach (user-based) — porównujesz wiersze tabeli, czyli klientów. Darek kupił buty trekkingowe i kurtkę. Kto kupował podobne rzeczy? Ania — też buty i kurtkę, a dodatkowo plecak. Wniosek: poleć Darkowi plecak. System szuka klientów o podobnych zakupach i poleca to, co kupili podobni klienci, a czego dany klient jeszcze nie ma.
Po produktach (item-based) — porównujesz kolumny tabeli, czyli produkty. Buty trekkingowe kupili: Ania, Bartek, Darek, Ewa. Plecak kupili: Ania, Bartek, Ewa. Trzy z czterech osób kupujących buty kupiły też plecak — te produkty mają bardzo podobne grupy kupujących, więc system traktuje je jako „podobne". Klient ogląda buty? Poleć plecak.
Ta sama tabela, ale raz porównujesz wiersze (klientów), a raz kolumny (produkty). Amazon zastosował wariant po produktach w 1998 roku — okazał się do 28 razy szybszy i do 27% dokładniejszy. Dlaczego szybszy? Kolumny (produkty) zmieniają się wolno — buty trekkingowe i plecaki mają podobnych kupujących dziś i za miesiąc. Wystarczy przeliczyć podobieństwa produktów raz dziennie. Wiersze (klienci) zmieniają się z każdym zakupem — w dużym sklepie z milionami klientów ciągłe przeliczanie podobieństw między ludźmi jest niepraktyczne.
Ukryte wymiary preferencji
Wyobraź sobie ogromną tabelę: wiersze to klienci, kolumny to produkty, a w każdej komórce jest informacja „kupił / nie kupił". Większość komórek jest pusta — jeden klient widzi ułamek procenta całego katalogu. Ta metoda próbuje wypełnić te puste komórki.
Jak? Zakłada, że istnieją ukryte cechy (np. „sportowy styl", „premium materiały", „moda casual"), które opisują zarówno klientów, jak i produkty. Klient, który lubi sportowe ubrania premium, dostanie wysokie wyniki przy produktach, które też mają wysokie wartości na tych samych osiach. System sam odkrywa te cechy — nie trzeba ich definiować ręcznie.
Tę technikę przetestowano na wielką skalę w konkursie Netflix Prize (2006–2009). Netflix zaoferował milion dolarów za algorytm, który poprawi ich rekomendacje filmów o 10%. Wygrała drużyna łącząca tę metodę z kilkoma innymi — żadna pojedyncza nie wystarczyła.
Embeddingi — produkty i klienci jako wektory
Embedding to sposób na zamianę produktu (albo klienta) w listę liczb — wektor. Każdy produkt staje się punktem w przestrzeni wielowymiarowej, a produkty podobne lądują blisko siebie. To jak mapa, na której buty trekkingowe są blisko plecaków turystycznych, a daleko od biżuterii.
Od słów do produktów
Pomysł wziął się z analizy tekstu. W 2013 roku Google opublikował metodę, która zamieniała słowa na wektory tak, że słowa o podobnym znaczeniu miały podobne wektory. Szybko okazało się, że tę samą technikę można zastosować do produktów: zamiast zdań ze słowami — sekwencje zakupów. Jeśli klienci często kupują produkt A tuż przed produktem B, to ich wektory będą blisko siebie.
Nowy produkt bez historii? Nie ma problemu
Nowy produkt nie ma historii zakupów, więc nie ma wektora. Rozwiązanie: dodać metadane (kategoria, marka, cena) do procesu uczenia. Nowy produkt od razu dostaje sensowny wektor na podstawie swoich cech — nie trzeba czekać na pierwsze zakupy.
Obraz + tekst razem
Najnowsze podejścia łączą tekst i obraz. Pinterest trenuje model, który jednocześnie analizuje zdjęcie produktu i jego opis. Efekt: dwa produkty mogą być uznane za podobne, bo wyglądają podobnie na zdjęciach — nawet jeśli mają zupełnie różne nazwy.
Dlaczego prosty średni wektor nie działa
Intuicyjne podejście: weź wektory wszystkich produktów, które klient kupił, i policz średnią. Ten średni wektor to „profil klienta" — polecaj mu produkty najbliższe tej średniej. Proste, szybkie, eleganckie. I wadliwe.
Klient kupuje elektronikę i narzędzia ogrodowe. Wektor elektroniki jest w jednym rogu przestrzeni, wektor ogrodnictwa w drugim. Ich średnia ląduje gdzieś pośrodku — może w okolicach sprzętu kuchennego, którym klient w ogóle się nie interesuje. Im bardziej zróżnicowane zainteresowania, tym bardziej średnia jest bezużyteczna. Badania potwierdzają: klienci o szerokich gustach systematycznie dostają gorsze rekomendacje, gdy system używa jednego wektora na klienta.
- Średnia z wielu zainteresowań = bliżej żadnego
- Klienci o szerokich gustach dostają słabe rekomendacje
- System nie rozumie, że klient ma kilka oddzielnych potrzeb
- Osobny wektor dla każdej grupy zainteresowań
- Rekomendacje trafne w każdej kategorii
- System rozpoznaje, że klient szuka butów OR elektroniki
Rozwiązanie: kilka profili zamiast jednego
Zamiast jednego wektora — kilka. Każdy opisuje inną grupę zainteresowań klienta. Pinterest grupuje historię klienta na klastry: okazjonalny użytkownik dostaje 3–5 klastrów zainteresowań, aktywny — nawet 75–100. Każdy klaster jest reprezentowany przez konkretny, rzeczywisty produkt — nie przez średnią. Efekt: +20% zaangażowania na stronach zakupowych.
Alibaba podeszła podobnie — 5 do 7 profili zainteresowań na klienta, dopasowywanych dynamicznie. Kolejne rozwiązanie dodaje regulację balansu między trafnością a różnorodnością rekomendacji — bo czasem lepiej pokazać coś nowego niż coś idealnie dopasowanego.
Sieci neuronowe w rekomendacjach
Sieci neuronowe potrafią wyłapać bardziej złożone wzorce niż klasyczne metody i skalują się do miliardów interakcji.
Dwa etapy — jak w sklepie
YouTube opisał podejście, które stało się standardem: dwa etapy. Pierwszy z miliardów filmów wybiera kilkaset kandydatów — szybko i z grubsza. Drugi precyzyjnie sortuje tych kandydatów. To jak ekspedient, który najpierw przynosi 50 par butów z magazynu, a potem klient wybiera z tych 50.
Konkretne pary + ogólne wzorce
Google pokazał, że system musi jednocześnie „zapamiętywać" konkretne powiązania (klienci, którzy kupili X, kupili też Y) i „uogólniać" (klient lubi sportowe ubrania premium). Jedno bez drugiego nie działa dobrze.
Nie cała historia jest ważna
Alibaba wprowadził mechanizm, w którym system „podświetla" tylko istotną część historii klienta. Gdy decyduje, czy polecić koszulkę sportową, patrzy głównie na wcześniejsze zakupy odzieży sportowej — a ignoruje to, że tydzień temu klient kupił książkę kucharską. Efekt: +10% klikalności.
Sekwencje i sesje — kontekst ma znaczenie
Wcześniejsze metody traktowały historię klienta jak zbiór — nie liczyła się kolejność. Ale kolejność ma ogromne znaczenie: klient, który najpierw oglądał laptopy, potem torby na laptopa, a potem myszki — prawdopodobnie właśnie kupił komputer i szuka akcesoriów. Odwrotna kolejność sugerowałaby coś innego.
Pierwsze podejścia (2016) przetwarzały kliknięcia jedno po drugim. Kolejne dodały mechanizm uwagi: system rozumie, że ostatnie kliknięcia w sesji mówią więcej o intencji niż te sprzed 10 minut. Przełomem było zastosowanie tej samej architektury, na której bazują modele językowe jak GPT — system analizuje całą sesję naraz i przypisuje wagę każdemu kliknięciu w kontekście pozostałych.
Najnowsze podejścia modelują sesję jako sieć połączeń — gdy klient ogląda produkt A, potem B, potem wraca do A — ta nawigacja mówi więcej niż sama kolejność kliknięć.
Grafy — sieć powiązań między produktami
Produkty, kategorie, marki, klienci — wszystko w e-commerce jest ze sobą powiązane siecią relacji. Metody grafowe uczą się na tej strukturze.
Pinterest opisał system działający na grafie z 3 miliardami produktów i 18 miliardami połączeń. Przetworzenie całości naraz jest niemożliwe, więc system dla każdego produktu eksploruje tylko jego najbliższe otoczenie. Wynik: 150% poprawy trafności.
Intuicyjna metafora: preferencje klienta rozchodzą się po grafie jak fale na wodzie. Klient obejrzał film z danym aktorem — to pierwszy „krąg". Inni aktorzy grający z tym aktorem to drugi krąg. Filmy tych aktorów — trzeci. System sam decyduje, które połączenia są ważniejsze.
Eksploracja kontra eksploatacja
Wszystkie poprzednie metody mają wspólną wadę: optymalizują pod kątem tego, co system już wie o kliencie. Ale co z produktami, których klient nie zna, a które mógłby polubić? To problem eksploracji vs eksploatacji — znany w informatyce jako „problem wielorękich bandytów".
Nazwa pochodzi od automatów w kasynie: masz kilka automatów (bandytów), każdy z innym prawdopodobieństwem wygranej. Czy grasz ciągle na tym, który dotychczas dawał najlepsze wyniki (eksploatacja)? Czy próbujesz nowych, żeby może znaleźć lepszy (eksploracja)?
Yahoo! zastosował tę ideę do rekomendacji newsów — system celowo pokazuje mniej popularne artykuły, żeby sprawdzić, czy klientowi się nie spodobają. Netflix używa tego samego podejścia do wybierania, który miniaturowy obrazek pokazać przy danym filmie — różni użytkownicy widzą różne miniaturki tego samego tytułu.
Krok dalej: zamiast optymalizować pojedyncze kliknięcie, system optymalizuje całą ścieżkę klienta. Może warto pokazać mniej oczywisty produkt teraz, żeby klient wrócił jutro. Rekomendacja traktowana jak gra strategiczna z wieloma ruchami, nie jak jednorazowa decyzja.
Nie ma jednego najlepszego algorytmu
Metoda, która doskonale działa w sklepie z modą, może dawać słabe wyniki w sklepie z elektroniką. To nie jest opinia — istnieje na to matematyczny dowód. W 1997 roku David Wolpert i William Macready opublikowali twierdzenie NFL (No Free Lunch): jeśli weźmiesz średnią wydajność dowolnego algorytmu na wszystkich możliwych problemach, to każdy algorytm daje dokładnie taki sam wynik. Innymi słowy — nie da się zbudować jednego algorytmu, który byłby najlepszy wszędzie. Jeśli algorytm wygrywa w jednej branży, musi tracić w innej. To fundamentalne ograniczenie, nie kwestia implementacji.
| Branża | Dominująca metoda | Dlaczego |
|---|---|---|
| Moda / odzież | Analiza wizualna | Wygląd i styl ważniejsze niż specyfikacja. Klient szuka „czegoś podobnego wizualnie" |
| Elektronika | Porównania specyfikacji + akcesoria | Klient porównuje parametry. Rekomendacje komplementarne (etui do telefonu) ważniejsze niż podobne |
| Spożywka / grocery | Analiza koszyków | Klienci kupują zestawy (mleko + płatki). Wzorce wspólnych zakupów dominują nad podobieństwem produktów |
| Muzyka / video | Analiza sesji i sekwencji | Kontekst i nastrój chwili ważniejsze niż ogólne preferencje |
| Książki / treści | Zachowania klientów | Treść trudna do analizy maszynowej. „Ludzie o podobnym guście" działa lepiej |
Dlatego w praktyce najlepsze systemy łączą wiele metod — tak jak zwycięska drużyna Netflix Prize połączyła ponad 100 różnych modeli.
Jak to łączy się z Witly
Witly ma do dyspozycji wszystkie klocki opisane w tym artykule: zaawansowane silniki obliczające podobieństwo produktów, systemy analityczne śledzące zachowanie klientów w czasie rzeczywistym, wiele profili zainteresowań per klient, mechanizmy eksploracji nowych produktów. To jak dobrze zaopatrzona kuchnia — masz wszystkie składniki i narzędzia, a to co z nich przygotujesz zależy od tego, kto przyszedł na obiad. Sklep z modą dostaje inny zestaw algorytmów niż sklep z elektroniką — bo te same składniki łączy się inaczej w zależności od branży.
Witly dba też o eksplorację — świeżo dodane produkty automatycznie dostają tymczasowy boost w rankingu i w rekomendacjach. Boost maleje stopniowo w miarę zbierania danych o kliknięciach i sprzedaży, a po dwóch tygodniach produkt jest oceniany wyłącznie na podstawie wyników. Dzięki temu nowe produkty nie toną na dnie katalogu w oczekiwaniu na pierwsze interakcje.
Klienci mają dostęp do wielu silników rekomendacji, każdy dopasowany do innego kontekstu. Witly dobiera i testuje metody per sklep. Szczegóły działania Product DNA opisujemy w artykule Rekomendacje produktowe oparte na AI, a mechanizmy deduplikacji i impression discounting — w artykule Jak „Podobne produkty" robią małe sklepy, a jak profesjonaliści.
Podsumowanie
Rekomendacje produktowe to nie jeden algorytm — to dziesiątki metod, z których każda rozwiązuje inny problem. Nie ma jednej najlepszej — jest coraz lepsze zrozumienie, która metoda działa w jakim kontekście. I to jest prawdziwa wartość: nie odpowiedź „użyj algorytmu X", ale wiedza, kiedy który algorytm ma sens.
Masz pytania? Skontaktuj się z nami.
Źródła
- Pazzani & Billsus — Content-Based Recommendation Systems, The Adaptive Web, 2007
link.springer.com/chapter/10.1007/978-3-540-72079-9_10 - Nguyen, Hui, Harper, Terveen & Konstan — Exploring the Filter Bubble, WWW 2014
dl.acm.org/doi/10.1145/2566486.2568012 - Sarwar, Karypis, Konstan & Riedl — Item-based Collaborative Filtering Recommendation Algorithms, WWW 2001
dl.acm.org/doi/10.1145/371920.372071 - Hu, Koren & Volinsky — Collaborative Filtering for Implicit Feedback Datasets, ICDM 2008
ieeexplore.ieee.org/document/4781121/ - Linden, Smith & York — Amazon.com Recommendations: Item-to-Item Collaborative Filtering, IEEE Internet Computing, 2003
ieeexplore.ieee.org/document/1167344/ - Koren, Bell & Volinsky — Matrix Factorization Techniques for Recommender Systems, IEEE Computer, 2009
ieeexplore.ieee.org/document/5197422/ - Koren — Factorization Meets the Neighborhood: A Multifaceted Collaborative Filtering Model, KDD 2008
dl.acm.org/doi/10.1145/1401890.1401944 - Rendle — Factorization Machines, ICDM 2010
ieeexplore.ieee.org/document/5694074/ - Mikolov, Sutskever, Chen, Corrado & Dean — Distributed Representations of Words and Phrases, NeurIPS 2013
arxiv.org/abs/1310.4546 - Grbovic et al. — E-commerce in Your Inbox: Product Recommendations at Scale (Prod2Vec), KDD 2015
dl.acm.org/doi/10.1145/2783258.2788627 - Vasile, Smirnova & Conneau — Meta-Prod2Vec: Product Embeddings Using Side-Information, RecSys 2016
arxiv.org/abs/1607.07326 - Pinterest Research — ItemSage: Learning Product Embeddings for Shopping Recommendations, KDD 2022
cs.stanford.edu/people/jure/pubs/itemsage-kdd22.pdf - Wang et al. — Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba, KDD 2018
arxiv.org/abs/1803.02349 - Bendada et al. — On the Consistency of Average Embeddings for Item Recommendation, 2023
arxiv.org/abs/2308.12767 - Zhao et al. — Can One Embedding Fit All? Multi-Interest Learning, WWW 2024
arxiv.org/abs/2402.13495 - Pal et al. — PinnerSage: Multi-Modal User Embedding Framework, KDD 2020
arxiv.org/abs/2007.03634 - Li et al. — Multi-Interest Network with Dynamic Routing (MIND), CIKM 2019
arxiv.org/abs/1904.08030 - Cen et al. — Controllable Multi-Interest Framework (ComiRec), KDD 2020
arxiv.org/abs/2005.09347 - Covington, Adams & Sargin — Deep Neural Networks for YouTube Recommendations, RecSys 2016
dl.acm.org/doi/10.1145/2959100.2959190 - Cheng et al. — Wide & Deep Learning for Recommender Systems, DLRS 2016
arxiv.org/abs/1606.07792 - Guo et al. — DeepFM: A Factorization-Machine based Neural Network, IJCAI 2017
arxiv.org/abs/1703.04247 - Zhou et al. — Deep Interest Network for Click-Through Rate Prediction (DIN), KDD 2018
arxiv.org/abs/1706.06978 - Kang & McAuley — Self-Attentive Sequential Recommendation (SASRec), ICDM 2018
arxiv.org/abs/1808.09781 - Sun et al. — BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations, CIKM 2019
arxiv.org/abs/1904.06690 - Wu et al. — Session-based Recommendation with Graph Neural Networks (SR-GNN), AAAI 2019
arxiv.org/abs/1811.00855 - Ying et al. — Graph Convolutional Neural Networks for Web-Scale Recommender Systems (PinSage), KDD 2018
arxiv.org/abs/1806.01973 - He et al. — LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation, SIGIR 2020
arxiv.org/abs/2002.02126 - Wang et al. — RippleNet: Propagating User Preferences on the Knowledge Graph, CIKM 2018
arxiv.org/abs/1803.03467 - Li, Chu, Langford & Schapire — A Contextual-Bandit Approach to Personalized News Article Recommendation, WWW 2010
dl.acm.org/doi/10.1145/1772690.1772758 - Wolpert & Macready — No Free Lunch Theorems for Optimization, IEEE Transactions on Evolutionary Computation, 1997
ieeexplore.ieee.org/document/585893
