Associatie analyse

Kunstmatige Intelligentie/ Technieken/Associatie analyse

Creative Commons License
This work is licensed under a
Creative Commons Attribution-NonCommercial-ShareAlike 4.0
International License
.
bron:Lesmodule Big Data

In de introductie van de AI technieken heb je gezien dat AI applicaties data gestuurd zijn. Hoe werkt dat sturen door die data? In deze sectie en volgende secties gaan we dat in een aantal technieken bekijken. De meeste toepassingen gebruiken artificiële intelligentie om b.v. patronen te herkennen of groeperingen te maken.

De berekeningen in dit en de sectie Cluster Analyse zijn niet heel erg ingewikkeld en zouden voor iedere leerling op havo en vwo uit te voeren moeten zijn. Lukt het niet stel dan vragen aan je docent.

Na het bestuderen van deze sectie:


Introductie


Stel je wordt manager van een supermarkt in een wijk waar veel studenten wonen. Na een paar dagen krijg je onder andere de indruk dat er veel bananen en chocolade verkocht worden. Daarom overweeg je de bananen en de chocolade samen vlak bij de kassa's te leggen om zo de klanten die langs lopen tot meer impuls inkopen te verleiden. Je wilt als verkoper ook niet impulsief te werk gaan, dus ga je een onderzoek doen met alle kassaregistraties van de klanten als gegevens voor je onderzoek. Eén kassaregistratie geeft dan natuurlijk aan wat de klant in het winkelmandje had.

De methoden die je als onderzoeker tot je beschikking hebt om deze gegevens te onderzoeken vallen onder associatie analyse. Voor we algemeen aan de slag gaan en één van de methoden, het apriori algoritme, in detail uitwerken gaan we eerst intuïtief met bovenstaand voorbeeld aan de slag. Na een week heb je deze gegevens verzameld:

Begrippen die centraal staan in de associatie analyse zijn support, associatieregel en betrouwbaarheid.

Support van één of meerdere artikelen is niets anders dan de experimentele kans dat een mandje deze artikelen bevat. Zo is $\mathrm{support}(\{\mathrm{banaan}\}) = 905/8051 \approx 0.112$ of wel ongeveer 11%. Verder is $\mathrm{support}(\{\mathrm{chocolade}\}) = 750/8051 \approx 0.093$ en $\mathrm{support}(\{\mathrm{chocolade}, \mathrm{banaan}\}) = 653/8051 \approx 0.081$.

Om nu te weten te komen of het vermoeden dat bananen vaker samen met chocolade worden verkocht werkelijkheid is, ben je geïnteresseerd in de vraag: als een klant bananen koopt, hoe groot is dan de kans dat deze klant ook chocolade koopt? Ofwel hoe waar is de uitspraak: Als een klant bananen koopt, koopt de klant ook chocolade? Een dergelijke uitspraak noemt men een associatieregel. Met de gegevens hierboven kunnen we de betrouwbaarheid (=confidence) van deze uitspraak uitrekenen in de vorm van een kans.

Confidence( Als een klant bananen koopt, koopt de klant ook chocolade ) = aantal winkelmandjes met bananen en chocolade / aantal winkelmandjes met alleen bananen= 653/905=0,72.

In ongeveer driekwart van de gevallen zal de klant die bananen in zijn mandje legt doorlopen naar de chocolade. Zullen we het die klant maar eens gemakkelijker maken door deze producten dichter bij elkaar te plaatsen?

In het voorbeeld hierboven hebben we specifiek gekeken naar bananen en chocolade. Het is zinvoller als we uitgaan van alle aankopen en met een methode uitvissen wat de interessante combinaties zijn. De apriori methode, die we hier straks uitwerken, is zo'n methode. Eerst even een meer algemene introductie over associatie analyse.


Bij associatie analyse is het de bedoeling dat een gegeven set kenmerken die een gebruiker in een toepassing aanlevert, bijvoorbeeld jouw leeftijd, geslacht, ingetypte zoekopdracht, beluisterde muziek, artikelen in je winkelmand, wordt vergeleken met dezelfde kenmerken van andere gebruikers. Gezocht wordt dan naar overeenkomsten tussen de gebruikers. Het resultaat van de associatie is dan bijvoorbeeld de uitvoer van de toepassing, bijvoorbeeld de reclame die in de zoekmachine verschijnt, muziek die jij ook wel leuk zou vinden, artikelen die jij ook zou willen kopen. Om zinvolle suggestie te doen moet een grote hoeveelheid gegevens worden geanalyseerd.

Bedrijven verkrijgen deze gegevens via de verkoopregistraties van de kassa's of via de registratie van het gebruik door personen van hun apps, bijvoorbeeld een webwinkel, sociaal medium, enzovoort. Gezocht wordt dan naar overeenkomsten tussen de personen die samengaan, zoals de gezamenlijke aankoop van bananen en chocola.

De AI techniek associatie analyse die voor deze situaties wordt gebruikt heeft als belangrijkste AI-kenmerk: de invoer die het programma krijgt, is niet volledig te bepalen en is complex . Het leerproces dat in associatie analyse wordt gebruikt is unsupervised learning. Voor we de theorie van associatie analyse behandelen en leren toepassen geven we een aantal voorbeelden van gebieden waarin associatie analyse wordt gebruikt:

Gezondheidszorg
Artsen kunnen associatieregels gebruiken om een diagnose van patiënten te stellen. Omdat veel ziekten overeenkomstige symptomen hebben, zijn er veel variabelen waarmee rekening moet worden gehouden bij het stellen van een diagnose. Een AI applicatie met associatie analyse, die getraind is met alle symptomen en de daarbij behorende ziekten, kan een arts die ziekten tonen die het meest waarschijnlijk zijn. De arts moet daarvoor de symptomen die hij of zij ziet invoeren.

Als er nieuwe symptomen bij een ziekte optreden of als er nieuwe ziekten bijkomen, kan het machine learning-model opnieuw getraind worden met de oude en bijgewerkte gegevens.

Detailhandel
Detailhandelaren kunnen gegevens over aankooppatronen verzamelen en aankoopgegevens registreren en die verwerken met associatie analyse. Daarna kan dan worden gekeken welke producten het meest waarschijnlijk samen worden gekocht. De winkelier kan vervolgens de marketing- en verkoopstrategie aanpassen om van deze informatie te profiteren.
User experience (UX) design
Ontwikkelaars kunnen gegevens verzamelen over hoe consumenten een door hen gemaakte website/app gebruiken. Ze kunnen vervolgens associaties in de gegevens gebruiken om de gebruikersinterface van de website te optimaliseren - door bijvoorbeeld te analyseren waar gebruikers op klikken en hoe ze de kans dat een bezoeker een gewenste handeling verricht kan vergroten.
Sociale media en entertainment
Services zoals Facebook, Youtube, Netflix, Twitter, Spotify kunnen associatieregels gebruiken om hun engine voor contentaanbeveling van brandstof te voorzien. Machine learning-modellen analyseren gegevens over gebruikersgedrag uit het verleden op frequente patronen, ontwikkelen associatieregels en gebruiken die regels om gebruikers aanbevelingen te doen die hun ook zal interesseren, b.v. die leuke foto van een ooievaar, omdat je als vogelaar heel vaak foto's van vogels bekijkt.

Theorie

In de opwarmer aan het begin van dit hoofdstuk hebben we geprobeerd om op een intuïtieve manier het doel van associatie analyse, een AI algoritme, duidelijk te maken. We meldden daar ook al dat we op basis van alle kassaregistraties zinvolle verbanden willen vinden. Zoals typisch is voor AI bepalen de gegevens de uitkomst van de analyse.

De wiskundige techniek die wordt gebruikt in associatie analyse is gebaseerd op verzamelingen, de zogenaamde verzamelingenleer. Het is dus nuttig eerst wat begrippen in de verzamelingen leer te introduceren. Een aantal van deze begrippen ben je waarschijnlijk al eens in de wiskundeles tegengekomen. Daarna gebruiken we deze begrippen in de apriori methode, een veel gebruikte methode in de associatie analyse.

Symbolen
Notatie Betekenis
$\in$ ’is een element van’, ’behoort tot’
$\subset$ ’is een deelverzameling van’
{,} accolades worden gebruikt om een verzameling aan te duiden
$\cap$ ’doorsnede’, het gemeenschappelijke deel van de twee verzamelingen
$\cup$ ’vereniging’, de elementen van de eerste en tweede verzameling worden samengenomen
$\#$ ’aantal’, $\# A$ is het aantal elementen in $A$.
$\Rightarrow$ ’implicatie’, al links waar is dan is ook rechts waar.

Verzamelingenleer

Als leerling zit je in een klas, als voetballer zit je in een team, je ‘play list’ bevat een aantal leuke liedjes, .... Zo kunnen we nog een tijd doorgaan met het geven van voorbeelden. Voorbeelden die allemaal gaan over verzamelingen. In plaats van een ‘klas’, ‘team’, ‘play list’ spreken we van een verzameling, in het Engels set. In een verzameling bevinden zich elementen (leerlingen, spelers, liedjes). We noteren een verzameling als volgt: $$V=\{v_{1},v_{2},v_{3},\cdots ,v_{n}\}.$$
Verzameling $V$ bevat elementen $v$ die we kunnen nummeren. $v_{1}$ is dan het eerste element in de verzameling, $v_{2}$ het tweede, $v_{3}$ is dan het derde, enz. De complete verzameling noteer je door accolades $\{$..$\}$ om de lijst van elementen te zetten.

Een verzameling bestaat dus uit elementen, en als $v$ een element is van een verzameling $\small V$ noteren we dit wiskundig als $\small v \in V$.

Voorbeeld: De verzameling winkelmandje met de elementen melk, brood, en kaas noteren we als: $$ \small \text{winkelmandje} = \{\text{melk}, \text{brood}, \text{kaas}\} $$

Als we schrijven $\small \textbf{melk} \in \textbf{winkelmandje}$, dan zeggen we dus dat melk in het winkelmandje aanwezig is.

Relaties tussen verzamelingen

$X \subset Y$
Y X
Deelverzameling
Als voor twee verzamelingen $X$ en $Y$ geldt dat elk element van $X$ ook een element is van $Y$, dan zeggen we dat $X$ een deelverzameling (subset) is van $Y$. Notatie: $X \subset Y$

Zo geldt bijvoorbeeld voor $\small X=\{\text{melk},\text{kaas}\}$ en $\small Y=\{\text{melk},\text{brood},\text{kaas}\}$ dat $\small X \subset Y$, $\small X$ is een deelverzameling van $\small Y$ want melk en kaas, de elementen van $X$, zijn ook aanwezig in $Y$.

$X \cap Y$
X⋂Y Y X
Doorsnede
De doorsnede (intersection) $X \cap Y$ van twee verzamelingen $X$ en $Y$ bestaat uit de gemeenschappelijke elementen van $X$ en $Y$. In de figuur links is de doorsnede het lichtgroene gebied.

Zo is bijvoorbeeld de doorsnede van de verzameling $\small X = \{\text{melk}, \text{brood}, \text{kaas}\}$ en $\small Y = \{\text{melk}, \text{brood}, \text{pindakaas}\}$ de verzameling met melk en brood, $\small \{\text{melk}, \text{brood}\}$, want die zijn in beide verzameling aanwezig. In wiskundige notatie is dit: $$ \small \{\text{melk}, \text{brood}, \text{kaas}\} \cap \{\text{melk}, \text{brood}, \text{pindakaas}\} = \{\text{melk}, \text{brood}\} $$

$X \cup Y$
X⋃Y Y X
Vereniging
De vereniging (union) $X \cup Y$ van twee verzamelingen $X$ en $Y$ bestaat uit de elementen die tot $X$, tot $Y$ of tot beide horen. In de figuur links bestaat de vereniging uit alle enigszins gele gebieden.

Zo is bijvoorbeeld de vereniging van de verzamelingen $\small X = \{\text{melk}, \text{brood}, \text{kaas}\}$ en de verzameling $\small Y = \{\text{melk}, \text{brood}, \text{pindakaas}\}$ verzameling met de elementen Kaas, Melk, Brood en Pindakaas, $\small \{\text{melk}, \text{brood}, \text{kaas}, \text{pindakaas}\}$ want alle elementen uit $X$ en $Y$ zijn aanwezig. Notatie: $$ \small \{\text{melk}, \text{brood}, \text{kaas}\} \cup \{\text{melk}, \text{brood}, \text{pindakaas}\} = \{\text{melk}, \text{brood}, \text{kaas}, \text{pindakaas}\} $$

Kardinaliteit
Voor een eindige verzameling $\small X$ definiëren we $\small \#X$ als het aantal elementen in $\small X$. Dit wordt ook wel de kardinaliteit genoemd.
Zo is bijvoorbeeld $\#\{Chips,Zeep,Appels\}=3$.

Een element van een verzameling kan zelf ook een verzameling zijn. Zo bestaat de verzameling $$ \small \begin{array}{rcl}C &=& \{\{\text{chips}, \text{zeep}, \text{appels}\}\\&&, \{\text{chips}, \text{zeep}, \text{appels}\}\\&&, \{\text{zeep}, \text{bananen}\}\\&&, \{\text{chips}, \text{zeep}, \text{bananen}\}\\&&\}\end{array} $$ uit vier elementen, ieder element is een verzameling.

Een verzameling waarin de elementen ook weer verzamelingen zijn noemt men een collectie.


Associatieregels

We hadden het al over associaties tussen dataverzamelingen, tijd om dat precies te maken. Daarbij maken we gebruik van het voorbeeld hieronder. Het is een collectie van tien winkelmandjes uit een supermarkt, natuurlijk versimpeld. De meest supermarkten hebben wel vijftig soorten chocola. $$ \small \begin{array}{lcl}C&=&\{ \{\text{ melk, brood, kaas }\}\\ & & , \{\text{ yoghurt, rozijnen, appel }\}\\ & & , \{\text{ pindakaas, brood, melk, komkommer }\}\\ & & , \{\text{ brood, banaan }\}\\ & & , \{\text{ banaan, appel, chocolade }\}\\ & & , \{\text{ brood }\}\\ & & , \{\text{ chocolade, brood, banaan }\}\\ & & , \{\text{ rozijnen, chocolade, pindakaas }\}\\ & & , \{\text{ melk, brood, banaan, kaas, chocolade}\}\\ & & , \{\text{ melk, chocolade }\}\\ & & \} \end{array} $$ Ce collectie C bestaat nu uit de inhoud van de acht winkelmandjes, van iedere klant één. Ieder mandje is een verzameling van producten: $$ \small\begin{array}{rcl} C_1&=& \{\text{ melk, brood, kaas }\} \\ C_2&=& \{\text{ yoghurt, rozijnen, appel }\} \\ C_3&=& \{\text{ pindakaas, brood, melk, komkommer }\} \\ C_4&=& \{\text{ brood, banaan }\} \\ C_5&=& \{\text{ banaan, appel, chocolade }\} \\ C_6&=& \{\text{ brood }\} \\ C_7&=& \{\text{ chocolade, brood, banaan }\} \\ C_8&=& \{\text{ rozijnen, chocolade, pindakaas }\} \\ C_9&=& \{\text{ melk, brood, banaan, kaas, chocolade}\} \\ C_{10}&=& \{\text{ melk, chocolade }\} \end{array} $$

Om uitspraken te kunnen doen over verbanden tussen verzamelingen en de waarde van die verzamelingen zijn de volgende definities van belang:

Bekijk weer de bovenstaande collectie winkelmandjes $C$ dan vind je bijvoorbeeld:

Nog een voorbeeld van een praktische toepassing. Bij marktonderzoek is de support van een stel artikelen (bijvoorbeeld $\small K=\{\text{televisie},\text{surroundset}\}$) het aantal klanten dat al die artikelen samen koopt, op het totaal aantal klanten, meestal weergegeven als percentage.

In de associatieanalyse, bijvoorbeeld bij de winkelmandjes, wil men handelen op basis van associatieregels. Deze associatieregels stelt men dan op voor frequente itemsets. Maar dat is niet voldoende, de associatieregel moet ook nog interessant zijn. De kans op de associatie moet vrij groot zijn. Het heeft niet veel zin om te gaan adverteren voor Y bij mensen die X kopen, als uit de data helemaal niet blijkt dat X-kopers vaak Y kopen. We willen weten of de associatie vaak voorkomt. In de vaktaal heet dat de confidence ofwel de betrouwbaarheid van de associatieregel.

Laten we terugkeren naar het voorbeeld van de bananen en de chocolade. We hebben tien winkelmandjes. Banaan zit in vier van die winkelmandjes en drie van de vier bevatten weer chocolade. Dat is 75%, een kans van driekwart dat de associatie optreedt. Nu is een collectie van tien winkelmandjes niet echt groot genoeg om die kans echt te bepalen, maar wanneer je zo een miljoen winkelmandjes onderzoekt, is de kans behoorlijk zeker. De betrouwbaarheid van een associatieregel bepalen we dus zo.

In ons voorbeeld kunnen we de betrouwbaarheid van de associatieregel $\{\small \text{ banaan } \} \Rightarrow \{\small \text{ banaan, chocolade } \}$ dus uitrekenen door de support te delen: 3/10 gedeeld door 4/10. Of simpeler, door de frequenties op elkaar te delen: 3/4.


Vragen 1
  1. Welke vorm van leren vindt plaats in associatie analyse?
    antwoord
    • Unsupervised learning.
  2. Geef twee voorbeelden van werkgebieden waar van associatie analyse gebruik wordt gemaakt.
    antwoord
    • Bijvoorbeeld twee van de gebieden uit deze paragraaf: gezondheid, detailhandel, sociale media, user experience.
  3. Gegeven: $A=\{1,2,3,4,5\}$, $B=\{4,5,6,7\} $ en $C=\{5,8,11\}$
    1. Schrijf de verzamelingen $A \cup B$, $A \cup C$ en $B \cup C$ op.
      antwoord
      • $A \cup B=\{1,2,3,4,5,6,7\}$,
        $A \cup C=\{1,2,3,4,5,8,11\}$ en
        $B \cup C=\{4,5,6,7,8,11\}$
    2. Schrijf de verzamelingen $A \cap B$, $A \cap C$ en $B \cap C$ op.
      antwoord
      • $A \cap B=\{4,5\}$,
        $A \cap C=\{5\}$ en
        $B \cap C=\{5\}$
    3. Schrijf de verzameling $A \cup B \cup C$ op.
      antwoord
      • $A \cup B \cup C = \{1,2,3,4,5,6,7,8,11\}$
  4. Gegeven zijn de volgende deelverzamelingen: $C_{1}=\{chips,zeep,appel\}$, $C_{2}=\{chips,zeep\}$, $C_{3}=\{zeep,bananen\}$ en $C_{4}=\{chips,zeep,bananen\}$ van de collectie $C=\{C_{1},C_{2},C_{3},C_{4}\}$
    1. Schrijf de verzamelingen $C_{1} \cap C_{2}$, $C_{1} \cap C_{4}$ en $C_{3} \cap C_{4}$ op.
      antwoord
      • $C_{1} \cap C_{2} = \{chips,zeep\}$,
        $C_{1} \cap C_{4}= \{chips,zeep\}$ en
        $C_{3} \cap C_{4}= \{zeep,bananen\}$
    2. Schrijf de verzamelingen $C_{1} \cup C_{2}$, $C_{1} \cup C_{4}$ en $C_{3} \cup C_{4}$ op.
      antwoord
      • $C_{1} \cup C_{2} = \{chips,zeep,appel\}$, $C_{1} \cup C_{4}= \{chips,zeep,appel,bananen\}$ en $C_{3} \cup C_{4}=\{chips,zeep,bananen\}$
    3. Schrijf de verzameling $C_{1} \cup C_{2} \cup C_{3} \cup C_{4} $ op.
      antwoord
      • $C_{1} \cup C_{2} \cup C_{3} \cup C_{4} = \{chips,zeep,appel,bananen\}$
    4. Schrijf de verzameling $C_{1} \cap C_{2} \cap C_{3} \cap C_{4} $ op.
      antwoord
      • $C_{1} \cap C_{2} \cap C_{3} \cap C_{4} = \{zeep\}$
    5. Bereken de support van $\{chips,zeep\}$ en de confidence van de implicatie $\{chips\} \Rightarrow \{zeep\}$ in $C$.
      antwoord
      • $support(\{chips,zeep\}) = \frac{3}{4}$, $support(\{chips\}) = \frac{3}{4}$, $confidence(\{chips\} \Rightarrow \{zeep\}) = \frac{support(\{ chips,zeep\})}{support(\{chips\})}=\frac{\frac{3}{4}}{\frac{3}{4}}= 1$. Ofwel als er chips wordt gekocht wordt er ook zeep gekocht.
  5. Gegeven is de collectie $A = \{ \{5,8 \},\{2,6,8\} ,\{5,6,8 \},\{5,4,7,10 \},\{2,5,8\}\}$.
    Bereken
    1. de support van $\{1\}$ in $A$.
      antwoord
      • $\{1\}$ zit in geen van de deelverzamelingen van $A$ dus $support(\{1\})=\frac{0}{5}=0$
    2. de support van $\{4,5\}$ in $A$.
      antwoord
      • $\{4,5\}$ zit in één van de deelverzamelingen van $A$ dus $support(\{4,5\})=\frac{1}{5}$
    3. de betrouwbaarheid van de implicatie $\{1\} \Rightarrow \{5\}$ in $A$.
      antwoord
      • $confidence(\{1\} \Rightarrow \{5\}) = \frac{support(\{1,5 \})}{support(\{1\})}=\frac{0}{0}= $ ongedefiniëerd, want delen door 0 kan niet.
    4. de betrouwbaarheid van de implicatie $\{2\} \Rightarrow \{6\}$ in $A$.
      antwoord
      • $confidence(\{2\} \Rightarrow \{6\}) = \frac{freq(\{2,6 \})}{freq(\{2\})}=\frac{1}{2}$
  6. Gegeven is de collectie $S = \{ \{P,K,T \},\{P,R\} ,\{P,T\},\{K,R\}\}$ waarin P=Pasta, K=Kaas, T=Tomaat, R=Room.
    Bereken
    1. de support van $\{R\}$ in $S$.
      antwoord
      • $\{R\}$ is een element van twee van de vier deelverzamelingen van $S$ dus $support(\{R\})=\frac{2}{4}=\frac{1}{2}$
    2. de support van $\{P,T\}$ in $S$.
      antwoord
      • $\{P,T\}$ is een element van twee van de vier deelverzamelingen van $S$ dus $support(\{P,T\})=\frac{2}{4}=\frac{1}{2}$
    3. de confidence van de implicatie $\{P\} \Rightarrow \{T\}$ in $S$.
      antwoord
      • $confidence(\{P\} \Rightarrow \{T\}) = \frac{freq(\{P,T \})}{freq(\{P\})}=\frac{2}{3} $.
  7. Stel: S=Spaghetti, T=tomatensaus, B=brood.
    $W_{1}$ is de 1-itemset ofwel de collectie van de deelverzamelingen met grootte 1 (met slechts één element S of T of B):
    $W_{1}=\{\{S\},\{T\},\{B\}\}$
    Verder is $W_{2}$ de 2-itemset of de collectie van de deelverzamelingen met grootte 2 (met twee verschillende elementen S of T of B ) . Dus $W_{2}=\{\{S,T\},\{T,B\},\{S,B\}\}$.
    Als laatste is $W_{3}=\{\{S,T,B\}\}$ de 3-itemset of de collectie van de deelverzamelingen met grootte 3 (S,T en B zijn alle aanwezig).
    Bereken
    1. de support van alle deelverzamelingen van $W_{1}$ in $W_{2} \cup W_{3}$.
      antwoord
      • Antwoord $W_{2} \cup W_{3} = \{\{S,T\},\{T,B\},\{S,B\},\{S,T,B\}\}$.
        $\{S\}$ is een element van drie van de vier deelverzamelingen dus $support(\{S\})=\frac{3}{4}$ of 75%.
        $\{T\}$ is een element van drie van de vier deelverzamelingen dus $support(\{T\})=\frac{3}{4}$ of 75%.
        $\{B\}$ is een element van drie van de vier deelverzamelingen dus $support(\{B\})=\frac{3}{4}$ of 75%.
    2. de support van alle deelverzamelingen van $W_{2}$ in $W_{2} \cup W_{3}$.
      antwoord
      • $W_{2} \cup W_{3} = \{\{S,T\},\{T,B\},\{S,B\},\{S,T,B\}\}$.
        $\{S,T\}$ is een element van twee van de vier deelverzamelingen dus $support(\{S,T\})=\frac{2}{4}$ of 50%.
        $\{T,B\}$ is een element van twee van de vier deelverzamelingen dus $support(\{T,B\})=\frac{2}{4}$ of 50%.
        $\{S,B\}$ is een element van twee van de vier deelverzamelingen dus $support(\{S,B\})=\frac{2}{4}$ of 50%.
    3. De vraag
      de support van alle deelverzamelingen van $W_{3}$ in $W_{2} \cup W_{3}$.
      • $W_{2} \cup W_{3} = \{\{S,T\},\{T,B\},\{S,B\},\{S,T,B\}\}$.
        $\{S,T,B\}$ is een element van één van de vier deelverzamelingen dus $support(\{S,T,B\})=\frac{1}{4}$ of 25%.
  8. Gegeven is de collectie $I$ hieronder. Een kok experimenteert met gerechten met verschillende ingrediënten.
    Collectie $I$
    Id Items
    0 $\{Pasta,Kaas,Tomaat\}$
    1 $\{Pasta,Room\}$
    2 $\{Pasta,Tomaat\}$
    3 $\{Kaas,Room\}$
    4 $\{Kaas,Tomaat\}$
    5 $\{Pasta,Tomaat,Room\}$
    6 $\{Tomaat,Room\}$
    7 $\{Kaas,Tomaat\}$
    8 $\{Pasta,Kaas,Tomaat,Room\}$
    9 $\{Pasta\}$
    Bekijk de volgende deelverzameling: $\{Pasta, Kaas, Tomaat\}$.
    1. Laat zien dat $confidence(\{Pasta,Kaas\}\Rightarrow\{Tomaat\})$ hoger is dan die van $\{Pasta\}\Rightarrow\{Kaas,Tomaat\}$.
      antwoord
      • $confidence(\{Pasta,Kaas\}\Rightarrow\{Tomaat\}) = \frac{freq(\{Pasta,Kaas,Tomaat \})}{freq(\{Pasta,Kaas\})}=\frac{2}{2} =1 $.
        $confidence(\{Pasta\}\Rightarrow\{Kaas,Tomaat\}) = \frac{freq(\{Pasta,Kaas,Tomaat \})}{freq(\{Pasta\})}=\frac{2}{6} $.
        De eerste is inderdaad hoger.
    2. Bereken voor welke $X \in \{ \{Pasta,Room\},\{Room,Kaas\} ,\{Kaas\}\}$ de $confidence(\{X\}\Rightarrow\{Tomaat\})$ in $I$ het grootst is.
      antwoord
      • $confidence(\{Pasta,Room\}\Rightarrow\{Tomaat\}) = \frac{freq(\{Pasta,Room,Tomaat \})}{freq(\{Pasta,Room\})}=\frac{2}{3} $.
        $confidence(\{Room,Kaas\}\Rightarrow\{Tomaat\}) = \frac{freq(\{Room,Kaas,Tomaat \})}{freq(\{Room,Kaas\})}=\frac{1}{2} $.
        $confidence(\{Kaas\}\Rightarrow\{Tomaat\}) = \frac{freq(\{Tomaat,Kaas\})}{freq(\{Kaas\})}=\frac{4}{5} $.
    3. Laat $Y$ de vereniging zijn van alle items (deelverzamelingen) uit de collectie $I$ en $Z$ een willekeurige item uit $I$. Waarom is de $confidence(\{Y\}\Rightarrow\{Z\})$ altijd 1?
      antwoord
      • De vereniging van alle items bevat alle ingrediënten. Dus deze vereniging bevat iedere deelverzameling van $I$ en impliceert deze deelverzameling dan ook. In formulevorm
        $confidence(\{Y\}\Rightarrow\{Z\}) = \frac{freq(\{Y \cup Z \})}{freq(\{Y\})} = \frac{freq(\{Y \})}{freq(\{Y\})}=1$


Apriori algoritme

Er bestaan veel algoritmes om associatieregels te ontdekken. De oudste en meest bekende methode is het Apriori algoritme (a priori bekent: op basis van eerder onderzoek) ontwikkeld voor transacties (verkopen). Het is in de jaren negentig bedacht door Agrawal en collega's.
Met het algoritme vind je interessante associatieregels voor producten die voldoende frequent gekocht worden. Voldoende voorkomend (frequent) betekent in dit geval dat we niet alle verbanden even nuttig vinden. Als producten te weinig voorkomen, ofwel te weinig support hebben, dan nemen we die niet mee in het algoritme.
Je geeft een ondergrens aan de support op, de minimale support.
Naast deze minimale support kun je ook instellen hoe betrouwbaar de associatieregels moeten zijn (hoe sterk zijn de aanwijzingen), ofwel je geeft een minimale confidence op.

Apriori algoritme
Het Apriori algoritme voor een collectie $C$ bestaat uit de volgende twee fasen:
  1. Het maken van een collectie $F$ met verzamelingen die voldoende frequent (groter dan een minimale support) zijn in $C$,
  2. Het opstellen van associatieregels met verzamelingen uit $F$ met voldoende betrouwbaarheid (groter dan een minimale confidence) in $C$.

We gaan door deze twee fasen heen aan de hand van de collectie winkelmandjes die we al eerder gebruikten. Die is klein, in echte toepassing zijn dat er duizenden, of miljoenen.

voorbeeld:
$$ \small \begin{array}{lcl}C&=&\{ \{\text{ melk, brood, kaas }\}\\ & & , \{\text{ yoghurt, rozijnen, appel }\}\\ & & , \{\text{ pindakaas, brood, melk, komkommer }\}\\ & & , \{\text{ brood, banaan }\}\\ & & , \{\text{ banaan, appel, chocolade }\}\\ & & , \{\text{ brood }\}\\ & & , \{\text{ chocolade, brood, banaan }\}\\ & & , \{\text{ rozijnen, chocolade, pindakaas }\}\\ & & , \{\text{ melk, brood, banaan, kaas, chocolade}\}\\ & & , \{\text{ melk, chocolade }\}\\ & & \} \end{array} $$

De centrale vraag is: welke combinaties van producten zijn interessant? We vinden combinaties interessant als er een minimale support is van 0.3 (of 30%) en we zijn alleen geïnteresseerd in associatieregels met een betrouwbaarheid van minimaal 70%.

Fase 1: Het maken van een collectie $F$ met itemsets die voldoende frequent (groter dan een minimale support) zijn in $C$

Het algoritme bouwt een verzameling van frequente itemsets op. Dat gaat van onderop ("bottom up"): eerst itemsets van 1 item, dan van 2, enzovoort. Probleem is dat het aantal itemsets erg groot wordt, als de winkel veel artikelen heeft. Bij duizend artikelen heb je al meer dan 100 miljoen setjes van drie artikelen! Het algoritme gebruikt een truc om niet zoveel itemsets te hoeven bekijken. Zometeen meer daarover.

Na de start van het algoritme maken we eerst de lege collectie $F = \{\}$ en zetten het aantal elementen $k$ aanwezig in een itemset op 0. Gelijk daarna maken we $k$ gelijk aan 1 en gaan we naar het oranje blok:

Genereer alle kandidaat itemsets met lengte 1
We maken de 1-itemset in de collectie $S_{1}$. De collectie $S_{1}$ bestaat dan uit alle verzamelingen met slechts één item (i.e. alle verschillende artikelen die je in al de winkelmandjes tegenkomt).
voorbeeld:
$S_{1}=\{\text{ melk, brood, kaas, yoghurt, rozijnen, appel, pindakaas, komkommer, banaan, chocolade} \}$

Vervolgens gaan we naar de stap in het blauwe blok:

Bereken de support van elke 1- itemset uit $S_{1}$ in $C$
voorbeeld:
Itemset Support
$\{melk\}$ 40%
$\{brood \}$ 60%
$\{kaas\}$ 20%
$\{yoghurt\}$ 10%
$\{rozijnen\}$ 20%
$\{appel\}$ 20%
$\{pindakaas\}$ 20%
$\{komkommer\}$ 10%
$\{banaan\}$ 40%
$\{chocolade\}$ 50%

Als laatste gaan we in de eerste iteratie naar het paarse blok:

Voeg de 1-itemsets met voldoende support toe aan de collectie $F$
voorbeeld:
In de tabel hierboven zie je dat alleen $\{melk\}$, $\{brood\}$, $\{banaan\}$ en $\{chocolade\}$ de grens van 30% halen. De collectie F met itemsets met voldoende support breiden we dus uit met deze vier 1-itemsets.
$\begin{array}{ll} F= & \{\{melk\}, \\ & \{brood\}, \\ & \{banaan\}, \\ & \{chocolade\}\} \end{array}$

We komen nu aan bij de test "Is er in deze ronde een $k$-itemset aan $F$ toegevoegd?". In het voorbeeld hebben we net vier verzamelingen met 1-item toegevoegd en is het antwoord dus ja, we zijn dus nog niet klaar. We verhogen k naar 2 en gaan weer verder bij het oranje blok:

Genereer alle kandidaat itemsets met lengte 2
We verzamelen de 2-itemset in de collectie $S_{2}$. De collectie $S_{2}$ bestaat dan uit alle verzamelingen met twee items waarbij we alleen nog kijken naar de items die in $F$ aanwezig zijn.

De truc van het algoritme is dat we niet alle combinaties van twee artikelen bekijken, maar alleen de - nu vier - frequente artikelen gebruiken. Het heeft geen zin een combinatie met een niet-frequent artikel te bekijken. Apart komt dat al te weinig voor, laat staan in combinatie. We gaan dus door met de vier items uit ronde 1, die samen zes combinaties leveren

voorbeeld:
$S_{2}=\{\{melk,brood\},\{melk,banaan\},\{melk,chocolade\}, \{brood, banaan \}, \{brood, chocolade \}, \{banaan, chocolade \}\}$

Op naar het blauwe blok om de support te berekenen:

Bereken de support van elke 2- itemset uit $S_{2}$ in $C$
voorbeeld:
Itemset Support
$\{melk,brood\}$ 30%
$\{melk,banaan\}$ 10%
$\{melk,chocolade\}$ 20%
$\{brood, banaan \}$ 30%
$\{brood, chocolade \}$ 10%
$\{banaan, chocolade \}$ 30%

Kunnen we weer itemsets toevoegen aan $F$?

Voeg de 2-itemsets met voldoende support toe aan de collectie $F$
voorbeeld:
In de tabel hierboven zie je dat niet alle 2-itemsets de grens van 30% halen. De collectie $F$ met itemsets met voldoende support breiden we dus alleen uit met de 2-itemsets $\{melk,brood\}, \{brood, banaan \}$ en $\{banaan, chocolade\}$.
$$\begin{array}{ll} F= & \{\{melk\}, \\ & \{brood\}, \\ & \{banaan\}, \\ & \{chocolade\}, \\ & \{melk,brood\}, \\ & \{brood, banaan\}, \\ & \{banaan, chocolade\} \} \end{array} $$

We komen nu weer aan bij de test "Is er in deze ronde een $k$-itemset aan $F$ toegevoegd?". In het voorbeeld hebben we er weer drie toegevoegd en is het antwoord dus ja, we zijn dus nog steeds niet klaar. We verhogen $k$ naar 3 en gaan weer verder bij het oranje blok:

Genereer alle kandidaat itemsets met lengte 3
We verzamelen de 2-itemset in de collectie $S_{3}$. De collectie $S_{3}$ bestaat dan uit alle verzamelingen met twee items waarbij we alleen nog kijken naar de items die in $F$ aanwezig zijn.
voorbeeld:
$S_{3}=\{\{melk, brood, banaan \}, \{melk, brood, chocolade \}, \{brood, banaan, chocolade \} \}$

Het blauwe blok levert nu de support:

Bereken de support van elke 3- itemset uit $S_{3}$ in $C$
voorbeeld:
Itemset Support
$\{melk, brood, banaan\}$ 10%
$\{melk, brood, chocolade\}$ 10%
$\{brood, banaan, chocolade\}$ 10%

Kunnen we weer itemsets toevoegen aan F?

Voeg de 3-itemsets met voldoende support toe aan de collectie $F$
voorbeeld:
In de tabel hierboven zie je dat alle 3-itemsets de grens van 30% niet halen. Er kan niets aan $F$ worden toegevoegd. De collectie $F$ blijft dus:
$$\begin{array}{ll} F= & \{\{melk\}, \\ & \{brood\}, \\ & \{banaan\}, \\ & \{chocolade\}, \\ & \{melk,brood\}, \\ & \{brood, banaan\}, \\ & \{banaan, chocolade\} \} \end{array} $$

We komen nu weer aan bij de test "Is er in deze ronde een $k$-itemset aan $F$ toegevoegd?". In het voorbeeld hebben we niets meer hebben toegevoegd dus nee, we zijn klaar en eindigen met de bovenstaande collectie $F$.

In het voorbeeld zijn in het algoritme dus 3 iteraties nodig geweest om het proces te stoppen. Andere samenstellingen van de winkelmandjes met vooral meer artikelen zal ervoor zorgen dat er veel meer iteraties nodig zijn.

We zijn nu aan het eind van fase 1 gekomen en gaan nu kijken welke associatieregels interessant zijn.

Fase 2: Het opstellen van associatieregels met verzamelingen uit $F$ met voldoende betrouwbaarheid (groter dan een minimale confidence) in $C$.

Als de collectie $F$ is gevonden kunnen we met de verzamelingen in $F$ associatieregels gaan maken. Voor elke associatieregel bepalen we de confidence. Alleen in die associatieregels met voldoende confidence zijn we geïnteresseerd.

Nu is een associatieregel van de vorm: "Als een klant artikel(set) X koopt, koopt de klant dan ook artikel Y". In formule - voor het voorbeeld waarmee we dit onderwerp begonnen: $\{banaan\} \Rightarrow \{banaan, chocolade\}$.

In zo'n regel staan dus rechts meer items dan links. We kunnen rechts dus de drie 2-itemsets uit F zetten. Bij elk kunnen we twee associatieregels onderzoeken. Naast $\{banaan\} \Rightarrow \{banaan, chocolade\}$ is dat ook $\{chocolade\} \Rightarrow \{banaan, chocolade\}$. Zo krijgen we de zes mogelijke associatieregels in de tabel hieronder. Voor elke regel delen we de support van de betrokken itemsets.

voorbeeld:

Associatieregels uit $F$ met betrouwbaarheid (confidentie)

Associatieregels Confidence
$\{banaan\} \Rightarrow \{banaan, chocolade\}$ $\frac{30}{40}= 75 \% $
$\{chocolade\} \Rightarrow \{banaan, chocolade\}$ $\frac{30}{50}= 60\% $
$\{brood\} \Rightarrow \{brood, banaan\}$ $\frac{30}{60}= 50\% $
$\{banaan\} \Rightarrow \{brood, banaan\}$ $\frac{30}{40}= 75\% $
$\{melk\} \Rightarrow \{melk,brood\}$ $\frac{30}{40}= 75\% $
$\{brood\} \Rightarrow \{melk,brood\}$ $\frac{30}{60}= 50\% $

Van tevoren haden we aangegeven dat we een betrouwbaarheid van 70% nodig vinden om de regel aan te nemen. Dat is bij drie regels het geval. In de eerste regel in de tabel hierboven geeft voor associatieregel $\{banaan\} \Rightarrow \{banaan, chocolade\}$ een betrouwbaarheid van 75%. Dit zegt dat in75% van de gevallen dat een klant banaan koopt, deze ook chocolade gaat kopen. 75% is groter dan 70%, voldoende betrouwbaar dus. De derde regel laat zien dat als iemand brood koopt, deze persoon in 50% van de gevallen banaan koopt, te weinig voorspellend om rekening mee te houden want kleiner dan 70%. Dus blijven over de associatieregels:

Associatieregels Confidence
$\{banaan\} \Rightarrow \{banaan, chocolade\}$ $\frac{3}{4}= 75 \% $
$\{banaan\} \Rightarrow \{brood, banaan\}$ $\frac{3}{4}= 75\% $
$\{melk\} \Rightarrow \{melk,brood\}$ $\frac{3}{4}= 75\% $

Tijd om dit zelf toe te passen:

Vragen 2
Opdrachten
  1. Gegeven is de transactiedatabase gerepresenteerd door de collectie $W$:
    Collectie $W$
    Id Items
    0 $\{a,b,c\}$
    1 $\{b,c,d,e\}$
    2 $\{c,d \}$
    3 $\{a,b,d\}$
    4 $\{a,b,c\}$
    1. Pas Fase 1 van het Apriori-algoritme toe op deze collectie met een support van minimaal 50%
      antwoord
      • Iteratie met k=1
        1. Genereer alle deelverzamelingen (itemsets) kandidaten met lengte $1$.
          $S_{1}=\{\{a\}, \{b\},\{ c \}, \{d \}, \{e \}\}$
        2. Bereken support van de kandidaat deelverzamelingen (1-itemsets) uit $S_{1}$ in $W$.
          Itemset Support
          $\{a\}$ 60%
          $\{b\}$ 80%
          $\{c \}$ 80%
          $\{d\}$ 60%
          $\{e\}$ 20%
        3. De support van kandidaat itemset $\{e\}$ is onder de 40% en voldoet dus niet.
          De frequente 1-itemsets zijn dus: $F=\{\{a\}, \{b\}, \{c\}, \{d\}\}$
        4. $F$ is niet leeg. We gaan op zoek naar grotere frequente itemsets namelijk die uit twee elementen bestaan. k=2

        Iteratie met k=2

        1. Genereer alle deelverzamelingen (itemsets) kandidaten met lengte $2$ met elementen uit $F$.
          $S_{2}=\{\{a,b\}, \{a, c \}, \{a, d \}, \{b, c \}, \{b, d \} , \{c, d \}\}$
        2. Bereken support van de kandidaat deelverzamelingen (2-itemsets) uit $S_{2}$ in $W$.
          Itemset Support
          $\{a,b\}$ 60%
          $\{a,c\}$ 40%
          $\{a,d\}$ 20%
          $\{b,c\}$ 60%
          $\{b,d\}$ 40%
          $\{c,d\}$ 40%
        3. De frequente 2-itemsets zijn:$\{\{a,b\}, \{b,c\}\}$ dus $F$ wordt $F=\{\{a\}, \{b\}, \{c\}, \{d\},\{a,b\}, \{b,c\}\}$
        4. We hebben weer items toegevoegd aan $F$ en gaan dus op zoek naar grotere frequente itemsets namelijk die uit drie elementen bestaan. k=3

        Iteratie met k=3

        1. Genereer alle deelverzamelingen (itemsets) kandidaten met lengte $3$ met elementen uit $F$.
          $S_{3}=\{\{a,b,c \}\}$
        2. Bereken support van de kandidaat deelverzamelingen (3-itemsets) uit $S_{3}$ in $W$.
          Itemset Support
          $\{a,b,c\}$ 40%
        3. Er zijn geen frequente 3-itemssets.
        4. We zijn bij het einde gekomen.

        De uiteindelijke set van voldoende frequente verzamelingen is
        $F=\{\{a\}, \{b\}, \{c\}, \{d\}, \{a, b \}, \{b, c \}\}$.

    2. Geef in Fase 2 alle associatieregels met een confidence van minimaal 70%.
      antwoord
      • De uiteindelijke set van voldoende frequente verzamelingen is
        $F=\{\{a\}, \{b\}, \{c\}, \{d\}, \{a, b \}, \{b, c \}\}$.
        De daaruit voortvloeiende associatieregels met voldoende confidence zijn:

        Associatieregels Confidence
        $\{a\} \Rightarrow \{a,b\}$ $\frac{60}{60}= 100 \% $
        $\{b\} \Rightarrow \{a,b\}$ $\frac{60}{80}= 75 \% $
        $\{b\} \Rightarrow \{b,c\}$ $\frac{60}{80}= 75 \% $
        $\{c\} \Rightarrow \{b,c\}$ $\frac{60}{80}= 75 \% $
  2. Gegeven is de transactiedatabase gerepresenteerd door de collectie $P$:
    Collectie $P$
    Id Items
    0 $\{brood,melk\}$
    1 $\{brood,luier,bier,eieren\}$
    2 $\{melk,luier,bier,cola \}$
    3 $\{brood,melk,luier,bier\}$
    4 $\{brood,melk,luier,cola\}$
    1. Pas het Apriori-algoritme toe op deze collectie met een support van minimaal 50%
      antwoord
      • Iteratie met k=1
        1. Genereer alle deelverzamelingen (itemsets) kandidaten met lengte $1$.
          $S_{1}=\{\{brood\}, \{bier\},\{ melk \}, \{luier \}, \{cola \}, \{eieren \}\}$
        2. Bereken support van de kandidaat deelverzamelingen (1-itemsets) uit $S_{1}$ in $P$.
          Itemset Support
          $\{brood\}$ 80%
          $\{bier\}$ 60%
          $\{melk \}$ 60%
          $\{luier\}$ 80%
          $\{cola\}$ 40%
          $\{eieren\}$ 20%
        3. De support van kandidaat itemsets $\{cola\}$ en $\{eieren\}$ is onder de 40% en voldoen dus niet.
          De frequente itemsets zijn dus: $F=\{\{brood\}, \{bier\},\{ melk \}, \{luier \}\}$
        4. $F$ is niet leeg. We gaan op zoek naar grotere frequente itemsets namelijk die uit twee elementen bestaan. k=2

        Iteratie met k=2

        1. Genereer alle deelverzamelingen (itemsets) kandidaten met lengte $2$ met elementen uit $F_{1}$.
          $S_{2}=\{\{brood,bier\}, \{brood,melk\}, \{brood,luier\}, \{bier,melk\}, \{bier,luier\} , \{melk,luier\}\}$
        2. Bereken support van de kandidaat deelverzamelingen (2-itemsets) uit $S_{2}$ in $P$.
          Itemset Support
          $\{brood,bier\}$ 40%
          $\{brood,melk\}$ 60%
          $\{brood,luier\}$ 60%
          $\{bier,melk\}$ 40%
          $\{bier,luier\}$ 60%
          $\{melk,luier\}$ 60%
        3. De frequente 2-itemsets zijn:$\{\{brood,melk\}, \{brood,luier\}, \{bier,luier\} , \{melk,luier\}\}$ dus $F=\{\{brood\}, \{bier\},\{ melk \}, \{luier \},\{brood,melk\}, \{brood,luier\}, \{bier,luier\} , \{melk,luier\}\}$
        4. Er zijn itemsets toegevoegd. We gaan dus op zoek naar grotere frequente itemsets namelijk die uit drie elementen bestaan. k=3

        Iteratie met k=3

        1. Genereer alle deelverzamelingen (itemsets) kandidaten met lengte $3$ met elementen uit $F$.
          $S_{3}=\{\{brood,melk,luier\}, \{brood,melk,bier\}, \{bier,melk,luier\}\}$
        2. Bereken support van de kandidaat deelverzamelingen (3-itemsets) uit $S_{3}$ in $P$.
          Itemset Support
          $\{brood,melk,luier\}$ 40%
          $\{brood,melk,bier\}$ 20%
          $\{bier,melk,luier\}$ 40%
        3. Er zijn geen voldoende frequente 3-itemsets.
        4. We zijn bij het einde gekomen.

        De uiteindelijke set van voldoende frequente verzamelingen is
        $F=\{\{brood\}, \{bier\},\{ melk \}, \{luier \},\{brood,melk\}, \{brood,luier\}, \{bier,luier\} , \{melk,luier\}\}$.

    2. Geef alle associatieregels met een confidence van minimaal 60%.
      • De uiteindelijke set van voldoende frequente verzamelingen is
        $F=\{\{brood\}, \{bier\},\{ melk \}, \{luier \},\{brood,melk\}, \{brood,luier\}, \{bier,luier\} , \{melk,luier\}\}$.
        De daaruit voortvloeiende associatieregels met voldoende confidence zijn:

        Associatieregels Confidence
        $\{brood\} \Rightarrow \{brood,melk\}$ $\frac{60}{80}= 75 \% $
        $\{brood\} \Rightarrow \{brood,luier\}$ $\frac{60}{80}= 75 \% $
        $\{melk\} \Rightarrow \{brood,melk\}$ $\frac{60}{80}= 75 \% $
        $\{melk\} \Rightarrow \{luier,melk\}$ $\frac{60}{80}= 75 \% $
        $\{luier\} \Rightarrow \{luier,brood\}$ $\frac{60}{80}= 75 \% $
        $\{luier\} \Rightarrow \{luier,bier\}$ $\frac{60}{80}= 75 \% $
        $\{luier\} \Rightarrow \{luier,melk\}$ $\frac{60}{80}= 75 \% $
        $\{bier\} \Rightarrow \{bier,luier\}$ $\frac{60}{60}= 100 \% $