Poda avanzada de resultados de Apriori

Análisis de cesta de la compra en Python

Isaiah Hull

Visiting Associate Professor of Finance, BI Norwegian Business School

Aplicaciones

Promoción cruzada

Esta imagen muestra un ejemplo de promoción cruzada.

Agregación

Esta imagen muestra un ejemplo de agregación.

Análisis de cesta de la compra en Python

El algoritmo Apriori

Lista de listas

Esta imagen muestra un ejemplo de una lista de listas de los artículos en transacciones.

Codificación one-hot

Esta imagen muestra la codificación one-hot de transacciones.

Algoritmo Apriori

Esta imagen ilustra el algoritmo Apriori aplicado a un conjunto genérico de 4 artículos.

Análisis de cesta de la compra en Python

El 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']]
Análisis de cesta de la compra en Python

El 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...
Análisis de cesta de la compra en Python

Resultados de Apriori

print(len(data.columns))
4201
print(len(frequent_itemsets))
2328
rules = association_rules(frequent_itemsets)
Análisis de cesta de la compra en Python

Reglas de asociación

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
Análisis de cesta de la compra en Python

Filtrado con múltiples métricas

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
Análisis de cesta de la compra en Python

Agrupar productos

La imagen muestra un plano de tienda donde las cajas se agrupan con las bolsas y los letreros con las velas.

La imagen muestra un plano de tienda donde las cajas se agrupan con las velas y los letreros con las bolsas.

La imagen muestra un plano de tienda donde las cajas se agrupan con los letreros y las velas con las bolsas.

Análisis de cesta de la compra en Python

Agregación y disociación

# 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)
Análisis de cesta de la compra en Python

Regla de 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)
Análisis de cesta de la compra en Python

Seleccionar un plano de tienda

La imagen muestra un plano de tienda donde las cajas se agrupan con las bolsas y los letreros con las velas.

La imagen muestra un plano de tienda donde las cajas se agrupan con las bolsas y los letreros con las velas.

La imagen muestra un plano de tienda donde las cajas se agrupan con las bolsas y los letreros con las velas.

Análisis de cesta de la compra en Python

¡Vamos a practicar!

Análisis de cesta de la compra en Python

Preparing Video For Download...