Analyse van een winkelkarretje in een bakkerij: Data analyses op zijn best!

Nicky Van Thuyne - 7 oktober 2020

Market basket analysis

In deze post gaan we verder op de data van de vorige, namelijk de bakkerij data. In de vorige post hebben we ons vooral gefocused op de pure verkoopscijfers en bijhorende visualisaties. In dit stuk gaat het vooral over transactie data, en daaraan gekoppeld het algemene koopgedrag van de klanten.

Inleiding

Zoals reeds gezegd blijven we dezelfde publiek beschikbare dataset gebruiken. (https://www.kaggle.com/sulmansarwar/transactions-from-a-bakery). Deze dataset bevat 21293 observaties van een bakkerij. De datafile bevat slechts 4 variabelen:  Datum, Tijd, Transactie ID en Item.
Wat het verschil vormt met de voorgaande analyse, is dat we een andere manier van data inlezen gaan gebruiken, namelijk de transactie wijze. hierbij gaan we niet meer kijken naar de tijd waarop de aankoop gebeurd is maar enkel de gegevens over de aankoop. Dus worden enkel kolommen 3 en 4 gebruikt voor de analyses in dit segment; daarnaast wordt een matrix opgebouwd die in de rijen de transactie plaatst, en in de kolommen de artikels. 

summary transactie informatie

Uit een samenvatting halen we snel dat in meer dan 1/3de van de gevallen 1 artikel gekocht wordt, in 1/3 van de gevallen 2 artikels, in 1/6de van de gevallen 3 artikels, in 1/12de 4 artikels en in de rest 5 of meer artikels worden gekocht.
Gemiddelde en mediaan zijn dan ook 2, iets wat we reeds geleerd hadden uit onze vorige post.

 

Analyses

 

Als gevolg van deze transformatie krijgen we een matrix van 6614x104, iets wat niet meer te visualiseren valt op een eenvoudige manier. Daarom zijn een aantal hulpmiddelen ontwikkeld om toch zinvolle conclusies te kunnen trekken hieruit.
De eerste is een eenvoudige, een die we reeds min of meer kennen vanuit de vorige analyse, namelijk de artikel frequentie
Artikel frequenties
Dezelfde artikels komen naar voor zoals voorheel (met op kop koffie en brood), dus dit is geen verrassing.

Zonder al te veel in de theorie van "market basket analysis" (MBA) te willen gaan, is het doel hier om een aantal regels op te stellen die aan bepaalde voorwaarden voldoen (zoals frequent voorkomen van combinaties artikelen of sterkte van de regel)
Als we de regels genereren met een gegeven parameter set dan bekomen we het volgende:
Regelset voor analyse

Dit genereert een set van 20 regels die het koopgedrag weergeven.
Als we de top 10 hiervan bekijken, gesorteerd op support (dus aantal keer voorkomen) dan zien we het volgende:
Regels gesorteerd op support
We kunnen deze eerste regel als volgt interpreteren:
Als iemand Cake koopt, dan is in 5,6%  (of 374 keer op 6614) ook koffie gekocht
In het algemeen worden vaak andere producten samen met koffie gekocht, iets wat geen verrassing mag zijn daar koffie in meer dan 3000 transacties voorkomt.

de regels kunnen nog op andere manieren gesorteerd worden. Een volgende mogelijkheid is confidence
regels gesorteerd op confidence
De eerste regel dient als volgt geinterpreteerd te worden: als iemand Cake&Sandwich koopt, dan is in 75% van de gevallen ook Koffie gekocht in dezelfde transactie. Support hiervoor is echter redelijk laag, namelijk slechts in 37 gevallen of 0.55%

In de tabel is er nog een 3de kolom, namelijk lift. Lift is sterk gerelateerd aan confidence, en kan als volgt geinterpreteerd worden: als de lift ratio > 1.0 dan betekent dit dat de relatie tussen LHS en RHS significant is, en niet een toevalstreffer. En hoe hoger de lift, hoe significanter de relatie.
regels gesorteerd op lift
In onze tabel zien we niet onmiddelijk hoge lift waarden. Dit komt voornamelijk door de samenstelling van de dataset (bvb waarbij meer dan 1/3de slechts 1 aankoop is en 1/3de 2 aankopen).
We kunnen dit echter gaan "forceren" door onze selectieparameters te gaan bijstellen naar andere waarden. Hierdoor krijgen we een regelset van 87 stuks, waarbij meer marge ligt.
uitgebreide regelset om lift principe aan te tonen
Hier zie je bijvoorbeeld dat als er brood, scone en truffel gekocht wordt er ook (altijd) water gekocht wordt. De support hiervoor is echter heel laag. Om betrouwbare conclusies te kunnen trekken is het belangrijk om de combinatie van deze 3 parameters op elkaar af te stemmen, en allen zo hoog mogelijk te hebben.

 

Als we terug keren naar onze initiele set van 20, dan kunnen deze op verschillende manier gevisualiseerd worden.
De scatterplot is makkelijk te visualiseren, maar vaak weinig informatief
scatterplot regels
Dan is de two-key plot iets meer zeggend: de meeste mensen kopen slechts 2 items, maar degene die 3 items aanschaffen hebben een hoger confidence niveau

Two-key plot
Tal van andere visualisaties (graphplot, grouped plot, paracoords plot) zijn mogelijk om extra inzichten te verwerven

 

Conclusies & vooruitzichten

Samenvattend van deze analyse zou je de volgende conclusies kunnen trekken:
- {Toast} => {Coffee} is een vaak voorkomende combinatie
- {Cake, Sandwich} => {Coffee} heeft een hoge lift & confidence maar een lage support.

Wat we hier nu gedaan hebben is puur op data van bakkerij. Je kan dit makkelijk doortrekken naar eender welke zaak die producten aanbied (apotheek, slager, kruidenierswinkel, boekenwinkel, ...). Daarnaast is het zo dat over hoe meer data je beschikt, hoe meer inzichten je kan bekomen. Let wel, zoals de structuur van de dataset is opgebouwd ben je meer met extra transacties tegenover meer artikels!

 

Als we nu even vooruitkijken naar de derde en laatste post, dan is hetgeen we hier uitgevoerd hebben hier een voorsmaakje van. we kunnen nu bijvoorbeeld stellen dat uit onze huidige analyse we kunnen proberen om de kans tot het aankopen van een 3de artikel kunnen proberen verhogen door een combipakket van Toast/Cake/Koffie of Sandwich/Cake/Koffie aan te bieden tegen een speciaal tarief. Dit doen we door gegevens te verrijken met verkoopsprijzen en daarna simulaties te draaien. Maar meer hierover in de afsluitende post.

Indien je ondertussen reeds vragen hebt over deze topic of met je eigen data aan de slag wil gaan, aarzel dan zeker niet om me te contacteren.

Nicky Van Thuyne

Nicky inschakelen voor je zaak?