가장 간단한 지표

Python으로 배우는 Market Basket Analysis

Isaiah Hull

Visiting Associate Professor of Finance, BI Norwegian Business School

지표와 가지치기

  • 지표(metric)는 규칙의 성능을 측정합니다.
    • {humor} $\rightarrow$ {poetry}
      • 0.81
    • {fiction} $\rightarrow$ {travel}
      • 0.23
  • 가지치기(pruning)는 지표로 규칙을 걸러냅니다.
    • 유지: {humor} $\rightarrow$ {poetry}
    • 제거: {fiction} $\rightarrow$ {travel}
Python으로 배우는 Market Basket Analysis

가장 간단한 지표

  • 지지도(support)는 아이템셋이 포함된 거래의 비율입니다.

 

$$\frac{\text{items 포함 거래 수}}{\text{전체 거래 수}}$$

 

$$\frac{\text{milk 포함 거래 수}}{\text{전체 거래 수}}$$

Python으로 배우는 Market Basket Analysis

language의 지지도

TID Transaction
0 travel, humor, fiction
1 humor, language
2 humor, biography, cooking
3 cooking, language
4 travel

 

{language}의 지지도 = 2 / 10 = 0.2

TID Transaction
5 poetry, health, travel, history
6 humor
7 travel
8 poetry, fiction, humor
9 fiction, biography
Python으로 배우는 Market Basket Analysis

{Humor} $\rightarrow$ {Language}의 지지도

TID Transaction
0 travel,humor,fiction
1 humor,language
2 humor,biography,cooking
3 cooking,language
4 travel

 

{language} $\rightarrow$ {humor}의 지지도 = 0.1

TID Transaction
5 poetry,health,travel,history
6 humor
7 travel
8 poetry,fiction,humor
9 fiction,biography
Python으로 배우는 Market Basket Analysis

데이터 준비

print(transactions)
[['travel', 'humor', 'fiction'],
...
['fiction', 'biography']]
from mlxtend.preprocessing import TransactionEncoder
# Instantiate transaction encoder
encoder = TransactionEncoder().fit(transactions)
Python으로 배우는 Market Basket Analysis

데이터 준비

# One-hot encode itemsets by applying fit and transform
onehot = encoder.transform(transactions)
# Convert one-hot encoded data to DataFrame
onehot = pd.DataFrame(onehot, columns = encoder.columns_)
print(onehot)
   biography  cooking  ...  poetry  travel
0  False      False   ...   False    True
...
9  True       False   ...   False    False
Python으로 배우는 Market Basket Analysis

단일 아이템의 지지도 계산

print(onehot.mean())
biography    0.2
cooking      0.2
fiction      0.3
health       0.1
history      0.1
humor        0.5
language     0.2
poetry       0.2
travel       0.4
dtype: float64
Python으로 배우는 Market Basket Analysis

복수 아이템의 지지도 계산

import numpy as np

# Define itemset that contains fiction and poetry
onehot['fiction+poetry'] = np.logical_and(onehot['fiction'],onehot['poetry'])

print(onehot.mean())
biography         0.2
cooking           0.2
...               ...
travel            0.4
fiction+poetry    0.1
dtype: float64
Python으로 배우는 Market Basket Analysis

Lass uns üben!

Python으로 배우는 Market Basket Analysis

Preparing Video For Download...