Achter de schermen

UvA studenten kraken de MobPro code

Een dag niet geïnnoveerd, is een dag niet geleefd. Dag in dag uit zijn wij op zoek naar manieren om de markt en onszelf te refreshen. Een frisse blik helpt daarbij en daarom daagden wij vier studenten van de Universiteit van Amsterdam uit om de MobPro machine nog slimmer, sneller en betrouwbaarder te maken.

UvA studenten aan de slag met machine learning

Gijs RoundGijs is onze head of development. Hij is samen met zijn vier-koppige team het uurwerk in het MobPro horloge. Zij zijn verantwoordelijk voor de techniek die ervoor zorgt dat jij altijd de beste en meest relevante advertentieplaats krijgt in slechts 100 milliseconden.

De ‘magie’ die wij daarbij gebruiken is machine learning. Gijs: “Machine learning gebruiken wij om een viewable impressie, een click of het geslacht van een gebruiker te voorspellen”. Deze modellen doen een voorspelling op basis van de data die wij ontvangen in een bid-request. Dit is een real-time verzoek om een advertentieruimte in te vullen. Door het model goede voorbeelden te geven van bid-requests die bijvoorbeeld tot een click hebben geleid, trainen we het model – middels een algoritme – te herkennen hoe een bid-request eruitziet die kan lijden tot bijvoorbeeld een click of viewable impressie.

Gijs: “We vroegen de studenten hoe wij ons voorspellingsmodel nog slimmer kunnen maken en in hoeverre wij de betrouwbaarheid van die voorspellingen kunnen verhogen”.

Met wat voor verbeteringen zijn de studenten gekomen?

Op basis van de naam van een app een voorspelling doen

In een bid-request staan verschillende soorten informatie: het merk van het toestel, het land waar de persoon zich in bevindt, de titel van de app en nog veel meer. In een ideale situatie wil je al die data benutten om een voorspelling te doen. Al deze eigenschappen (en de combinaties ervan) kunnen verborgen indicatoren bevatten om de voorspellingen op te baseren. Ondanks dat de modellen ‘slim’ overkomen, zijn ze dom als het gaat om het interpreteren van de menselijke taal. Bijvoorbeeld in het interpreteren van de naam van een app. Een app wordt door verschillende SSPs anders doorgegeven en dat kan een flinke impact hebben op de kracht van een model.

Voor een computer zijn de namen: ‘NU.nl – Het laatste nieuws’ en ‘NU.nl HD’ twee compleet verschillende namen, terwijl voor ons als mens het duidelijk is dat dit over dezelfde app gaat. Om de modellen te helpen dit onderscheid te maken hebben de studenten bedacht de titels op te splitsen in losse woorden.

‘NU.nl HD’ wordt dan: ‘NU.nl’, ‘HD’.
‘NU.nl – Het laatste nieuws’ wordt dan: ‘NU.nl’, ‘het’, ‘laatste’, ‘nieuws’.

Nu kan het model de gelijkenis vinden in de ‘NU.nl’ onderdelen. De menselijke taal is echter complexer dan dit. Context is zeer belangrijk. Sommige app titels zullen op deze manier gematcht worden terwijl ze niet idententiek zijn. Bijvoorbeeld: ‘Wordfeud HD’ (het spel) en ‘Wordfeud super solver HD’ (een app om vals te spelen). Om dit onderscheid te maken bedachten de studenten om naast losse woorden, ook gebruik te maken van zogenaamde bi-grams. Combinaties van opeenvolgende woorden:

‘Wordfeud super solver HD’ wordt dan:
Wordfeud super’, ‘super solver’, ‘solver HD’.

Op basis van bijvoorbeeld de combinatie ‘Wordfeud super’ kan het model er vervolgens voor kiezen om deze uit te sluiten.

Met het gebruik van deze twee technieken wisten de studenten de oorspronkelijke AUC score (betrouwbaarheid score) van 0.80 naar een score van 0.86 te tillen! Een flinke stap in de machine learning wereld.

De betrouwbaarheid van onze voorspellingen significant verbeterd

De leeftijd van een gebruiker is een belangrijke waarde om te bepalen of een reclameboodschap relevant is voor die gebruiker. Van een aantal partijen ontvangen wij de leeftijd van de gebruiker in het bid-request. Maar hoe betrouwbaar is deze informatie? Wij willen onze voorspellingsmodellen enkel trainen met de meest betrouwbare data zodat de voorspellingen accuraat zijn en een adverteerder een meer effectieve campagne draait. De studenten kregen de opdracht onderzoek te doen naar de betrouwbaarheid van de aanwezige leeftijden in een bid-request.

Een eerste analyse leverde de onderstaande grafiek op van de voorkomende geboortejaren. Opvallend zijn de grote pieken bij gebruikers uit het geboortejaar 1970 en 1997. Waar komen deze vandaan?

Grafiek UvA Groen MP

Het jaartal 1970 is een jaartal wat mensen uit de computerwereld direct zullen herkennen. Dit is het zogenaamde jaar 0 in de Linux wereld. In Linux is ervoor gekozen om tijd bij te houden als het aantal seconden sinds 1 januari 1970. Dat dit jaartal vaak voorkomt heeft ermee te maken dat bij het opslaan van een tijd, in bijvoorbeeld een database, vaak standaard de waarde 0 heeft. Waarschijnlijk zijn dit mensen die nooit hun leeftijd hebben ingevoerd of aangepast, maar welke wel wordt doorgestuurd in een bid-request.

Het jaartal 1997 is het geboortejaar van iemand van 18 jaar. Als we bedenken dat we hier te maken hebben met geboortejaren die vooral worden doorgestuurd vanuit een dating-app, is dit wel te verklaren: voor sommige apps moet de gebruiker minimaal 18 jaar zijn.

Hiernaast hebben de studenten ook gekeken naar hoe constant het geboortejaar voor unieke apparaten wordt doorgegeven door verschillende apps. In onderstaande grafiek is op de horizontale as het aantal geboortejaren gezet dat verschillend is doorgegeven. Verticaal het aantal verschillende apparaten.

Grafiek Uva Paars MP PNG

Hieruit is af te lezen dat voor de meeste apparaten precies één geboortejaar wordt doorgegeven. Maar dat er ook veel apparaten zijn waarvoor (soms veel) meer dan één geboortejaar wordt doorgegeven.

Met deze twee inzichten hebben de studenten tijdens het trainen van de modellen alle apparaten gefilterd waarvoor meer dan één leeftijd wordt doorgegeven of het geboortejaar 1970 of 1997 is. Ze wisten hiermee de oude AUC score van het leeftijdsmodel van 0.75 flink te overtreffen met een AUC score van 0.85. Weer een enorme verbetering!

Gijs: “Verbetering van de AUC scores betekent in dit verhaal vooral een toename in het aantal unieke apparaten die we accuraat kunnen aanwijzen, maar houdt niet direct verband met een accuratie van onze voorspelling. Het model geeft naast een voorspelling ook zijn zekerheid van de voorspellen, zo zijn onze voorspellingen altijd accuraat”.

“Ik ving nieuwsgierige blikken wanneer ik vertelde dat ik een project in mobile advertising deed”

Slechts vier weken baanden Mirthe, Nora, Alexander en Jim in de wereld van mobile programmatic advertising. “De grootste uitdaging was de hoeveelheid data waar wij een weg in moesten banen”, zegt Nora. “Het is erg boeiend om te zien hoe die data uiteindelijk extra informatie geven door middel van een voorspellingsmodel”, stelt Mirthe.

Ook brachten de studenten tijd door op het MobPro hoofdkwartier. Mirthe: “Ik ving nieuwsgierige blikken wanneer ik vertelde dat ik een project in mobile advertising deed. MobPro is een gezellig en modern bedrijf met heel veel blije mensen”.

Uitgeleerd zijn Mirthe, Nora, Alexander en Jim nog lang niet. Nora: “Ik ga per september naar San Francisco om meer te leren over hoe ik een computer zo optimaal mogelijk kan bouwen”. Mirthe maakt eerst haar bachelor Wiskunde af en start daarna met een master Mathematics.

“Ik ben erg blij dat we de studenten hebben kunnen uitdagen met deze moeilijke opdracht”, zegt Gijs,” schoolse lesstof is vaak droog en ook niet toegespitst op de praktijk”. De studenten hebben onwijs hard gewerkt en hun uitkomsten vormen een mooie basis op om voor te borduren”.

Begint jouw hart sneller te kloppen na het lezen van deze materie? Wij zijn op zoek naar energieke Phython Developers! Word het uurwerk in het MobPro horloge en mail jouw CV naar diederick@mobpro.com.

Mobile journalist en merkromanticus. Brengt merken en mobile advertising passievol samen in meeslepende prozaverhalen.

Discussie

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

Time limit is exhausted. Please reload CAPTCHA.