Wojciech Sitek, Maciej Kasprzyk
Opis realizacji etapu 1. (opis realizowanego zadania, założenia) jest dostępny w tym notatniku. W ramach etapu 2.:
- stworzyliśmy rozwiązanie oszacowujące wysokość najlepszej zniżki
- zaimplementowaliśmy serwer umożliwiający korzystanie z rozwiązania poprzez zapytania HTTP oraz pozwalający wykonać test A/B
- napisaliśmy klienta, który przeprowadza sztuczny test A/B
Kod trenujący model znajduje się oraz jest opisany w tym notatniku. Model został porównany z modelem bazowym, który zawsze zwraca najczęstszą klasę.
Wyjściem naszego modelu jest prawdopodobieństwo zakupu.
Przydzielona zniżka jest jednym z atrybutów.
Założyliśmy, że możliwe zniżki to 0, 5, 10, 15, 20%.
W naszym oszacowaniu założyliśmy, że marża ze sprzedaży każdego produktu wynosi 40%.
Wybieramy najlepszą zniżkę wg następującego schematu:
- badamy
prawdopodobieństwojako wyjście modelu dla kolejnych zniżek - dla każdej zniżki liczby wartość średniego procentowego zysku wg wzoru:
(40% - zniżka) * prawdopodobieństwo - wybieramy wysokość zniżki, dla której ta wartość jest najwyższa
Serwer napisaliśmy z użyciem django oraz django rest framework.
Posiada on 4 punkty końcowe. Zapytania wysyłane są metodami POST oraz GET, dane przekazywane są w formacie JSON.
Dane zapisywane są bazie danych SQLite.
prediction/- do serwowania predykcji. Odbiera atrybuty oraz identyfikator użytkownika. Odpowiada wartością przydzielonej zniżki. Model do predykcji jest wybierany na podstawie skrótu id użytkownika.conversion/- do wysyłania informacji do serwera o zakupie dokonanym przez danego użytkownika. Odbiera identyfikator użytkownika oraz zysk uzyskany z danego zakupu.resultsAB/- Odpowiada listą zapisanych konwersji.resetAB/- Pozwala zresetować dotychczasowe wyniki testu AB.
Aby uruchomić serwer należy:
- Zainstalować zależności:
pip install -r requirements.txt - Znajdując się w folderze
5-serverwywołać komendępython manage.py runserver
Prawdziwego testu AB nie da się przeprowadzić bez interakcji z realnymi użytkownikami. W celu zademonstrowania przebiegu takiego testu przeprowadziliśmy go sztucznie. Nasz model porównaliśmy z modelem, który prawdopodobieństwo zakupy losuje z rozkładu normalnego. Rezultaty są dostępne w tym notatniku.