Marketing Analytics – Het clusteren van producten of klanten.
26 augustus, 2021

Jeffrey Gerrits – Marketing Data Analist
“Gelukkig biedt data science uitkomst om de data te benutten. Leer je producten of klanten kennen met clustering algoritmes.”
Inhoudsopgave
Quizvraag: Hoeveel producten heeft je organisatie? En hoeveel klanten?
De kans is groot dat het antwoord op beide vragen ver boven de 1000 is. Een gemiddelde webshop heeft vaak al meer dan 100.000 rijen aan producten. Ook een klantenbestand telt vaak oneindig veel rijen.
Hoe ga je als marketeer om met deze enorme schat aan data? Het is onmenselijk om al deze data te kennen en er trends in te ontdekken. Gelukkig biedt data science uitkomst om de data te benutten. Leer je producten of klanten kennen met clustering algoritmes.
1 – Waarom clustering?
Voor clustering zijn twee dingen belangrijk; Hoeveel clusters je maakt en op basis waarvan je de clusters maakt. Met het blote oog is dit niet te doen én ook niet beheersbaar op lange termijn.
K-Means algoritme
Gelukkig zijn er clustering algoritmes, waarvan K-means de bekendste is. K staat voor het aantal clusters en hiermee kan je verschillende aantallen testen. Bijvoorbeeld K=3, K=4 en K=5.
Het algoritme maakt K-centrumpunten en berekent welke data bij dat centrumpunt hoort. Door steeds de gemiddeldes opnieuw te berekenen, verplaatst het centrumpunt en wordt het cluster duidelijker.
Dit is moeilijk te begrijpen, maar de onderstaande afbeelding kan je helpen:

De centrumpunten (x) worden verschoven totdat er sprake is van een mooie verdeling tussen de rode en blauwe datapunten. In dit voorbeeld is K=2 en is de data opgedeeld in twee clusters.
Het mooie aan dit soort technieken is dat de data dimensies creëert, waarmee vervolgens afgescheiden clusters gemaakt kunnen worden. Je laat de techniek voor je werken dus!
2 – Data voorbereiden
Om goede, relevante clusters te maken is het vanzelfsprekend dat je dataset enorm belangrijk is. Kies hierbij als eerste wat je wilt gaan clusteren; Producten, klanten, orders of iets heel anders?
Vervolgens ga je de data zo compleet mogelijk maken. Een aantal voorwaarden en tips:
- K-means werkt alleen met numerieke data. Probeer categorieën of tekst om te zetten naar numerieke velden.
- Probeer de waarden van dubbele records samen te voegen. Als een klant bijvoorbeeld twee keer voorkomt, voeg deze records samen en neem een som (of gemiddelde) van de overige data. Bijvoorbeeld de som van de omzet of een gemiddelde van de orderfrequentie.
- Is er een geboortedatum beschikbaar? Vertaal deze dan naar een leeftijd.
- Haal gevoelige informatie of informatie die tot discriminatie kan leiden bij voorbaat uit je dataset.
- Vul lege velden aan of laat deze records uit je dataset.
Een aantal van deze stappen kun je leren in mijn post over data-preprocessing. Lees hier!
Een voorbeeld van een dataset kan zijn:

Afhankelijk van de hoeveelheid velden en de verdeling van de data kan je een clustering techniek kiezen. Bijvoorbeeld K-means, Fuzzy C-means of spectral custering. Wat ze precies doen, laat ik in deze post buiten beschouwing.
Ook kun je er voor kiezen om een data science software te gebruiken, waarbij de techniek te gebruiken is zonder code. Voorbeelden hiervan zijn Tableau, Rapidminer en SAS. Hierbij is het natuurlijk wel belangrijk dat je gedegen kennis van de technieken hebt.
3 – Clustering algoritmes in Python
K-means in Python met Scikit Learn
Voor onderstaand voorbeeld zijn de libraries ‘Scikit learn’ en ‘Matplotlib’ gebruikt.
In Python is het K-means algoritme eenvoudig beschikbaar dankzij de Scikit learn library. Het onderstaande voorbeeld verdeelt de dataset genaamd ‘data’ in 3 clusters.

Bovenstaande test-dataset bevat twee kolommen, waarmee drie clusters zijn gemaakt. Dit is dus eenvoudig weer te geven in een scatterplot met Matplotlib. Met meer dimensies is het lastiger om een leesbare visualisatie te maken.
De resultaten van de clustering worden opgeslagen als ‘labels’. Dit is erg handig als je het cluster-label wil toevoegen aan je dataset. Deze labels gebruiken we nu om een visualisatie te maken waarbij elk cluster weergegeven wordt met een kleur.
plt.scatter(x = data[:,0], y = data[:,1], marker = ‘.’, c = kmeans.labels_, label = kmeans.labels_).
Dat ziet er als volgt uit:

Optimalisatie met de Elleboog methode
Wil je nou testen met verschillende aantallen clusters? Dat kan met een handig scriptje dat gebruik maakt van inertia. Deze metric berekent hoe ver de punten uit elkaar liggen. Hoe dat werkt, laat ik zien aan de hand van een voorbeeld.
Het onderstaande script doet tien iteraties van het k-means algoritme; Van 1 tot 10 clusters. Ook meten we de inertia en voegen die toe aan een lijst.
De lijst bevat dus K=1 en de inertia, K = 2 en de inertia, K=3 en de inertia, enzovoorts. Die gegevens gaan we plotten in een grafiek.
inertia = []
for k in range(1,10):
kmeansloop = KMeans(n_clusters=k, random_state=0).fit(data)
inertia.append(kmeansloop.inertia_)
plt.plot(inertia)

Zoals je ziet heeft de lijn iets weg van een elleboog. Op het punt van de elleboog, oftewel de scherpste knik, vind je het optimale aantal clusters.
In dit geval is dat het derde getal (2*), waardoor drie het optimale aantal clusters is.
*De Python index begint bij 0, vandaar dat het derde getal niet 3, maar 2 is.
4 – Hoe gebruik je clusters in marketing?
Nadat je de producten of klanten hebt onderverdeeld in meerdere groepen, zijn er talloze toepassingen mogelijk. Hieronder twee voorbeelden:
Producten in Google Shopping
Stel je hebt je webshop-productbestand ingedeeld in clusters. Uit het algoritme zijn 5 (eenvoudige) clusters gekomen:
- Geen verkoopaantallen.
- Lage verkoopaantallen, lage orderwaarde
- Lage verkoopaantallen, hoge orderwaarde
- Hoge verkoopaantallen, lage orderwaarde
- Hoge verkoopaantallen, hoge orderwaarde
Bij elke product is het productbestand is aangegeven onder welk cluster het valt. (label A t/m E) Dit label wordt bijvoorbeeld elke week geupdate.
Het is mogelijk om deze informatie aan je Google Shopping feed toe te voegen. Zodra de labels in Google Shopping staan, kan je veel gerichter biedingen doen.
Denk bijvoorbeeld aan een hoger bod voor producten uit cluster C & E.
Ook weet je dat je het bod van producten uit cluster D zo laag mogelijk wilt houden, zonder de hoge verkoopaantallen te verliezen. Je kan dan werken aan strategisch geplaatste keywords in het product zelf. Zo optimaliseer je je resultaat!
Een mailing op maat voor je klanten
Je stuurt maandelijks een mailing naar je actieve klantenbestand. Er is zeker respons, maar je hebt het gevoel dat het beter kan. En dat kan waarschijnlijk ook; Iedereen krijgt dezelfde mailing.
Je past clustering toe en het algoritme heeft je klanten opgedeeld in 4 groepen. Deze groepen verschillen van elkaar op velden als gemiddelde leeftijd, woonomgeving en gemiddelde orderwaarde.
In plaats van één marketinglijst, maak je er vier. En je past de content van je mailing aan. Een passend aanbod en relevante acties voor elke subgroep. Een mailing op maat dus!
Wil jij ook leren programmeren met Python?

“Je krijgt een goed beeld hoe de basis van Python werkt. Duidelijk stof en veel oefeningen inclusief een duidelijke handleiding. Goede cursus om de eerste stappen van het programmeren te leren.”
★★★★★ Michel Degger – Acceptatie verzekeringen