대학공부/데이터과학

연관규칙 생성과 연관분석의 실제

진진리 2024. 5. 13. 16:29
728x90

1. 지표를 이용한 연관규칙의 분석

연관분석의 지표

  • Support(지지도): 이걸 본 사람이 얼마나 많을까?
    • support(A): A가 등장하는 트랜잭션의 비율
    • support(A -> B): A와 B가 모두 등장하는 트랜잭션의 비율
  • Confidence(신뢰도): 이걸 본 사람은 저것도 봤을까?
    • confidence(A -> B): A가 등장하는 트랜잭션 중, B까지 등장하는 비율
      • confidence(A -> B) = support(A->B) / support(A)
    • 높은 confidence를 갖는 연관규칙을 반드시 유의미하다고 볼 수 있나?
  • lift(향상도)
    • lift(A -> B) = confidence(A -> B) / support(B)
      • support(B)가 높아 confidence(A -> B) 값이 높아지는 것을 방지
    • lift(A -> B)와 lift(B -> A)의 값을 비교하면?
      • 동일하다 즉, 방향성이 없다.

 

Python과 연관규칙 생성

  • Apriori Algorithm 적용을 위한 라이브러리
!pip install mlxtend

import pandas as pd
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
  • Apriori Algorithm 적용의 실제
df = pd.read_csv('kuflix.csv')
result = apriori(df, min_support = 0.5, use_colnames = True)
# 지지도가 min_support 이상인 집합(규칙)을 선택
# min_support가 커질 수록 apriori 알고리즘의 속도가 빨라짐
  • 연관분석을 위한 association_rules
# apriori 수행 결과가 result에 저장되어 있다고 가정
# 연관 규칙 중에서 metric을 기준으로 threshold를 설정 (반드시 support일 필요가 없음)
result2 = association_rules(result, metric = 'confidence', min_threshold = 0.5)

 

 

2. 지지도를 이용한 시퀀스 마이닝

모든 시점이 꼭 같아야 하나

  • Sequence: 이벤트의 발생 순서를 나타낸 것
    • A의 시퀀스는 다음과 같음: <{1, 2}, {2, 3, 4}, {2, 4, 5}>
  • Subsequence: 시퀀스에 포함된 부분 시퀀스
    • 서브시퀀스의 지지도를 이용하여 시퀀스 마이닝을 수행할 수 있음
    • A의 한 서브시퀀스: <{2}, {2, 4}, {4, 5}>

시퀀스 마이닝

시퀀스 마이닝은 subsequence의 support를 이용하여 주로 수행

  • 지지도 s(<{2}, {2, 3}>)은?
    • A가 <{2}, {2, 3}>을 subsequence를 가지고 있는가? O
    • B - X / C - O / D - O / E - X
    • 3/5 = 0.6
  • 지지도 s(<{3}, {5}>)은?
    • A - O / B - O / C - O / D - X / E - O
    • 4/5 = 0.8