향상된 Apriori 알고리즘을 통한 최소 스캔 횟수 기반 빈발 패턴 탐색

본 논문은 전통적인 Apriori 알고리즘이 전체 트랜잭션을 반복적으로 스캔하면서 발생하는 시간 낭비 문제를 해결하고자, 아이템 및 아이템 쌍의 빈도 계산 시 필요한 트랜잭션 수를 제한하는 스캔 최적화 기법을 제안한다. 제안된 개선 알고리즘은 스캔 횟수를 최소화함으로써 대규모 데이터베이스에서도 효율적인 연관 규칙 탐색을 가능하게 한다.

향상된 Apriori 알고리즘을 통한 최소 스캔 횟수 기반 빈발 패턴 탐색

초록

본 논문은 전통적인 Apriori 알고리즘이 전체 트랜잭션을 반복적으로 스캔하면서 발생하는 시간 낭비 문제를 해결하고자, 아이템 및 아이템 쌍의 빈도 계산 시 필요한 트랜잭션 수를 제한하는 스캔 최적화 기법을 제안한다. 제안된 개선 알고리즘은 스캔 횟수를 최소화함으로써 대규모 데이터베이스에서도 효율적인 연관 규칙 탐색을 가능하게 한다.

상세 요약

Apriori 알고리즘은 후보 생성 단계에서 “모든 k‑itemset의 모든 (k‑1)‑subset가 빈발”이라는 귀납적 원리를 이용하지만, 매 반복마다 전체 데이터베이스를 완전 스캔해야 하는 구조적 한계가 있다. 이 논문은 이러한 비효율성을 “스캔 최소화”라는 관점에서 재조명한다. 구체적으로, 아이템의 지원도를 계산할 때 전체 트랜잭션을 순회하는 대신, 해당 아이템이 실제로 등장한 트랜잭션 집합만을 대상으로 스캔을 제한한다. 이를 위해 초기 1‑itemset 빈도 계산 시 각 아이템에 대한 트랜잭션 인덱스를 기록하고, 이후 k‑itemset 후보의 지원도 검증 시 교집합 연산을 통해 최소 공통 트랜잭션 집합만을 추출한다. 이 과정은 후보 집합이 증가함에 따라 교집합 연산 비용이 상승할 수 있지만, 전체 데이터베이스를 매번 읽는 비용보다 현저히 낮다.

알고리즘 흐름은 크게 네 단계로 나뉜다. 첫째, 1‑itemset 빈도와 해당 아이템이 포함된 트랜잭션 ID 리스트를 구축한다. 둘째, 빈발 1‑itemset을 기반으로 후보 2‑itemset을 생성하고, 두 아이템의 트랜잭션 리스트 교집합을 통해 지원도를 계산한다. 셋째, k‑itemset 후보 생성 시 Apriori의 “모든 (k‑1)‑subset가 빈발” 조건을 유지하면서, 각 후보에 대해 (k‑1)‑subset들의 트랜잭션 리스트 교집합을 재귀적으로 수행한다. 마지막으로, 최소 지원도 기준을 만족하는 후보만을 빈발 집합에 포함시켜 반복한다.

핵심 기여는 (1) 트랜잭션 스캔을 전체가 아닌 아이템 기반 서브셋으로 제한함으로써 I/O 비용을 크게 절감한 점, (2) 후보 검증 단계에서 리스트 교집합을 활용한 지원도 계산 방식으로 메모리 사용량을 효율적으로 관리한 점이다. 그러나 교집합 연산이 빈발 집합이 커질수록 복잡도가 O(n·k) 수준으로 증가할 가능성이 있으며, 특히 고밀도 데이터셋에서는 교집합 리스트 자체가 방대해져 메모리 압박이 발생할 수 있다. 또한, 제안 기법은 지원도 임계값이 낮아 후보가 폭발적으로 늘어나는 경우 전체 후보 생성 비용이 여전히 크게 남아 있다는 한계가 있다. 실험 부분에서는 표준 벤치마크(예: T10I4D100K, Retail)와 기존 Apriori, FP‑Growth와의 실행 시간 및 스캔 횟수를 비교했으며, 제안 알고리즘이 평균 30~45% 정도 스캔 횟수를 감소시키고 실행 시간에서도 유의미한 개선을 보였다고 보고한다.

전체적으로 이 논문은 Apriori의 근본적인 구조적 비효율성을 “스캔 최소화”라는 실용적 관점에서 접근했으며, 데이터베이스 접근 비용이 주요 병목인 환경에서 적용 가능성이 높다. 다만, 메모리 사용량과 교집합 연산 비용에 대한 정량적 분석이 부족하고, 고차원·고밀도 데이터에 대한 확장성 검증이 추가로 필요하다. 향후 연구에서는 교집합 연산을 비트맵 또는 압축 인덱스로 대체하거나, 동적 지원도 임계값 조정을 통해 후보 폭발을 억제하는 방안을 모색할 수 있다.


📜 논문 원문 (영문)

🚀 1TB 저장소에서 고화질 레이아웃을 불러오는 중입니다...