연관분석: Apriori Algorithm

2025. 12. 15. 16:50·AI Study/Machine Learning

연관분석: 대용량 데이터베이스에서 빈도가 높은 아이템 간 연관규칙을 발견하는 기법

머신러닝의 비지도학습

 

평가지표: 지지도, 신뢰도, 리프트

지지도

 

신뢰도

 

리프트

 

 

연관분석 절차

* 최종적으로 2항목 이상의 빈발 항목 집합에 대한신뢰도와 리프트를 구하여 연관규칙을 발견한다. 

 

지지도 40% 이상만 필터링 - Confidence 70% 이상만 필터링 - Lift 100% 이상만 필터링.

(이때 값은 탐색적 데이터 분석 후 결정)

 

 

실습

1단계: 패키지 임포트

from mlxtend.frequent_patterns import apriori, association_rules
from mlxtend.preprocessing import TransactionEncoder
import pandas as pd
import matplotlib.pyplot as plt

 

 

2단계: 데이터 작성

# 장바구니 데이터
tran = [['A','B','C','D','E'], ['B','C'], ['A','B','F'], ['A','B','G'],['A','F','H']]

 

#데이터세트를연관분석이가능한배열로변환
te=TransactionEncoder()
tran_ar=te.fit(tran).transform(tran)
print(tran_ar)
#열이름
print(te.columns_)

 

# 출력
[[ True  True  True  True  True False False False]
 [False  True  True False False False False False]
 [ True  True False False False  True False False]
 [ True  True False False False False  True False]
 [ True False False False False  True False  True]]
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']

 

df = pd.DataFrame(tran_ar, columns = te.columns_)
print(df)
# 출력
	A      B      C      D      E      F      G      H
0   True   True   True   True   True  False  False  False
1  False   True   True  False  False  False  False  False
2   True   True  False  False  False   True  False  False
3   True   True  False  False  False  False   True  False
4   True  False  False  False  False   True  False   True
# 각 상품별 거래 빈도
freq=df.sum().to_frame('Frequency')
# 빈도 역순으로 정렬
freq_sort = freq.sort_values('Frequency',ascending=False)
print(freq_sort)
   Frequency
A          4
B          4
C          2
F          2
D          1
E          1
G          1
H          1

 

#지지도
freq_sort['Support'] =freq_sort['Frequency']/len(tran)
print(freq_sort)
   Frequency  Support
A          4      0.8
B          4      0.8
C          2      0.4
F          2      0.4
D          1      0.2
E          1      0.2
G          1      0.2
H          1      0.2

 

# 빈발항목과 지지도
freq_items = apriori(df, min_support=0.4, use_colnames=True)
print(freq_items)
   support itemsets
0      0.8      (A)
1      0.8      (B)
2      0.4      (C)
3      0.4      (F)
4      0.6   (A, B)
5      0.4   (A, F)
6      0.4   (B, C)
# confidence 0.7 이상만 필터링
rules = association_rules(freq_items, metric="confidence",min_threshold=0.7)
rules

 

# lift 1이상만 필터링
rules = rules[(rules['lift']>1)]
rules.sort_values(by='confidence',ascending=False)

 

'AI Study > Machine Learning' 카테고리의 다른 글

의사결정나무: Decision Tree  (0) 2025.12.15
SVM: Support Vector Machine  (0) 2025.12.15
K-최근접 이웃: KNN, K-nearest neighbors  (0) 2025.12.15
군집화, K-Means Clustering  (1) 2025.10.28
주성분 분석, PCA: Principal Component Analysis  (0) 2025.10.28
'AI Study/Machine Learning' 카테고리의 다른 글
  • SVM: Support Vector Machine
  • K-최근접 이웃: KNN, K-nearest neighbors
  • 군집화, K-Means Clustering
  • 주성분 분석, PCA: Principal Component Analysis
Yun Lab.
Yun Lab.
Yun Lab.
  • Yun Lab.
    윤랩
    Yun Lab.
  • 글쓰기 방명록 관리자
  • 전체
    오늘
    어제
    • 분류 전체보기 (26)
      • CS (13)
        • 컴퓨터구조 (6)
        • 운영체제 (7)
        • 네트워크 (0)
        • 시스템 프로그래밍 (0)
        • 데이터베이스 (0)
      • Git (0)
      • AI Study (6)
        • LLM (0)
        • Machine Learning (6)
      • 자격증 (2)
        • AICE (1)
        • 리눅스마스터 (1)
      • 논문리뷰 (4)
        • NeurIPS (0)
        • ICLR (1)
        • ICML (1)
        • 기타 (2)
      • 코딩테스트 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로세스와 스레드
    운영체제
    ML
    SVM
    Machine Learning
    K-최근접이웃
    ICLR2025
    ICML
    머신러닝
    서포트벡터머신
    도커
    명렁어
    2025ICML
    교착상태
    리눅스마스터
    LLM
    의사결정나무
    쿠버네티스
    multi-agent
    디시전트리
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.5
Yun Lab.
연관분석: Apriori Algorithm
상단으로

티스토리툴바