Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline

Cześć wszystkim! Nazywam się Sasha, jestem CTO i współzałożycielem LoyaltyLab. Dwa lata temu wraz z kolegami, jak wszyscy biedni studenci, wybraliśmy się wieczorem na piwo do najbliższego sklepu niedaleko domu. Byliśmy bardzo zdenerwowani, że sprzedawca, wiedząc, że przyjdziemy na piwo, nie zaoferował zniżki na chipsy lub krakersy, chociaż jest to takie logiczne! Nie zrozumieliśmy, dlaczego taka sytuacja się dzieje i postanowiliśmy stworzyć własną firmę. Cóż, jako bonus, wypisz sobie zniżki w każdy piątek na te same żetony.

Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline

I wszystko doszło do tego, że rozmawiam z materiałem o technicznej stronie produktu na NVIDIA GTC. Chętnie dzielimy się naszą pracą ze społecznością, dlatego zamieszczam mój raport w formie artykułu.

Wprowadzenie

Jak wszyscy na początku podróży, zaczęliśmy od przeglądu tego, jak powstają systemy rekomendacyjne. A najbardziej popularna okazała się architektura następującego typu:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline

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

  1. Próbkowanie kandydatów do rekomendacji za pomocą prostego i szybkiego modelu, zwykle opartego na współpracy.
  2. Ranking kandydatów według bardziej złożonego i wolniejszego modelu treści, uwzględniający wszystkie możliwe cechy w danych.

Tutaj i poniżej będę używać następujących terminów:

  • kandydat / kandydat do rekomendacji - parę user-product, która potencjalnie może dostać się do rekomendacji w produkcji.
  • metoda ekstrakcji kandydatów/ekstraktora/ekstrakcji kandydatów — proces lub metoda wyodrębniania „kandydatów do rekomendacji” z dostępnych danych.

Na pierwszym etapie zwykle stosuje się różne warianty filtrowania opartego na współpracy. Najbardziej popularne - ALS. Co zaskakujące, większość artykułów na temat systemów rekomendujących ujawnia różne ulepszenia modeli współpracy tylko na pierwszym etapie, ale nikt nie mówi o innych metodach próbkowania. Dla nas podejście polegające na korzystaniu wyłącznie z modeli współpracujących i różnych optymalizacji z nimi nie działało z jakością, jakiej oczekiwaliśmy, więc zagłębiliśmy się w badania szczególnie w tej części. 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, należy zauważyć, że przy rekomendacjach w czasie rzeczywistym, kiedy ważne jest dla nas uwzględnienie danych sprzed 30 minut, naprawdę nie ma wielu podejść, które mogą zadziałać we właściwym czasie. Ale w naszym przypadku rekomendacje musimy zbierać nie częściej niż raz dziennie, aw większości przypadków raz w tygodniu, co daje nam możliwość wykorzystania skomplikowanych modeli i zwielokrotnienia jakości.

Weźmy jako linię bazową, jakie metryki pokazuje tylko ALS w zadaniu wyodrębniania kandydatów. Kluczowe wskaźniki, które monitorujemy to:

  • Precyzja – proporcja prawidłowo dobranych kandydatów spośród wylosowanych.
  • Przypomnij sobie - odsetek kandydatów, którzy się zgłosili spośród tych, którzy faktycznie znajdowali się w przedziale docelowym.
  • F1-score - F-score obliczony na podstawie dwóch poprzednich punktów.

Przyjrzymy się również metrykom ostatecznego modelu po treningu zwiększania gradientu z dodatkowymi funkcjami zawartości. Istnieją również 3 główne wskaźniki:

  • precyzja@5 — średni procent trafień z pierwszej piątki według prawdopodobieństwa dla każdego klienta.
  • response-rate@5 — konwersja kupujących z wizyty w sklepie na zakup przynajmniej jednej oferty osobistej (jedna oferta zawiera 5 produktów).
  • średni roc-auc na użytkownika – średni roc-auc dla każdego kupującego.

Należy zauważyć, że wszystkie te wskaźniki są mierzone walidacja krzyżowa szeregów czasowych, to znaczy trening odbywa się w ciągu pierwszych k tygodni, a k + 1 tygodni przyjmuje się jako dane testowe. Zatem sezonowe wzloty/spadki miały minimalny wpływ na interpretację jakości modeli. Ponadto na wszystkich wykresach oś odciętych będzie wskazywać numer tygodnia w walidacji krzyżowej, a oś rzędnych będzie wskazywać wartość określonej metryki. Wszystkie wykresy bazują na danych transakcyjnych jednego klienta, dzięki czemu porównanie między nimi jest prawidłowe.

Zanim zaczniemy opisywać nasze podejście, przyjrzyjmy się najpierw linii bazowej, którą jest wytrenowany model ALS.
Metryki pozyskiwania kandydatów:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline

Ostateczne wskaźniki:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline

Wszelkie implementacje algorytmów traktuję jako swego rodzaju hipotezę biznesową. Tak więc, z grubsza, każdy model współpracy można uznać za hipotezę, że „ludzie kupują to, co ludzie im podobni”. Jak powiedziałem, nie ograniczaliśmy się do takiej semantyki, a oto kilka hipotez, które nadal świetnie sprawdzają się w przypadku danych w handlu offline:

  1. Co kupiłeś wcześniej.
  2. Podobny do tego, który kupiłem wcześniej.
  3. Okres dawno minionego zakupu.
  4. Popularne według kategorii/marki.
  5. Alternatywne zakupy różnych towarów z tygodnia na tydzień (sieci Markowa).
  6. Podobne produkty do kupujących, zgodnie z cechami zbudowanymi przez różne modele (Word2Vec, DSSM itp.).

Co kupiłeś wcześniej

Najbardziej oczywista heurystyka, która bardzo dobrze sprawdza się w handlu spożywczym. Tutaj bierzemy wszystkie towary, które posiadacz karty lojalnościowej kupił w ciągu ostatnich K dni (zwykle 1-3 tygodni) lub K dni rok temu. Stosując tylko tę metodę, uzyskujemy następujące metryki:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline

Jest tu dość oczywiste, że im dłużej bierzemy okres, tym więcej mamy pamięci i mniej precyzji i vice versa. Lepsze wyniki średnio dla klientów dają „ostatnie 2 tygodnie”.

Podobny do tego, który kupiłem wcześniej

Nic dziwnego, że „to, co kupił wcześniej” dobrze sprawdza się w handlu spożywczym, ale wyciąganie kandydatów tylko z tego, co użytkownik już kupił, nie jest zbyt fajne, ponieważ jest mało prawdopodobne, że uda się zaskoczyć kupującego jakimś nowym produktem. Dlatego proponujemy nieco ulepszyć tę heurystykę przy użyciu tych samych modeli współpracy. Z wektorów, które otrzymaliśmy podczas szkolenia ALS, można uzyskać produkty podobne do tych, które użytkownik już kupił. Pomysł ten jest bardzo podobny do „podobnych filmów” w serwisach do przeglądania treści wideo, ale ponieważ nie wiemy, co użytkownik je/kupuje w danym momencie, możemy jedynie szukać czegoś podobnego tylko do tego, co już kupił, zwłaszcza, że ​​wiemy już, jak dobrze to działa. Stosując tę ​​​​metodę do transakcji użytkowników w ciągu ostatnich 2 tygodni, otrzymujemy następujące dane:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline

Tutaj k - liczba podobnych produktów, które zostały wyszukane dla każdego produktu zakupionego przez kupującego w ciągu ostatnich 14 dni.
Takie podejście sprawdziło się szczególnie dobrze w przypadku klienta, który był krytyczny, aby w ogóle nie polecać tego, co już było w historii zakupów użytkownika.

Dawno miniony okres zakupu

Jak już się przekonaliśmy, ze względu na dużą częstotliwość kupowania towarów, pierwsze podejście dobrze sprawdza się w przypadku naszej specyfiki. Ale co z towarami takimi jak proszek do prania/szampon/itp. To znaczy z produktami, które prawdopodobnie nie będą potrzebne co tydzień lub dwa i których nie można wyodrębnić poprzednimi metodami. Implikuje to następujący pomysł - proponuje się obliczenie średniego okresu zakupu każdego produktu dla kupujących, którzy kupili produkt więcej k raz. A potem wydobyć to, co najprawdopodobniej kupującemu już się skończyło. Obliczone okresy dla towarów można sprawdzić na własne oczy pod kątem adekwatności:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline

A potem zobaczymy, czy koniec okresu produktu mieści się w przedziale czasowym, w którym rekomendacje będą w produkcji i wypróbujemy, co wypada. Podejście to można zilustrować w następujący sposób:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline

Tutaj mamy 2 główne przypadki, które można rozważyć:

  1. Czy pobierać próbki produktów dla klientów, którzy kupili produkt mniej niż K razy.
  2. Określa, czy pobrać próbkę produktu, jeśli koniec jego okresu wypada przed początkiem przedziału docelowego.

Poniższy wykres pokazuje, jakie wyniki osiąga taka metoda przy różnych hiperparametrach:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline
ft - Weź tylko kupujących, którzy kupili produkt co najmniej K (tutaj K = 5) razy
tm — Weź tylko kandydatów, którzy mieszczą się w docelowym przedziale

Nic dziwnego, zdolny (0, 0) największy odwołanie i najmniejszy precyzja, ponieważ pod tym warunkiem wyodrębnia się najwięcej kandydatów. Jednak najlepsze efekty uzyskujemy, gdy nie próbkujemy produktów dla klientów, którzy kupili dany produkt mniej niż k razy i wyodrębnić między innymi towary, których koniec okresu wypada przed przedziałem docelowym.

Popularne według kategorii

Innym dość oczywistym pomysłem jest wypróbowanie popularnych produktów z różnych kategorii lub marek. Tutaj obliczamy dla każdego klienta top-k „ulubione” kategorie/marki i wyodrębnij „popularne” z tej kategorii/marki. W naszym przypadku „ulubiony” i „popularny” definiujemy na podstawie liczby zakupów produktów. Dodatkową zaletą tego podejścia jest możliwość zastosowania w przypadku zimnego rozruchu. To znaczy dla klientów, którzy albo dokonali bardzo niewielu zakupów, albo nie byli w sklepie od dłuższego czasu, albo w ogóle wydali tylko kartę stałego klienta. Łatwiej i najlepiej jest im wrzucić towar od popularnych wśród kupujących towarów z istniejącą historią. Metryki są następujące:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline
Tutaj liczba po słowie „kategoria” oznacza poziom zagnieżdżenia kategorii.

Ogólnie rzecz biorąc, nie jest też zaskakujące, że węższe kategorie osiągają lepsze wyniki, ponieważ wydobywają dokładniejsze „ulubione” produkty dla kupujących.

Alternatywne zakupy różnych towarów z tygodnia na tydzień

Ciekawym podejściem, którego nie widziałem w artykułach o systemach rekomendujących, jest dość prosta i jednocześnie działająca metoda statystyczna łańcuchów Markowa. Tutaj zajmujemy 2 różne tygodnie, następnie dla każdego klienta budujemy pary produktów [kupione w tygodniu i]-[kupione w tygodniu j], gdzie j > i, i stąd dla każdego produktu obliczamy prawdopodobieństwo przejścia na inny produkt w przyszłym tygodniu. To znaczy dla każdej pary towarów produkt-produktj policz ich liczbę w znalezionych parach i podziel przez liczbę par, gdzie produkt był w pierwszym tygodniu. Aby wyodrębnić kandydatów, bierzemy ostatnią kontrolę kupującego i otrzymujemy top-k najbardziej prawdopodobne kolejne produkty z macierzy przejść, które otrzymaliśmy. Proces budowania macierzy przejść wygląda następująco:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline

Z prawdziwych przykładów w macierzy prawdopodobieństw przejścia widzimy następujące interesujące zjawiska:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline
Tutaj można zauważyć ciekawe zależności, które ujawniają się w zachowaniach konsumentów: na przykład miłośnicy cytrusów czy marki mleka, z której najprawdopodobniej przestawiają się na inną. Nie jest też zaskakujące, że produkty, które są często kupowane, takie jak masło, również trafiają tutaj.

Metryki w metodzie z łańcuchami Markowa są następujące:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline
k - liczba produktów, które są pobierane dla każdego przedmiotu zakupionego w ramach ostatniej transakcji kupującego.
Jak widać konfiguracja z k=4 daje najlepszy wynik. Gwałtowny wzrost w 4. tygodniu można wytłumaczyć sezonowym zachowaniem w okresie świątecznym. 

Podobne produkty do kupujących, zgodnie z cechami zbudowanymi przez różne modele

Dochodzimy więc do najtrudniejszej i najciekawszej części - poszukiwania najbliższych sąsiadów w wektorach nabywców i produktów budowanych według różnych modeli. W naszej pracy wykorzystujemy 3 takie modele:

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

O ALS już mieliśmy do czynienia, możecie przeczytać o tym, jak się uczy tutaj. W przypadku Word2Vec korzystamy ze znanej implementacji modelu z gensym. Analogicznie do tekstów ofertę definiujemy jako dowód zakupu. Zatem konstruując wektor produktu, model uczy się przewidywać jego „kontekst” dla produktu na paragonie (reszta towaru na paragonie). W danych e-commerce lepiej wykorzystać sesję kupującego zamiast paragonu, chłopaki z ozon. A DSSM jest bardziej interesujący do demontażu. Pierwotnie został napisany przez chłopaków z Microsoftu jako model wyszukiwania, możesz przeczytać oryginalny artykuł badawczy tutaj. Architektura modelu wygląda następująco:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline

Tutaj Q - zapytanie, zapytanie użytkownika, D[i] - dokument, strona internetowa. Wejście modelu otrzymuje odpowiednio znaki żądania i stron. Po każdej warstwie wejściowej następuje pewna liczba w pełni połączonych warstw (perceptron wielowarstwowy). Następnie model uczy się minimalizować cosinus między wektorami otrzymanymi w ostatnich warstwach modelu.
Zadania rekomendacji wykorzystują dokładnie tę samą architekturę, ale zamiast żądania jest użytkownik, a zamiast stron produkty. W naszym przypadku ta architektura jest przekształcana w następującą:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline

Teraz, aby sprawdzić wyniki, pozostaje omówić ostatni punkt – jeśli w przypadku ALS i DSSM mamy jawnie zdefiniowane wektory użytkownika, to w przypadku Word2Vec mamy tylko wektory produktu. Tutaj, aby zbudować wektor użytkownika, zidentyfikowaliśmy 3 główne podejścia:

  1. Wystarczy dodać wektory, a następnie dla odległości cosinusowej okaże się, że właśnie uśredniliśmy produkty w historii zakupów.
  2. Sumowanie wektorów z pewnym ważeniem czasu.
  3. Ważenie towarów ze współczynnikiem TF-IDF.

W przypadku liniowego ważenia wektora kupującego wychodzimy z hipotezy, że produkt, który użytkownik kupił wczoraj, ma większy wpływ na jego zachowanie niż produkt, który kupił pół roku temu. Bierzemy więc pod uwagę poprzedni tydzień kupującego ze współczynnikiem 1, a co stało się później ze współczynnikami ½, ⅓ itd.:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline

Dla współczynników TF-IDF robimy dokładnie to samo, co dla tekstów TF-IDF, tylko traktujemy kupującego jako dokument, a paragon odpowiednio jako ofertę, słowo jest produktem. Tak więc wektor użytkownika przesunie się bardziej w kierunku rzadkich towarów, a towary, które są częste i znane kupującemu, niewiele go zmienią. Podejście to można zilustrować w następujący sposób:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline

Teraz spójrzmy na metryki. Tak wyglądają wyniki ALS:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline
Metryki według Item2Vec z różnymi wariantami konstruowania wektora nabywcy:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline
W tym przypadku używany jest dokładnie ten sam model, co w naszej linii bazowej. Jedyną różnicą jest to, którego k użyjemy. Aby korzystać tylko z modeli współpracy, musisz wziąć około 50-70 najbliższych produktów dla każdego klienta.

I metryki DSSM:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline

Jak połączyć wszystkie metody?

Fajnie, mówisz, ale co zrobić z tak dużym zestawem narzędzi do ekstrakcji kandydatów? Jak wybrać optymalną konfigurację dla swoich danych? Tutaj mamy kilka problemów:

  1. W każdej metodzie trzeba jakoś ograniczyć przestrzeń poszukiwań hiperparametrów. Jest to oczywiście wszędzie dyskretne, ale liczba możliwych punktów jest bardzo duża.
  2. Jak wybrać najlepszą konfigurację dla swojej metryki, korzystając z małej, ograniczonej próbki określonych metod z określonymi hiperparametrami?

Nie znaleźliśmy jeszcze jednoznacznie poprawnej odpowiedzi na pierwsze pytanie, więc postępujemy następująco: dla każdej metody zapisany jest ogranicznik przestrzeni wyszukiwania hiperparametrów, w zależności od niektórych statystyk dotyczących danych, które posiadamy. Zatem znając średni okres między zakupami od ludzi, możemy odgadnąć, z jakim okresem zastosować metodę „co już kupiono” i „okres dawno przeszłego zakupu”.

A po przejściu przez odpowiednią liczbę wariacji różnych metod zauważamy, że każda implementacja wydobywa pewną liczbę kandydatów i ma określoną wartość kluczowego dla nas metryki (recall). Chcemy pozyskać łącznie określoną liczbę kandydatów, w zależności od naszej dopuszczalnej mocy obliczeniowej, przy jak najwyższym wskaźniku. Tutaj problem ładnie zapada się w problem plecakowy.
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline

Tutaj liczba kandydatów jest wagą wlewka, a przywołanie metody jest jej wartością. Istnieją jednak jeszcze 2 punkty, które należy wziąć pod uwagę przy wdrażaniu algorytmu:

  • Metody mogą nakładać się na kandydatów, których wyciągają.
  • W niektórych przypadkach poprawne będzie dwukrotne przyjęcie jednej metody z różnymi parametrami, a kandydaci na wyjściu pierwszej nie będą podzbiorem drugiej.

Na przykład, jeśli weźmiemy do ekstrakcji implementację metody „co już kupiono” z różnymi interwałami, to ich zbiory kandydatów zostaną zagnieżdżone jeden w drugim. Jednocześnie różne parametry w „okresowych zakupach” na wyjściu nie dają pełnego skrzyżowania. Dlatego dzielimy metody próbkowania o różnych parametrach na bloki tak, że z każdego bloku chcemy pobrać co najwyżej jedno podejście do ekstrakcji z określonymi hiperparametrami. Aby to zrobić, musisz trochę oszukać w realizacji problemu plecakowego, ale asymptotyka i wynik nie zmienią się od tego.

Takie sprytne połączenie pozwala nam uzyskać następujące wskaźniki w porównaniu z prostymi modelami opartymi na współpracy:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline
Na końcowych metrykach widzimy następujący obraz:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline

Jednak tutaj widać, że jest jeden odkryty punkt dla rekomendacji, które są przydatne dla biznesu. Teraz właśnie nauczyliśmy się na chłodno przewidywać, co użytkownik kupi na przykład w przyszłym tygodniu. Ale samo udzielanie rabatu na fakt, że i tak kupi, nie jest zbyt fajne. Ale fajnie jest zmaksymalizować oczekiwania, na przykład w odniesieniu do następujących danych:

  1. Marża/obrót na podstawie osobistych rekomendacji.
  2. Średnia kontrola kupujących.
  3. częstotliwość odwiedzin.

Mnożymy więc otrzymane prawdopodobieństwa przez różne współczynniki i ponownie je uszeregowujemy, tak aby w czołówce znalazły się produkty, które wpływają na powyższe wskaźniki. Nie ma tu gotowego rozwiązania, które podejście lepiej zastosować. Nawet my eksperymentujemy z takimi współczynnikami bezpośrednio w produkcji. Ale oto kilka ciekawych sztuczek, które najczęściej dają nam najlepsze rezultaty:

  1. Pomnóż przez cenę/marżę przedmiotu.
  2. Pomnóż przez średnią kontrolę, w której występuje produkt. Wyjdzie więc towar, z którym zwykle zabierają coś innego.
  3. Pomnóż przez średnią częstotliwość odwiedzin kupujących ten produkt, przy założeniu, że ten produkt powoduje częstsze zwroty.

Po eksperymentach ze współczynnikami otrzymaliśmy następujące wskaźniki w produkcji:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline
Tutaj ogólna konwersja produktu - udział zakupionych produktów ze wszystkich produktów w wygenerowanych przez nas rekomendacjach.

Uważny czytelnik zauważy znaczącą różnicę między danymi offline i online. To zachowanie tłumaczy się tym, że nie wszystkie filtry dynamiczne dla produktów, które można polecić, można wziąć pod uwagę podczas uczenia modelu. To dla nas normalna historia, gdy połowę wydobytych kandydatów da się odfiltrować, taka specyfika jest typowa w naszej branży.

Jeśli chodzi o przychody, uzyskuje się następującą historię, jasne jest, że po uruchomieniu rekomendacji przychody grupy testowej silnie rosną, teraz średni wzrost przychodów z naszymi rekomendacjami wynosi 3-4%:
Jak radykalnie poprawiliśmy jakość rekomendacji w handlu offline

Podsumowując, chcę powiedzieć, że jeśli potrzebujesz rekomendacji nie w czasie rzeczywistym, to bardzo duży wzrost jakości występuje w eksperymentach z wyodrębnianiem kandydatów do rekomendacji. Duża ilość czasu na ich wygenerowanie sprawia, że ​​można połączyć wiele dobrych metod, co w sumie da fajne efekty dla biznesu.

Chętnie porozmawiam w komentarzach ze wszystkimi, dla których materiał jest interesujący. Możesz zadawać mi pytania osobiście telegram. Dzielę się też przemyśleniami na temat AI/startupów w moim kanał telegramu — zapraszamy 🙂

Źródło: www.habr.com

Dodaj komentarz