DiffNodeset 빠른 빈발 아이템셋 마이닝을 위한 효율적 구조
초록
본 논문은 기존 Node‑list·N‑list·Nodeset 구조의 메모리·연산 비용을 줄이기 위해 DiffNodeset이라는 새로운 아이템셋 표현을 제안하고, 이를 기반으로 한 dFIN 알고리즘을 설계한다. DiffNodeset은 후보 아이템셋의 Nodeset 차이를 저장함으로써 크기를 크게 축소하고, 하이브리드 탐색과 경우에 따른 후보 생성 없이 직접 열거하는 기법을 결합해 빈발 아이템셋을 빠르게 탐색한다. 실험 결과 dFIN이 최신 알고리즘들을 전반적으로 능가함을 보인다.
상세 분석
DiffNodeset은 기존 Nodeset이 모든 후보 아이템셋에 대해 전부 노드 정보를 보관하는 방식에서 영감을 받아, 두 짧은 아이템셋의 Nodeset 차이를 저장하는 차집합(diffset) 개념을 확장한 것이다. PPC‑tree(Pre‑order·Post‑order·Count 트리)에서 각 노드는 전·후위 번호와 빈도 카운트를 갖으며, Nodeset은 특정 아이템이 등장하는 모든 노드의 (pre‑order, count) 쌍을 전위 순서대로 정렬한 리스트이다. Nodeset은 아이템셋의 지원도(support)를 단순히 리스트 내 카운트 합으로 계산할 수 있는 장점을 제공한다. 그러나 복잡한 데이터셋에서는 Nodeset 크기가 급증해 메모리와 연산이 부담된다.
DiffNodeset은 “Nodeset i1 – Nodeset i2 중 i2의 조상에 속하지 않는 i1의 노드”만을 보관한다. 즉, i1·i2 2‑아이템셋의 DiffNodeset은 i1의 Nodeset에서 i2의 조상 관계에 해당하는 원소를 제외한 차집합이다. 이 차집합은 일반적인 Nodeset보다 훨씬 작으며, 두 아이템셋을 결합해 k‑아이템셋을 생성할 때는 DiffNodeset을 이용해 교집합 연산을 수행한다. 논문은 이를 기반으로 다음과 같은 세 가지 핵심 기법을 제시한다.
- DiffNodeset 기반 압축 표현 – 차집합만 저장하므로 메모리 사용량이 크게 감소하고, 리스트 길이가 짧아 집합 연산 비용이 낮다.
- 하이브리드 탐색 전략 – 셋‑열거 트리(set‑enumeration tree)에서 깊이 우선 탐색과 너비 우선 탐색을 상황에 맞게 전환한다. 빈도가 높은 아이템을 우선 탐색해 조기 가지치기를 수행하고, 잔여 후보가 적을 때는 깊이 우선으로 전개해 탐색 깊이를 최소화한다.
- 후보 생성 없이 직접 열거 – 특정 경우(예: 단일 경로 속성)에서는 DiffNodeset만으로 지원도를 바로 계산할 수 있어 후보 아이템셋을 생성하지 않고 바로 빈발 아이템셋을 출력한다. 이는 기존 PP‑code 기반 알고리즘이 후보를 만들고 다시 스캔해야 하는 과정을 생략한다는 의미다.
알고리즘 dFIN은 위 세 기법을 통합해, 초기 단계에서 모든 빈발 1‑아이템셋의 Nodeset을 구축하고, 이를 차집합 형태의 DiffNodeset으로 변환한다. 이후 셋‑열거 트리를 따라 각 노드(아이템셋)마다 DiffNodeset을 갱신·교집합 연산하여 지원도를 계산하고, 최소 지원도 기준을 만족하면 결과에 추가한다. 지원도가 충분히 높은 경우에는 하위 아이템셋을 더 확장하지 않아도 되는 “직접 열거” 절차를 호출한다.
실험에서는 8개의 실제·합성 데이터셋(밀집·희소, 다양한 크기)에서 dFIN을 FIN, PrePost, FP‑growth*, Eclat_g와 비교하였다. 결과는 메모리 사용량이 기존 Nodeset 기반 FIN보다 30~50 % 절감되었으며, 실행 시간은 특히 희소 데이터에서 2배 이상 가속화되었다. 또한, dFIN은 후보 생성 단계가 없기 때문에 디스크 I/O가 최소화돼 대규모 데이터에서도 안정적인 성능을 보였다.
전반적으로 DiffNodeset은 차집합 기반 압축과 효율적인 트리 탐색을 결합함으로써, 기존 노드‑집합 구조의 한계를 극복하고 빈발 아이템셋 마이닝에 새로운 효율성을 제공한다는 점에서 의의가 크다.
댓글 및 학술 토론
Loading comments...
의견 남기기