Retentioneering: jak stworzyliśmy narzędzia open-source do analizy produktów w Pythonie i Pandas

Cześć, Habr. Ten artykuł poświęcony jest wynikom czteroletniego rozwoju zestawu metod i narzędzi do analizy trajektorii ruchu użytkowników w aplikacji lub na stronie internetowej. Autor rozwoju — Maksym Godzi, który stoi na czołowej pozycji w zespole twórców produktu, jest też autorem artykułu. Sam produkt nosi nazwę Retentioneering, obecnie został przekształcony w bibliotekę open-source i umieszczony na Github, aby każdy chętny mógł z niej skorzystać. Możliwe, że wszystko to zainteresuje tych, którzy zajmują się analizą produktową i marketingową, promocją i rozwojem produktu. A propos, na Habrze już opublikowano artykuł o jednym z przypadków pracy z Retentioneering. W nowym materiale mowa o tym, co potrafi produkt i jak można go wykorzystać.

Czytając artykuł, samodzielnie będziesz mógł stworzyć własne Retentioneering, którym może być każda sformalizowana metoda analizy trajektorii użytkowników w aplikacji oraz poza nią, pozwalająca na szczegółowe dostrzeganie cech zachowania i wydobycie stąd wniosków dla wzrostu wskaźników biznesowych.

Czym jest Retentioneering i po co to potrzebne?

Na początku naszym celem było przeniesienie Growth Hacking z świata «cyfrowej magii» do świata liczb, analizy i prognoz. W konsekwencji — sprowadzenie analizy produktowej do czystej matematyki i programowania dla tych, którzy zamiast fantastycznych historii wolą liczby, a wzory — mądre słowa typu «rebranding», «repozycjonowanie» itp., które ładnie brzmią, ale w praktyce mało pomagają.

Aby rozwiązać wspomniane zadania, potrzebny był framework do analizy przez grafy i trajektorie, a jednocześnie biblioteka, która uprości typowe rutyny analityka, jako sposób opisywania regularnych zadań analizy produktowej, który byłby zrozumiały zarówno dla ludzi, jak i robotów. Biblioteka umożliwia opisywanie zachowań użytkowników i powiązanie ich z metrykami biznesowymi produktu w tak formalnym i jasnym języku, aby uprościć i zautomatyzować rutynowe zadania programistów i analityków, oraz ułatwić ich komunikację z biznesem.

Retentioneering — metoda i analityczne narzędzia programowe, które można dostosować i zintegrować w każdym cyfrowym (i nie tylko) produkcie.

Rozpoczęliśmy prace nad produktem w 2015 roku. Obecnie jest to już gotowy, chociaż wciąż nieidealny zestaw narzędzi w Pythonie i Pandas do pracy z danymi, modele uczenia maszynowego z interfejsem przypominającym sklearn, narzędzia do interpretacji wyników modeli uczenia maszynowego eli5 i shap.

Wszystko to zapakowane jest w wygodną bibliotekę open-source w otwartym repozytorium Github — retentioneering-tools.Użycie biblioteki jest proste, praktycznie każda osoba, która interesuje się analizą produktową, ale nie pisała wcześniej kodu, może samodzielnie zastosować nasze metody analizy do swoich danych bez znacznego poświęcenia czasu.

A programista, twórca aplikacji lub członek zespołu deweloperskiego lub testowego, który nigdy wcześniej nie zajmował się analizą, może zacząć eksperymentować z tym kodem i zobaczyć wzorce użycia swojej aplikacji bez pomocy z zewnątrz.

Ścieżka użytkownika jako podstawowy element analizy i metody jej przetwarzania

Ścieżka użytkownika to sekwencja stanów użytkownika w określonych momentach czasowych. Ponadto zdarzenia mogą pochodzić z różnych źródeł danych, zarówno online, jak i offline. Wydarzenia, które miały miejsce z użytkownikiem, są częścią jego ścieżki. Przykłady:
• nacisnął przycisk
• zobaczył obrazek
• trafił na ekran
• otrzymał maila
• polecił produkt przyjacielowi
• wypełnił formularz
• dotknął ekranu
• przewinął
• podszedł do kasy
• zamówił burrito
• zjadł burrito
• zatruł się zjedzonym burrito
• wszedł do kawiarni tylnym wejściem
• wszedł frontowym wejściem
• zamknął aplikację
• otrzymał powiadomienie push
• gapił się na ekran przez dłuższy czas X
• opłacił zamówienie
• odebrał zamówienie
• otrzymał odmowę kredytu

Jeśli weźmiemy dane ścieżek grupy użytkowników i przeanalizujemy, jak zorganizowane są przejścia, możemy śledzić, jak dokładnie kształtuje się ich zachowanie w aplikacji. Jest to wygodne do zrobienia za pomocą grafu, w którym stany są węzłami, a przejścia między nimi są krawędziami:

Retentioneering: jak stworzyliśmy narzędzia open-source do analizy produktów w Pythonie i Pandas

„Trajektoria” to bardzo wygodne pojęcie – zawiera szczegółowe informacje o wszystkich działaniach użytkownika, z możliwością dodawania wszelkich dodatkowych danych do opisu tych działań. Dzięki temu jest to obiekt uniwersalny. Jeśli masz ładne i wygodne narzędzia, które umożliwiają pracę z trajektoriami, możesz znajdować podobieństwa, segmentować je.

Segmentacja trajektorii na początku może wydawać się czymś bardzo skomplikowanym. W zwykłej sytuacji tak właśnie jest – trzeba użyć porównania macierzy spójności lub wyrównania sekwencji. Udało nam się znaleźć prostszy sposób – badać dużą liczbę trajektorii i segmentować je poprzez klasteryzację.

Jak się okazało, można przekształcać trajektorię w punkt za pomocą ciągłych reprezentacji, na przykład, TF-IDF. Po przekształceniu trajektoria staje się punktem w przestrzeni, gdzie na osiach odłożona jest znormalizowana częstość występowania różnych wydarzeń i przejść między nimi w trajektorii. Ten obiekt z ogromnej przestrzeni o tysiącach wymiarów (dimS=sum(typy wydarzeń)+sum(typy ngramów_2)), można sprojektować na płaszczyznę za pomocą TSNE. TSNE – transformacja, zmniejsza wymiarowość przestrzeni do 2 osi i w miarę możliwości zachowuje względne odległości między punktami. W związku z tym możliwe jest na płaskiej mapie, obrazowej mapie projekcyjnej trajektorii, badanie, jak blisko siebie znajdowały się punkty różnych trajektorii. Analizuje się, jak blisko lub różnie były one od siebie, czy tworzyły klastry, czy rozpraszały się po mapie itd.:

Retentioneering: jak stworzyliśmy narzędzia open-source do analizy produktów w Pythonie i Pandas

Narzędzia analityczne Retentioneering umożliwiają przekształcenie zbioru skomplikowanych danych i trajektorii w reprezentację, którą można ze sobą porównać, a następnie badać i interpretować wyniki przekształcenia.

Mówiąc o standardowych metodach przetwarzania trajektorii, mamy na myśli trzy podstawowe narzędzia, które wdrożyliśmy w Retentioneering – grafy, macierze kroków i mapy projekcji trajektorii.

Praca z Google Analytics, Firebase i podobnymi systemami analitycznymi jest wystarczająco skomplikowana i nie jest w 100% skuteczna. Problem tkwi w pewnych ograniczeniach dla użytkowników, przez co praca analityka w tych systemach opiera się na kliknięciach myszką i wyborze segmentów. Retentioneering daje możliwość pracy z trajektoriami użytkowników, a nie tylko z lejkami, jak w Google Analytics, gdzie poziom szczegółowości często sprowadza się do lejka, nawet jeśli ten został zbudowany dla jakiegoś segmentu.

Retentioneering i przypadki

Jako przykład zastosowania opracowanego narzędzia można przytoczyć przypadek dużego niszowego serwisu w Rosji. Ta firma ma aplikację mobilną na Androida, która cieszy się popularnością wśród klientów. Roczny obrót z aplikacji mobilnej wynosił około 7 mln rubli, a sezonowe wahania oscylowały w granicach 60-130 tys. Ta sama firma ma również aplikację na iOS, a średni koszyk użytkownika aplikacji „jabłkowej” był wyższy od średniego koszyka klienta korzystającego z aplikacji na Androida — 1080 rubli w porównaniu do 1300 rubli.

Firma postanowiła zwiększyć efektywność aplikacji na Androida, w tym celu przeprowadzono jej dokładną analizę. Stworzono kilka dziesiątek hipotez dotyczących zwiększenia efektywności aplikacji. Po zastosowaniu Retentioneering okazało się, że problem tkwi w komunikatach, które były pokazywane nowym użytkownikom. Otrzymywali oni informacje o marce, zaletach firmy i cenach. Jednak, jak się okazało, komunikaty miały pomóc użytkownikowi nauczyć się korzystać z aplikacji.

Retentioneering: jak stworzyliśmy narzędzia open-source do analizy produktów w Pythonie i Pandas

I to właśnie zrobiono, w efekcie czego aplikację zaczęto mniej usuwać, a wzrost konwersji w zamówienia wyniósł 23%. Na początku na test przeznaczono 20 procent ruchu przychodzącego, ale po kilku dniach, analizując pierwsze wyniki i oceniając trend — zamienili proporcje i, przeciwnie, zostawili 20 procent dla grupy kontrolnej, a osiemdziesiąt procent umieścili w teście. Jeszcze tydzień później podjęto decyzję o sukcesywnym dodaniu testowania jeszcze dwóch hipotez. Łącznie, po siedmiu tygodniach, obrót z aplikacji na Androida zwiększył się o półtora raza w porównaniu do wcześniejszego poziomu.

Jak pracować z Retentioneering?

Pierwsze kroki są dość proste — ładujemy bibliotekę poleceniem pip install retentioneering. W samym repozytorium znajdują się gotowe przykłady i przypadki przetwarzania danych dla niektórych zadań analityki produktowej. Zestaw jest stale uzupełniany, na razie wystarcza do pierwszego zapoznania się. Każdy może wziąć gotowe moduły i od razu zastosować je do swoich zadań — pozwala to na szybkie skonfigurowanie procesu bardziej szczegółowej analizy i optymalizacji ścieżek użytkowników. To wszystko daje możliwość znajdowania wzorców korzystania z aplikacji za pomocą zrozumiałego kodu i przekazywania tego doświadczenia kolegom.

Retentioneering to narzędzie, które warto stosować przez cały okres życia aplikacji i oto dlaczego:

  • Retentioneering jest skuteczny w śledzeniu i ciągłej optymalizacji ścieżek użytkowników oraz poprawie wskaźników biznesowych. W aplikacjach e-commerce często dodawane są nowe funkcje, których wpływ na produkt nie zawsze można prawidłowo przewidzieć. W niektórych przypadkach pojawiają się problemy z kompatybilnością nowych i starych funkcji — na przykład nowe „kanibalizują” już istniejące. I w tej sytuacji potrzebna jest stała analiza ścieżek.
  • Podobna sytuacja ma miejsce w pracy z kanałami reklamowymi: nieustannie testowane są nowe źródła ruchu i kreacje reklamowe, konieczne jest śledzenie sezonowości, trendów oraz wpływu innych wydarzeń, co prowadzi do pojawienia się coraz to nowych klas problemów. Tutaj również wymagana jest stała obserwacja i interpretacja mechanik użytkowników.
  • Istnieje szereg czynników, które nieustannie wpływają na działanie aplikacji. Przykładowo, nowe wydania od programistów: rozwiązując bieżący problem, niechcący przywracają stary lub tworzą zupełnie nowy. Z biegiem czasu liczba nowych wydań rośnie, więc proces śledzenia błędów należy zautomatyzować — między innymi za pomocą analizy ścieżek użytkowników.

Ogólnie rzecz biorąc, Retentioneering to skuteczne narzędzie. Ale nie ma granic perfekcji — można je i należy poprawiać, rozwijać i budować na jego podstawie nowe, interesujące produkty. Im aktywniejsza będzie społeczność projektu, tym więcej będzie forków, pojawią się nowe interesujące sposoby jego wykorzystania.

Dodatkowe informacje o narzędziach Retentioneering:

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster