스트림에서 최대 빈발 패턴의 동시 발생 클러스터링

데이터를 보다 명확히 파악하기 위한 방법 중 하나는 빈발 패턴을 활용하는 것이다. 본 논문에서는 스트림 형태의 아이템 집합에서 최소 횟수 이상 등장하는 부분집합을 빈발 패턴으로 정의한다. 그러나 스트림은 무한히 이어질 수 있기 때문에 어떤 패턴이 충분히 자주 나타나는지 판단하기가 근본적으로 어렵다. 또한 패턴 수가 급증하면 전체 구조를 한눈에 파악하기 힘들

스트림에서 최대 빈발 패턴의 동시 발생 클러스터링

초록

데이터를 보다 명확히 파악하기 위한 방법 중 하나는 빈발 패턴을 활용하는 것이다. 본 논문에서는 스트림 형태의 아이템 집합에서 최소 횟수 이상 등장하는 부분집합을 빈발 패턴으로 정의한다. 그러나 스트림은 무한히 이어질 수 있기 때문에 어떤 패턴이 충분히 자주 나타나는지 판단하기가 근본적으로 어렵다. 또한 패턴 수가 급증하면 전체 구조를 한눈에 파악하기 힘들어진다. 이를 해결하고자 우리는 패턴 간 동시 발생 관계를 기반으로 클러스터링을 수행한다. 높은 빈도로 함께 나타나는 패턴들은 하나의 결합된 패턴으로 묶여, 클러스터 내에서는 최대 빈발 패턴(최대 빈발 패턴)만이 남게 된다. 본 접근법은 두 패턴 사이 거리만을 이용해 클러스터링을 수행하는 방법을 적용한다. 최대 빈발 패턴 수가 크게 감소하고, 클러스터링과 결합함으로써 스트림 구조에 대한 직관적인 시각을 제공한다.

상세 요약

스트림 데이터에서 빈발 패턴을 탐색하는 문제는 전통적인 배치 기반 마이닝 기법과는 근본적인 차이를 가진다. 배치 환경에서는 전체 데이터가 한 번에 주어지므로, 지원도(support)를 정확히 계산하고, 최소 지원도 기준을 만족하는 모든 패턴을 열거할 수 있다. 반면 스트림은 연속적으로 도착하는 무한한 아이템 집합으로, 과거 데이터를 무한히 보관할 수 없으며, 지원도는 시간에 따라 변동한다. 따라서 “패턴이 충분히 자주 나타난다”는 판단을 내리기 위해서는 제한된 메모리와 연산량 안에서 근사값을 유지해야 한다. 기존 연구들은 슬라이딩 윈도우, 지수 가중 평균, 혹은 요약 구조(예: Count‑Min Sketch)를 이용해 지원도를 추정했지만, 이러한 방법들은 여전히 탐색된 패턴의 수가 폭발적으로 증가하는 문제를 안고 있다.

이 논문이 제시하는 핵심 아이디어는 “동시 발생(co‑occurrence)” 정보를 활용해 패턴을 군집화함으로써, 실제로 의미 있는 구조만을 추출한다는 점이다. 두 패턴이 자주 동시에 등장한다면, 이들은 같은 의미적 맥락에 속할 가능성이 높다. 예를 들어, 온라인 쇼핑 로그에서 {스마트폰, 케이스}와 {스마트폰, 화면보호필름}이 빈번히 동시에 나타난다면, 이들은 “스마트폰 액세서리”라는 상위 개념으로 묶일 수 있다. 이러한 군집화는 전통적인 빈발 패턴 마이닝이 제공하는 “모든 부분집합”을 그대로 유지하는 대신, 군집 내에서 가장 큰 패턴, 즉 **최대 빈발 패턴(maximal frequent pattern)**만을 남긴다. 최대 빈발 패턴은 다른 모든 패턴을 포함하고 있기 때문에, 정보 손실 없이 군집의 대표성을 확보한다.

군집화 과정에서 사용된 거리 측정은 “패턴 간 동시 발생 빈도”를 기반으로 한다. 구체적으로, 두 패턴 A와 B에 대해 d(A,B)=1−( |A∩B| / min(|A|,|B|) ) 와 같은 정규화된 거리 함수를 정의할 수 있다. 이때 |A∩B|는 스트림 내에서 A와 B가 동시에 등장한 횟수를 의미한다. 거리만 알면 전통적인 계층적 군집화(예: 평균 연결법)이나 DBSCAN과 같은 밀도 기반 군집화를 적용할 수 있다. 중요한 점은 쌍별 거리만 필요하다는 점이다. 이는 전체 아이템 집합을 저장하지 않아도 된다는 메모리 절감 효과를 제공한다.

이 접근법의 장점은 다음과 같다. 첫째, 군집화 후 남는 패턴 수가 크게 감소하므로, 사용자는 전체 스트림 구조를 직관적으로 파악할 수 있다. 둘째, 군집 내부의 패턴들은 의미적으로 연관성이 높아, 후속 분석(예: 연관 규칙, 시계열 예측)에서 더 강력한 신호를 제공한다. 셋째, 거리 기반 군집화는 새로운 패턴이 등장하거나 기존 패턴이 사라지는 경우에도 점진적으로 업데이트가 가능하므로, 스트림 환경에 자연스럽게 적응한다.

하지만 몇 가지 한계도 존재한다. 거리 정의에 따라 군집의 형태가 크게 달라질 수 있어, 적절한 정규화와 파라미터 튜닝이 필요하다. 또한, 매우 드물게 동시에 나타나는 패턴들(예: 희소한 이벤트)도 의미 있는 경우가 있을 수 있는데, 이들은 군집화 과정에서 과소평가될 위험이 있다. 마지막으로, 군집화 알고리즘 자체가 O(n²) 복잡도를 갖는 경우가 많아, 패턴 수가 여전히 많아지면 실시간 처리에 부담이 될 수 있다. 이러한 문제를 해결하기 위해서는 거리 계산을 샘플링하거나, 스트림 특성에 맞는 온라인 군집화 기법(예: 스트리밍 k‑means)과 결합하는 방안을 고려할 수 있다.

종합하면, 본 논문의 “동시 발생 기반 클러스터링”은 스트림 데이터에서 빈발 패턴의 폭발적 증가 문제를 효과적으로 완화하고, 사용자가 직관적으로 이해할 수 있는 구조적 요약을 제공한다. 향후 연구에서는 거리 함수의 학습, 군집 수 자동 결정, 그리고 실시간 시각화와의 연계가 기대된다.


📜 논문 원문 (영문)

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