Odpowiedź na pytanie.
Personalizacja powiadomień push wymaga rygorystycznego podejścia quasi-eksperymentalnego z powodu samo-selekcji użytkowników w zależności od czasu aktywności. Możliwe krzyżowe zanieczyszczenie (cross-contamination) przez media społecznościowe lub konta rodzinne dodatkowo utrudnia izolację efektu.
Kluczową metodą jest Difference-in-Differences (DiD) z syntetyczną kontrolą. Grupa kontrolna jest tworzona na podstawie dopasowania propensity score według czasu otwierania aplikacji i historycznych wzorców zamówień.
Aby skorygować efekty pory dnia, stosuje się stratyfikację według stref czasowych. Krzyżowe zanieczyszczenie wykrywa się poprzez analizę device ID i adresów IP pod kątem wspólnych kont.
Metryka zatrzymania jest obliczana jako hazard ratio przy użyciu Cox proportional hazards model. Pozwala to uwzględnić dane cenzurowane i niejednorodność ryzyk odpływu.
Sytuacja z życia
W aplikacji Delivery Club planowano wdrożenie modelu ML w Pythonie z użyciem CatBoost do personalizacji czasu wysyłania powiadomień push. Problem polegał na tym, że aktywni użytkownicy otwierali aplikację głównie w porze lunchu, co tworzyło bias self-selection.
Częściowy rollout w 20% użytkowników spowodował efekt "głuchych telefonów". Użytkownicy z grupy kontrolnej dowiadywali się o promocjach od kolegów, co powodowało krzyżowe zanieczyszczenie.
Pierwszym rozważanym rozwiązaniem był klasyczny test A/B z segmentacją geograficzną. Miasto A była grupą testową, miasto B — kontrolą.
Zalety tego podejścia obejmowały czystą izolację grup i prostotę interpretacji wyników dla biznesu. Wady polegały na różnicach w preferencjach kulinarnych i dochodach między miastami, co wprowadzało przesunięcie na poziomie 12-15% w podstawowej retencji.
Drugą opcją była analiza wyłącznie użytkowników z włączonymi powiadomieniami (analiza per-protocol). Pozwalało to skoncentrować się na docelowej grupie, która reagowała na komunikaty.
Zalety — wysoka trafność dla zespołu produktowego. Wady — ignorowanie efektu opt-out bias: użytkownicy, którzy wyłączyli powiadomienia, mieli 3 razy wyższy podstawowy churn, co zniekształcało ogólny efekt interwencji.
Trzecim rozwiązaniem był Causal Impact od Google z budowaniem syntetycznej kontroli. Użyto Bayesian Structural Time Series do modelowania kontrfaktycznych.
Zalety obejmowały uwzględnienie trendów czasowych i sezonowości bez potrzeby ewidentnej kontroli. Wady — wysoka wrażliwość na wybór kowariaty i kruchość założenia o równoległych trendach przed interwencją.
Wybranym podejściem była metoda kombinowana: Inverse Probability Weighting (IPW) do skorygowania self-selection według czasu aktywności plus Diff-in-Diff z klasteryzacją błędów standardowych na poziomie klastrów geograficznych.
To rozwiązanie zachowało indywidualną wariacyjność czasu wysyłki, co jest krytyczne dla personalizacji. Jednocześnie zapewniono kontrolę nad międzygrupowymi spilloverami poprzez odporność klastrową.
Rezultatem było wykrycie prawdziwego przyrostowego efektu na poziomie +8,3% w 7-dniowym zatrzymaniu. Naivne porównanie wskazywało +15%. Efekt okazał się statystycznie istotny tylko dla segmentu "użytkownicy z 3+ zamówieniami w historii".
To pozwoliło zoptymalizować budżet na kampanie, eliminując zimnych użytkowników z docelowej grupy spersonalizowanych kampanii.
Co kandydaci często pomijają
Jak poprawnie uwzględnić sezonowość przy obliczaniu prognozy LTV dla produktu subskrypcyjnego z rocznymi i miesięcznymi planami w przypadku nietrwałości kohort?
Nowicjusze często stosują proste uśrednianie historycznych krzywych retencji bez uwzględnienia, że użytkownicy przychodzący w okresie Czarnego Piątku mają diametralnie inny profil zatrzymania. Ich churn jest 2-3 razy wyższy niż użytkowników organicznych.
Poprawne podejście to budowa oddzielnych modeli BG/NBD lub Gamma-Gamma dla każdej kohorty z uwzględnieniem sezonowych zmiennych dummy. Alternatywa — wykorzystanie Cohort-Based LTV z korektą na Bayesian Hierarchical Modeling do pożyczania siły między kohortami (partial pooling).
Jaka jest różnica między analizą intent-to-treat (ITT) a treatment-on-the-treated (TOT) przy ocenie efektu onboarding tour, i kiedy jakie podejście stosować?
Analiza ITT bada efekt oferty (offer) odbycia onboardingu dla wszystkich użytkowników w grupie testowej, w tym dla tych, którzy odmówili. TOT mierzy efekt bezpośredniego uczestnictwa w tourze (complier average causal effect).
ITT jest konserwatywny i odpowiedni do decyzji biznesowych dotyczących skalowania funkcji. Odbija rzeczywiste zachowanie użytkowników biorąc pod uwagę friction. TOT wymaga instrumental variables i odpowiada na pytanie o zasadność przymusowego onboardingu.
Błąd w wyborze metody prowadzi do przeszacowania efektu o 40-60%. Do TOT można wykorzystać losowe błędy w wyświetlaniu touru jako instrument (instrument).
Jak diagnozować problem "peeking" podczas przeprowadzania sekwencyjnego testowania A/B i jakie poprawki statystyczne zastosować?
Peeking pojawia się, gdy test jest przedwcześnie zatrzymywany po osiągnięciu istotności. Diagnoza — analiza p-value w czasie: przy peeking krzywa pokazuje "wygładzone wędrówki" z częstymi przekroczeniami progu 0.05.
Rozwiązania obejmują Group Sequential Testing z funkcjami alpha-spending (O'Brien-Fleming). Alternatywą jest Bayesian A/B Testing z podejściem ROPE (Region of Practical Equivalence).
Również skuteczne jest ustalenie wielkości próby za pomocą Data Quality Gates w Apache Airflow. Krytyczny błąd — użycie naiwnego interwału ufności bez korekty Bonferroni, co zwiększa wskaźnik false positive do 25-30% przy 5 kontrolach pośrednich.