Samma uppställning återkommer i varje kommersiellt system jag byggt:
förväntat värde = sannolikhet att händelsen inträffar × värdet om den inträffar
I annonsering blir det klicksannolikhet gånger konverteringssannolikhet gånger ordervärde. I en rekommendation blir det sannolikhet att artikeln köps gånger dess täckningsbidrag. I en churnmodell blir det sannolikhet att kunden lämnar gånger vad hon är värd.
Det är alltid samma struktur, och den ska byggas som två modeller.
Varför inte förutsäga intäkten direkt
Den uppenbara vägen är att låta en enda modell förutsäga intäkt per besök. Den fungerar dåligt av tre skäl.
Utfallet är mestadels noll. Konverterar två procent av besöken består nittioåtta procent av observationerna av nollor, och resten är kraftigt snedfördelade belopp. Ingen standardfördelning beskriver det bra.
Faktorerna drivs av olika saker. Vad som får någon att köpa och vad som avgör hur mycket hon lägger är sällan samma variabler. En rabattkod höjer konverteringen och sänker ordervärdet. Slås de ihop tar effekterna delvis ut varandra och modellen lär sig mindre än den kunde.
Datamängderna skiljer sig med en tiopotens. Ni har miljontals besök att skatta konverteringen på och bara de faktiska ordrarna att skatta ordervärdet på. Två modeller får använda sitt underlag fullt ut.
Andelarna: CTR och konverteringsgrad
Båda är begränsade mellan noll och ett och modelleras som binomiala utfall, ofta med en betafördelning över själva andelen.
Tre saker avgör om skattningen blir användbar.
Kalibrering. Talet ska multipliceras med ett belopp, inte bara sorteras. Då räcker det inte att rangordningen är rätt: säger modellen sju procent ska det inträffa i sju fall av hundra. Se kalibrering. Det är den vanligaste bristen jag hittar i budgivningssystem.
Extrem obalans. CTR ligger ofta under en procent. Ett träffsäkerhetsmått är då meningslöst, och omviktning av data förskjuter sannolikheterna ur skala. Se obalanserade klasser.
Presentationssnedvridning. En annons högst upp får klick delvis för att den står högst upp. Modellen lär sig att positionen förutsäger klick. Det är sant och oanvändbart: ni vill veta vad som händer om annonsen placeras där.
Botemedlet är att modellera positionen explicit och sedan sätta den till en gemensam referens vid prediktion, samt att ha kvar utforskning så att det finns data om placeringar systemet normalt undviker.
Beloppen: ordervärde
Ordervärde skattas villkorat på att ett köp skett, alltså bara på ordrarna.
Fördelningen är positiv och högerskev. Det gör gammafördelningen till utgångspunkten. Är svansen tung nog att enstaka ordrar är hundra gånger snittet är lognormal rimligare.
Det praktiska felet att undvika: att modellera medelvärdet och sedan behandla det som representativt. Medianen och medelvärdet skiljer sig kraftigt i skeva fördelningar, och beslut som styrs av kanterna — fraktfria gränser, kreditgränser, lagernivåer — behöver kvantiler snarare än ett snitt.
Varukorgsvärde
Varukorgsvärdet är en summa av flera artiklar, och därför sammansatt av två storheter: antal artiklar och värde per artikel.
Antalet är räknedata, oftast överspritt och därmed negativt binomialt. Värdet per artikel är gammafördelat. Sammansättningen ger en fördelning med en punktmassa i noll och en skev, kontinuerlig svans.
Den familjen har ett namn: Tweedie. Den beskriver just fallet många nollor plus positiva, snedfördelade värden, och finns som utfallsfördelning i både GLM och de vanliga boosting-biblioteken. Det gör den till ett praktiskt alternativ till tvåstegsmodellen när man ändå vill ha ett enda tal per besök.
Tumregeln jag använder: två modeller när faktorerna ska tolkas eller styras var för sig, Tweedie när bara summan ska användas. Ska marknadsföringen kunna se om en kampanj höjde konverteringen eller varukorgen behövs två modeller.
Att utvärdera det hela
Utvärdera faktorerna var för sig och produkten.
En konverteringsmodell kan vara utmärkt och en ordervärdesmodell medioker utan att det syns i det sammanslagna felet, eftersom nollorna dominerar. Redovisa kalibreringen för sannolikheten, kvantilfelet för beloppet, och först därefter det förväntade värdet.
Och som alltid när modellen styr vad som visas: den formar sin egen framtida data. Historiska jämförelser slutar vara giltiga, och en permanent kontrollgrupp är det enda som besvarar frågan om systemet gör nytta. Se baslinjer.