신뢰도와 리프트

Python으로 배우는 Market Basket Analysis

Isaiah Hull

Visiting Associate Professor of Finance, BI Norwegian Business School

Support가 오해를 부를 때

TID 거래
1 Coffee, Milk
2 Bread, Milk, Orange
3 Bread, Milk
4 Bread, Milk, Sugar
5 Bread, Jam, Milk
... ...

 

  1. Milk과 Bread는 함께 자주 구매됩니다.
    • Support: {Milk} $\rightarrow$ {Bread}
  2. 이 규칙은 마케팅에 유용하지 않습니다.
    • Milk과 Bread 모두 인기 상품입니다.
Python으로 배우는 Market Basket Analysis

신뢰도 지표

  1. 추가 지표로 support의 한계를 보완합니다.
  2. 신뢰도(confidence)를 더하면 더 잘 파악할 수 있습니다.

 

$$\frac{Support(X \& Y)}{Support(X)}$$

Python으로 배우는 Market Basket Analysis

신뢰도 해석

식료품점 거래 목록이 보이며, 한 거래에 잼과 빵이 포함되어 있습니다.

$$Support(Milk\&Coffee) = 0.20$$

식료품점 거래 목록이 보이며, 한 거래에 잼과 빵이 포함되어 있습니다.

$$Support(Milk) = 1.00$$

Python으로 배우는 Market Basket Analysis

신뢰도 해석

  $$\frac{Support(Milk\&Coffee)}{Support(Milk)} = \frac{0.20}{1.00} = 0.20$$

  $$\frac{Support(Milk\&Coffee)}{Support(Milk)} = \frac{0.20}{0.80} = 0.25$$

  $$\frac{Support(Milk\&Coffee)}{Support(Milk)} = \frac{0.20}{0.20} = 1.00$$

Python으로 배우는 Market Basket Analysis

리프트 지표

 

  • 리프트는 아이템 간 관계를 평가하는 또 다른 지표입니다.
    • 분자: X와 Y를 모두 포함한 거래 비율
    • 분모: X와 Y가 무작위·독립적으로 발생할 때의 기대 비율

 

$$\frac{Support(X \& Y)}{Support(X) Support(Y)}$$

Python으로 배우는 Market Basket Analysis

데이터 준비

from mlxtend.preprocessing import TransactionEncoder
import pandas as pd

# Split library strings into lists
libraries = data['Library'].apply(lambda t: t.split(','))

# Convert to list of lists
libraries = list(libraries)

# One-hot encode books
books = TransactionEncoder().fit(libraries).transform(libraries)

# Convert one-hot encoded data to DataFrame
books = pd.DataFrame(books, columns = encoder.columns_)
Python으로 배우는 Market Basket Analysis

신뢰도와 리프트 계산

# Print first five items
print(books.head())
       Hunger           Gatsby
0      False            True
1      False            True
2      False            False
3      False            True
4      False            True

데이터셋: GoodBooks-10K.

Python으로 배우는 Market Basket Analysis

신뢰도와 리프트 계산

# Computing support.
supportHG = np.logical_and(books['Hunger'],books['Gatsby']).mean()
supportH = books['Hunger'].mean()
supportG = books['Gatsby'].mean()
# Compute and print confidence and lift.
confidence = supportHG / supportH
lift = supportHG / (supportH * supportG)
# Print results.
print(supportG, confidence, lift)
(0.30, 0.16, 0.53)
Python으로 배우는 Market Basket Analysis

연습해 봅시다!

Python으로 배우는 Market Basket Analysis

Preparing Video For Download...