Our site uses cookies. Learn more about their purpose and change of settings in a browser If you are using the site, you give you consent to use cookies, according to current browser settings. Got it

Projekt platformy rekomendacyjnej od kuchni

  • 19.12.2016

 mg 4672 2

Według raportów dostępnych w sieci, firma Amazon, dzięki silnikowi rekomendacji produktowych, wygenerowała aż 35% swojego dochodu. Inne dane mówią o 80% subskrybentów Netflixa, którzy wybierają oglądane filmy korzystając z wyświetlanych propozycji, a tylko o 20%, którzy samodzielnie wyszukują tytuły. Nie da się ukryć, że dla polskiego rynku, wciąż rozwijającego się w tym zakresie, takie dane są bardzo inspirujące.

Dla wielu budowa platformy rekomendacyjnej może wydawać się zadaniem skomplikowanym i nudnym. Wcale jednak nie musi tak być. Chcę podzielić się doświadczeniami w pracy nad ostatnim projektem.

System rekomendacji może być wykorzystywany do prognozowania zapotrzebowania artykułów w magazynie, automatycznego uzupełniania treści na witrynach czy zarządzania klastrami. Jednak zazwyczaj nadrzędnym celem tworzenia systemów rekomendacyjnych jest zwiększenie sprzedaży. Tak było również w przypadku tego projektu.

Założeniem projektowym była możliwość proponowania użytkownikowi końcowemu produktów, których jeszcze nie zna, a mogłyby być uznane przez niego za interesujące. Założyliśmy, że klient, który dokonał zakupu produktu, zna już ścieżkę dotarcia do niego. W związku z tym należało przewidzieć etap wykluczeń.

Jedna z trudności projektu polegała na różnorodności branży i produktów, które usługobiorcy naszego klienta – dostawcy platform marketingowych – sprzedają za pomocą www. Ich liczba jest liczona w tysiącach. Zrozumienie kontekstu biznesowego było w tym przypadku niezwykle istotne.

Dodatkowym utrudnieniem było zapewnienie zasilania nowych zdarzeń i uruchamiania procesów rekomendacyjnych online.

Osoby zaznajomione z tematem na pewno wiedzą, jakim wyzwaniem jest przetwarzanie bardzo dużych wolumenów danych w czasie rzeczywistym, tak aby natychmiast otrzymywać wyniki analiz. Mój zespół w tym celu wykorzystał autorską platformę Big Data opartą o komponenty ze stack-u Apache Hadoop i środowisko Hortonworks (HDP 2.4). Do zarządzania i kontroli wersji kodu używaliśmy Gita.

Realizacja projektu odbywała się według metodyki Agile. Codzienne spotkania z zespołem, wspólne omawianie zadań i problemów okazało się świetnym rozwiązaniem.

Po analizie struktur i zrozumieniu surowych danych nastąpił etap ustalenia modelu danych oraz konwersji danych do odpowiedniej postaci.

Najciekawszym momentem było dopasowywanie technik do budowy rekomendacji oraz definiowanie ukrytych wymiarów użytkowników – czyli tych, które nie wynikają bezpośrednio z danych, np. Netflix badał stopień „dziwności” filmu. Z mojego punktu widzenia jest to najbardziej kreatywna część budowy platformy. Wychodząc z założenia, że zestaw modeli jest znacznie bardziej efektywny niż użycie jednego modelu, wybraliśmy kilka technik –  klastrowanie, grupowanie współwystąpień, analiza częstych ścieżek oraz badanie sąsiedztwa.

Dodatkowo należało połączyć skomplikowane procesy przetwarzania danych z prostym i intuicyjnym dla analityków dostępem do danych. W konstruowaniu tego rozwiązania posłużyły nam python-owe biblioteki machine learning działające w naszym rozproszonym środowisku. W pracy wspomagało nas świetne SQL-owe IDE od JetBrains – DataGrip.

Moment oceny rozwiązania to drugi ciekawy etap życia projektu dla analityka/badacza danych. To praca nad optymalizacją modeli i zapytań. Nieuniknione były żmudne, ale bardzo ważne zmiany polegające np. na przebudowie indeksów czy przesłownikowaniu, dzięki którym czas wykonywania procesów rekomendacyjnych został skrócony o połowę, a dobór odpowiednich parametrów modeli dostarczył wielu ciekawych obserwacji.

Wdrożenia testowe również mogą być wyzwaniem.

W przypadku platform rekomendacyjnych nie jest łatwo posłużyć się typowymi wskaźnikami efektywności. Na podstawie zbioru treningowego możemy usiłować przewidzieć, czy klient końcowy kupi produkt. Niestety takie podejście wiąże się z dużymi błędami. Istotą jest to, że użytkownik kupi produkt, gdy dotrze do niego rekomendacja. Na podstawie danych statycznych ten czynnik jest zupełnie wykluczony. W prosty sposób natomiast możemy użyć miary precyzji (precision) czy wskaźnika skuteczności rekomendacji (recall). Są one znacznie lepsze niż np. RMSE czy  MAE jako miara dokładności naszej predykcji.

Na zakończenie projektu zostały dostarczone atrakcyjne analizy w postaci wizualizacji.

Tutaj chętnie polecę Power BI, który świetnie sprawdził się w tym zadaniu. Wystarczyła instalacji sterowników bazodanowych i konfiguracja połączenia.

Żaden z członków zespołu z pewnością nie może stwierdzić, że był to projekt nudny albo mozolny.

 

Paulina Józefowiak