연관규칙

Association Rules

비즈니스 애널리틱스 · 9주차

장바구니 분석과 연관규칙

  • 장바구니 분석(market basket analysis): 거래 기록에서 함께 구매되는 상품을 찾는 분석
  • 연관규칙(association rule): "A를 포함하는 거래는 B도 포함함" 형태의 규칙
  • 활용 분야
    • 진열: 함께 구매되는 상품의 배치
    • 묶음 판매와 쿠폰: 함께 구매되는 상품의 묶음 할인
    • 온라인 추천: "이 상품을 구매한 고객이 함께 구매한 상품" 목록
    • 우편·문자 마케팅: 지난 구매 기록에 맞춘 권유 상품 선정
  • 데이터 분석의 필요성: 상품 100개의 두 상품 조합만 4,950가지

이번 주의 결정 문제

어떤 품목을 산 고객에게 어떤 품목을 함께 권할 것인가
  • 교재 자료: 한 식료품점의 30일 치 계산대 영수증 9,835장, 품목 169개
  • 랩 자료: 책 동아리 Charles Book Club 고객 4,000명의 분야별 구매 기록
  • 필요한 도구
    • 함께 구매되는 정도를 숫자로 재는 지표
    • 기준을 넘는 조합을 빠짐없이, 빠르게 찾는 방법

강의 구성

  1. 거래 자료와 기호
  2. 규칙의 평가 지표: 지지도, 신뢰도, 향상도
  3. frequent itemset과 Apriori 알고리즘
  4. frequent itemset에서의 규칙 생성
  5. 결과 해석 시 주의 사항
  • 모든 계산 예제: 식료품점 영수증 9,835장, 교재와 같은 자료

예제 자료: 식료품점 영수증 9,835장

  • 출처: Hahsler·Hornik·Reutterer(2006), R arules 패키지의 Groceries
  • 한 식료품점의 30일 치 실제 계산대 기록
  • 행: 영수증 1장 = 거래 1건
  • item: 품목 범주 169개
    • whole milk 우유, other vegetables 기타 채소, rolls/buns 롤빵, soda 탄산음료, root vegetables 뿌리채소, yogurt 요구르트 등
  • 값: 1은 그 영수증에 있음, 수량과 가격은 없음
  • 예: 영수증 6은 whole milk와 yogurt를 함께 산 거래
영수증whole
milk
other
vegetables
rolls/
buns
sodaroot
vegetables
yogurt
1000000
2000001
3100000
4000001
5110000
6100001
7001000
8011000
9000000
10100000

영수증 9,835장 중 앞 10장, 품목 6개만 표시

기본 용어와 기호

용어와 기호정의예제의 예
item분석 대상인 상품 하나whole milk, yogurt 등 169개
itemsetitem의 집합{yogurt, whole milk}
거래(transaction) \(t\)영수증 한 장에서 함께 구매한 item의 집합영수증 2의 \(t_2=\{\textsf{tropical fruit},\textsf{yogurt},\textsf{coffee}\}\)
\(N\)전체 거래의 수\(N=9{,}835\)
포함, \(X\subseteq t\)거래 \(t\)가 itemset \(X\)의 item을 모두 가짐영수증 6은 {yogurt, whole milk}를 포함함
사건 \(A\)무작위로 고른 거래 하나가 itemset \(A\)를 포함하는 사건고른 영수증에 yogurt가 있음
\(P(A)\)사건 \(A\)의 확률, 거래 자료에서는 \(A\)를 포함한 거래의 비율\(P(\textsf{yogurt})=1{,}372/9{,}835=0.140\)

연관규칙의 정의

정의공집합이 아니고 공통 item이 없는 두 itemset \(A\), \(B\)에 대하여 "\(A\)를 포함하는 거래는 \(B\)도 포함함"이라는 규칙을 연관규칙이라 하고 \(A\Rightarrow B\)로 표기함
  • \(A\): antecedent, 규칙의 앞부분으로 고객이 이미 고른 itemset
  • \(B\): consequent, 규칙의 뒷부분으로 함께 권할 itemset
  • 예: {yogurt} ⇒ {whole milk}, {other vegetables, root vegetables} ⇒ {whole milk}
  • 방향이 있는 규칙: {yogurt} ⇒ {whole milk}와 {whole milk} ⇒ {yogurt}는 서로 다른 규칙
  • 평가 지표: 지지도, 신뢰도, 향상도

지지도의 정의

정의itemset \(X\)의 지지도(support)는 전체 거래 가운데 \(X\)를 포함하는 거래의 비율, 곧 사건 \(X\)의 확률 \[\supp(X)=P(X)\]
  • 규칙의 지지도: \(A\)와 \(B\)를 모두 포함한 거래의 비율 \[\supp(A\Rightarrow B)=P(A\cap B)\]
  • 거래 자료로 계산: 두 itemset을 모두 포함한 거래 수 ÷ 전체 거래 수
예\(P(\textsf{yogurt}\cap\textsf{whole milk})=551/9{,}835=\mathbf{0.056}\)
  • \(P(\textsf{whole milk})=2{,}513/9{,}835=0.256\)
whole milk
있음
whole milk
없음
합계
yogurt 있음5518211,372
yogurt 없음1,9626,5018,463
합계2,5137,3229,835

yogurt와 whole milk를 모두 포함한 영수증

신뢰도의 정의

정의규칙 \(A\Rightarrow B\)의 신뢰도(confidence)는 \(A\)를 포함하는 거래 가운데 \(B\)도 포함하는 거래의 비율 \[\conf(A\Rightarrow B)=P(B\mid A)=\frac{P(A\cap B)}{P(A)}\]
예{yogurt} ⇒ {whole milk}
  • yogurt가 있는 영수증: 1,372장
  • 그중 whole milk도 있는 영수증: 551장
  • \(P(\textsf{whole milk}\mid\textsf{yogurt})=551/1{,}372=\mathbf{0.40}\)
  • 의미: yogurt를 산 영수증의 40%에 whole milk도 있음
whole milk
있음
whole milk
없음
합계
yogurt 있음5518211,372
yogurt 없음1,9626,5018,463
합계2,5137,3229,835

사건 \(A\)사건 \(A\cap B\)

신뢰도의 한계

  • 규칙 {soda} ⇒ {whole milk}의 신뢰도: \(394/1{,}715=0.23\)
    • soda를 산 영수증 1,715장 중 394장에 whole milk
  • whole milk의 지지도: \(2{,}513/9{,}835=0.256\)
    • soda 구매 여부와 관계없이 영수증 네 장 중 한 장꼴로 whole milk
  • 비교: soda 영수증의 whole milk 비율 0.23 < 전체 영수증의 whole milk 비율 0.256
  • consequent \(B\)가 흔한 item이면 \(A\)와 관계없이 신뢰도가 높게 나옴
  • 필요한 지표: 신뢰도를 consequent \(B\)의 지지도와 비교하는 지표
whole milk
있음
whole milk
없음
합계
soda 있음3941,3211,715
soda 없음2,1196,0018,120
합계2,5137,3229,835

soda 포함soda와 whole milk 포함

향상도의 정의

정의규칙 \(A\Rightarrow B\)의 향상도(lift)는 신뢰도를 consequent \(B\)의 지지도로 나눈 값 \[\lift(A\Rightarrow B)=\frac{P(B\mid A)}{P(B)}=\frac{P(A\cap B)}{P(A)\,P(B)}\]
  • 의미: \(A\)를 포함한 거래의 \(B\) 포함 비율이 전체 거래의 \(B\) 포함 비율의 몇 배인지
  • \(\lift=1\): \(P(A\cap B)=P(A)\,P(B)\), 곧 사건 \(A\)와 \(B\)가 독립
  • \(\lift>1\): \(A\)를 포함한 거래에서 \(B\)가 더 자주 나옴
  • \(\lift<1\): \(A\)를 포함한 거래에서 \(B\)가 덜 나옴

향상도의 계산 예

규칙신뢰도 \(P(B\mid A)\)\(P(B)\)향상도
{root vegetables} ⇒ {other vegetables}\(466/1{,}072=0.435\)0.193\(0.435/0.193=\mathbf{2.25}\)
{yogurt} ⇒ {whole milk}\(551/1{,}372=0.402\)0.256\(0.402/0.256=\mathbf{1.57}\)
{soda} ⇒ {whole milk}\(394/1{,}715=0.230\)0.256\(0.230/0.256=\mathbf{0.90}\)
  • {root vegetables} ⇒ {other vegetables}: other vegetables가 전체 영수증보다 2.25배 자주 나옴
  • {soda} ⇒ {whole milk}: 신뢰도는 0.23이지만 whole milk가 전체 영수증보다 덜 나옴
  • 신뢰도의 높고 낮음만으로는 규칙의 유용성을 판단할 수 없음

규칙 방향에 따른 지표 변화

규칙지지도신뢰도향상도
{yogurt} ⇒ {whole milk}0.056\(551/1{,}372=0.402\)\(\dfrac{551\times9{,}835}{1{,}372\times2{,}513}=1.57\)
{whole milk} ⇒ {yogurt}0.056\(551/2{,}513=0.219\)\(\dfrac{551\times9{,}835}{2{,}513\times1{,}372}=1.57\)
  • 지지도와 향상도: 식에서 \(A\)와 \(B\)의 자리를 바꿔도 같은 값
  • 신뢰도: \(P(B\mid A)\)와 \(P(A\mid B)\)는 분모가 \(P(A)\)와 \(P(B)\)로 달라 방향에 따라 다른 값
  • 추천에 쓰는 규칙: 고객이 이미 고른 itemset을 antecedent로 둔 규칙
    • yogurt를 담은 고객에게 whole milk를 권하는 근거: {yogurt} ⇒ {whole milk}의 신뢰도 0.40

item 수에 따른 규칙 수

item 수 \(k\)itemset 수 \(2^k-1\)규칙 수 \(3^k-2^{k+1}+1\)
5, 예제의 5품목31180
201,048,5753,484,687,250
169, 식료품점 전체약 \(7.5\times10^{50}\)약 \(4.3\times10^{80}\)
  • 규칙 수의 유도
    • 각 item을 \(A\)에 넣기, \(B\)에 넣기, 어디에도 넣지 않기 중 하나로 배정: \(3^k\)가지
    • \(A=\varnothing\)인 배정 \(2^k\)가지와 \(B=\varnothing\)인 배정 \(2^k\)가지를 뺌
    • \(A=B=\varnothing\)인 배정 1가지는 두 번 빠졌으므로 다시 더함
  • 모든 규칙의 계산은 불가능하므로 탐색 범위를 줄이는 기준이 필요함

연관규칙 탐색의 큰 그림

거래 자료영수증 9,835장
→
① Apriori지지도로 거름
→
frequent itemset예제 15개
→
② 규칙 생성신뢰도로 거름
→
규칙예제 4개
① Apriori② 규칙 생성
답하는 질문무엇이 자주 함께 팔렸나누구에게 무엇을 권할까
하는 일지지도가 기준 이상인 item 조합을 찾음조합을 이미 고른 쪽과 권할 쪽으로 나누고 신뢰도로 거름
결과frequent itemset, 방향 없음규칙 \(A\Rightarrow B\), 방향 있음
기준최소 지지도 \(s_{\min}=0.02\)최소 신뢰도 \(c_{\min}=0.4\)
예{whole milk, other vegetables, root vegetables}: 영수증 228장에서 함께 팔림{other vegetables, root vegetables} ⇒ {whole milk}: 두 채소를 담은 고객에게 우유를 권함
코드aprioriassociation_rules
  • 규칙을 고른 다음: 향상도로 원래 잘 팔리는 상품이라서 신뢰도가 높게 나온 것은 아닌지 확인

frequent itemset의 정의

정의분석가가 정한 최소 지지도 \(s_{\min}\)에 대하여 \(P(X)\ge s_{\min}\)인 itemset \(X\)를 frequent itemset이라 함
  • 뜻: 기준 이상으로 자주 함께 팔린 item 조합
  • 예: \(s_{\min}=0.02\)이면 영수증 9,835장 중 197장 이상에서 함께 나온 itemset
  • 이후 예제: 가장 많이 팔린 품목 5개, \(s_{\min}=0.02\), \(c_{\min}=0.4\)
    • whole milk, other vegetables, rolls/buns, soda, root vegetables
  • 코드
    • ① itemsets = apriori(df, min_support=0.02, use_colnames=True)
    • ② rules = association_rules(itemsets, len(df), metric="confidence", min_threshold=0.4)

Apriori 원리

성질itemset에 item을 더하면 지지도는 같거나 줄어듦
\(X\subseteq Y\)이면 \(P(Y)\le P(X)\)
  • 근거: \(Y\)를 포함하는 거래는 \(Y\)의 부분집합 \(X\)도 포함하므로 사건 \(Y\)가 일어나면 사건 \(X\)도 일어남, \(P(Y)\le P(X)\)
    • 예: {soda} 0.174, {soda, root vegetables} 0.019, {whole milk, soda, root vegetables} 0.008
  • 결론: frequent가 아닌 itemset에 item을 더한 itemset도 frequent가 아님
  • 활용: frequent가 아닌 itemset을 포함하는 itemset은 지지도를 세지 않음
예\(s_{\min}=0.02\)에서 {soda, root vegetables}의 지지도 0.019
  • {whole milk, soda, root vegetables}, {other vegetables, soda, root vegetables} 등은 세지 않음

Apriori 알고리즘의 절차

  • 아이디어: 크기 1 itemset부터 크기를 하나씩 늘리며, 앞 단계에서 남은 frequent itemset으로만 다음 크기의 candidate를 만듦
1. candidate 생성크기 \(k-1\) frequent itemset 두 개를 합쳐 item이 \(k\)개인 itemset을 만듦
→
2. prune크기 \(k-1\) 부분집합 중 frequent가 아닌 것이 하나라도 있으면 버림
→
3. 지지도 계산남은 candidate의 지지도를 거래 자료에서 셈
→
4. 선택지지도가 \(s_{\min}\) 이상인 candidate를 크기 \(k\) frequent itemset으로 남김
  • 시작: item 하나짜리 itemset의 지지도를 세어 크기 1 frequent itemset을 고름
  • 반복: \(k=2,3,\dots\)에 대하여 위 과정을 반복
  • 종료: 새로 남은 frequent itemset이 없을 때
  • 빠뜨림이 없는 이유: frequent itemset의 부분집합은 Apriori 원리에 의해 모두 frequent이므로 prune에서 버려지지 않음

Apriori 진행 예: 크기 1

조건: 최소 지지도 \(s_{\min}=0.02\), 영수증 197장 이상

  • item 하나짜리 itemset 5개의 지지도를 셈
  • 크기 1 frequent itemset: 5개 모두
  • 가장 적은 root vegetables도 지지도 0.109로 기준의 다섯 배 이상
크기 1 itemset\(n\)지지도frequent
{whole milk}2,5130.256○
{other vegetables}1,9030.193○
{rolls/buns}1,8090.184○
{soda}1,7150.174○
{root vegetables}1,0720.109○

Apriori 진행 예: 크기 2

  • candidate 생성: 크기 1 frequent itemset 5개에서 두 개씩 합친 10개
  • prune: 부분집합이 모두 크기 1 frequent itemset이므로 버릴 것 없음
  • 지지도 계산: candidate 10개
  • 크기 2 frequent itemset: 9개
    • {soda, root vegetables}만 0.019로 탈락
크기 2 candidate\(n\)지지도frequent
{whole milk, other vegetables}7360.075○
{whole milk, rolls/buns}5570.057○
{whole milk, soda}3940.040○
{whole milk, root vegetables}4810.049○
{other vegetables, rolls/buns}4190.043○
{other vegetables, soda}3220.033○
{other vegetables, root vegetables}4660.047○
{rolls/buns, soda}3770.038○
{rolls/buns, root vegetables}2390.024○
{soda, root vegetables}1830.019×

Apriori 진행 예: 크기 3

candidate: 크기 2 frequent itemset 두 개를 합친 크기 3 itemset 10개

candidatefrequent가 아닌 크기 2 부분집합prune\(n\)지지도frequent
{whole milk, other vegetables, root vegetables}없음통과2280.023○
{whole milk, other vegetables, rolls/buns}없음통과1760.018×
{whole milk, other vegetables, soda}없음통과1370.014×
{whole milk, rolls/buns, root vegetables}없음통과1250.013×
{other vegetables, rolls/buns, root vegetables}없음통과1200.012×
{other vegetables, rolls/buns, soda}없음통과970.010×
{whole milk, rolls/buns, soda}없음통과870.009×
{whole milk, soda, root vegetables}{soda, root vegetables}버림세지 않음×
{other vegetables, soda, root vegetables}{soda, root vegetables}버림세지 않음×
{rolls/buns, soda, root vegetables}{soda, root vegetables}버림세지 않음×
  • prune 3개, 지지도 계산 7개, 크기 3 frequent itemset 1개

Apriori 탐색 결과 요약

크기만들 수 있는 itemset지지도를 센 candidatefrequent itemset
1555
210109
31071
4500
5100
합계312215
  • 크기 4: 크기 3 frequent itemset이 하나뿐이라 두 개를 합친 candidate가 없어 종료
  • 지지도를 센 itemset: 가능한 31개 중 22개

frequent itemset에서의 규칙 생성

  • frequent itemset: 방향이 없는 사실
    • {whole milk, other vegetables, root vegetables}: 세 품목이 영수증 228장에서 함께 팔림
    • 무엇을 먼저 골랐고 무엇을 권할지는 알려 주지 않음
  • 규칙: frequent itemset을 두 쪽으로 나눠 방향을 붙인 것
    • antecedent \(A\): 고객이 이미 고른 쪽
    • consequent \(B\): 함께 권할 쪽
antecedent \(A\)other vegetablesroot vegetables
⇒
consequent \(B\)whole milk
두 채소를 담은 고객에게 우유를 권하는 추천
신뢰도\(A\)를 산 거래 가운데 \(B\)까지 산 거래의 비율, 곧 그 추천의 근거가 얼마나 탄탄한지 \[\conf(A\Rightarrow B)=P(B\mid A)=\frac{P(A\cap B)}{P(A)}\]

규칙 생성의 예: 세 품목 itemset

{whole milk, other vegetables, root vegetables}를 두 쪽으로 나누는 방법 6가지 = 추천 상황 6개

규칙\(A\)를 산 영수증그중 \(B\)도 산 영수증신뢰도\(c_{\min}=0.4\)
{other vegetables, root vegetables} ⇒ {whole milk}466장228장\(228/466=0.49\)채택
{whole milk, root vegetables} ⇒ {other vegetables}481장228장\(228/481=0.47\)채택
{whole milk, other vegetables} ⇒ {root vegetables}736장228장\(228/736=0.31\)제외
{root vegetables} ⇒ {whole milk, other vegetables}1,072장228장\(228/1{,}072=0.21\)제외
{other vegetables} ⇒ {whole milk, root vegetables}1,903장228장\(228/1{,}903=0.12\)제외
{whole milk} ⇒ {other vegetables, root vegetables}2,513장228장\(228/2{,}513=0.09\)제외
  • 분자: 세 품목을 모두 산 영수증 228장으로 모든 규칙에 같음, 분모만 \(A\)를 산 영수증 수로 달라짐
  • {other vegetables, root vegetables} ⇒ {whole milk}: 두 채소를 산 영수증 466장 중 228장이 우유도 구매
  • {whole milk} ⇒ {other vegetables, root vegetables}: 우유를 산 영수증 2,513장 중 228장뿐, 근거가 약해 제외

frequent itemset에서만 규칙을 만드는 이유

  • 규칙의 지지도: 양쪽을 모두 산 거래의 비율, 곧 나누기 전 itemset의 지지도 \[\supp(A\Rightarrow B)=P(A\cap B)=P(Z)\]
    • \(Z\): \(A\)와 \(B\)의 item을 모두 담은 itemset, 사건 \(A\cap B\)는 고른 거래가 \(Z\)를 포함하는 사건
  • 드물게 함께 팔린 조합에서 나온 규칙: 근거가 되는 거래가 처음부터 적음
  • frequent itemset에서만 규칙을 만들면 충분히 자주 함께 팔린 조합에서 나온 규칙만 남음
  • 계산: 분모 \(P(A)\)는 Apriori 단계에서 이미 셈
    • \(A\)는 frequent itemset의 일부이므로 \(A\)도 frequent itemset
    • 거래 자료를 다시 읽지 않고 나눗셈만으로 신뢰도 계산

예제 전체의 규칙 수

frequent itemset의 item 수frequent itemset 수하나에서 나오는 규칙규칙 수신뢰도 0.4 이상
15000
292182
31662
합계15244
  • item 1개인 frequent itemset: 두 쪽으로 나눌 수 없어 규칙이 없음
  • item이 \(m\)개인 frequent itemset 하나에서 나오는 규칙: \(2^m-2\)개
  • 신뢰도 0.4 이상인 크기 2 규칙: {root vegetables} ⇒ {whole milk} 0.45, {root vegetables} ⇒ {other vegetables} 0.43

mlxtend 결과 표의 열과 기호

열 이름기호와 식{yogurt} ⇒ {whole milk}의 값
antecedents\(A\){yogurt}
consequents\(B\){whole milk}
antecedent support\(P(A)\)0.140
consequent support\(P(B)\)0.256
support\(P(A\cap B)\)0.056
confidence\(P(B\mid A)\)0.402
lift\(P(B\mid A)/P(B)\)1.572
  • association_rules의 둘째 인자: 전체 거래 수 \(N\), 예제에서 len(df) = 9,835
  • 나머지 열 leverage, conviction 등은 이 과목에서 사용하지 않음

해석 시 주의: 지지도가 낮은 규칙

향상도의 상한신뢰도는 1을 넘지 않음 \[\lift(A\Rightarrow B)=\frac{P(B\mid A)}{P(B)}\le\frac{1}{P(B)}\]
  • 드물게 구매되는 item이 consequent인 규칙: 향상도가 매우 크게 나올 수 있음
  • 예: {liquor, red/blush wine} ⇒ {bottled beer}의 신뢰도 0.90, 향상도 11.2
    • 근거 영수증: antecedent 21장 중 19장
  • 소수 거래의 우연으로 생긴 규칙일 수 있으므로 향상도와 지지도를 함께 판단
consequent \(B\)지지도향상도의 상한
whole milk0.2563.9
bottled beer0.08112.4
지지도 0.01인 item0.01100

해석 시 주의: 구매 성향이 다른 고객 집단의 혼합

  • 가정: 고객 집단 1, 2가 섞여 있고, 각 집단 안에서는 \(A\)의 구매와 \(B\)의 구매가 독립
집단고객 비율\(P(A)\)\(P(B)\)
1\(w\)\(a_1\)\(b_1\)
2\(1-w\)\(a_2\)\(b_2\)
\[\begin{aligned} P(A)&=w\,a_1+(1-w)\,a_2\\ P(B)&=w\,b_1+(1-w)\,b_2\\ P(A\cap B)&=w\,a_1b_1+(1-w)\,a_2b_2\\ P(A\cap B)-P(A)\,P(B)&=w(1-w)(a_1-a_2)(b_1-b_2) \end{aligned}\]
  • \(a_1>a_2\)이고 \(b_1>b_2\)이면 우변이 양수, 전체 향상도가 1보다 큼
  • 각 집단 안의 향상도가 1이어도 두 집단을 합친 자료의 향상도는 1보다 큼

고객 집단 혼합의 계산 예

구분고객 비율\(P(A)\)\(P(B)\)\(P(A\cap B)\)향상도
집단 1: 구매량이 많은 고객0.50.80.8\(0.8\times0.8=0.64\)1
집단 2: 구매량이 적은 고객0.50.10.1\(0.1\times0.1=0.01\)1
전체10.450.450.3251.60
  • 전체의 \(P(A)=0.5\times0.8+0.5\times0.1=0.45\), \(P(B)\)도 0.45
  • 전체의 \(P(A\cap B)=0.5\times0.64+0.5\times0.01=0.325\)
  • 전체 향상도: \(0.325/(0.45\times0.45)=1.60\)
  • 식으로 확인: \(w(1-w)(a_1-a_2)(b_1-b_2)=0.25\times0.7\times0.7=0.1225=0.325-0.2025\)
  • 모든 규칙의 향상도가 1보다 크면 구매량이 많은 고객의 영향부터 확인

해석 시 주의: 동시 구매와 추천 효과의 구분

  • 연관규칙: 과거 거래에서 \(A\)와 \(B\)가 함께 나온 정도의 요약
  • 추천 효과: \(A\)를 구매한 고객에게 \(B\)를 권했을 때 늘어나는 \(B\)의 구매
  • 연관규칙으로 추천 효과를 알 수 없는 이유
    • 규칙에 잡힌 고객은 권하지 않아도 \(B\)를 구매했을 수 있음
    • 고객이 스스로 찾아 함께 담는 상품이면 권유의 효과는 더 작음
  • 추천 효과의 측정: 무작위 실험
    1. \(A\)를 구매한 고객을 무작위로 두 집단으로 나눔
    2. 한 집단에만 \(B\)를 권함
    3. 두 집단의 \(B\) 구매율을 2표본 비율검정으로 비교함, 1주차 A/B 검정과 같은 방법

정리

개념정의예제의 값
지지도\(\supp(A\Rightarrow B)=P(A\cap B)\){yogurt} ⇒ {whole milk}: 0.056
신뢰도\(\conf(A\Rightarrow B)=P(B\mid A)\){yogurt} ⇒ {whole milk}: 0.40
향상도\(\lift(A\Rightarrow B)=P(B\mid A)/P(B)\){yogurt} ⇒ {whole milk}: 1.57
frequent itemset\(P(X)\ge s_{\min}\)인 itemset5품목, \(s_{\min}=0.02\)에서 15개
Apriori 원리\(X\subseteq Y\)이면 \(P(Y)\le P(X)\){soda, root vegetables}를 포함하는 itemset은 세지 않음
규칙 생성frequent itemset을 antecedent와 consequent로 나눠 방향을 붙이고 신뢰도로 거름규칙 24개 중 신뢰도 0.4 이상 4개
해석낮은 지지도의 규칙은 지지도와 함께 판단, 고객 집단의 혼합 확인, 추천 효과는 무작위 실험으로 측정