# 장바구니 분석(Market Basket Analysis)이란?
- 어떤 물품들이 함께 구매되는 경향이 있는지 분석 & 고객에 대한 이해를 도와줌
- 이러한 정보는 쉽게 행동에 옮기기 가능 (Actionable)
Ex. 새로운 상점의 상품 배치, 특정 상품에 대한 행사 여부, 쿠폰 발행 시점 등
- 장바구니 데이터
1. 고객
2. 주문 (구매 또는 장바구니, item set)
3. 물품
# 연관규칙이란?
- 어떤 물품들이 같이 팔리는지에 대한 분석
- 특정한 목표 없이 데이터의 패턴을 발견. 즉 무방향성 데이터 마이닝
(방향성은 목표변수가 존재하는지 존재하지 않는지에 따라 방향성이 있는지 없는지를 나눌 수 있음)
- 패턴들이 잘 맞는지에 대한 판단은 사람의 해석에 달려있음
Ex. Pos(Point-of-sale) 거래분석, 신용카드구매 물품분석(어떤 호텔을 이용했는가? 어떤 렌트카를 이용했는가? 어떤 상품 상점을 이용했는가?), 전화 회사의 선택 서비스(신호대기, 통화 전달, DSL, 신속통화 등..), 은행서비스, 평소와 다른 보험금 청구의 조합, 의료 환자 기록들의 특정 치료의 조합 등...
- 연관 규칙의 유형 (3가지)
1. 행동 가능한 규칙(Actionable Rules): 높은 질의 행동 가능한 정보를 포함
2. 사소한 규칙(Trivial Rules): 해당 분야에 익숙한 사람이라면 누구나 이미 알고 있는 규칙
3. 설명 불가능한 규칙(Onexplicable Rules): 설명이 되지 않고, 실제 행동을 취할 수도 없는 규칙
* 보통 많은 분석 결과가 사소한 규칙 | 설명 불가능한 규칙들임
- 연관규칙을 사용하기 위한 테이블 만들기(피봇팅 Pivoting)
- order id를 기준으로 주문된 아이템 여부를 하나의 row에 작성 --> 동시 발생 테이블 생성
- 오렌지 주스와 소다는 다른 두 물품들에 비해 함께 잘 팔림 --> 하지만 이러한 규칙을 만드는 것은 별로
중요하지 않음!
- 실제로 일어나고 있는 규칙이 어떤 것인가가 중요함 --> 이를 알기 위해 지지도, 신뢰도, 향상도를 측정할 수 있음
# 지지도, 신뢰도, 향상도란?
- 연관규칙이 얼마나 좋은지를 알 수 있는 3가지 척도
1. 지지도(support): 거래 데이터에서 규칙이 얼마나 자주 발견되는가(=구매율)? (연관성 X)
- 대칭적 (why? 단순히 거래량을 보기 때문에 순서 고려하지 않음)
Ex. Support( 소다 --> 오렌지 주스) = 2(소다∩오렌지주스)/5(전체) =40%
Support( 오렌지 주스 --> 소다) = 2(소다∩오렌지주스)/5(전체) =40%
2. 신뢰도(confidence): 조건 부분이 참일 때, 결론 부분이 참인 경우의 빈도 (=연관성 O)
- 비대칭적 (순서를 고려 / 조건부 확률이랑 같음)
Ex. Confidence( 소다 --> 오렌지 주스) = (2/5)/(3/5) = P(소다∩오렌지주스)/P(소다) =2/3
Confidence( 오렌지 주스 --> 소다) = (2/5)/(4/5) = P(소다∩오렌지주스)/P(오렌지주스) =1/2
3. 리프트(Lift): 규칙이 없을 때에 비해, 규칙으로 예측했을 때 얼마나 더 나은 성능을 보이는가? (향상도 improvement)
- Y가 자주 구매되는 물품일 경우 Confidence 값은 항상 클 수 밖에 없음. 따라서 Lift 수치도 함께 고려되어야함
* Lift<1: 의미 X, 두 물품의 연관성이 부정적
* Lift=1: 두 물품의 구매가 독립적
* Lift>1, confidence 클수록, support 기준 이상은 넘어야됨
Ex. 오렌지 주스 --> 소다
P(소다) = 3/5 = 0.6
P(오렌지 주스|소다)=P(오렌지 주스∩소다)*P(오렌지 주스) = 1/2 = 0.5
Lift = 0.5/0.6 = 5/6
# 연관규칙의 생성의 일반적인 알고리즘
1. 단일 물품들에 대한 동시 발생 테이블을 생성
2. 두 물품에 대한 동시 발생 테이블을 생성 (두 물품 사이의 규칙을 찾기 위해)
3. 세 물품들에 대한 동시 발생 테이블을 생성 (세 물품 사이의 규칙을 찾기 위해)
4. 같은 방식으로 계속 반복
# 연관규칙의 생성 고려사항 3가지
1. 알맞은 물품들의 집합을 찾는다
2. 동시 발생 테이블에서의 수치들을 파악하여 규칙을 생성한다
3. 수천, 혹은 수만의 물품들로부터 발생하는 실질적 제약들을 극복해야한다
1. 관리자의 입장에서의 알맞은 물품과 요리사의 입장에서의 알고자하는 물품은 다르다.
예를 들어, 관리자 입장에서는 어떤 피자랑 어떤 음료수를 같이 팔까?를 궁금해할 수 있으나,
요리사는 어떤 토핑의 조합이 잘 나갈까를 고민할 수 있다는 것!
따라서, 알고자하는 알맞은 물품들을 선택하는 것은 연관 규칙 생성에 중요한 고려사항이 된다
*이때, 상품의 계층도를 활용하여 상품을 일반화하는 것은 중요함
- 보다 구체적인 결과일수록 결과들이 행동으로 옯겨지기 쉬울 가능성이 높음
- 상품 계층을 올라가면 올라갈수록 물품의 수는 줄어듬
- 일반화된 물품들은 충분한 지지도를 가진 규칙을 찾는데 도움이 됨
- 어떤 물품들이 일반화 되었다는 것은, 모든 물품들이 같은 수준으로 올라가야한다는 것을 뜻하지는 않음
2. 물품들과 이들 조합들의 규칙의 확률과 결합 확률을 계산
이때 지지도 확률값에 임계값을 사용하여 검색 범위를 제한할 수 있음
Ex. IF 버섯, THEN 페퍼로우니 (3가지 물품일 경우: IF 버섯 and 페퍼로우니 then 파인애플)
지지도, 신뢰도, 리프트 값을 통해 올바른 규칙인지 판단하게 됨
- Lift<1일 경우, 부정을 포함하는 규칙을 사용하는 것이 더 나은 결과를 낼 수 있음
*하지만 부정을 포함하는 규칙은 원래 규칙보다 유용하지 않음
Ex. IF B and C then NOT A <--> IF B and C then A
신뢰도: 0.67 신뢰도: 0.33
리프트: 0.67/0.55=1.22
물품3가지일때 지지도,신뢰도, 리프트 구하기 연습하기
3. 현실적 한계의 극복: 최소 지지도 가지치기(Minimum support pruning) --> Apriori 알고리즘에서 사용하고 있음
-큰 데이터의 문제 : 주어진 물품에 대한 조합의 개수는 기하급수적으로 증가함. 따라서 물품을 최대한 줄일 수 있어야함
(상품계층도를 이용하여 물품 개수를 줄이는 것도 좋은 방법임)
- 거래수도 많음
Ex. 항목 집합이 A(오렌지 주스, 우유), B(오렌지 주수, 우유, 소다)일때,
최소 지지도 = 0.4로 가정한다.
step 1. 단일 품목별로 보았을때 지지도가 40% 이하인 것은 drop
step 2. drop된것을 제외하고 나머지 조합을 봄. 40%이하인것은 drop
step 3. 같은 방식 반복 ...
# 연관규칙을 이용한 순차분석
- 연관규칙은 동시에 일어나는 일들인, 주어진 시간에 어떤 물품들이 구매었는지를 찾음
- 사건의 연속에 대한 질문들!! 물품들의 순차적 배열이 가능하지 않을까?! (고객에 대한 추적이 필요해짐)
Ex. 새로운 잔디 깎는 기계를 구입한 고객들은 그 후 6주내에 새로운 정원 호스를 구입할 가능성이 매우 높다.
고객이 은행에 들어가 계좌 정리를 요구한다면, 그사람이 모든 계좌들을 해지할 가능성이 상당히 높다.
- 시계열 정보 필요
1. 거래의 시각(timestamp) 또는 순서 정보 (Sequencing information)
2. 식별 정보 (Identification information)
Ex. 계좌번호, 가정 ID, 고객 ID
'머신러닝 스터디 > 머신러닝' 카테고리의 다른 글
군집 분석 (0) | 2022.10.03 |
---|---|
의사결정나무(Decision Tree) (0) | 2022.09.28 |