Ga naar hoofdinhoud

Tutorial: Association Rule Mining in Python

Verborgen patronen ontdekken in Python met association rule mining
· 14 min lezen

Verken met AI

Association rule mining is een techniek om verborgen relaties tussen variabelen in grote datasets te ontdekken. Het is een populaire methode in data mining en machine learning en kent een breed scala aan toepassingen in verschillende domeinen, zoals market-basketanalyse, klantsegmentatie en fraudedetectie.

In dit artikel verkennen we association rule mining in Python, inclusief use-cases, algoritmes en implementatie. We beginnen met een korte uitleg van association rule mining en de toepassingen ervan, duiken vervolgens in de details van de algoritmes en hun implementatie in Python en sluiten af met een samenvatting van de belangrijkste punten.

Wat is Association Rule Mining?

Association rule mining is een techniek om patronen in grote datasets te identificeren. Het draait om het vinden van relaties tussen variabelen in de data en het gebruiken van die relaties om voorspellingen of beslissingen te ondersteunen. Het doel is regels te vinden die de relaties tussen verschillende items in de dataset beschrijven.

Neem bijvoorbeeld een dataset met transacties van een supermarkt. Association rule mining kan relaties identificeren tussen items die vaak samen worden gekocht. De regel "Als een klant brood koopt, is de kans groot dat die ook melk koopt" is een association rule die uit deze dataset kan worden gehaald. Met zulke regels kun je beslissingen nemen over winkelindeling, productplaatsing en marketing.

Association rule mining maakt doorgaans gebruik van algoritmes om de data te analyseren en relaties te identificeren. Deze algoritmes kunnen gebaseerd zijn op statistische methoden of machinelearning-technieken. De resulterende regels worden vaak geformuleerd als "als-dan"-uitspraken, waarbij het gedeelte "als" de antecedent is (de geteste voorwaarde) en het gedeelte "dan" de consequent is (de uitkomst die optreedt als aan de voorwaarde is voldaan).

Association rule mining is belangrijk in data-analyse omdat het gebruikers in staat stelt patronen of relaties in data te ontdekken die niet direct zichtbaar zijn. Door associaties tussen variabelen te identificeren, helpt association rule mining om de samenhang tussen variabelen te begrijpen en hoe die zich tot elkaar verhouden. 

Dit kan nuttig zijn voor uiteenlopende doelen, zoals het identificeren van markttrends, het detecteren van fraude of het begrijpen van klantgedrag. Association rule mining kan ook dienen als opstapje naar andere typen data-analyse, zoals het voorspellen van uitkomsten of het identificeren van drijvende factoren achter bepaalde fenomenen. Al met al is association rule mining een waardevol hulpmiddel om inzichten te verkrijgen en de onderliggende structuur van data te begrijpen.

Use-cases van Association Rule Mining:

Association rule mining wordt vaak toegepast in uiteenlopende situaties; enkele veelvoorkomende zijn:

Market-basketanalyse

Een van de bekendste toepassingen van association rule mining is market-basketanalyse. Hierbij analyseer je welke items klanten samen kopen om hun koopgedrag en voorkeuren te begrijpen. 

Zo kan een retailer met association rule mining ontdekken dat klanten die luiers kopen ook vaak babyvoeding kopen. Deze informatie kun je gebruiken om productplaatsing en promoties te optimaliseren en zo de verkoop te verhogen. 

Wil je meer leren over market-basketanalyse? Bekijk dan onze Market Basket Analysis in R-tutorial.

Klantsegmentatie

Association rule mining kan ook worden gebruikt om klanten te segmenteren op basis van hun koopgedrag. 

Zo kan een bedrijf ontdekken dat klanten die bepaalde producttypen kopen vaker jonger zijn. Evenzo kun je leren dat klanten die bepaalde combinaties van producten kopen vaker in specifieke regio’s wonen. 

Deze informatie kun je inzetten om marketingcampagnes en persoonlijke aanbevelingen op specifieke klantsegmenten af te stemmen. Lees meer over dit onderwerp in onze introductie tot klantsegmentatie in Python. 

Fraudedetectie

Je kunt association rule mining ook inzetten om frauduleuze activiteiten te detecteren. Een creditcardmaatschappij kan bijvoorbeeld patronen in frauduleuze transacties identificeren, zoals meerdere aankopen bij dezelfde winkel in korte tijd. 

Deze informatie kan vervolgens worden gebruikt om mogelijk frauduleuze activiteit te markeren en preventieve maatregelen te nemen om klanten te beschermen. In onze blog Data Science in Banking: Fraud Detection lees je meer over hoe dit proces werkt. 

Analyse van sociale netwerken

Verschillende bedrijven gebruiken association rule mining om patronen in socialmediadata te identificeren die de analyse van sociale netwerken ondersteunen. 

Een analyse van Twitter-data kan bijvoorbeeld laten zien dat gebruikers die over een bepaald onderwerp tweeten, ook vaak over andere gerelateerde onderwerpen tweeten, wat kan helpen bij het identificeren van groepen of communities binnen het netwerk.

Aanbevelingssystemen

Met association rule mining kun je items suggereren waarin een klant mogelijk geïnteresseerd is op basis van eerdere aankopen of browsegeschiedenis. Een muziekstreamingdienst kan bijvoorbeeld met association rule mining nieuwe artiesten of albums aanbevelen op basis van iemands luistergeschiedenis.

Met onze tutorial over aanbevelingssystemen in Python leer je meer over het bouwen van verschillende modellen die deze functie uitvoeren. 

Algoritmes voor Association Rule Mining

Er zijn verschillende algoritmes voor association rule mining. Enkele veelgebruikte zijn:

Apriori-algoritme

Het Apriori-algoritme is een van de meest gebruikte algoritmes voor association rule mining. Het werkt door eerst de frequente itemsets in de dataset te identificeren (itemsets die in een bepaald aantal transacties voorkomen). Vervolgens gebruikt het deze frequente itemsets om associatieregels te genereren, uitspraken in de vorm van "als item A wordt gekocht, is de kans groot dat item B ook wordt gekocht". Het Apriori-algoritme gebruikt een bottom-upbenadering, beginnend met individuele items en geleidelijk opbouwend naar complexere itemsets.

FP-Growth-algoritme

Het FP-Growth (Frequent Pattern Growth)-algoritme is een ander populair algoritme voor association rule mining. Het construeert een boomachtige structuur, een FP-tree, die de frequente itemsets in de dataset codeert. De FP-tree wordt vervolgens gebruikt om, vergelijkbaar met Apriori, associatieregels te genereren. FP-Growth is over het algemeen sneller dan Apriori, vooral bij grote datasets.

ECLAT-algoritme

Het ECLAT (Equivalence Class Clustering and bottom-up Lattice Traversal)-algoritme is een variant op Apriori die een top-downbenadering gebruikt in plaats van bottom-up. Het deelt items in equivalentieklassen op basis van hun support (het aantal transacties waarin ze voorkomen). De associatieregels worden vervolgens gegenereerd door deze equivalentieklassen in een roosterachtige structuur te combineren. Het is een efficiëntere en beter schaalbare versie van Apriori.

Apriori-algoritme

Het Apriori-algoritme is een van de meest gebruikte algoritmes voor frequent-itemsetmining en het leren van associatieregels. Het is toegepast in uiteenlopende domeinen, zoals market-basketanalyse, aanbevelingssystemen en fraudedetectie, en heeft de ontwikkeling van vele andere algoritmes voor vergelijkbare taken geïnspireerd.

Algoritmedetails

Het Apriori-algoritme begint met het instellen van de minimale supportdrempel. Dit is het minimale aantal keren dat een item in de database moet voorkomen om als frequente itemset te worden beschouwd. Vervolgens filtert het algoritme alle kandidaat-itemsets weg die niet aan de minimale supportdrempel voldoen. 

Daarna genereert het algoritme een lijst met alle mogelijke combinaties van frequente itemsets en telt hoe vaak elke combinatie in de database voorkomt. Op basis van deze combinaties van frequente itemsets genereert het algoritme een lijst met associatieregels. 

Een associatieregel is een uitspraak in de vorm van "als item A in een transactie aanwezig is, is de kans groot dat item B ook aanwezig is". De sterkte van de associatie wordt gemeten met de confidence van de regel: de kans dat item B aanwezig is, gegeven dat item A aanwezig is.

Daarna filtert het algoritme alle associatieregels weg die niet aan een minimale confidencedrempel voldoen. Deze regels worden sterke associatieregels genoemd. Ten slotte geeft het algoritme de lijst met sterke associatieregels terug als output.

Apriori gebruikt een "bottom-up"-benadering: het begint met individuele items en combineert die geleidelijk tot grotere itemsets terwijl het naar frequente patronen zoekt. Het gebruikt ook een "delete-relabel"-aanpak om de zoekruimte efficiënt te snoeien door infrequente itemsets uit te sluiten.

Voordelen:

  • Apriori is relatief eenvoudig en makkelijk te begrijpen.
  • Het identificeert effectief frequente patronen en associatieregels in grote datasets.
  • Het snoeit de zoekruimte efficiënt door infrequente itemsets uit te sluiten, wat de rekencomplexiteit vermindert.
  • Het is breed gebruikt en getest in diverse toepassingen, waardoor het een gevestigd en betrouwbaar algoritme is.

Nadelen:

  • Apriori is minder geschikt voor zeer grote datasets, omdat de rekencomplexiteit exponentieel toeneemt met de datasetgrootte.
  • Het is mogelijk minder effectief in datasets met veel zeldzame items of infrequente transacties.
  • Het is gevoelig voor de minimale support- en confidencedrempels, die de kwaliteit van de resultaten kunnen beïnvloeden.
  • Het kan veel associatieregels genereren, wat de interpretatie kan bemoeilijken.

Wil je dieper in het Apriori-algoritme duiken? Bekijk dan deze uitstekende Market Basket Analysis-tutorial op DataCamp. 

Meetwaarden voor het beoordelen van associatieregels

Bij association rule mining worden verschillende meetwaarden gebruikt om de kwaliteit en het belang van gevonden associatieregels te beoordelen. 

Met deze metrieken kun je de kwaliteit en relevantie van associatieregels evalueren en de meest geschikte regels voor een toepassing selecteren. Let op: de juiste keuze van metriek hangt af van de specifieke doelen en eisen van de toepassing.

Het interpreteren van de uitkomsten van metrieken voor association rule mining vraagt begrip van de betekenis en implicaties van elke metriek, en hoe je ze gebruikt om de kwaliteit en importantie van de regels te beoordelen. Hier zijn richtlijnen voor het interpreteren van de belangrijkste metrieken:

Support

Support meet hoe vaak een item of itemset in de dataset voorkomt. Het is het aantal transacties met het item (of de items) gedeeld door het totale aantal transacties in de dataset. Hoge support betekent dat een item of itemset veel voorkomt, lage support dat het zeldzaam is.

Formule voor support

Confidence

Confidence meet de sterkte van de associatie tussen twee items. Het is het aantal transacties dat beide items bevat, gedeeld door het aantal transacties dat het eerste item bevat. Hoge confidence geeft aan dat de aanwezigheid van het eerste item een sterke voorspeller is voor de aanwezigheid van het tweede item.

Formule voor confidence

Lift

Lift meet de sterkte van de associatie tussen twee items, rekening houdend met de frequentie van beide items in de dataset. Het is de confidence van de associatie gedeeld door de support van het tweede item. Lift vergelijkt de sterkte van de associatie tussen twee items met de verwachte sterkte als de items onafhankelijk zouden zijn. 

Een liftwaarde groter dan 1 duidt erop dat de associatie tussen twee items sterker is dan verwacht op basis van de frequentie van de individuele items. Dit suggereert dat de associatie betekenisvol kan zijn en nader onderzoek waard is. Een liftwaarde kleiner dan 1 duidt op een zwakkere dan verwachte associatie, die mogelijk minder betrouwbaar of minder significant is.

Formule voor lift

Python- en R-bibliotheken voor Association Rule Mining

Er zijn verschillende R- en Python-bibliotheken voor association rule mining:

R-bibliotheken

  • arules: Een pakket voor het minen van associatieregels en frequente itemsets in R. Het biedt functies om transactionele data te lezen en te bewerken, en om associatieregels te genereren en de kwaliteit ervan te evalueren.
  • arulesViz: Een pakket voor het visualiseren van associatieregels en frequente itemsets in R. Het biedt functies om grafieken en diagrammen te maken die helpen de resultaten van association rule mining te begrijpen en te interpreteren.
  • arulesSequences: Een pakket voor het minen van associatieregels uit sequentiële data in R. Het biedt functies om sequentiële data te lezen en te bewerken, en om associatieregels te genereren en de kwaliteit ervan te evalueren.

Python-bibliotheken

  • apyori: Een bibliotheek met een implementatie van het Apriori-algoritme in Python. Biedt functies om transactionele data te lezen en te bewerken, associatieregels te genereren en de kwaliteit ervan te evalueren.
  • mlxtend: Een bibliotheek met diverse machinelearning-algoritmes en tools in Python, waaronder association rule mining. Biedt functies om transactionele data te lezen en te bewerken, associatieregels te genereren en de kwaliteit ervan te evalueren.
  • PyCaret: PyCaret is een opensource low-code machinelearningbibliotheek in Python voor het automatiseren van ML-workflows. Het biedt een wrapper bovenop mlxtend voor een eenvoudige implementatie van het Apriori-algoritme.

Associatieregels implementeren in Python

We gebruiken PyCaret om associatieregels in Python te implementeren. Laten we beginnen met het installeren van PyCaret en daarna de dataset importeren. 

PyCaret installeren

Je kunt pycaret installeren met pip. 

```

# install pycaret

pip install pycaret

```

Dataset

We beginnen met het laden van een voorbeeldset uit de repository van pycaret. Het gaat om een transactionele dataset van een retailwinkel in Frankrijk. Deze bevat een factuurnummer om de transactie te identificeren en een beschrijving van het item. Dat zijn de enige twee zaken die we nodig hebben voor het minen van regels uit deze dataset.

```

# load sample data

from pycaret.datasets import get_data

data = get_data('france')

```

Voorbeelddata

Setup

De eerste stap is het importeren van de module `arules` en het initialiseren van de functie `setup` door data, transaction_id en item_id te definiëren.

```

# init setup

from pycaret.arules import *

s = setup(data = data, transaction_id = 'InvoiceNo', item_id = 'Description')

```

Setup-functie

Output van de setup-functie

Model maken

```

The `create_model` function runs the algorithm and return the rules in pandas DataFrame based on the selection parameters defined in the `create_model`. In this example we have used selection metric `confidence` with threshold and support of 0.5.

# train model

arules = create_model(metric='confidence', threshold=0.5, min_support=0.05)

```

Model aanmaken

Output van de create_model-functie

Op basis van de drempels die in de functie `create_model` zijn gedefinieerd, hebben we 45 regels gemaakt. De bovenstaande output toont de eerste 10, gesorteerd op confidence (hoog naar laag). 

Regels plotten

Visualiseer en analyseer regels met de functie `plot_model` in PyCaret.

```

# 2d plot
plot_model(arules, plot = '2d')

```

Regels plotten

```

# 3d plot

plot_model(arules, plot = '3d')

```

Bekijk de volledige Notebook om mee te volgen.

3D-plot

Conclusie

Association rule mining is een waardevol hulpmiddel voor data-analyse en een krachtige techniek om patronen en relaties in data te ontdekken. In Python en R zijn verschillende bibliotheken beschikbaar die kant-en-klare implementaties van diverse algoritmes bieden, evenals opties om de resultaten te visualiseren. 

Je kunt association rule mining in meerdere contexten gebruiken om inzichten te verkrijgen en de onderliggende datastructuur te begrijpen. Het is echter belangrijk het juiste algoritme te kiezen en de juiste parameters in te stellen, zoals minimale support- en confidencedrempels, om betekenisvolle en nauwkeurige resultaten te krijgen. 

Wil je dieper in dit onderwerp duiken en meer leren over association rule mining? Bekijk dan de volgende cursussen:

Veelgestelde vragen over Association Rule Mining

Wat zijn veelgebruikte algoritmes voor association rule mining?

Enkele veelgebruikte algoritmes voor association rule mining zijn het Apriori-algoritme en het FP-Growth-algoritme. Apriori gebruikt een bottom-upbenadering om iteratief kandidaatsregels te genereren en te testen, terwijl FP-Growth een efficiëntere top-downbenadering gebruikt om regels te genereren op basis van frequente itemsets.

Welke Python-bibliotheken kan ik gebruiken om association rules mining in Python te implementeren?

Er zijn verschillende Python-bibliotheken om association rule mining in Python te implementeren, waaronder de apyori-bibliotheek en de mlxtend-bibliotheek. De apyori-bibliotheek biedt een eenvoudige implementatie van het Apriori-algoritme, terwijl mlxtend extra algoritmes en functies biedt naast Apriori. Je kunt ook PyCaret gebruiken, dat een eenvoudige implementatie van het Apriori-algoritme bovenop de mlxtend-bibliotheek biedt.

Wat zijn gangbare metrieken om de kwaliteit van regels te beoordelen?

Veelgebruikte metrieken om de kwaliteit van associatieregels te beoordelen zijn onder meer support, confidence en lift.

Wat is het verschil tussen support en confidence?

Bij association rule mining is support het percentage transacties in de dataset dat een bepaald item of een set items bevat, terwijl confidence het percentage transacties is dat een bepaald item of een set items bevat, gegeven dat een ander item of een andere set items ook aanwezig is. Support wordt gebruikt als maat voor het belang of de relevantie van een item of itemset, terwijl confidence wordt gebruikt als maat voor de sterkte of betrouwbaarheid van een regel.

Is association rule mining supervised of unsupervised?

Association rule mining is een unsupervised machinelearningtechniek, omdat er geen gelabelde trainingsdata voor nodig is. Het doel is patronen of relaties in de data te ontdekken, in plaats van een specifieke uitkomst te voorspellen op basis van gelabelde voorbeelden.

Wat zijn enkele nadelen van het Apriori-algoritme?

Een van de belangrijkste nadelen van het Apriori-algoritme is dat het rekenintensief kan zijn, vooral bij grote datasets. Het algoritme genereert en test een groot aantal kandidaatsregels, wat tijdrovend kan zijn. Daarnaast is Apriori gevoelig voor de minimale supportdrempel; een ongeschikte keuze kan tot slechte prestaties leiden. Het algoritme vereist ook veel geheugen om itemsets op te slaan, wat problematisch kan zijn bij zeer grote datasets.

Kan association rule mining worden gebruikt met continue variabelen of alleen met categorische variabelen?

Association rule mining wordt doorgaans gebruikt met categorische variabelen, die een beperkt aantal waarden kunnen aannemen. Je kunt het echter ook toepassen op continue variabelen door die te discretiseren in categorieën (bins) of bereiken.

Onderwerpen

Gerelateerd