Potatura avanzata dei risultati Apriori

Analisi del carrello in Python

Isaiah Hull

Visiting Associate Professor of Finance, BI Norwegian Business School

Applicazioni

Cross-promotion

Questa immagine mostra un esempio di cross-promotion.

Aggregazione

Questa immagine mostra un esempio di aggregazione.

Analisi del carrello in Python

L'algoritmo Apriori

Lista di liste

Questa immagine mostra un esempio di lista di liste degli articoli nelle transazioni.

One-Hot Encoding

Questa immagine mostra la one-hot encoding delle transazioni.

Algoritmo Apriori

Questa immagine illustra l'algoritmo Apriori applicato a un set generico di 4 elementi.

Analisi del carrello in Python

L'algoritmo Apriori

import pandas as pd
import numpy as np
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori
itemsets = np.load('itemsets.npy')
print(itemsets)
[['EASTER CRAFT 4 CHICKS'],
['CERAMIC CAKE DESIGN SPOTTED MUG', 'CHARLOTTE BAG APPLES DESIGN'],
['SET 12 COLOUR PENCILS DOLLY GIRL'],
...
['JUMBO BAG RED RETROSPOT', ... 'LIPSTICK PEN FUSCHIA']]
Analisi del carrello in Python

L'algoritmo Apriori

# One-hot encode data
encoder = TransactionEncoder()
onehot = encoder.fit(itemsets).transform(itemsets)
onehot = pd.DataFrame(onehot, columns = encoder.columns_)
# Apply Apriori algorithm and print
frequent_itemsets = apriori(onehot, use_colnames=True, min_support=0.001)
print(frequent_itemsets)
      support                                           itemsets
0    0.001504                               ( DOLLY GIRL BEAKER)
1    0.002256                         ( RED SPOT GIFT BAG LARGE)
...
428  0.001504  (BIRTHDAY CARD, RETRO SPOT, JUMBO BAG RED RETR...
Analisi del carrello in Python

Risultati dell'algoritmo Apriori

print(len(data.columns))
4201
print(len(frequent_itemsets))
2328
rules = association_rules(frequent_itemsets)
Analisi del carrello in Python

Regole di associazione

print(rules['consequents'])
0                   (DOTCOM POSTAGE)
                        ... 
9                 (HERB MARKER THYME)
                        ...
234        (JUMBO BAG RED RETROSPOT)
235         (WOODLAND CHARLOTTE BAG)
236    (RED RETROSPOT CHARLOTTE BAG)
237       (STRAWBERRY CHARLOTTE BAG)
238      (CHARLOTTE BAG SUKI DESIGN)
Name: consequents, Length: 239, dtype: object
Analisi del carrello in Python

Filtro con metriche multiple

targeted_rules = rules[rules['consequents'] == {'HERB MARKER THYME'}].copy()
filtered_rules = targeted_rules[(targeted_rules['antecedent support'] > 0.01) &
                        (targeted_rules['support'] > 0.009) &
                        (targeted_rules['confidence'] > 0.85) &
                        (targeted_rules['lift'] > 1.00)]
print(filtered_rules['antecedents'])
9        (HERB MARKER BASIL)
25     (HERB MARKER PARSLEY)
27    (HERB MARKER ROSEMARY)
Name: antecedents, dtype: object
Analisi del carrello in Python

Raggruppare prodotti

L'immagine mostra una pianta del negozio: le scatole sono vicino alle borse e le insegne vicino alle candele.

L'immagine mostra una pianta del negozio: le scatole sono vicino alle candele e le insegne vicino alle borse.

L'immagine mostra una pianta del negozio: le scatole sono vicino alle insegne e le candele vicino alle borse.

Analisi del carrello in Python

Aggregazione e dissociazione

# Load aggregated data
aggregated = pd.read_csv('datasets/online_retail_aggregated.csv')

# Compute frequent itemsets
onehot = encoder.fit(aggregated).transform(aggregated)
data = pd.DataFrame(onehot, columns = encoder.columns_)
frequent_itemsets = apriori(data, use_colnames=True)

# Compute standard metrics
rules = association_rules(frequent_itemsets)
# Compute Zhang's rule
rules['zhang'] = zhangs_rule(rules)
Analisi del carrello in Python

Regola di Zhang

# Print rules that indicate dissociation
print(rules[rules['zhang'] < 0][['antecedents','consequents']])
  antecedents consequents
2       (bag)    (candle)
3    (candle)       (bag)
4      (sign)       (bag)
5       (bag)      (sign)
Analisi del carrello in Python

Scelta della pianta del negozio

L'immagine mostra una pianta del negozio: le scatole sono vicino alle borse e le insegne vicino alle candele.

L'immagine mostra una pianta del negozio: le scatole sono vicino alle borse e le insegne vicino alle candele.

L'immagine mostra una pianta del negozio: le scatole sono vicino alle borse e le insegne vicino alle candele.

Analisi del carrello in Python

Andiamo a praticare!

Analisi del carrello in Python

Preparing Video For Download...