Achtergrond van de vraag
Grote producten integreren voortdurend nieuwe ingangen voor content - gepersonaliseerde blokken, AI-aanbevelingen of alternatieve navigatiepatronen. Zonder analyse van cannibalisatie kan het team ten onrechte het succes van de nieuwe functie toeschrijven, terwijl er in werkelijkheid alleen een verschuiving van gebruikers tussen schermen heeft plaatsgevonden zonder groei van de totale omzet.
Probleem
Het is noodzakelijk om het incrementele effect (nieuwe transacties die zonder de nieuwe blok niet zouden hebben plaatsgevonden) te scheiden van cannibalisatie (transacties die zijn overgegaan van oude categorieën naar de nieuwe blok). Standaard A/B-test op gebruikersniveau lost dit probleem niet op, omdat de gebruiker beide kanalen tegelijkertijd ziet, en de keuze tussen hen endogeniteit creëert.
Oplossing
We gebruiken een Geo-experiment met synthetische controle of geclusterde randomisatie per sessie. We wijzen willekeurig geografische regio's toe aan de test en controle, en meten de verandering in GMV niet alleen op niveau van het gehele platform, maar ook geaggregeerd per navigatiecategorie. We passen de Difference-in-Differences-methode toe met categorieën als paneldata om de gecannibaliseerde omzet uit de totale groei te berekenen.
Probleemomschrijving
In de e-commerce mobiele applicatie werd een nieuw blok "Geselecteerd voor jou" gelanceerd op basis van TensorFlow-rankingmodellen. Een maand later daalde de klikratio in de categorie met 25%, terwijl de totale GMV slechts met 5% steeg. Het productteam discussieerde: is dit cannibalisatie of echte optimalisatie van het gebruikerspad? Het was nodig om te bepalen hoeveel van de 5% echte groei was en hoeveel een verschuiving van bestaande vraag.
Overwogen oplossingen
Oplossing één: Eenvoudige vergelijking "voor/na" van de totale GMV. Deze benadering veronderstelt dat de cijfers zonder de nieuwe blok onveranderd zouden zijn gebleven. Voordelen: maximale snelheid, vereist geen experimentele infrastructuur. Nadelen: negeert seizoensgebondenheid, marketingcampagnes en organische groeitrends, wat leidt tot een vertekende schatting van 15-20%.
Oplossing twee: Klassieke A/B-test op user_id-niveau met 50/50 split via Splitting-service. Hier wordt aangenomen dat als het blok voor de controlegroep verborgen is, het verschil in GMV het werkelijke effect zou tonen. Voordelen: eenvoud van implementatie, vertrouwde statistiek. Nadelen: gebruikers in de test kunnen nog steeds items vinden via zoekopdracht of categorieën, wat directe cannibalisatie binnen de testgroep creëert, terwijl de controlegroep zonder blok minder gegevens genereert voor het vergelijken van categorieën.
Oplossing drie: Geo-experiment met synthetische controle (SCM). We kiezen 20 steden met vergelijkbare GMV-dynamiek, randomiseren 10 in de test (blok ingeschakeld), 10 in de controle (blok wordt niet getoond). Voor controle bouwen we een gewogen som van de steden, zo dicht mogelijk bij de teststeden "voor" de periode. Voordelen: maakt het mogelijk om het effect op niveau van geaggregeerde markten te meten, en houdt op natuurlijke wijze rekening met cannibalisatie tussen categorieën binnen een stad. Nadelen: vereist een grote steekproef (steden), gevoelig voor regionale acties, complexiteit in het berekenen van de fout van de tweede orde.
Gekozen oplossing en onderbouwing
We hebben gekozen voor de derde optie - geo-experiment met Synthetic Control Method. De sleutelfactor was de onmogelijkheid om cannibalisatie binnen één gebruiker te meten via een gewone A/B-test, aangezien we zelfs in de controlegroep zonder blok de "contrafactuele" uitkomst van die transacties die in de testgroep naar de blok zouden gaan niet zien. Het geo-niveau maakte het mogelijk om te zien hoe de structuur van aankopen per categorie in het algemeen verandert.
Resultaat
We hebben vastgesteld dat van de 5% totale GMV-groei 3.2% cannibalisatie was (verschuiving van de lange staartcategorieën naar de top 3 items van de blok), en slechts 1.8% was echt incrementeel effect. Op basis van deze gegevens hebben we het ranking-algoritme aangepast door een penalization voor populaire items toe te voegen, wat de netto groei tot 4.1% heeft verhoogd.
Vraag 1: Waarom kan je gewoon de correlatie tussen klikken in de nieuwe blok en de daling van klikken in de categorie op gebruikerssessieniveau niet bekijken?
Het antwoord ligt in de endogeniteit van zelfselectie. Gebruikers die op de nieuwe blok klikken, hebben een andere structuur van intenties (hoge koopintentie vs. browsen), dan degenen die naar categorieën gaan. Een directe correlatie kan leiden tot het Simpsons-paradox: in geaggregeerde data kan het lijken dat de blok verkeer "gestolen" heeft, maar op cohortniveau met hoge intentie zullen we zien dat ze toch zouden hebben gekocht, alleen sneller. Het is noodzakelijk om Causal Forest of Propensity Score Matching te gebruiken om gebruikers met dezelfde gedragsgeschiedenis "voor" de blootstelling aan de blok te vergelijken.
Vraag 2: Hoe de minimale significante effect (MDE) voor het cannibaliseringsexperiment te berekenen, als het effect negatief kan zijn voor sommige categorieën en positief voor andere?
Hier vergissen kandidaten zich door de standaardformule voor het gemiddelde effect toe te passen. In het geval van cannibalisatie neemt de spreiding tussen categorieën toe, aangezien we met een onevenwicht omgaan: sommige categorieën verliezen, andere winnen. We moeten Linear Mixed Models met een random effect categorie gebruiken en de kracht berekenen voor de gecombineerde metric: totale GMV minus het gewogen verlies in GMV in de gecannibaliseerde categorieën met een risico-compensatiefactor.
Vraag 3: Wat is het fundamentele verschil tussen experimentele metingen van cannibalisatie in producten en het oplossen van het interferentieprobleem in sociale netwerken?
In productanalyse is cannibalisatie een vorm van "vraagverschuiving" binnen één subject (gebruiker), wat zelden als interferentie tussen eenheden wordt gemodelleerd. In sociale netwerken (bijvoorbeeld Facebook) is interferentie een spillover tussen gebruikers via het sociale graf. Om cannibalisatie te bestrijden gebruiken we clustering op tijd of gedrags type, niet grafen randomisatie. Het is belangrijk om te begrijpen dat hier treatment assignment blootstelling aan de nieuwe UI is, niet communicatie tussen gebruikers, daarom zijn methoden zoals Ego-cluster randomization niet van toepassing; in plaats daarvan gebruiken we Switchback experiments op niveau van gebruikerssegmenten.