Groceries 연관성분석, 3쪽으로 정복하기
거래내역 → Apriori 규칙 발견 → 지표 읽기 → 마케팅 적용 → 기출문제
이 예제에서 꼭 알아야 할 4가지
- 거래별 품목 목록을 inspect()로 확인한다.
- apriori()의 지지도 0.01, 신뢰도 0.3을 해석한다.
- support · confidence · lift · count를 구별한다.
- 향상도 순위와 41회 기출 59번을 정확히 판단한다.
거래데이터와 R 코드 살펴보기
분석 대상: Groceries · 식료품점 POS 거래 데이터 · 169개 품목 · 9,835건
arules 패키지의 Apriori 연관규칙
# 1. 패키지와 데이터 불러오기 library(arules) data("Groceries") # 2. 앞의 거래 3개 확인 inspect(Groceries[1:3]) # 3. 규칙 생성: 최소지지도 1%, 최소신뢰도 30% rules <- apriori(Groceries, parameter = list( support = 0.01, confidence = 0.3)) # 4. Lift 내림차순 상위 20개 inspect(sort(rules, by = "lift", decreasing = TRUE)[1:20])
원문 인식 오타 l:3, l:20, !:20, rulesJ)y는 각각 1:3, 1:20, by 형식으로 교정했습니다. arules 설치가 필요하면 install.packages("arules")를 먼저 실행하세요.
inspect(Groceries[1:3]) 출력
감귤류 · 반제품 빵 · 마가린 · 즉석 수프
열대과일 · 요거트 · 커피
전유(일반 우유)
LHS와 RHS의 역할
RHS · Right-hand Side 결과(후행 품목)
예: {감귤류, 기타 채소} → {뿌리채소}
트랜잭션(거래)은 품목들의 묶음입니다. 연관규칙은 장바구니에서 반복되는 구매 동시발생 패턴을 찾습니다.
Apriori 결과와 3가지 핵심 지표
최소지지도 1%, 최소신뢰도 30%를 만족하는 규칙을 계산합니다.
sorting and recoding items ... [88 item(s)] done
checking subsets of size 1 2 3 4 done
writing ... [125 rule(s)] done
set of 125 rules
왜 169개에서 88개가 되었을까?
최소지지도 조건에 따라 빈도가 낮은 품목이 제거되거나 제외되면서 규칙 탐색에 88개 품목이 남았습니다. 이 조건을 바탕으로 125개 규칙이 생성되었습니다.
0.01 × 9,835 = 98.35건. 실제 지지도 1% 이상을 충족하려면 정수 기준 99건 이상이어야 합니다. R 실행 로그의 “Absolute minimum support count: 98”은 내부 출력값이므로 구별합니다.
전체 거래의 약 1.04%에서 두 조건의 품목과 결과 품목이 모두 등장
전유와 응유를 동시에 구매한 거래 중 38.52%가 요거트도 포함
소고기 구매 거래에서 뿌리채소 구매 비율은 전체 뿌리채소 구매 비율의 약 3.04배
향상도(Lift) 기준 상위 20개 규칙
R 명령: inspect(sort(rules, by="lift", decreasing=TRUE)[1:20])
| # | 연관규칙: LHS → RHS | 지지도 | 신뢰도 | 향상도 | 건수 |
|---|---|---|---|---|---|
| 01 | 감귤류 + 기타 채소→뿌리채소 | 0.01037112 | 0.3591549 | 3.295045 | 102 |
| 02 | 열대과일 + 기타 채소→뿌리채소 | 0.01230300 | 0.3427762 | 3.144780 | 121 |
| 03 | 소고기→뿌리채소 | 0.01738688 | 0.3313953 | 3.040367 | 171 |
| 04 | 감귤류 + 뿌리채소→기타 채소 | 0.01037112 | 0.5862069 | 3.029608 | 102 |
| 05 | 열대과일 + 뿌리채소→기타 채소 | 0.01230300 | 0.5845411 | 3.020999 | 121 |
| 06 | 기타 채소 + 전유→뿌리채소 | 0.02318251 | 0.3097826 | 2.842082 | 228 |
| 07 | 전유 + 응유→요거트 | 0.01006609 | 0.3852140 | 2.761356 | 99 |
| 08 | 뿌리채소 + 빵류→기타 채소 | 0.01220132 | 0.5020921 | 2.594890 | 120 |
| 09 | 뿌리채소 + 요거트→기타 채소 | 0.01291307 | 0.5000000 | 2.584078 | 127 |
| 10 | 열대과일 + 전유→요거트 | 0.01514997 | 0.3581731 | 2.567516 | 149 |
| # | 연관규칙: LHS → RHS | 지지도 | 신뢰도 | 향상도 | 건수 |
|---|---|---|---|---|---|
| 11 | 요거트 + 휘핑/사워크림→기타 채소 | 0.01016777 | 0.4901961 | 2.533410 | 100 |
| 12 | 기타 채소 + 휘핑/사워크림→요거트 | 0.01016777 | 0.3521127 | 2.524073 | 100 |
| 13 | 열대과일 + 기타 채소→요거트 | 0.01230300 | 0.3427762 | 2.457146 | 121 |
| 14 | 뿌리채소 + 전유→기타 채소 | 0.02318251 | 0.4740125 | 2.449770 | 228 |
| 15 | 전유 + 휘핑/사워크림→요거트 | 0.01087951 | 0.3375394 | 2.419607 | 107 |
| 16 | 감귤류 + 전유→요거트 | 0.01026945 | 0.3366667 | 2.413350 | 101 |
| 17 | 양파→기타 채소 | 0.01423488 | 0.4590164 | 2.372268 | 140 |
| 18 | 돼지고기 + 전유→기타 채소 | 0.01016777 | 0.4587156 | 2.370714 | 100 |
| 19 | 전유 + 휘핑/사워크림→기타 채소 | 0.01464159 | 0.4542587 | 2.347679 | 144 |
| 20 | 응유→요거트 | 0.01728521 | 0.3244275 | 2.325615 | 170 |
결과표를 실제 의사결정으로 연결하기
“어떤 상품을 같이 사는가?”에서 “어떤 조치를 검토할 것인가?”로
상위 5개 규칙의 향상도 비교
연관규칙을 활용하는 방법
향상도는 연관성 지표입니다. “함께 구매하는 경향”을 보여줄 뿐 쿠폰 제공이나 진열 변경으로 매출이 반드시 증가함을 입증하지 않습니다. 높은 Lift라도 지지도·매출 규모를 함께 보아야 합니다.
전체 거래에서 나타난 비율
LHS 거래 중 RHS 포함 비율
RHS 기본 구매율 대비 몇 배인지
41회 기출 59번 · 옳은 설명 모두 고르기
결과표의 수치를 정확히 읽을 수 있는지 확인해 보세요. 선택 후 해설을 확인할 수 있습니다.
신뢰도 0.3591549 · Lift 3.295045
지지도 0.01738688 · 신뢰도 0.3313953
[7] 전유+응유 → 요거트: 0.3852140