항목 조합

R로 배우는 Market Basket Analysis

Christopher Bruffaerts

Statistician

식료품점으로 돌아가기

가게에 뭐가 있나요?

모든_제품_이모티콘

오늘은 무엇을 고르시겠어요?

빵_치즈3

{"Bread", "Cheese", "Cheese", "Cheese"}

장바구니 분석의 초점

빵_치즈

{"Bread", "Cheese"}

R로 배우는 Market Basket Analysis

부분집합과 상위집합

내 가게 - 집합

X = {"Bread", "Butter", "Cheese", "Wine"}

모든_제품_이모티콘

X의 부분집합 - 아이템셋

  • 크기 0: { ${ \emptyset }$ }
  • 크기 1: {"Bread"}, {"Wine"}, ...
  • 크기 2: {"Bread", "Wine"}, ...

상위집합

  • {"Bread", "Butter"}는 {"Bread"}의 상위집합
  • {"Bread", "Butter", "Cheese", "Wine"}는 {"Bread", "Butter"}의 상위집합
R로 배우는 Market Basket Analysis

아이템셋 그래프

질문:

X의 가능한 모든 부분집합의 집합은 무엇인가요?

X = {A, B, C, D}

아이템셋_격자

R로 배우는 Market Basket Analysis

교집합과 합집합

  • 교집합

{"Bread"} $\cap$ {"Butter"} = $\emptyset$

{"Bread", "Butter"} $\cap$ {"Butter", "Wine"} = {"Butter"}

library(dplyr)
A = c("Bread", "Butter")
B = c("Bread", "Wine")
intersect(A,B)
[1] "Bread"
  • 합집합

{"Bread"} $\cup$ {"Butter"} = {"Bread", "Butter"}

union(A,B)
[1] "Bread"  "Butter" "Wine"
R로 배우는 Market Basket Analysis

크기 k의 바구니는 몇 개?

질문:

크기 n인 집합에서 크기 k인 부분집합은 몇 개인가요?

"n choose k"

$${n \choose k} = \dfrac{n!}{(n-k)! k!},$$ 여기서

$n! = n \times (n-1) \times (n-2) \times ...\times 2 \times 1$

예시:

가게에서 서로 다른 2개 품목으로 만들 수 있는 바구니 수:

모든_제품_이모티콘

$${4 \choose 2} = \dfrac{4!}{(4-2)! 2!} = 6$$

R로 배우는 Market Basket Analysis

가능한 바구니는 몇 개?

질문

크기 n인 집합에서 만들 수 있는 바구니는 몇 개인가요?

뉴턴의 이항정리

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

2^(n_items)

예시

바구니 총개수:

$$2^4 = 16$$

모든_제품_이모티콘

R로 배우는 Market Basket Analysis

R로 바구니 개수 계산

R에서 조합

n_items = 4
basket_size = 2
choose(n_items, basket_size)
[1] 6
# 모든 값에 대해 반복
store = matrix(NA, nrow=5, ncol=2)
for (i in 0:n_items){
  store[i+1,] = c(i, choose(n_items,i))}

출력

colnames(store)=c("size", "nb_combi")
store
     size nb_combi
[1,]    0        1
[2,]    1        4
[3,]    2        6
[4,]    3        4
[5,]    4        1
R로 배우는 Market Basket Analysis

조합 수 시각화

조합 수가 얼마나 빠르게 늘어나는지 살펴보기

n_items = 50
fun_nk = function(x) choose(n_items, x)
# Plotting
ggplot(data = data.frame(x = 0),
    mapping = aes(x=x))+
  stat_function(fun = fun_nk)+
  xlim(0, n_items)+
  xlab("Subset size")+
  ylab("Number of subsets")

조합_분포

R로 배우는 Market Basket Analysis

이제 셀 준비되셨나요?

R로 배우는 Market Basket Analysis

Preparing Video For Download...