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 algoritime, 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 meerder 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 wordt 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.

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 associatieanalyse 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. Met behulp van associatie analyse, die getraind is met alle symptomen en de daarbij behorende ziekten, kan aan een arts, bij de symptomen die een patiënt heeft, die ziekten tonen die het meest waarschijnlijk zijn. 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
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.
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, door deze te in te voeren in een iteratief proces, de uitkomst van de analyse.

De wiskundige techniek die wordt gebruikt in associatie analyse is gebaseerd op wiskunde 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. In een verzameling bevindt 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_{1}$ is dan het derde, enz.

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$. We gebruiken accolades om verzamelingen te noteren.

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 ⊂ 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}\} \cap \{\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.

Nog een voorbeeld van een collectie is de registratie van aankopen door acht klanten in een klein avondwinkeltje: $$ \small \begin{array}{lcl}D&=&\{\{\text{banaan}\}\\ & & ,\{\text{chips}\}\\ & & ,\{\text{melk}\}\\ & & ,\{\text{pruim}\}\\ & & ,\{\text{banaan}, \text{rum}\}\\ & & ,\{\text{chips}, \text{rum}\}\\ & & ,\{\text{banaan}, \text{chips}, \text{melk}\}\\ & & ,\{\text{banaan}, \text{rum}, \text{melk}, \text{pruim}\}\\ & & \}\end{array} $$ De collectie D bestaat nu uit de inhoud van de acht winkelmandjes, van iedere klant één. Ieder mandje is een verzameling van producten: $$ \small\begin{array}{rcl}D_1&=& \{\text{banaan}\} \\D_2&=& \{\text{chips}\} \\D_3&=& \{\text{melk}\} \\D_4&=& \{\text{pruim}\} \\D_5&=& \{\text{banaan},\text{rum}\} \\D_6&=& \{\text{chips},\text{rum}\} \\D_7&=& \{\text{banaan},\text{chips},\text{melk}\} \\D_8&=& \{\text{banaan},\text{rum},\text{melk},\text{pruim}\}\end{array} $$


Associatieregels

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 $D$ 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.

Frequent
Een stel artikelen $K$ met hoge support, boven een zekere drempel, heet frequent. Ofwel: ten opzichte van het totaal aantal klanten kopen veel klanten alle artikelen in $K$.

In de winkelmandjesanalyse kan niet altijd alles worden meegenomen. Vaak is men alleen geïnteresseerd in artikelen en combinaties van artikelen die vaak voorkomen en dus frequent

Itemset
Een itemset is een deelverzameling van elementen uit de een collectie. Een $k$-itemset is een deelverzameling die $k$ elementen bevatten.

In de associatieanalyse (b.v. winkelmandjesanalyse) is het van belang dat men wil handelen op basis van associatieregels. Deze associatieregels stelt men dan op voor frequente deelverzamelingen. Maar dat is niet voldoende, de associatieregel met ook nog interessant zijn, ofwel deze moet een hoge waarschijnlijkheid hebben om maatregelen die genomen woorden op basis van die associatieregels te kunnen onderbouwen. Er moet voldoende dus vertrouwen zijn in de associatieregel. In de vaktaal heet dat de confidence ofwel de betrouwbaarheid van de associatieregel.

Betrouwbaarheid
De betrouwbaarheid of confidence van de associatieregel $X \Rightarrow Y$ wordt berekend door de support van de vereniging van $X$ en $Y$ te delen door de support van $X$.
In notatievorm: $confidence(X \Rightarrow Y) = \frac{support(X \cap Y)}{support(X)}$
Omdat $\frac{support(X \cap Y)}{support(X)}=\frac{freq(X \cap Y)}{freq(X)}$, geldt ook: $confidence(X \Rightarrow Y) =\frac{freq(X \cap Y)}{freq(X)}$

Bij de winkelmandjesanalyse is de betrouwbaarheid een maat voor de kans dat iemand $Y$ gaat kopen, als gegeven is dat hij $X$ al in zijn winkelmandje heeft. We gaan dit alles weer bekijken vanuit de collectie winkelmandjes $D$ voor de associatieregel $ \{\text{banaan}\}⇒\{\text{rum}\}$.

$confidence(\{ banaan\} \Rightarrow \{ rum \} )= \frac{support(\{ banaan,rum\})}{support(\{banaan\})}=\frac{\frac{2}{8}}{\frac{4}{8}}=\frac{1}{2}$ (=50%)


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: $T_{1}=\{chips,zeep,appel\}$, $T_{2}=\{chips,zeep\}$, $T_{3}=\{zeep,bananen\}$ en $T_{4}=\{chips,zeep,bananen\}$ van de collectie $C=\{T_{1},T_{2},T_{3},T_{4}\}$
    1. Schrijf de verzamelingen $T_{1} \cap T_{2}$, $T_{1} \cap T_{4}$ en $T_{3} \cap T_{4}$ op.
      antwoord
      • $T_{1} \cap T_{2} = \{chips,zeep\}$,
        $T_{1} \cap T_{4}= \{chips,zeep\}$ en
        $T_{3} \cap T_{4}= \{zeep,bananen\}$
    2. Schrijf de verzamelingen $T_{1} \cup T_{2}$, $T_{1} \cup T_{4}$ en $T_{3} \cup T_{4}$ op.
      antwoord
      • $T_{1} \cup T_{2} = \{chips,zeep,appel\}$, $T_{1} \cup T_{4}= \{chips,zeep,appel,bananen\}$ en $T_{3} \cup T_{4}=\{chips,zeep,bananen\}$
    3. Schrijf de verzameling $T_{1} \cup T_{2} \cup T_{3} \cup T_{4} $ op.
      antwoord
      • $T_{1} \cup T_{2} \cup T_{3} \cup T_{4} = \{chips,zeep,appel,bananen\}$
    4. Schrijf de verzameling $T_{1} \cap T_{2} \cap T_{3} \cap T_{4} $ op.
      antwoord
      • $T_{1} \cap T_{2} \cap T_{3} \cap T_{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 anderen. Met het algoritme wordt je in staat gesteld om interessante voldoende voorkomende verbanden (implicaties) in een collectie te vinden (b.v. welke aankopen van anderen toon ik jou als jij net in de online winkel een slaapzak koopt?). 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. We stellen dus een ondergrens aan het support, de minimale support.
Naast deze minimale support kun je ook instellen hoe betrouwbaar de implicaties 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 het volgende voorbeeld:

voorbeeld:

In dit voorbeeld gaan we aan de slag met een zeer kleine hoeveelheid winkelmandjes en producten. In een echte toepassing zijn dat er duizenden. Dus de laatste maand hebben we alle individuele aankopen in een drukbezochte winkel geplaatst in de volgende collectie C:

Collectie $C$
Id Items
0 $\{Spaghetti, Tomatensaus\}$
1 $\{Spaghetti, Brood\}$
2 $\{Spaghetti, Tomatensaus, Brood \}$
3 $\{Brood,Boter\}$
4 $\{Brood, Tomatensaus\}$

De centrale vraag is welke combinaties van producten zijn interessant? We vinden combinaties interessant als er een minimale support is van 40% en zijn alleen geïnteresseerd in associatie regels met een betrouwbaarheid van minimaal 60%.

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

In deze fase gebruikt het Apriori algoritme een iteratief proces met een "bottom up" aanpak op de collectie $C$. Van te voren kies je een minimale support (minimale aanwezigheid) en bouwen we een steeds groter wordende collectie $F$ met deelverzamelingen in C met voldoende support, totdat er geenvoldoende frequente verzamelingen zijn toe te voegen aan $F$. Het algoritme is in de figuur hiernaast weergegeven. We zullen je aan de hand van het voorbeeld door dit algoritme heen leiden.

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 verzamelen de 1-itemset in de collectie $S_{1}$. De collectie  $S_{1}$ bestaat dan uit alle verzamelingen met slechts één item. (b.v. alle verschillende artikelen die je in al de winkelmandjes tegenkomt).
voorbeeld:
$S_{1}=\{\{Spaghetti\}, \{Tomatensaus\},\{ Brood \}, \{Boter \}\}$

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
$\{Spaghetti\}$ 60%
$\{Tomatensaus\}$ 60%
$\{Brood \}$ 80%
$\{Boter\}$ 20%

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 $\{Boter\}$ uit $S1$ de grens van 40% niet haalt. De collectie F met itemsets met voldoende support breiden we dus uit met de 1-itemsets $\{Spaghetti\}$, $\{Tomatensaus\}$ en $\{Brood\}$ dus:
$F=\{\{Spaghetti\}, \{Tomatensaus\}, \{Brood\}\}$

We komen nu aan bij de test "Is er in deze ronde een $k$-itemset aan $F$ toegevoegd?". In het voorbeeld hebben we net drie 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.
voorbeeld:
$S_{2}=\{\{Spaghetti,Tomatensaus\}, \{Spaghetti, Brood \}, \{Tomatensaus, Brood \}\}$

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
$\{Spaghetti, Tomatensaus \}$ 40%
$\{Spaghetti, Brood \}$ 40%
$\{Tomatensaus, Brood \}$ 40%

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 alle 2-itemsets de grens van 40% halen. De collectie F met itemsets met voldoende support breiden we dus uit met de 2-itemsets $\{Spaghetti,Tomatensaus\}, \{Spaghetti, Brood \}$ en $\{Tomatensaus, Brood \}$ dus $F=\{\{Spaghetti\}, \{Tomatensaus\}, \{Brood\},\{Spaghetti,Tomatensaus\}, \{Spaghetti, Brood \},\{Tomatensaus, Brood \}\}$

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 3 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}=\{\{Spaghetti,Tomatensaus, Brood \}\}$

Het blauwe blok levert nu de support:

Bereken de support van elke 3- itemset uit $S_{3}$ in $C$
voorbeeld:
Itemset Support
$\{Spaghetti,Tomatensaus, Brood\}$ 20%

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 20% niet halen. Er kan niets aan $F$ worden toegevoegd. De collectie $F$ blijft dus:dus $F=\{\{Spaghetti\}, \{Tomatensaus\}, \{Brood\},\{Spaghetti,Tomatensaus\}, \{Spaghetti, Brood \},\{Tomatensaus, Brood \}\}$

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 dus met de verzameling

$$F=\{\{Spaghetti\}, \{Tomatensaus\}, \{Brood\},\{Spaghetti,Tomatensaus\}, \{Spaghetti, Brood \},\{Tomatensaus, Brood \}\} $$

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. We gaan dit duidelijker maken met het voorbeeld.

voorbeeld:

In ons voorbeeld hadden we gesteld dat we associatieregels alleen interessant als de betrouwbaarheid (confidentie) groter is dan 60% (= minimale confidentie). Uit $F$ kunnen we de onderstaande associatieregels afleiden.

Associatieregels Confidence
$\{Spaghetti\} \Rightarrow \{Spaghetti,Tomatensaus\}$ $\frac{40}{60}= 67 \% $
$\{Spaghetti\} \Rightarrow \{Spaghetti,Brood\}$ $\frac{40}{60}= 67\% $
$\{Brood\} \Rightarrow \{Spaghetti,Brood\}$ $\frac{40}{80}= 50\% $
$\{Brood\} \Rightarrow \{Tomatensaus,Brood\}$ $\frac{40}{80}= 50\% $
$\{Tomatensaus\} \Rightarrow \{Tomatensaus,Brood\}$ $\frac{40}{60}= 67\% $
$\{Tomatensaus\} \Rightarrow \{Tomatensaus,Spaghetti\}$ $\frac{40}{60}= 67\% $

In de eerste regel in de tabel hierboven geeft voor associatieregel $\{Spaghetti\} \Rightarrow \{Spaghetti,Tomatensaus\}$ een betrouwbaarheid van 67%. Dit zegt dat in 67% van de gevallen dat een klant spaghetti koopt, deze ook tomatensaus gaat kopen. 67% is groter dan 60%, voldoende betrouwbaar dus. De derde regel laat zien dat als iemand brood koopt, deze persoon in 50% van de gevallen spaghetti koopt, te weinig voorspellend om rekening mee te houden want kleiner dan 60%. Dus blijven over de associatieregels:

Associatieregels Confidence
$\{Spaghetti\} \Rightarrow \{Spaghetti,Tomatensaus\}$ $\frac{40}{60}= 67 \% $
$\{Spaghetti\} \Rightarrow \{Spaghetti,Brood\}$ $\frac{40}{60}= 67\% $
$\{Tomatensaus\} \Rightarrow \{Tomatensaus,Brood\}$ $\frac{40}{60}= 67\% $
$\{Tomatensaus\} \Rightarrow \{Tomatensaus,Spaghetti\}$ $\frac{40}{60}= 67\% $

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. DPas 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 \% $