การตัดแต่งผลลัพธ์ Apriori ขั้นสูง

Market Basket Analysis ด้วย Python

Isaiah Hull

Visiting Associate Professor of Finance, BI Norwegian Business School

การประยุกต์ใช้

การโปรโมตข้ามสินค้า

ภาพนี้แสดงตัวอย่างของการโปรโมตข้ามสินค้า

การรวมกลุ่ม

ภาพนี้แสดงตัวอย่างของการรวมกลุ่ม

Market Basket Analysis ด้วย Python

อัลกอริทึม Apriori

List of Lists

ภาพนี้แสดงตัวอย่าง list of lists ของสินค้าในรายการธุรกรรม

One-Hot Encoding

ภาพนี้แสดงการทำ one-hot encoding ของธุรกรรม

อัลกอริทึม Apriori

ภาพนี้แสดงการใช้อัลกอริทึม Apriori กับชุดสินค้า 4 รายการ

Market Basket Analysis ด้วย Python

อัลกอริทึม 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']]
Market Basket Analysis ด้วย Python

อัลกอริทึม 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...
Market Basket Analysis ด้วย Python

ผลลัพธ์ของอัลกอริทึม Apriori

print(len(data.columns))
4201
print(len(frequent_itemsets))
2328
rules = association_rules(frequent_itemsets)
Market Basket Analysis ด้วย Python

กฎความสัมพันธ์

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
Market Basket Analysis ด้วย Python

การกรองด้วยหลายตัวชี้วัด

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
Market Basket Analysis ด้วย Python

การจัดกลุ่มสินค้า

ภาพแสดงผังร้านที่กล่องถูกจัดกลุ่มกับถุง และป้ายถูกจัดกลุ่มกับเทียน

ภาพแสดงผังร้านที่กล่องถูกจัดกลุ่มกับเทียน และป้ายถูกจัดกลุ่มกับถุง

ภาพแสดงผังร้านที่กล่องถูกจัดกลุ่มกับป้าย และเทียนถูกจัดกลุ่มกับถุง

Market Basket Analysis ด้วย Python

การรวมกลุ่มและการแยกความสัมพันธ์

# 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)
Market Basket Analysis ด้วย Python

กฎของ 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)
Market Basket Analysis ด้วย Python

การเลือกผังร้าน

ภาพแสดงผังร้านที่กล่องถูกจัดกลุ่มกับถุง และป้ายถูกจัดกลุ่มกับเทียน

ภาพแสดงผังร้านที่กล่องถูกจัดกลุ่มกับถุง และป้ายถูกจัดกลุ่มกับเทียน

ภาพแสดงผังร้านที่กล่องถูกจัดกลุ่มกับถุง และป้ายถูกจัดกลุ่มกับเทียน

Market Basket Analysis ด้วย Python

มาฝึกกันเถอะ!

Market Basket Analysis ด้วย Python

Preparing Video For Download...