Apriori 알고리즘과 혼돈행렬의 차이

Apriori 알고리즘은 데이터 마이닝과 기계 학습에서 가장 널리 쓰이는 연관 규칙 학습(Association Rule Learning) 알고리즘입니다. 흔히 '장바구니 분석(Market Basket Analysis)'이라고 불리며, 대규모 트랜잭션 데이터베이스에서 "A를 산 고객이 B도 함께 구매하는 경향이 있다"와 같은 패턴을 찾아내는 데 사용됩니다.

 

1. 연관 규칙의 3가지 핵심 평가지표

알고리즘을 이해하기 위해서는 먼저 연관 규칙(A $\rightarrow$ B)의 유용성을 평가하는 세 가지 척도를 알아야 합니다.

  • 지지도 (Support) : 전체 거래 중에서 항목집합(A와 B)이 동시에 포함된 거래의 비율입니다. 규칙의 '빈도'를 나타냅니다.

    $Support(A \rightarrow B) = P(A \cap B) = \frac{\text{A와 B가 동시에 포함된 거래 수}}{\text{전체 거래 수}}$

  • 신뢰도 (Confidence) : 항목 A를 포함하는 거래 중에서 항목 B도 포함하는 거래의 비율입니다. 규칙의 '확실성'을 나타내는 조건부 확률입니다.

    $Confidence(A \rightarrow B) = P(B|A) = \frac{P(A \cap B)}{P(A)}$

  • 향상도 (Lift) : 항목 A와 B가 독립적일 때 예상되는 동시 등장 확률 대비, 실제로 동시에 등장하는 확률의 비율입니다. 규칙의 '실효성'을 나타냅니다.

    $Lift(A \rightarrow B) = \frac{P(B|A)}{P(B)} = \frac{P(A \cap B)}{P(A)P(B)}$

    Lift > 1 : 양의 상관관계 (A를 사면 B를 살 확률이 높아짐 - 유용한 규칙)
    Lift = 1 : 독립 관계 (서로 아무런 영향을 주지 않음)
    Lift < 1 : 음의 상관관계 (A를 사면 오히려 B를 살 확률이 낮아짐)

 

2. Apriori 알고리즘의 핵심 원리 (선험적 규칙)

수많은 항목의 조합을 모두 탐색하는 것은 연산량이 기하급수적으로 늘어나 비효율적입니다. Apriori 알고리즘은 Apriori 원리(부분집합의 성질)를 이용하여 탐색 공간을 획기적으로 줄입니다.

 

Apriori 원리 (Anti-Monotone Property) :

  • "어떤 항목집합이 빈발(Frequent)하다면, 그 항목집합의 모든 부분집합도 반드시 빈발해야 한다."
  • 역으로, "어떤 항목집합이 빈발하지 않다면, 이를 포함하는 모든 상위 집합도 절대 빈발할 수 없다."

이 원리를 통해, 크기가 $k$인 하위 집합이 '최소 지지도'를 넘지 못하면, 그 집합을 포함하는 크기 $k+1$ 이상의 조합은 아예 계산(DB 스캔)에서 제외(Pruning)해 버립니다.

 

3. 알고리즘 수행 단계

  • 초기화 : 크기가 1인 모든 항목 집합(1-itemset)의 지지도를 계산합니다.
  • 가지치기 (Pruning) : 사용자가 설정한 최소 지지도(Minimum Support)를 넘지 못하는 항목은 제거합니다. 살아남은 항목들이 '빈발 항목집합'이 됩니다.
  • 조인 (Join) : 살아남은 빈발 항목집합들을 조합하여 크기가 1 늘어난 후보 집합(Candidate itemset)을 생성합니다.
  • 반복 : 더 이상 새로운 빈발 항목집합이 생성되지 않을 때까지 2~3단계를 반복합니다.
  • 규칙 생성 : 최종적으로 찾아낸 빈발 항목집합을 바탕으로, 최소 신뢰도(Minimum Confidence)를 넘는 연관 규칙만 최종 결과로 출력합니다.

 

4. 특징 및 한계점

  • 장점 : 원리가 직관적이고 이해하기 쉬우며, 구현이 상대적으로 단순합니다.
  • 단점 (DB 성능 관점) : 후보 집합의 지지도를 계산할 때마다 데이터베이스를 전체 스캔(Full Scan)해야 하므로 데이터가 방대할 경우 I/O 부하가 매우 큽니다. 이러한 한계를 극복하기 위해 메모리에 트리 구조를 올려 한두 번의 스캔만으로 규칙을 찾는 FP-Growth 알고리즘이 등장하기도 했습니다.

 

5., Apriori 알고리즘(연관 규칙)과 혼동행렬(Confusion Matrix)의 차이

이 둘은 데이터를 분석하고 확률을 계산한다는 점에서 비슷해 보일 수 있지만, 사용 목적과 적용되는 머신러닝 분야가 완전히 다릅니다. 가장 핵심적인 차이는 다음과 같습니다.

  • Apriori (연관 규칙) : "어떤 항목들이 같이 등장하는가?"를 찾아내는(발견) 알고리즘입니다.
    (정답이 없는 비지도 학습)
  • 혼동행렬 (Confusion Matrix) : 분류 모델이 "정답을 얼마나 잘 맞췄는가?"를 평가하는(채점) 도구입니다. 
    (정답이 있는 지도 학습)
구분 Apriori 알고리즘 (연관 규칙) 혼동행렬 (분류 평가)
주요목적 데이터 내 숨겨진 패턴이나 규칙 탐색 만들어진 분류 모델의 예측 성능 평가
학습유형 비지도 학습 (Unsupervised Learning)
- 목표 변수(정답)가 없음
지도 학습 (Supervised Learning)
- 목표 변수(정답)가 있음
활용예시 "기저귀를 산 사람이 맥주도 샀다" (장바구니 분석) "스팸 메일 필터가 스팸을 제대로 걸러냈는가?"
평가지표 지지도(Support), 신뢰도(Confidence), 향상도(Lift) 정확도(Accuracy), 정밀도(Precision), 재현율(Recall),
F1-Score
데이터
형태
트랜잭션 데이터 (예: 영수증 항목) 실제 클래스(Actual)와 예측 클래스(Predicted)의 비교값

 

6. 왜 두 개념이 헷갈릴까? (조건부 확률의 함정)

두 개념 모두 데이터를 분수 형태로 나누어 확률을 계산하기 때문에 지표들이 서로 혼동되기 쉽습니다. 특히 Apriori의 신뢰도(Confidence)와 혼동행렬의 정밀도(Precision) / 재현율(Recall)은 모두 조건부 확률을 사용합니다.

  • Apriori의 신뢰도 : $P(B|A)$A를 구매한 사건 중에서 B도 함께 구매한 비율입니다.
    예: 우유를 산 사람 중 빵도 산 사람의 비율
  • 혼동행렬의 정밀도 : $P(\text{Actual Positive} | \text{Predicted Positive})$
    모델이 Positive라고 '예측'한 것 중에서 '실제'로도 Positive인 비율입니다.
    예: 모델이 불량품이라고 예측한 것 중 진짜 불량품의 비율 즉, 계산하는 방식(전체 조건 중 특정 조건을 만족하는 비율)은 유사하지만, '무엇을 기준(분모)으로 삼고 무엇을 알고 싶어 하는가(분자)'가 근본적으로 다릅니다.

 

7. 혼동행렬(Confusion Matrix) 지표 시뮬레이션

혼동행렬은 모델이 맞춘 것(True)과 틀린 것(False), 그리고 긍정으로 예측한 것(Positive)과 부정으로 예측한 것(Negative)의 4가지 조합(TP, FP, FN, TN)으로 이루어집니다. 앞 글자(True/False)는 '내 예측이 맞았는지'를 나타내고, 뒷 글자(Positive/Negative)는 '내가 무엇이라고 예측했는지'를 나타냅니다.

  예측: Positive (긍정) 예측: Negative (부정)
실제: Positive (긍정) TP (True Positive) FN (False Negative)
실제: Negative (부정) FP (False Positive) TN (True Negative)

 

TP (True Positive)

  • 예측 : "맞아!" (Positive)
  • 결과 : "오, 내 말이 맞았네?" (True)
  • 상황 : 병에 걸린 사람에게 "당신은 환자입니다"라고 했는데 실제로 환자인 경우.

 

FN (False Negative)

  • 예측 : "아니야!" (Negative)
  • 결과 : "어라, 내 생각이 틀렸네?" (False) $\rightarrow$ 즉, 실제로는 '맞는(Positive)' 상황
  • 상황 : 병에 걸린 사람에게 "당신은 건강합니다"라고 했는데 실제로 환자인 경우. (가장 위험한 상황! 제2종 오류)

 

FP (False Positive)

  • 예측 : "맞아!" (Positive)
  • 결과 : "내 생각이 틀렸네?" (False) $\rightarrow$ 즉, 실제로는 '아닌(Negative)' 상황
  • 상황 : 건강한 사람에게 "당신은 환자입니다"라고 오진한 경우. (제1종 오류)

 

TN (True Negative)

  • 예측 : "아니야!" (Negative)
  • 결과: "오, 내 말이 맞았네?" (True)
  • 상황 : 건강한 사람에게 "당신은 건강합니다"라고 제대로 말한 경우.

 

지표명 공식 (LaTeX) 의미 및 특징
정확도
(Accuracy)
$$\frac{TP + TN}{TP + TN + FP + FN}$$
전체 데이터 중 맞게 예측한 비율.
가장 직관적이지만 데이터 불균형 시 신뢰도가 떨어짐.
정밀도
(Precision)
$$\frac{TP}{TP + FP}$$
긍정으로 예측한 것 중 실제 긍정인 비율.
(스팸 메일 차단 등 FP가 중요한 경우 사용)
재현율
(Recall)
$$\frac{TP}{TP + FN}$$
실제 긍정인 것 중 긍정으로 맞게 예측한 비율.
(암 진단 등 FN이 치명적인 경우 사용)
특이도
(Specificity)
$$\frac{TN}{TN + FP}$$
실제 부정인 것 중 부정으로 맞게 예측한 비율.
F1-Score
$$2 \cdot \frac{Precision \cdot Recall}{Precision + Recall}$$
정밀도와 재현율의 조화 평균.
두 지표가 균형을 이룰 때 높은 값을 가짐.