Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline

Witajcie! Nazywam się Sasza, jestem CTO i współzałożycielem w LoyaltyLab. Dwa lata temu z przyjaciółmi, jak wszyscy biedni studenci, chodziłem wieczorem po piwo do najbliższego sklepu. Bardzo nas frustrowało, że detalista, wiedząc, że przyjdziemy po piwo, nie oferuje zniżki na chipsy lub krakersy, chociaż to takie logiczne! Nie zrozumieliśmy, dlaczego taka sytuacja ma miejsce i postanowiliśmy założyć własną firmę. No i jako bonus, dostawać zniżki na te same chipsy w każdy piątek.

Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline

Doszło do tego, że z materiałem na temat strony technicznej produktu występuję na NVIDIA GTC. Cieszymy się, że możemy dzielić się naszymi osiągnięciami z społecznością, dlatego publikuję mój wykład jako artykuł.

Wprowadzenie

Jak to bywa na początku drogi, zaczęliśmy od przeglądu tego, jak tworzy się systemy rekomendacji. Najpopularniejsza okazała się architektura następującego rodzaju:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline

Składa się z dwóch części:

  1. Losowanie kandydatów do rekomendacji przy użyciu prostej i szybkiej modelu, zwykle opartej na filtracji kolaboracyjnej.
  2. Ranking kandydatów bardziej skomplikowanym i wolnym modelem zawartości z uwzględnieniem wszystkich możliwych cech w danych.

W tym oraz w kolejnych miejscach będę używał następujących terminów:

  • candidate/kandydat do rekomendacji — para użytkownik-produkt, która potencjalnie może trafić do rekomendacji w produkcji.
  • candidates extraction/extractor/metoda ekstrakcji kandydatów — proces lub metoda ekstrakcji 'kandydatów do rekomendacji' na podstawie dostępnych danych.

Na pierwszym kroku zwykle używa się różnych wariantów filtracji kolaboracyjnej. Najbardziej popularna to ALS. Zadziwiające, że większość artykułów na temat systemów rekomendacyjnych koncentruje się tylko na różnych ulepszeniach modeli kolaboracyjnych na pierwszym etapie, a nikt specjalnie nie opowiada o innych metodach losowania. Dla nas podejście z wykorzystaniem tylko modeli kolaboracyjnych oraz różnych ich optymalizacji nie przyniosło oczekiwanej jakości, więc zagłębiliśmy się w badania w tej konkretnej dziedzinie. A na końcu artykułu pokażę, jak bardzo udało nam się poprawić ALS, który był naszym punktem odniesienia.

Zanim przejdę do opisu naszego podejścia, ważne jest, aby zauważyć, że w przypadku rekomendacji w czasie rzeczywistym, gdy musimy uwzględniać dane, które miały miejsce 30 minut temu, naprawdę nie ma zbyt wielu metod, które mogą działać w wymaganym czasie. Jednak w naszym przypadku zbieranie rekomendacji odbywa się nie częściej niż raz dziennie, a w większości przypadków — raz w tygodniu, co daje nam możliwość wykorzystania złożonych modeli i wielokrotnego zwiększenia jakości.

Weźmy za punkt odniesienia metryki, które pokazuje wyłącznie ALS w zadaniu pozyskiwania kandydatów. Kluczowe metryki, które śledzimy, są następujące:

  • Precision — udział poprawnie dobranych kandydatów z próby.
  • Recall — udział występujących kandydatów z tych, którzy rzeczywiście znajdowali się w docelowym przedziale.
  • F1-score — miara F obliczona na podstawie poprzednich dwóch punktów.

Będziemy również patrzeć na metryki końcowego modelu po nauce z zastosowaniem gradientowego wzmacniania z dodatkowymi cechami treściowymi. Tutaj także mamy 3 główne metryki:

  • precision@5 — średni udział towarów z top-5 według prawdopodobieństwa dla każdego klienta.
  • response-rate@5 — konwersja klientów z wizyty w sklepie na zakup przynajmniej jednej spersonalizowanej oferty (w jednej ofercie 5 towarów).
  • avg roc-auc per user — średni roc-auc dla każdego klienta.

Warto zauważyć, że wszystkie wymienione metryki są mierzone na kroswalidacji czasowej, to znaczy, że uczenie odbywa się w pierwszych k tygodniach, a jako dane testowe przyjmowane jest k+1 tydzień. W ten sposób sezonowe wzrosty/spadki minimalnie wpływają na interpretację jakości modeli. Na wszystkich grafach oś abscys odpowiada numerowi tygodnia w kroswalidacji, a oś ordinate — wartości wskazanej metryki. Wszystkie grafy są oparte na transakcyjnych danych jednego klienta, aby porównania między sobą były poprawne.

Zanim zacznę opisywać nasze podejście, najpierw przyjrzyjmy się punktowi odniesienia, którym jest wyuczony model ALS.
Metryki pozyskiwania kandydatów:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline

Finalne metryki:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline

Podchodzę do wszystkich realizacji algorytmów jak do pewnej hipotezy biznesowej. W ten sposób, bardzo ogólnie, wszelkie modele kolaboracyjne można rozumieć jako hipotezę, że “ludzie mają tendencję do kupowania tego, co kupują osoby podobne do nich”. Jak już mówiłem, nie ograniczaliśmy się jedynie do takiej semantyki, a oto jakie inne hipotezy jeszcze świetnie działają na danych w offline'owym handlu:

  1. Co było wcześniej kupowane.
  2. Coś podobnego do tego, co było kupowane wcześniej.
  3. Okres dawno dokonanych zakupów.
  4. Popularne według kategorii/marki.
  5. Naprzemienne zakupy różnych towarów z tygodnia na tydzień (łańcuchy Markowa).
  6. Podobne produkty dla klientów, według cech, zbudowanych różnymi modelami (Word2Vec, DSSM, itd.).

Co kupowano wcześniej

Najbardziej oczywista heurystyka, która bardzo dobrze działa w handlu detalicznym. Tutaj bierzemy wszystkie produkty, które posiadacz karty lojalnościowej kupił w ciągu ostatnich K dni (zwykle 1-3 tygodnie), lub K dni sprzed roku. Stosując tylko tę metodę, uzyskujemy następujące metryki:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline

Jest oczywiste, że im dłuższy okres bierzemy, tym większy mamy recall a mniejszy precision i odwrotnie. Lepsze wyniki średnio wśród klientów daje “ostatnie 2 tygodnie”.

Coś podobnego do tego, co kupowano wcześniej

Nie ma nic dziwnego w tym, że dla handlu detalicznego “co kupowano wcześniej” działa dobrze, ale pozyskiwanie kandydatów tylko z tego, co użytkownik już kupił, nie jest zbyt efektywne, ponieważ trudno w ten sposób zaskoczyć klienta nowym produktem. Dlatego proponujemy nieco udoskonalić tę heurystykę za pomocą tych samych modeli kolaboracyjnych. Z wektorów, które uzyskaliśmy podczas nauki ALS, możemy znaleźć podobne produkty do tych, które użytkownik już kupił. Takie podejście jest bardzo podobne do “podobnych filmów” w serwisach do oglądania treści wideo, ale ponieważ nie wiemy, co w danej chwili je/kupuje użytkownik, możemy jedynie szukać podobieństw do tego, co już kupił, tym bardziej, że wiemy, jak dobrze to działa. Stosując tę metodę na transakcjach użytkowników z ostatnich 2 tygodni, uzyskujemy następujące metryki:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline

Tutaj k — liczba podobnych produktów, które są wydobywane dla każdego zakupionego produktu przez klienta w ciągu ostatnich 14 dni.
To podejście szczególnie dobrze sprawdziło się u klienta, któremu zależało na tym, aby nie rekomendować produktów, które już były w historii zakupów użytkownika.

Okres dawno dokonanych zakupów

Jak już ustaliliśmy, ze względu na wysoką częstotliwość zakupu towarów, pierwszy sposób dobrze działa w naszej specyfice. Ale co robić z produktami takimi jak proszek do prania/szampon, itd. Tzn. z takimi produktami, które są potrzebne raczej nie co tydzień-dwa i które wcześniejsze metody nie mogą w wydobyć. Stąd pojawia się kolejny pomysł — proponuje się wyliczać średni okres zakupu każdego towaru na podstawie klientów, którzy kupili towar więcej niż k raz. A następnie wydobywać to, co najprawdopodobniej już się skończyło u klienta. Wyliczone okresy dla towarów można sprawdzić ręcznie pod kątem adekwatności:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline

A potem będziemy patrzeć, czy koniec okresu produktu przypada w czasie, gdy rekomendacje będą w produkcji i próbować wydobyć to, co się wpasowuje. Można to zilustrować w taki sposób:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline

Mamy tutaj dwa główne przypadki, które można rozważyć:

  1. Czy należy próbować wydobywać towary dla klientów, którzy kupili towar mniej niż K razy.
  2. Czy należy próbować wydobywać towar, jeśli koniec jego okresu przypada przed rozpoczęciem docelowego okresu.

Na następnym wykresie widać, jakie wyniki osiąga ta metoda przy różnych hiperparametrach:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline
ft — Brać tylko klientów, którzy kupili produkt co najmniej K (tutaj K=5) razy
tm — Brać tylko kandydatów, którzy mieszczą się w docelowym okresie

Nie dziwi, że w stanie (0, 0) największym przypomnieniu i najmniejszym dokładności, ponieważ w takich warunkach wydobywa się najwięcej kandydatów. Jednak najlepsze wyniki osiąga sytuacja, gdy nie próbujemy wydobywać towarów dla klientów, którzy kupili dany towar mniej niż k raz i wydobywamy również towary, których koniec okresu przypada przed docelowym okresem.

Popularne w kategorii

Jeszcze jeden dość oczywisty pomysł — wydobywać popularne towary w różnych kategoriach lub markach. Tutaj dla każdego klienta obliczamy top-k W przypadku 'ulubionych' kategorii/marki wydobywamy 'popularne' produkty z tej kategorii/marki. W naszym przypadku określimy 'ulubione' i 'popularne' na podstawie liczby zakupów produktów. Dodatkową zaletą tego podejścia jest jego zastosowanie w przypadku zimnego startu. Oznacza to, że dla kupujących, którzy dokonali bardzo niewielu zakupów, nie byli w sklepie od dłuższego czasu lub dopiero co aktywowali kartę lojalnościową, łatwiej i najlepiej jest polecać produkty z tych, które są popularne wśród klientów z istniejącą historią. Otrzymujemy następujące metryki:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline
Liczba po słowie 'category' oznacza poziom zagnieżdżenia kategorii.

Ogólnie rzecz biorąc, nie jest zaskoczeniem, że najlepsze wyniki osiągają bardziej wąskie kategorie, ponieważ wydobywają bardziej precyzyjne 'ulubione' produkty dla kupujących.

Zakupy różnych produktów z tygodnia na tydzień.

Interesujące podejście, którego nie widziałem w artykułach dotyczących systemów rekomendacji — dość prosty i jednocześnie skuteczny statystyczny metoda łańcuchów Markowa. Zaczynamy od dwóch różnych tygodni, a następnie dla każdego kupującego tworzymy pary produktów. [kupił w tygodniu i]-[kupił w tygodniu j], gdzie j > i., a stąd obliczamy dla każdego produktu prawdopodobieństwo przejścia do innego produktu w następnym tygodniu. Oznacza to, że dla każdej pary produktów producti-productj liczymy ich liczbę w znalezionych parach i dzielimy przez liczbę par, w których producti był w pierwszym tygodniu. Aby wydobyć kandydatów, bierzemy ostatni paragon kupującego i wyciągamy top-k najbardziej prawdopodobne kolejne produkty z macierzy przejść, którą otrzymaliśmy. Proces budowy macierzy przejść wygląda następująco:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline

Z prawdziwych przykładów w macierzy prawdopodobieństw przejść widzimy następujące interesujące zjawiska:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline
Można zauważyć ciekawe zależności ujawniające się w zachowaniach konsumenckich: na przykład, miłośnicy cytrusów lub marka mleka, z której z dużym prawdopodobieństwem przechodzą do innej. Nie jest zaskoczeniem, że produkty z dużą częstotliwością powtarzalnych zakupów, takie jak masło, również się tutaj pojawiają.

Metryki w metodzie łańcuchów Markowa są następujące:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline
k — liczba produktów, które są wydobywane dla każdego zakupionego produktu z ostatniej transakcji kupującego.
Jak widzimy, najlepsze wyniki osiąga konfiguracja z k=4. Wzrost w 4. tygodniu można wyjaśnić sezonowym zachowaniem w okresie świątecznym. 

Podobne produkty dla klientów, według parametrów stworzonych przez różne modele

Oto doszliśmy do najtrudniejszej i najciekawszej części – wyszukiwania najbliższych sąsiadów według wektorów klientów i produktów, zbudowanych według różnych modeli. W swojej pracy wykorzystujemy 3 takie modele:

  • ALS
  • Word2Vec (Item2Vec dla takich zadań)
  • DSSM

Z ALS już się zapoznaliśmy, o tym, jak jest on trenowany, można przeczytać tutaj. W przypadku Word2Vec korzystamy z powszechnie znanej realizacji modelu z gensim. Analogicznie jak w tekstach, definiujemy transakcję jako paragon zakupu. W ten sposób, budując wektor produktu, model uczy się przewidywać kontekst towaru na paragonie (pozostałe produkty na paragonie). W danych e-commerce lepiej używać sesji klienta zamiast paragonu, o tym świetnie pisali goście z Ozon. Rozbiór DSSM jest bardziej interesujący. Początkowo został napisany przez ludzi z Microsoftu jako model wyszukiwania, tutaj można przeczytać oryginalny artykuł badawczy. Architektura modelu wygląda następująco:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline

Tutaj Q — zapytanie, zapytanie użytkownika, D[i] — dokument, strona internetowa. Na wejściu modelu otrzymujemy cechy zapytania i stron, odpowiednio. Po każdej warstwie wejściowej następuje pewna liczba warstw w pełni połączonych (multilayer perceptron). Następnie model uczy się minimalizować kosinus między wektorami, które powstały w ostatnich warstwach modelu.
W zadaniach rekomendacji używa się dokładnie takiej samej architektury, tylko zamiast zapytania do modelu wchodzi użytkownik, a zamiast stron – produkty. W naszym przypadku taka architektura przekształca się w następujące:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline

Teraz, aby sprawdzić wyniki, pozostało rozwiązać jeden ostatni punkt – jeśli w przypadku ALS i DSSM wektory użytkowników są jasno zdefiniowane, to w przypadku Word2Vec mamy tylko wektory produktów. Tutaj do budowy wektora użytkownika określiliśmy 3 podstawowe podejścia:

  1. Po prostu zsumować wektory, wtedy dla odległości kosinusowej będzie to, że po prostu uśredniliśmy produkty w historii zakupowej.
  2. Sumowanie wektorów z pewnym ważeniem czasowym.
  3. Ważenie produktów z współczynnikiem TF-IDF.

W przypadku liniowego ważenia wektora kupującego zakładamy, że produkt, który użytkownik kupił wczoraj, ma większy wpływ na jego zachowanie niż produkt, który kupił pół roku temu. Dlatego traktujemy poprzedni tydzień kupującego z wagą 1, a to, co było wcześniej, z wagami ½, ⅓ itd.:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline

Dla współczynników TF-IDF robimy dokładnie to samo, co w TF-IDF dla tekstów, tylko traktujemy kupującego jako dokument, a paragon jako propozycję, odpowiednio, słowo — jako produkt. Tak wektor użytkownika będzie bardziej przesuwany w kierunku rzadkich produktów, a częste i znajome dla kupującego produkty nie będą go szczególnie zmieniać. Można to zilustrować w ten sposób:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline

Teraz przyjrzyjmy się metrykom. Oto wyniki ALS:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline
Metryki dla Item2Vec z różnymi wariacjami budowy wektora kupującego:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline
W tym przypadku używana jest dokładnie ta sama model, co w naszym baseline. Różnica polega tylko na tym, jakie k będziemy używać. Aby korzystać wyłącznie z modeli kolaboracyjnych, musimy wziąć około 50-70 najbliższych produktów dla każdego kupującego.

A oto metryki dla DSSM:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline

Jak połączyć wszystkie metody?

Świetnie, powiecie, ale co zrobić z tak dużym zestawem narzędzi do wydobywania kandydatów? Jak dobrać optymalną konfigurację dla swoich danych? Pojawia się tutaj kilka zadań:

  1. Musimy jakoś ograniczyć przestrzeń poszukiwań hiperpametrów w każdej metodzie. Oczywiście jest ona dyskretna wszędzie, ale liczba możliwych punktów jest ogromna.
  2. Jak na podstawie małej ograniczonej próbki z konkretnych metod z konkretnymi hiperpametrami wybrać najlepszą konfigurację dla swojej metryki?

Na pierwsze pytanie nie znaleźliśmy jednoznacznej odpowiedzi, dlatego wychodzimy z założenia, że dla każdej metody napisano ogranicznik przestrzeni poszukiwań hiperpametrów w zależności od pewnych statystyk dotyczących danych, które posiadamy. W ten sposób, znając średni czas między zakupami u ludzi, możemy przypuszczać, z jakim okresem stosować metodę „co już kupili” oraz „okres dawnego zakupu”.

Po przeanalizowaniu odpowiedniej liczby różnych metod stwierdzamy, że każda z realizacji wydobywa pewną ilość kandydatów i ma swoje znaczenie kluczowej metryki (recall). Chcemy w sumie uzyskać określoną liczbę kandydatów, zależną od naszych dostępnych mocy obliczeniowych, przy maksymalnej możliwej metryce. W tym miejscu problem schodzi do klasycznego zadania plecakowego.
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline

W tym przypadku liczba kandydatów to waga sztabki, a recall metody to jej wartość. Jednak są jeszcze dwa aspekty, które należy uwzględnić przy realizacji algorytmu:

  • Metody mogą mieć wspólne kandydatów, których wydobywają.
  • W niektórych przypadkach właściwe będzie zastosowanie jednej metody dwukrotnie z różnymi parametrami, a kandydaci na wyjściu z pierwszego nie będą podzbiorem drugiego.

Na przykład, jeśli zastosujemy realizację metody „to, co już kupował” z różnymi interwałami wydobycia, to ich zbiory kandydatów będą wplecione w siebie. W tym samym czasie różne parametry w "okresowych zakupach" na wyjściu nie dadzą pełnego pokrycia. Dlatego dzielimy metody próbkowania z różnymi parametrami na bloki w taki sposób, aby z każdego bloku chcieliśmy wziąć nie więcej niż jedno podejście do wydobycia z konkretnymi hiperparametrami. Do tego trzeba się nieco nagimnastykować przy realizacji zadania o plecaku, ale asymptotyka i wynik się od tego nie zmienią.

Taka inteligentna kombinacja pozwala uzyskać nam następujące metryki w porównaniu do prostych modeli kolaboracyjnych:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline
Na końcowych metrykach widzimy następujący obraz:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline

Jednak można zauważyć, że pozostał jeden niepokryty aspekt dotyczący rekomendacji przydatnych dla biznesu. Teraz po prostu nauczyliśmy się świetnie przewidywać, co użytkownik kupi, na przykład w przyszłym tygodniu. Ale dawanie rabatu na to, co i tak kupi, nie jest zbyt atrakcyjne. Ale świetnie jest maksymalizować wartość oczekiwaną, na przykład następujących metryk:

  1. Marżę/obrót towarowy w oparciu o osobiste rekomendacje.
  2. Średnią wartość koszyka klientów.
  3. Częstotliwość wizyt.

Tak mnożymy uzyskane prawdopodobieństwa przez różne współczynniki i przestawiamy je w taki sposób, aby do topu trafiały produkty, które wpływają na metryki najwyżej. Nie ma gotowego rozwiązania, który podejście jest lepsze. Nawet my eksperymentujemy z takimi współczynnikami bezpośrednio w produkcji. Oto kilka interesujących technik, które zazwyczaj dają nam najlepsze wyniki:

  1. Mnożyć przez cenę/marżę produktu.
  2. Mnożyć przez średnią wartość koszyka, w którym występuje produkt. Tak na górę wyjdą produkty, z którymi zazwyczaj kupuje się coś jeszcze.
  3. Mnożyć przez średnią częstotliwość wizyt klientów tego produktu, na podstawie hipotezy, że ten produkt skłania do częstszych powrotów.

Przeprowadzając eksperymenty z współczynnikami, uzyskaliśmy następujące metryki w produkcji:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline
Tutaj konwersja produktów ogółem — udział zakupionych produktów wśród wszystkich produktów w rekomendacjach, które wygenerowaliśmy.

Uważny czytelnik zauważy znaczną różnicę między metrykami offline a online. Takie zachowanie jest tłumaczone tym, że nie wszystkie dynamiczne filtry dla produktów, które można polecić, mogą być uwzględniane podczas uczenia modelu. Dla nas normalne jest, gdy połowa wydobytych kandydatów może być odfiltrowana; taka specyfika jest charakterystyczna dla naszej branży.

Przy przychodach sytuacja przedstawia się następująco: widać, że po uruchomieniu rekomendacji przychody w grupie testowej znacznie rosną, obecnie średni wzrost przychodów z naszymi rekomendacjami wynosi 3-4%:
Jak znacząco poprawiliśmy jakość rekomendacji w sprzedaży offline

Na koniec chciałbym powiedzieć, że jeśli potrzebujesz rekomendacji nie w czasie rzeczywistym, to bardzo duży wzrost jakości można uzyskać w eksperymentach z wydobywaniem kandydatów dla rekomendacji. Duża ilość czasu na ich generowanie pozwala łączyć wiele dobrych metod, co razem da świetne rezultaty dla biznesu.

Będę szczęśliwy, mogąc porozmawiać w komentarzach z każdym, kto uzna materiał za interesujący. Pytania można zadawać mi osobiście w telegram. Również dzielę się swoimi myślami na temat AI/startupów na moim kanale telegramowym. — zapraszam 🙂

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster