본문 바로가기

배우기/복습노트[Python과 분석]

[복습] Python | 분석 | 연관분석(1) + 하루끝(20240214)

728x90
반응형

연관분석

  - 비지도학습

  - 장바구니 분석 = 서열 분석

  - 각 장바구니 상품 간의 연관 규칙을 발견하는 모델링 기법

  - 조건과 반응의 관계를 확률적으로 설명하는 기법

  - 활용: 번들 상품, 진열 변경, 할인 쿠폰 발급, 추천 상품 노출

 

 

연관분석 데이터 셋(변경 전)

구매번호       상품명          수량     

    1                 맥주 

    1                 오징어

    1                 치즈

    2                 소주

    2                  맥주

    2                  라면

 

  ↓ 코드로 

 

연관분석 데이터 셋(변경 후)

vlist = [['맥주', '오징어', '치즈'],  

         ['소주', '맥주', '라면'], 

         ['맥주', '오징어'], 

         ['라면', '김치', '계란'], 

         ['맥주', '소세지']]

 

 

 

평가 지표

1. 지지도(support)

  - 추천 연관 강도를 얼마나 지지할 수 있는 지에 대한 척도 

  - 너무 소수를 위한 추천 정책은 하지 않을 때 적절히 조절하여 기준값으로 사용(특정 지지도 이상일 경우만 출력되도록)

 

** Support = P(A∩B)
                  = A와 B를 동시 구매 건수 /  전체 구매 건수


예) 맥주와 오징어의 지지도:  2/5 = 0.4

 

 

2. 신뢰도(Confidence)

  - 두 상품의 연관 강도

  - 조건부 확률로 계산(A라는 상품 구매 중 B상품 구매 비율)

 

** Confidence = P(B|A)

                                   = P(A∩B) / P(A)

 

            예) 맥주 → 오징어 신뢰도:   2/4 = 0.5

 

 

3. 향상도(Lift)

  - 두 상품의 연관 강도가 우연히 강해지는 경우를 제외한 확률(우연에 의한 해석을 배제한 확률)

  - 신뢰도를 반응 상품 확률로 나눈 값으로 정의

 

** Lift = Confidence / P(B)
(단, A 상품 구매 후 B 상품 구매 가정)

 

            ** 해석

           Lift > 1 : 우연에 의한 구매 증가가 아님(강한 연관성)

           Lift = 1 : 두 상품의 구매가 독립적

           Lift < 1 : 우연에 의한 구매일 확률이 높음(실제 연관성이 강하다라고 보기 어려움)

 

          예) 맥주 → 오징어 향상도:                        (2/4) /  (2/5)  = 1.25

          추천 강도가 높으면서도, 우연에 의한 구매가 아님. 충분히 추천을 할 만한 가치가 있음.

 

 

지지도가 0.4면 꽤 높은 편. 실제로 0.1 이상을 찾기가 어려움. 상품이 다양하기 때문에.

 

 

 

728x90

 

예제

A 편의점의 최근 1년 장바구니는 총 500개로 확인되었다.

그 중 각각의 구매 횟수가 다음과 같다고 가정하자

 

군고구마 구매 횟수 : 50

군고구마 우유 구매 횟수: 25

우유 구매 횟수: 50

 

삼각김밥 구매 횟수: 100

삼각김밥, 컵라면 구매 횟수: 80

컵라면 구매 횟수: 90

 

불닭볶음면 구매 횟수: 5

불밝볶음면, 스트링 치즈 구매 횟수: 4

스트링 치즈 구매 횟수: 10

 

1. 군고구마 ⇒ 우유 추천

  • 지지도: 25 / 125 = 0.2 
  • 신뢰도:  25 / 75  = 0.333
  • 향상도:  0.333 / (75/125)  =  0.555

2. 삼각김밥 ⇒ 컵라면 추천

  • 지지도:  80 / 270  = 0.296
  • 신뢰도:   80 /  180  = 0.444
  • 향상도:   0.444 / (170/270)  = 0.705

3. 불닭볶음면 ⇒ 스트링치즈 추천

  • 지지도:  4 / 19  = 0.21
  • 신뢰도:   4 / 9 = 0.444
  • 향상도:  0.444  /  (14/19)  =  0.60

 

 

 

 

예제 - 마트 장바구니 연관 분석

 

1. 데이터 로딩

 

 

2. 연관 분석 모듈 설치 및 로딩

pip install mlxtend

 

 

3. 장바구니별 상품 결합 ***

(이미 되어 있으므로 생략)

 

 

 

4. 트랜잭션 데이터 *** (연관분석 fitting용 데이터)

 

 

 

5.  연관분석 수행

 

출력 결과 는 차례로, 조건변수, 반응변수, 조건과 반응 모두에 대한 support, confidence, lift

728x90
반응형