Apriori 알고리즘

Python으로 배우는 Market Basket Analysis

Isaiah Hull

Visiting Associate Professor of Finance, BI Norwegian Business School

아이템셋 세기

$${n \choose k} = \frac{n!}{(n-k)!k!}$$

항목 수 아이템셋 크기 조합 수
3461 0 1
3461 1 3461
3461 2 5,987,530
3461 3 6,903,622,090
3461 4 5,968,181,296,805
Python으로 배우는 Market Basket Analysis

아이템셋 세기

$$\sum_{k=0}^{n}{n \choose k} = 2^{n}$$

  • $n = 3461 \rightarrow 2^{3461}$
  • $2^{3461}>>10^{82}$
  • 우주 내 원자 수: $10^{82}$.
Python으로 배우는 Market Basket Analysis

아이템셋 수 줄이기

  • 모든 아이템셋을 고려하는 것은 불가능합니다.
    • 나열조차 불가능합니다.
  • 평가 없이 아이템셋을 어떻게 제거할까요?
    • 최대 $k$ 값을 설정할 수 있습니다.
  • Apriori 알고리즘은 대안을 제공합니다.
    • 모든 아이템셋 나열이 필요 없습니다.
    • 합리적인 가지치기 규칙이 있습니다.
Python으로 배우는 Market Basket Analysis

Apriori 원리

  • Apriori 원리
    • 빈발 집합의 부분집합도 빈발합니다.
    • 빈발로 확인된 집합만 유지합니다.
    • 빈발이 아닌 것으로 알려진 집합은 제거합니다.
  • Candles = 드묾(빈발 아님)
    • -> {Candles, Signs} = 드묾
  • {Candles, Signs} = 드묾
    • -> {Candles, Signs, Boxes} = 드묾
  • {Candles, Signs, Boxes} = 드묾
    • -> {Candles, Signs, Boxes, Bags} = 드묾
Python으로 배우는 Market Basket Analysis

Apriori 구현

# Import Apriori algorithm
from mlxtend.frequent_patterns import apriori

# Load one-hot encoded novelty gifts data
onehot = pd.read_csv('datasets/online_retail_onehot.csv')

# Print header.
print(onehot.head())
    50'S CHRISTMAS GIFT BAG LARGE ...  ZINC WILLIE WINKIE  CANDLE STICK  \
0                           False ...              False   
1                           False ...              False   
2                           False ...              False   
3                           False ...              False   
4                           False ...              False
Python으로 배우는 Market Basket Analysis

Apriori 구현

# Compute frequent itemsets
frequent_itemsets = apriori(onehot, min_support = 0.0005, 
                            max_len = 4, use_colnames = True)

# Print number of itemsets
print(len(frequent_itemsets))
3652
Python으로 배우는 Market Basket Analysis

Apriori 구현

# Print itemsets
print(frequent_itemsets.head())
      support                          itemsets
0     0.000752  ( 50'S CHRISTMAS GIFT BAG LARGE)
1     0.001504              ( DOLLY GIRL BEAKER)
...
1500  0.000752  (PING MICROWAVE APRON, FOOD CONTAINER SET 3 LO...
1501  0.000752  (WOOD 2 DRAWER CABINET WHITE FINISH, FOOD CONT...
...
Python으로 배우는 Market Basket Analysis

Lass uns üben!

Python으로 배우는 Market Basket Analysis

Preparing Video For Download...