Verantwoord analyseren, interpreteren en presenteren in SPSS Statistics
Segmenteer uw klanten met IBM SPSS Statistics
- Leestijd: 10 minuten
- Niveau: Beginner
- Voorkennis: IBM SPSS Statistics
Samenvatting
- Segmentatie technieken
- RFM analyse
- K-Means
- Clustering
- Toepassing: Marketing / Fraudedetectie
Auteur(s)
- Jos den Ronden, Data Analyse Academie
- Rianne Severin-Hotting, DASC
In dit artikel presenteren we twee methoden om klanten te segmenteren. De eerste methode plaatst klanten in een “piramide” (gebaseerd op The Customer Marketing Method, Jay Curry en Adam Curry, 2000). Hieronder zie je een voorbeeld van de “klantpiramide” (geïnspireerd door Curry).
Uit de piramide blijkt dat 20% van de klanten voor 80% van de omzet verantwoordelijk zijn.
Heeft men eenmaal de klanten gesegmenteerd, dan zijn er verschillende strategieën om bijvoorbeeld klanten te bewegen naar een hoger segment of om te achterhalen waarom klanten inactief worden.
Het maken van deze klantpiramide is eenvoudig, terwijl de tweede segmentatiemethode wat voorkennis van statistiek vereist. Het voordeel van de tweede methode is dat deze algemener is en geschikt voor verschillende soorten segmentatie.
Methode 1: Segmenteren aan de hand van de klantpiramide
De vraag is hoe je “top” klanten, “grote” klanten en dergelijke zou willen definiëren. Zo zou je klanten kunnen opdelen in 5 segmenten op basis van omzet. Bijvoorbeeld, met 100 klanten zou je de klant met de hoogste omzet (1%) tot de “top” rekenen, terwijl de 50 klanten (50%) met de laagste omzet tot het “inactieve” segment behoren. De klant in het topsegment krijgt dan de score 5, de klanten in het inactieve segment krijgen de score 1.
Een verdere verfijning van dit idee omvat niet alleen de omzet (of “Monetary value”) als basis voor segmentatie, maar ook de frequentie van aankopen (“Frequency”) en de recentelijkheid van de aankopen (“Recency”):
- Voor Frequency: de top 1% van klanten die het vaakst hebben gekocht, worden als elite beschouwd (score 5), terwijl de onderste 50% die minder vaak hebben gekocht, worden geclassificeerd als inactief (score 1).
- Voor Recency geldt een soortgelijke aanpak: de top 1% van klanten die het meest recent hebben gekocht, worden als actief beschouwd (score 5), terwijl de onderste 50% die het langst geleden hebben gekocht, worden gecategoriseerd als inactief (score 1).
Hierdoor krijgt elke klant 3 scores, variërend van 1 tot 5, die vervolgens worden opgeteld tot één totaalscore per klant. De hoogste score is dan 15, terwijl de laagste score 3 bedraagt. Op basis hiervan kunnen de top 1% klanten met de hoogste totaalscores worden aangemerkt als het top segment.
In de praktijk zijn er verschillende varianten van deze aanpak te vinden:
- In plaats van eenvoudige optelling van scores op de RFM-variabelen, zou je prioriteiten kunnen stellen in de RFM-variabelen. Bijvoorbeeld, als de Monetaire Waarde het belangrijkst wordt geacht, gevolgd door Recency en vervolgens Frequency, zou je een klantscore kunnen berekenen met de formule: 100 * M + 10 * R + F.
- Ook het aantal segmenten per variabele kan variëren. Meer of minder segmenten kunnen worden gecreëerd, waarbij meer segmenten zorgen voor een fijnere granulariteit in de piramide.
De algemene term voor het indelen van gegevens in gelijke delen is “n-tielen”, waarbij n in dit voorbeeld gelijk is aan 5 (bij kwartielen krijg je bijvoorbeeld 25% van de gevallen in elk segment; bij percentielen 1%).
Voor dit artikel volgen we de laatste methode: 5 segmenten van elk 20% per variabele, gevolgd door 5 segmenten van 20% op basis van de klantscore. Maar er zijn talloze andere benaderingen mogelijk.
Het maken van de klantpiramide in IBM SPSS Statistics
Het volgende figuur geeft een voorbeeld van een klantenbestand met RFM variabelen.
De variabele Date geeft de datum van de bestelling weer, Amount het bedrag van de bestelling.
Merk op dat elke rij een bestelling van een klant vertegenwoordigt, niet een klant zelf. Zo heeft de eerste klant 5 bestellingen geplaatst en de tweede klant 4 bestellingen.
Vanuit dit transactiebestand moeten we komen tot een databestand waar klanten de eenheden (cases) vormen, met de variabelen:
- Recency: de meest recente transactie datum, dus de maximum waarde van Date per klant
- Frequency: het aantal transacties, dus het aantal rijen in het transactiebestand dat een klant heeft.,
- MonetaryValue: de som van alle bedragen, dus de som van Amount, per klant
Dit is een typisch voorbeeld van Data > Aggregate, met als “break variabele” ID (transacties met eenzelfde ID worden samengenomen tot één nieuwe case).
Het dialoogvenster van Aggregate wordt hieronder links getoond, net als de nieuwe dataset die gemaakt is.
Met de Aggregate functie hebben we nu de gewenste variabelen verkregen, op het juiste analyseniveau (klanten in plaats van transacties). Voor Recency wordt het maximum opgevraagd, waarmee we voor elke klant de meest recente besteldatum krijgen. Voor MonetaryValue worden alle bedragen voor een klant opgeteld, en voor Frequency wordt per klant het aantal rijen in het transactiedatabestand geteld.
Resteren nog enkele transformaties:
- Gebruik Transform > Rank Cases om, per RFM variabele, 5 segmenten te maken, elk van 20%. Dit kan door in het dialoogvenster Rank Cases bij Rank Types te opteren voor NTiles, met waarde 5. Je krijgt dan 3 variabelen, elk lopend van 1 (20% laagste scores) tot en met 5 (20% hoogste scores).
- Tel de 3 afzonderlijke scores optellen tot één nieuwe score, zeg Klantscore. Gebruik hiervoor Transform > Compute, met de functie Sum.
- Tot slot kun je weer Transform > Rank Cases toepassen op de Klantscore, met 5 n-tielen. Degenen mede t score 5 vormen dus de 20% top klanten. Degenen met de score 1, ook 20% van het bestand, kun je beschouwen als inactief.
Methode 2: Segmenteren met een clustermethode
De bovengenoemde methode kan op twee punten worden verfijnd: het toevoegen van meer variabelen die iets zeggen over Recency, Frequency en Monetary Value en het gebruik van een data-driven aanpak om natuurlijke groepen in de data te vinden.
- Er zijn meer variabelen die iets zeggen over Recency, Frequency, en Monetary Value. Voor Monetary Value zou je voor elke klant niet alleen de som van de transactiebedragen kunnen nemen, maar ook het maximale transactiebedrag, of bijhouden of er veel verschil in de transactiebedragen zit. Evenzo kunnen er voor Frequency en Recency extra variabelen worden gemaakt.
- Het opdelen van data in gelijke groepen van, zeg, 20% is niet altijd een “natuurlijke” opdeling. Als extreem voorbeeld, stel dat we 10 klanten hebben met de volgende bedragen: 100, 150, 200, 475, 525, 825, 875, 900, 950, 2000, en we groepen maken van 20%.
De opdeling in groepen van 20% zorgt er voor dat klanten met substantieel andere bedragen in dezelfde groep komen, omdat er nu eenmaal 5 groepen van 20% moeten worden gevormd.
Het alternatief is een data driven aanpak. Er zijn diverse statistische methoden die tot doel hebben om natuurlijke of “homogene” groepen in de data te vinden. Deze statistische methoden worden cluster-algoritmes genoemd. In de wereld van Data Science vallen ze onder de Unsupervised Learning technieken, dit in tegenstelling tot technieken die een bepaald kenmerk (al/dan niet opzeggen van een abonnement, de prijs van een huis) proberen te voorspellen op basis van andere kenmerken, de zogenoemde Supervised Learning technieken.
Cluster-algoritmes vinden dus cases die op elkaar lijken. Hierbij kunnen we als bijvangst van de clustering ook uitbijters in de data ontdekken, een uitbijter zal namelijk een cluster op zichzelf vormen, zoals de klant met de waarde 2,000 in dit voorbeeld. Vandaar dat cluster-algoritmen ook de basis vormen van zogenoemde Anomaliedetectie-technieken, bijvoorbeeld bij verzekeringen om frauduleuze of verdachte claims te identificeren.
Cluster analyse met IBM SPSS Statistics
Om natuurlijke groepen te creëren, gebruiken we Aggregate om variabelen zoals maximale bedrag, som van de bedragen, datum van de eerste transactie en datum van de laatste transactie te maken.
- Gebruik Aggregate, met als break variabele ID, om variabelen zoals maximale bedrag, som van de bedragen, datum van de eerste transactie, datum van de tweede transactie, en dergelijke te maken, waarbij de data van transactieniveau naar klantniveau worden getild.
- Als klanten de eenheden (cases) vormen in het databestand kunnen verdere variabelen worden berekend, bijvoorbeeld het verschil tussen de datum van de laatste bestelling en datum van de eerste bestelling. Het rekenen met datumvariabelen is eenvoudig door gebruik te maken van Transform > Date and Time Wizard.
Hieronder zien we een deel van de verkregen data:
Naast het totale bedrag hebben we ook het bedrag uitgegeven per product. Ook zie je het verschil in dagen tussen de datum van eerste- en laatste bestelling. De laatste variabele is het aantal bestellingen wat de klant heeft gedaan.
Op basis van deze verrijkte dataset kunnen we met een cluster analyse natuurlijke groepen creëren: klanten die op elkaar lijken moeten in eenzelfde cluster komen, klanten die niet op elkaar zijn moeten in andere verschillende clusters komen.
Om te bepalen of twee klanten op elkaar lijken kunnen we per variabele het verschil tussen de scores van deze twee klanten bepalen, en die verschillen optellen. Bijvoorbeeld het verschil tussen klant 1 en klant 2 op de variabele Amount is 485 – 350 = 135; op AmountProduct1 is hun verschil -24, en het verschil tussen deze twee klanten op NOrders is 1.
Met dit voorbeeld zien we al direct een aantal problemen die getackeld moeten worden:
- We kunnen niet simpelweg het verschil nemen, want negatieve verschillen en positieve verschillen kunnen elkaar opheffen.
- De verschillen, hoe dan ook gemeten, op de variabele Amount zullen veel groter zijn dan op een variabele zoals NOrders. Deze variabelen zijn anders geschaald, en hoe kun je überhaupt een verschil in geldbedragen optellen bij een verschil in aantallen?
- We hebben nogal veel nieuwe variabelen gemaakt die nauw met elkaar zouden kunnen samenhangen, denk bijvoorbeeld aan Amount en AmountProduct1. Als twee variabelen nauw samenhangen berekenen we feitelijk twee keer hetzelfde verschil.
Het tweede punt en derde punt kunnen we tackelen als we vóór de cluster analyse een zogenoemde Principale Componenten Analyse (PCA) uitvoeren, mogelijk in IBM SPSS Statistics met Analyze > Dimension Reduction > Factor.
Met PCA reduceren we de variabelen in ons databestand tot een klein aantal kernvariabelen (“principale componenten”); deze kernvariabelen bevatten nagenoeg dezelfde informatie als de variabelen die we in ons databestand hebben. Bovendien zijn deze kernvariabelen op dezelfde schaal en hangen ze niet met elkaar samen (kan dat??? Jazeker, PCA is bijna magie!). Kortom: we kunnen deze kernvariabelen als input gebruiken voor de cluster analyse!
Voor de cluster analyse gebruiken we Analyze > Classification > K Means Cluster. De “K” refereert hierbij aan het aantal clusters (groepen) dat we willen hebben. K Means Cluster gebruikt een geschikte maat om de afstanden tussen cases (klanten hier) te berekenen (zodat verschillen elkaar niet opheffen).
Gesteld dat we weer 5 segmenten willen maken, kiezen we bij Number of Clusters voor 5.
Bij het submenu Save geven we aan dat we een variabele willen bewaren die het cluster aangeeft waartoe een klant behoort.
De nieuwe variabele, die aangeeft tot welk cluster een klant behoort, kunnen we weer gebruiken in allerhande vervolganalyses. Zo kunnen we de clusters profileren aan de hand van de variabelen in ons databestand. De volgende tabel laat zien hoe de clusters scoren op de oorspronkelijke RFM variabelen (totaal bedrag, aantal bestellingen, en aantal dagen sinds de laatste bestelling.
Cluster 5 is het top segment (hoogste gemiddelde op elk van de RFM variabelen). Cluster 2 scoort gemiddeld genomen het laagst.
We kunnen de clusters ook profileren aan de hand van demografische kenmerken, zoals geslacht, leeftijd, regio, en dergelijke, gesteld uiteraard dat deze gegevens bekend zijn. Vervolgens kan de marketingstrategie daar op worden afgestemd.
Conclusie
In dit artikel passeerden twee benaderingen om klanten te segmenteren, de ene uitgaande van de klantpiramide en n-tielen, de andere door het vinden van homogene klantgroepen in de data middels Cluster analyse. De eerste aanpak vergt geen voorkennis, terwijl voor het uitvoeren van een Cluster analyse elementaire kennis van statistiek volstaat.
Er zijn ook nog varianten op deze benaderingen denkbaar. Welke methode het beste is, is niet op voorhand te zeggen; de segmentatie die het meest voor de business oplevert is uiteindelijk de beste.
Zoals in het algemeen, geldt ook hier dat data preparatie 80% van alle werk is. Onze tip: Maak gebruik van IBM SPSS Statistics Syntax voor significante tijdwinst!
Wilt u meer weten over data manipulatie, statistiek, klantsegmentatie, werken met Syntax, Custom Tables, of welk SPSS gerelateerd onderwerp dan ook, neem dan vrijblijvend contact op met ons. DASC en de Data Analyse Academie ondersteunen SPSS klanten middels webinars, workshops, cursussen (publiek of in-company cursussen op maat). DASC is meer in het algemeen ook uw partner als het gaat om het ontwerpen, begeleiden, en evalueren van analytische workflows.
Tot slot de vermelding dat IBM SPSS Statistics een aparte module Direct Marketing heeft; het volgende figuur laat de functionaliteit zien van deze module:
Wilt u meer informatie over deze module, neemt u dan aub contact met ons op.
Maak kans op een mooie DASC Dopper!
Laten we nog eens kijken naar ons oorspronkelijke bestand.
De lezersvraag is: hoe kunnen we met IBM SPSS Statistics de variabele Amount “spreiden” in de variabelen AmountProduct1, AmountProduct2, etc. (het figuur rechts), waarbij we ook van transactieniveau naar klantniveau gaan.
Hoe komen we van het databestand boven naar het databestand onder?
Stuur uw oplossing in en maak kans op een unieke DASC dopper! In de volgende blog de ontknoping, dus… stay tuned!
Happy learning!
Jos den Ronden – Data Analyse Academie
Rianne Severin-Hotting – DASC
Behapbaar beginnen met IBM SPSS Statistics?
We starten compact, zodat u groots kunt finishen. Door het afgebakende vraagstuk ziet u snel resultaat.