3 problemen van AB testen

Succesvolle (web) ondernemingen zijn ingericht op continue testen. Dit is preken voor eigen parochie; iets waar we het allemaal over eens zijn. Maar over hoe ondernemingen optimaal kunnen testen, verschillen we misschien van mening. Dit artikel gaat over de meest gebruikte vorm van testen – het hier vaak genoemde AB testen.

De typische AB test vergelijkt de performance van 2 versies van een website (A en B) op een of meerdere criteria, bijvoorbeeld click-through naar een andere site. Aan een aantal bezoekers, zeg 1000, laat men “random” of wel versie A ofwel versie B zien. Als de click-through rate op A zes procent is, en op B negen, dan gaan we voortaan voor B. Het kan eigenlijk niet simpeler.

Echter, zoals met veel dingen in het leven, betekent simpel meestal gewoon dat er iets fout zit en dat er een aantal aannames worden gedaan die mogelijk onjuist zijn. Ik wil het niet eens hebben over significantie (zoals vaak besproken door anderen) want ik ga er vanuit dat iedereen hier daar wel raad mee weet: Je moet wel genoeg observaties hebben voordat je besluit dat versie B beter is dan versie A.

Maar, zelfs al heb je een paar duizend observaties, en gebruik je de juiste kansverdeling voor je clicks (en dat is niet de veel gebruikte Z; Mean 0, SD 1 gaussian), dan neem je impliciet nog wel een aantal aannames die op de lange termijn je conversie niet ten goede komen.

Probleem 1: Je bezoekers veranderen over tijd.

Een goed voorbeeldje van dit eerste probleem kwam ik vorig jaar tegen tijdens Design For Persuasion te Gent: we waren email campagnes aan het AB testen. Een niet-nader te noemen telecom aanbieder was geïnteresseerd in de meest aantrekkelijke incentive voor een nieuw abonnement: Een iPhone of een Beertender. Duizend mailtjes de deur uit, 500 van ieder, en in tegenstelling tot de verwachting van de zaal werd er veel vaker op de Beertender versie geclicked. Verbazingwekkend, alleen al omdat de iPhone op dat moment twee keer zo duur was…

Alleen als je er over nadenkt, dan is het helemaal niet zo verrassend. Want wie zijn die eerste 1000 mensen die reageren? Dat zijn waarschijnlijk mensen die direct toegang hadden tot hun email; waarschijnlijk via de bewuste iPhone. Logisch dat je die Beertender wel ziet zitten als je die iPhone al hebt. Maar, de gemiddelde kantoorbaan die de volgende ochtend achter zijn computer kruipt en de aanbieding in zijn email ziet, was toch echt voor die iPhone gegaan.

Dit punt geld niet alleen voor email campagnes: De early-adopters waarop jij je website test reageren hoogst waarschijnlijk anders dan die late-majority waarvan je hoopt dat die erna komt. Het generaliseren van test resultaten op basis van de eerste groep zal dan ook niet altijd positief uitvallen.

Probleem 2: Je bezoekers hebben verschillende voorkeuren.

De AB test richt zich op gemiddelde effecten: effecten van veranderingen in een website of mailing over alle bezoekers heen. Je meet dus een marginale kans; P(A) of P(B). Sociaal wetenschappelijk onderzoek over de laatste dertig jaar toont echter aan dat er nogal wat verschillen zitten tussen mensen. Er zijn bijvoorbeeld grote verschillen in de vatbaarheid van bezoekers voor verschillende beïnvloedingsstrategieën: De “speciale aanbieding” werkt fantastisch voor de ene bezoeker, maar de andere bezoeker loopt gillend weg. Meer info hierover stond afgelopen maand in Wired.

Als je de mogelijkheid hebt om bezoekers meerdere malen te zien reageren op je eigen website dan is het aan te raden de conditionele kansen (conditioneel op de bezoeker; P(A|bezoeker=12) en P(B|bezoeker=12)) te gebruiken voor het vergelijk van de versies A en B. Dit alles is natuurlijk mooi Bayesiaans te modelleren zodat je daadwerkelijk informatie hebt over je hypothese geconditioneerd op de data, in plaats van testen of de data waarschijnlijk is gegeven een nogal naïeve hypothese. Je kunt vanaf daar dynamisch besluiten dat versie A een goed idee is voor bezoeker 12, ondanks de populariteit van versie B onder de andere bezoekers.

Probleem 3: Explore vs. Exploit.

Behalve het methodologische foutje van het generaliseren van de testuitkomsten naar een kwalitatief andere populatie, en het bekijken van marginale kans in plaats van de conditionele kans, zit er nog een andere algemene fout in de AB test: De neiging om te snel de opgedane “kennis” vanuit de tests te exploiteren voordat je klaar bent met exploreren.

Simpel gezegd gaat het hier om de volgende vraag: Wanneer besluit je dat je data genoeg is om voortaan alleen nog maar voor B te gaan (en B dus te “exploiten”) en wanneer ga je toch nog even het mogelijke succes van A bekijken (“explore”)? 

Dit is een welbekend probleem in de Machine Learning, maar wordt in de praktijk van het AB testen bijna nooit serieus genomen. De eerste serieuze aandacht voor dit probleem voor website optimalisatie komt van Prof. Hausser en collega’s bij MIT, die in hun artikel over website morphing dit verschil goed uitleggen. Om dit probleem goed op te lossen moet je niet alleen de gemiddelde performance van de versies met elkaar vergelijken, maar ook je onzekerheid over deze schattingen bijhouden. Wanneer je daarbij rekening houdt met terugkerende bezoekers en je onzekerheid dus niet alleen afhangt van het totale aantal views van je site, maar ook van het aantal keer dat een bezoeker terug komt, dan kun je de explore-exploit tradeoff beter optimaliseren.

PersuasionAPI 

Een aantal weken geleden zijn Arjan Haring en ik PersuasionAPI gestart om de bovenstaande problemen op te lossen. PersuasionAPI behandelt individuele bezoekers en bezoeken niet gelijk. We houden het succes van verschillende versies van een website bij over views en bezoekers. Door zowel deze schattingen als hun onzekerheid over tijd bij te houden kunnen we real-time advies geven over de beste versie van je website voor de huidige bezoeker.

We doen dit echter liever niet alleen op het niveau van “de kleur van de knoppen”, waar veel AB tests gebeuren. Wij zijn geïnteresseerd in de effecten van verschillende psychologische beïnvloedingstrategieën: Heeft het wel zin om altijd die ratings van klanten en die speciale aanbieding tegelijk te laten zien? En, hebben sommige bezoekers niet meer een voorkeur voor productevaluaties van experts, in plaats van feedback over het aantal verkochte producten? Als je dit weet van een terugkerende bezoeker, dan is deze voorkeur ook nuttig voor je volgende sales activiteit. Dit in tegenstelling tot de kleur van de knoppen. Ook dit staat uitgelegd in het artikel in Wired.

Een klein voorproefje van onze resultaten vind je hieronder: We vergeleken 3 verschillende versies van een product presentatie pagina van een affiliate store. Om het real-time dynamische modelleren te vergelijken met de performance van de uitkomsten van een standaard AB test stuurden we de helft van de bezoekers naar de versie die na 3000 views – 1000 per versie – het hoogst scoorde (baseline). De andere helft van de bezoekers kreeg te maken met dynamische updates van de product presentatie (Adaptive). De eerste dagen zijn de schattingen nogal onzeker, maar binnen 25 dagen is het duidelijk dat de dynamische versie consistent beter scoort dan de versie die het best scoorde op de AB test.

We zijn nu een2 maanden bezig en in Private Beta. Mocht je geïnteresseerd zijn laat het dan even weten via onze site, email ons, of volg ons op twitter. We komen graag in contact om onze API op te testen, en rapporteren graag weer terug op webanalisten.nl over de resultaten. Laat even weten dat je ons via webanalisten.nl hebt gevonden en we zetten je bovenaan de lijst voor een uitnodiging.

We hebben de afgelopen maand 200.000 API calls afgehandeld, en we zijn van plan nog even door te gaan.

Dank aan Reinout dat we dit hier mochten toelichten. Voor iedereen die wat meer inhoudelijk wil weten hoe we dit modelleren en optimaliseren, reageer hier onder of stuur mij een email.