analytics, charts, traffic-925379.jpg

A/B testy modelu ML (część 2). Najczęstsze trudności.

Ten wpis to drugi z serii trzech wpisów o A/B testach. Pozostałe to:

Tutaj przedstawię Ci najczęstsze problemy, z jakimi spotkałem się, przeprowadzając rzeczywiste A/B testy oraz sposoby, które mam, żeby sobie z nimi poradzić.

1. Uzyskanie dwóch identycznych grup do testów

Jak pisałem w poprzednim artykule, jeśli nasz model ML optymalizuje jakąś większą całość (np. działanie całego sklepu), może nie być możliwe podzielenie przestrzeni do eksperymentów na dwie identyczne grupy (wszak każdy sklep jest nieco inny).

Jakie mam metody na ten problem?

A. Grupy o podobnym średnim wyniku

Załóżmy, że Twój model może być wdrożony, aby optymalizować działanie 20 sklepów. Jednak każdy z nich może mieć inną wielkość, nieco inne produkty, przynosić inny zysk. Dlatego jeśli podzielisz losowo je na dwie grupy, może się okazać, że jedna grupa sumarycznie działa dużo lepiej niż druga (nawet bez modelu), dlatego włączenie modelu w jednej grupie może nie dać możliwości porównania z działaniem drugiej grupy.

Rozwiązaniem może być “inteligentny” dobór grup, tak aby sumaryczny zysk w obu grupach był taki sam w okresie ostatnich kilku miesięcy. Wówczas możemy się spodziewać, że ten zysk będzie również podobny w kolejnym okresie. Gdy włączymy model dla jednej grupy, będziemy mogli porównać wyniki z drugą grupą.

B. Dynamiczna zmiana grup

Jeśli włączanie i wyłączanie modelu dla danego sklepu nie stanowi dużego kosztu, możemy pomyśleć o rozwiązaniu, w którym codziennie część sklepów z włączonym algorytmem (grupa A), wymienia się z jednym ze sklepów, gdzie nie ma algorytmu (grupa B). Jeśli eksperyment będzie trwał wystarczająco długo, każdy sklep będzie przez podobną ilość czasu w obu grupach, a zarazem częste wymiany i losowość pozwolą zniwelować efekt niezależnych trendów w obu grupach.

C. Porównywanie procentowych zmian

Załóżmy, że nie możesz w żaden sposób uzyskać dwóch podobnych grup sklepów (bo np. algorytm może być wdrożony tylko w dwóch sklepach, które są zupełnie inne). Wówczas wdrażasz algorytm w jednym sklepie i patrzysz, jak poprawiły się wyniki sklepu w stosunku do analogicznego okresu w przeszłości. Jeśli wzrosły np. o 11%, to patrzysz, czy taka sama zmiana nastąpiła w tym okresie również w drugim sklepie. Jeśli tam wzrosły wyniki tylko o 5%, to (przy zadbaniu o istotność statystyczną) możesz liczyć, że Twój algorytm dał wartość +6%.

Zauważ, że jeśli od razu byś wdrożył model w obu sklepach i zaobserwujesz średni wzrost +10%, to nie będziesz wiedział, czy wynika to z działania modelu, czy z innych czynników. Dlatego tak ważne są A/B testy.

2. Chęć szybkiego wdrożenia modelu

Jeśli problem, nad którym pracujesz, jest bardzo palący i w eksperymentach na danych historycznych obserwujesz duże zyski z modelu, Ty lub osoby decyzyjne mogą mieć dużą pokusę, by od razu wdrożyć model na całym zbiorze, np. aby wszyscy pacjenci mogli skorzystać z dobrych rezultatów modelu.

Musisz jednak być świadomym (i umieć to przekazać innym osobom), że ten zysk jest tylko pozorny, ponieważ wyniki uzyskane na zbiorze historycznym niekoniecznie muszą mieć odzwierciedlenie w działaniu rzeczywistym. Dlatego należy zostawić choćby minimalną część zbioru (np. 10%), gdzie model nie będzie wdrożony, aby obserwować ją i móc porównać z wynikami modelu.

3. Interakcje pomiędzy grupą A, a grupą B

Może się okazać, że jeśli nawet dobrze podzielisz przestrzeń na dwie grupy – A, gdzie uruchomisz model, i B – gdzie tego nie zrobisz, wyniki uzyskiwane w grupie A będą miały wpływ na grupę B. Jak to możliwe?

Przykładem są kampanie marketingowe, gdzie korzystasz z portali pośredniczących, które mają swoje algorytmy optymalizacyjne. Może się okazać, że gdy ustawisz dwie kampanie, z których jedną będziesz lepiej optymalizował za pomocą modelu ML (np. poprzez ustawianie lepszych grup docelowych), algorytm pośrednika nauczy się, że powinien tej kampanii dawać lepsze miejsca reklamowe, bo przynosi ona większe zyski. Wówczas grupa B stanie się niejako “poszkodowana” i odniesie gorsze wyniki niż by osiągnęła, gdyby grupa A nie była ulepszona. Może tak być, że to nie będzie dla Ciebie problem, ale musisz uważać, by nie wyciągnąć nieprawidłowych wniosków na temat Twojego modelu.

Inny przykład to taki, gdy algorytm wspomaga działanie człowieka. Mamy przykładowo grupę sprzedawców A korzystających z rekomendacji modelu ML, oraz grupę sprzedawców B, którzy działają bez modelu. Chyba nie muszę wspominać, że warto, by grupa B również otrzymywała rekomendacje (np. losowe lub jakiegoś prostszego modelu), aby sprzedawcy nie wiedzieli, do jakiej grupy należą (aby uniknąć czynników psychologicznych). Mimo tego może się okazać, że sprzedawcy z obu grup będą w jakiś sposób przekazywać sobie informacje, więc pośrednio nawet grupa B będzie mogła korzystać z rekomendacji grupy A. Wówczas na poprawie wyników grupy A skorzysta również grupa B.

Jak sobie poradzić z tymi problemami? Myślę, że nie ma uniwersalnego rozwiązania. Trzeba przede wszystkim mieć świadomość takich potencjalnych problemów. Można np. rozpocząć minimalną wersję A/B testu, żeby zaobserwować, czy te zjawiska występują, czy nie.

4. Brak istotności statystycznej

Wyobraź sobie, że testowałeś 10 sklepów w grupie A (z modelem) i 10 sklepów w grupie B. Po miesiącu testu okazało się, że sklepy A osiągnęły średnią poprawę o 9%, a sklepy B średnią poprawę o 5%. Załóżmy że w poprzednich miesiącach wyniki obu sklepów były wystarczające. Zakładanym KPI była poprawa działania sklepu o 5%.

Czy w tej sytuacji uznasz A/B testy za udane? Wydaje się, że osiągnąłeś poprawę 4%. Jednak każdy test jest obarczony niepewnością. W tej sytuacji warto pomyśleć o kontynuacji testu lub zwiększenia jego zakresu.

Podsumowanie

Przedstawiłem Ci kilka problemów, z którymi zetknąłem się w mojej pracy. A jakie jest Twoje doświadczenie w tym temacie? Czy napotkałeś jakieś inne trudności?

Czytaj dalej… A/B testy modelu ML (część 3). 4 typowe błędy w A/B testach.