Architektura dwuetapowa: generowanie kandydatów i ranking
Źródło: Metalicat, CC0, Wikimedia Commons
Spis treści
Dlaczego architektura dwuetapowa
W systemach obsługujących katalogi liczące miliony produktów lub treści, ocena każdej pozycji z osobna dla każdego użytkownika w czasie rzeczywistym jest obliczeniowo niepraktyczna. Architektura dwuetapowa rozwiązuje ten problem, dzieląc proces rekomendacji na dwa etapy o różnej charakterystyce kosztu obliczeniowego i różnej precyzji.
Etap generowania kandydatów
Pierwszy etap, nazywany generowaniem kandydatów (candidate generation), ma za zadanie szybko zawęzić ogromny katalog produktów do zbioru kilkuset lub kilku tysięcy pozycji potencjalnie interesujących dla danego użytkownika. Na tym etapie stosuje się metody o niskim koszcie obliczeniowym na pojedynczy produkt — często oparte na uproszczonej filtracji kolaboratywnej lub wyszukiwaniu przybliżonych najbliższych sąsiadów w przestrzeni wektorowej.
Celem tego etapu nie jest precyzyjne uszeregowanie kandydatów, lecz maksymalizacja szansy, że produkty faktycznie interesujące dla użytkownika znajdą się w zawężonym zbiorze przekazywanym do kolejnego etapu.
Etap rankingu
Drugi etap, ranking, operuje na znacznie mniejszym zbiorze kandydatów, co pozwala na zastosowanie bardziej złożonych i kosztownych obliczeniowo modeli — często opartych na sieciach neuronowych, uwzględniających dziesiątki lub setki cech opisujących użytkownika, produkt oraz kontekst interakcji (np. porę dnia, typ urządzenia, poprzednie działania w bieżącej sesji). Wynikiem tego etapu jest uszeregowana lista, z której prezentowana jest użytkownikowi ostateczna rekomendacja.
Przepływ danych między etapami
Podział na dwa etapy pozwala na niezależną optymalizację każdego z nich. Etap generowania kandydatów optymalizuje się pod kątem szybkości i pokrycia (recall), natomiast etap rankingu — pod kątem precyzji uszeregowania (precision). Metryki stosowane do oceny obu etapów opisano w artykule Metryki oceny jakości rekomendacji.
W praktycznych wdrożeniach oba etapy są zwykle aktualizowane z różną częstotliwością — model generowania kandydatów bywa przeliczany rzadziej, natomiast model rankingu może być douczany częściej, w miarę napływu nowych danych o interakcjach.