Weblogs

Experimenteren: belangrijk in het leven én in organisaties

Mensen houden van experimenteren. Als kind leerde ik al om dingen te proberen, mijn ouders noemden het ‘leren fietsen’. Het experimenteren ging met vallen en opstaan, maar na veel experimenteren leerden we te balanceren, rechtuit te gaan, bochten te maken zonder te vallen en te remmen. Daarna gingen we verder met ontdekken, nieuwe gebieden verkennen en verdwalen. Door te experimenteren ontdekken we en leren we nieuwe vaardigheden. Dit experimenteren is ook essentieel voor de organisaties waar we in werken. In dit blog vertel ik meer over verschillende methodes van slim testen en gebruikmaken van data.

Zonder experimenteren leren we als organisatie niet om te fietsen, nieuwe waarheden te ontdekken en ontdekken we geen nieuwe mogelijkheden. Het is alsof we als een baby in een buggy zitten en rondgereden worden door anderen. Gelukkig experimenteren we en leren van onze fouten en successen. De Vikingen zouden Noord-Amerika niet ontdekt hebben zonder een gokje te wagen. Het experimenteren komt met risico’s, maar het risico van niet-experimenteren is nog groter. Sommige organisaties denken dat ze deze risico’s kunnen vermijden en werken op een onderbuikgevoel. Maar de vraag is of zij daarmee niet juist grotere risico’s nemen. Vandaag de dag hebben we de mogelijkheden om het experimenteren en onze besluitvorming te ondersteunen met data. Experimenteren zou niet moeten eindigen met buikpijn.

A/B testen

Als organisatie is het belangrijk te weten wat de klant wil. A/B testen kan hierbij ondersteunen en is in de basis niet complex.


Een voorbeeld:

Op de website hebben we een blauwe knop. Het idee is dat wanneer we die knop een andere kleur geven (groen in ons voorbeeld), de gebruikers daar vaker op zullen doorklikken. We maken twee verschillende versies van deze pagina, en als een gebruiker de pagina bezoekt tonen we willekeurig één van deze twee versies. We registreren in een database welke van de twee opties getoond is en wat de uitkomst is (heeft de gebruiker geklikt?). Als er voldoende informatie verzameld is kunnen we bepalen welke van de 2 opties het beste presteert.

In dit voorbeeld blijkt de groene knop beter te presteren en kan deze als standaard gebruikt worden. Als uit de test was gebleken dat de groene knop minder goed had gepresteerd was er een fout voorkomen.

A/B testen is niet beperkt tot websites. Alle situaties waar we twee keuzes naast elkaar kunnen plaatsen zijn op deze manier te testen. Verschillende reclames, banners, brieven die naar klanten verstuurd worden, maar bijvoorbeeld ook werkmethodes. Wanneer er twee keuzes zijn en het meerdere keren uitgevoerd kan worden, is er een A/B test mogelijk.

Een betere test: meerlingen

In sommige gevallen weet je voor de test al meer over de testpersonen. Een voorbeeld hiervan is een mailing die gestuurd gaat worden aan klanten of een website waar gebruikers in moeten loggen. In plaats van een willekeurige selectie van de testpersonen kan er dan gebruik worden gemaakt van statistische tweelingen / meerlingen. Het idee is dat twee personen die veel gelijkenissen vertonen (zo veel mogelijk) elk één van de twee opties gepresenteerd krijgen. Het voordeel is dat zo ook bij een kleinere populatie de sets A en B meer gelijk zijn en willekeurigheid niet zo’n grote invloed heeft. Ook worden hierdoor outliers beperkt.

In het kort komt het proces hier op neer:

  • selecteer de klanten die je mee wilt nemen in het experiment. Bijvoorbeeld: alle klanten die het afgelopen jaar minimaal drie keer een product hebben besteld op de website
  • selecteer willekeurig één klant
  • zoek bij de overgebleven klanten de meest gelijke klant op basis van vastgestelde parameters, bijvoorbeeld leeftijd, geslacht, aantal keren een product gekocht, totaal bedrag van de bestellingen
  • verdeel deze twee willekeurig over de groepen A en B


Herhaal vervolgens deze stappen tot we genoeg personen in groep A en B hebben. De personen in groep A zijn niet identiek en kunnen heel verschillend zijn, maar we weten nu wel dat voor elk persoon in groep A een persoon in groep B zit welke veel overeenkomsten bevat. Hierdoor zijn de groepen A en B meer gelijk dan bij een willekeurige verdeling!

Wat is 'gelijk'?

Hiervoor moeten we eerst de parameters vaststellen. In ons voorbeeld nemen we enkele binaire en non-binaire parameters:

Binaire parameters en non-binaire parameters
Leeftijd In de data zien we leeftijden van 15 – 80 jaar
Geslacht Hier gaan we voor het gemak uit van een binaire situatie: Man/Vrouw
Frequentie: aantal keren besteld in de afgelopen 12 maanden Minimaal 3x (dat is de set van klanten), in de data zien we dit oplopen tot maximaal 30x
Omzet: totaalbedrag bestellingen van de afgelopen 12 maanden In de data zien we hier bedragen van 15 tot 5.000 euro.

Het probleem met deze parameters is dat ze erg verschillend zijn in grootte. 3-30 en 15-5000 bijvoorbeeld. Hiervoor moeten we de waarden gaan schalen tussen de 0 en 1 voor elke waarde.

Feature scaling

Deze methode heet “feature scaling”. In de praktijk betekent dit: de laagste waarde in onze set (bij frequentie: 3) krijgt een 0 en de hoogste waarde (bij frequentie: 30) krijgt een 1. Dit kan door de volgende formule toe te passen:


featurescale = ( waarde – minimum ) / ( maximum – minimum )

Dus bij tien bestellingen krijgen we de formule:

featurescale = ( 10 – 3 ) / ( 30 – 3 )

featurescale = 7 / 27

featurescale = 0,26

Tien bestellingen krijgt dus de waarde 0,26. Deze formule is eenvoudig toe te passen op alle rijen (als we de data uit een database halen kan dit eenvoudig een deel zijn van de query) en dit kan ook eenvoudig worden toegepast op de kolommen leeftijd en omzet. Op geslacht is dit niet toe te passen, hiervoor gebruiken we dan een binaire notatie van 0/1. Bijvoorbeeld: een man is 0, een vrouw is 1. Ook dit kan eenvoudig worden uitgevoerd in een query.

Verschil tussen personen, wie is gelijk?

Als we willekeurig een persoon uit het klantenbestand halen, moeten we daarna de meest gelijke persoon zoeken. Bij één parameter is dat relatief eenvoudig: de persoon met de score die het dichtste bij de getrokken persoon in de buurt komt.

Een voorbeeld:

PersoonX heeft een leeftijdsscore van 0,25. De persoon die het dichtste bij deze waarde zit is de meest gelijke persoon. Dit kunnen we in de volgende formule berekenen:

afstand = absoluut (leeftijdscore – leeftijdscore PersoonX)

Als we een persoon hebben met een leeftijdscore van 0,24 geeft dit als waarde:

afstand = absoluut ( 0,24 – 0,25 )

afstand = absoluut ( – 0,01 )

afstand = 0,01

Dus of het erboven of beneden zit maakt niet uit, we nemen de absolute waarde (afstand) en sorteren hierop. De persoon die het dichtste (kleinste afstand) zit is de persoon die we meenemen als de ‘tweeling’ van PersoonX.

Voor één parameter is dit nog eenvoudig. Maar hoe gaan we om met twee of in ons geval vier parameters?

Het is van belang dat we eerst alle afstanden berekenen. PersoonX heeft de volgende scores:

  • leeftijd = 0,25
  • geslacht = 1
  • frequentie = 0,50
  • omzet = 0,33

Het is nu mogelijk om voor alle personen de afstanden voor alle afzonderlijke waarden te berekenen. De uitdaging nu, is te bepalen wie het meest gelijk is. Hiervoor kunnen we de volgende formule gebruiken:

afstand = √ ( leeftijd2 + geslacht2 + frequentie2 + omzet2 )

NB. Voor de leesbaarheid heb ik de waarden ‘leeftijd’, ‘geslacht’, etc. genoemd, maar natuurlijk hebben we het hier over de afstand ten opzichte van de score van PersoonX.

Stel we hebben een persoon met de volgende waarden:

  • leeftijd = 0,24
  • geslacht = 1
  • frequentie = 0,55
  • omzet = 0,45

Dan krijgen we als afstand:

afstand = √ ( (0,24-0,25)2 + (1-1)2 + (0,55-0,50)2 + (0,45-0,33)2 )

afstand = √ ( (-0,01)2 + (0)2 + (0,05)2 + (0,08)2 )

afstand = √ ( 0,0001 + 0 + 0,0025 + 0,0064 )

afstand = √ 0,009

afstand = 0,095

Nu berekenen we deze afstand voor alle personen en sorteren we dit op de totale afstand. De persoon met de kleinste totale afstand is de tweeling voor PersoonX.

En nu: automatiseren!

Als voorbeeld heb ik een query gemaakt (MySQL) waarin een tabel gemaakt wordt, personen geplaatst worden in de tabel (30 stuks) en daarna een willekeurige persoon getrokken wordt en voor deze PersoonX (pX) een tweeling gezocht wordt. Je kunt de query hier bekijken.

Het resultaat (één willekeurig persoon en de meest gelijke persoon) kunnen nu naar een tabel geschreven worden (persoon, testgroep) waarbij de groep (A of B groep) willekeurig toegeschreven kan worden. Deze personen moeten in de volgende trekking uitgesloten worden.

Samenvatting

In het begin van het artikel hebben we gezien dat experimenteren belangrijk is voor een organisatie. Vanuit de data-analyse hoek is het belangrijk om dit te ondersteunen, zodat er een datagedreven organisatie ontstaat waarin kennis van onze klanten een positieve invloed heeft op de kwaliteit van deze experimenten. Natuurlijk kan er nog veel geschreven worden, maar ik hoop dat deze gedachten zullen aanzetten tot een experimenterende organisatie die niet vertrouwt op een onderbuikgevoel, maar op simpele feiten.

Thomas Brinkman is Data Engineer bij het Rijks ICT Gilde (RIG). Bij het RIG krijgen onze collega's de tijd om hun vakkennis te delen binnen en buiten de Rijksoverheid. Middels dit blog deelt Thomas zijn kennis, met deze keer als onderwerp 'experimenteren'.

Reactie toevoegen

U kunt hier een reactie plaatsen. Ongepaste reacties worden niet geplaatst. Uw reactie mag maximaal 2000 karakters tellen.

Uw reactie mag maximaal 2000 karakters lang zijn.

Reacties

Er zijn nu geen reacties gepubliceerd.