KR101594346B1 - 빈발 패턴 마이닝 방법 및 이를 저장하는 기록매체 - Google Patents

빈발 패턴 마이닝 방법 및 이를 저장하는 기록매체 Download PDF

Info

Publication number
KR101594346B1
KR101594346B1 KR1020140045994A KR20140045994A KR101594346B1 KR 101594346 B1 KR101594346 B1 KR 101594346B1 KR 1020140045994 A KR1020140045994 A KR 1020140045994A KR 20140045994 A KR20140045994 A KR 20140045994A KR 101594346 B1 KR101594346 B1 KR 101594346B1
Authority
KR
South Korea
Prior art keywords
node
lpn
item
transaction
tree
Prior art date
Application number
KR1020140045994A
Other languages
English (en)
Other versions
KR20150120144A (ko
Inventor
윤은일
편광범
양흥모
이강인
김지원
Original Assignee
세종대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 세종대학교 산학협력단 filed Critical 세종대학교 산학협력단
Priority to KR1020140045994A priority Critical patent/KR101594346B1/ko
Publication of KR20150120144A publication Critical patent/KR20150120144A/ko
Application granted granted Critical
Publication of KR101594346B1 publication Critical patent/KR101594346B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/904Browsing; Visualisation therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

데이터베이스를 스캔하여 아이템 서포트를 정렬하는 단계, 헤더리스트를 생성하는 단계 및 트랜잭션을 삽입하여 LP-tree와 LPN 노드를 생성하는 단계를 포함하고 상기 LPN 노드는 배열 형식인 것을 특징으로 하는 데이터 마이닝 방법이다.

Description

빈발 패턴 마이닝 방법 및 이를 저장하는 기록매체{FREQUENT PATTERN MINING METHOD AND STORAGE MEDIA STORING THE SAME}
본 발명은 데이터 마이닝 기술에 관한 것으로, 보다 상세하게는, LP-tree(Linear Prefix tree)를 이용하여 효율적으로 빈발 패턴을 마이닝 하는 것을 지원할 수 있는 데이터 마이닝 방법 및 이를 저장하는 기록매체에 관한 것이다.
일반적으로, 데이터 마이닝(Data Mining)은 대규모로 저장된 데이터 안에서 체계적이고 자동적으로 통계적 규칙이나 패턴을 찾아내는 것이며 빈발 패턴 마이닝은 대규모로 저장된 데이터 안에서 자주 나타나는 패턴을 찾아내는 것이다. 데이터를 마이닝 하는 과정에서 얻어진 패턴들은 데이터의 특성을 분석하거나 의사결정을 위해 필요한 정보를 얻는데 활용되고 웹 데이터, 고객 데이터, 제품 데이터 및 교통과 통신 데이터 등 다양한 실제 데이터(Real Data) 분석에도 활용될 수 있다.
한국등록특허 제10-1105736호는 대용량 트랜잭션 데이터베이스 환경에서 효율적인 빈발 항목 집합 탐색 방법으로, 밀집 빈발 항목 집합 및 희소 빈발 항목 집합 모두를 효율적으로 탐색하는 방법에 관한 것이며, 패트리샤 빈발 패턴 트리(CPFP-tree)를 구성하여, 빈발 항목 집합을 탐색하는 데이터 마이닝 방법을 개시하고 있다.
한국등록특허 제10-1275834호는 상위 K개의 중요 패턴들을 마이닝하기 위한 방법에 관한 것으로, 가중화 빈도수 트리(Weighted Support-Tree)를 생성하여, WS-tree에서 필요없는 아이템을 제거하고, 상기 가중화 빈도수 트리를 통해 상위 중요 패턴을 마이닝하는 방법을 개시하고 있다.
상위 선행기술은 트랜잭션 항목에 대해 압축된 패트리샤 빈발 패턴 트리를 구성하고 패트리샤 빈발 패턴 트리를 이용하여 빈발 항목을 탐색하고, 하위 선행기술은 데이터 베이스를 스캔하여 헤더 리스트를 생성하고 패턴 마이닝 트리를 생성하여 트리를 기초로 빈발 패턴을 마이닝할 수 있지만 선행기술들은 모두 포인터를 사용하여 노드들을 연결하는 것으로 마이닝 시간이 오래 걸리고, 메모리 효율이 낮다는 문제점이 있다.
한국등록특허 제10-1105736호 한국등록특허 제10-1275834호
본 발명의 일 실시예에는 배열 형식으로 이루어진 LP-tree를 생성하여 노드 간 포인터의 수를 최소화하고, 이를 통해서 실행시간을 줄일 수 있는 데이터 마이닝 방법을 제공하고자 한다.
본 발명의 일 실시예에는 배열 형식으로 이루어진 LP-tree를 생성하기 위하여 BNL(Branch Node List)을 통해 가지노드의 정보를 저장할 수 있는 데이터 마이닝 방법을 제공하고자 한다.
본 발명의 일 실시예에는 동일한 아이템에 대하여 복수의 LPN 노드를 생성하지 않기 위하여 LPN 노드를 통합할 수 있는 데이터 마이닝 방법을 제공하고자 한다.
본 발명의 일 실시예에는 빈발 패턴을 마이닝 하여 조건부 LP-tree를 생성할 수 있는 데이터 마이닝 방법을 제공하고자 한다.
실시예들 중에서, 데이터 마이닝 방법은 데이터베이스를 스캔하여 아이템 서포트를 정렬하는 단계, 헤더리스트를 생성하는 단계 및 트랜잭션을 삽입하여 LP-tree와 LPN 노드를 생성하는 단계를 포함하고 상기 LPN 노드는 배열 형식이다.
일 실시예에서, 상기 아이템 서포트를 정렬하는 단계는 상기 데이터베이스의 모든 아이템의 서포트들을 카운팅 하는 단계 및 상기 카운팅한 서포트를 기준으로 내림차순으로 정렬하는 단계를 포함할 수 있다.
일 실시예에서, 상기 헤더리스트는 상기 정렬된 아이템 서포트 순서에 따라 생성되고, 아이템-이름, 아이템-서포트 및 노드-링크를 포함할 수 있다.
일 실시예에서, 상기 노드-링크는 상기 아이템-이름이 동일한 모든 링크를 순차적으로 연결하여 체인을 생성할 수 있다.
일 실시예에서, 상기 트랜잭션을 삽입하여 LP-tree와 LPN 노드를 생성하는 단계는 상기 트랜잭션이 상기 LP-tree에 첫번째로 삽입되는 트랜잭션인지 여부를 확인하는 단계, 상기 트랜잭션이 첫번째로 삽입되는 트랜잭션인 경우 새로운 LPN을 생성하는 단계 및 상기 새로운 LPN에 트랜잭션을 삽입하는 단계를 포함할 수 있다.
일 실시예에서, 상기 새로운 LPN을 생성하는 단계는 상기 트랜잭션의 길이만큼 상기 새로운 LPN의 내부 배열 노드를 생성하는 단계를 포함할 수 있다.
일 실시예에서, 상기 트랜잭션을 삽입하여 LP-tree와 LPN 노드를 생성하는 단계는 상기 삽입된 트랜잭션에서 최소 서포트보다 작은 서포트 값을 가지는 아이템이 제거되는 단계, 상기 아이템이 상기 서포트를 기준으로 내림차순으로 정렬되는 단계 및 상기 LPN노드의 루트와 헤더노드의 주소를 BNL에 추가하는 단계를 포함할 수 있다.
일 실시예에서, 상기 BNL은 가지노드 테이블 및 자식노드 리스트를 포함할 수 있다.
일 실시예에서, 상기 트랜잭션을 삽입하여 LP-tree와 LPN 노드를 생성하는 단계는 상기 LPN의 자식노드의 아이템과 상기 트랜잭션의 아이템이 동일한지 여부를 확인하는 단계 및 동일할 경우 상기 아이템의 서포트를 증가시키는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 트랜잭션을 삽입하여 LP-tree와 LPN 노드를 생성하는 단계는 상기 BNL의 정보를 읽는 단계, 상기 정보에 따라 얻어진 노드의 아이템과 상기 트랜잭션의 아이템이 동일한지 여부를 확인하는 단계 및 동일한 경우, 상기 아이템의 서포트를 증가시키는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 트랜잭션을 삽입하여 LP-tree와 LPN 노드를 생성하는 단계는 상기 BNL 정보에 따라 얻어진 노드의 아이템과 상기 트랜잭션의 아이템이 동일하지 않은 경우 새로운 LPN을 생성하는 단계, 상기 새로운 LPN에 트랜잭션의 아이템을 삽입하는 단계 및 상기 새로운 LPN의 노드 정보를 상기 BNL에 추가하는 단계를 포함할 수 있다.
실시예들 중에서, 데이터 마이닝 방법은 데이터베이스를 스캔하여 아이템 서포트를 정렬하는 단계, 헤더리스트를 생성하는 단계 및 트랜잭션을 삽입하여 LP-tree와 LPN 노드를 생성하는 단계를 포함하고 상기 트랜잭션을 삽입하여 LP-tree와 LPN 노드를 생성하는 단계는 LPN 노드를 통합하는 단계를 포함하며 상기 LPN 노드는 배열 형식이다.
일 실시예에서, 상기 LPN 노드를 통합하는 단계는 상기 트랜잭션의 삽입될 아이템의 개수가 상기 LPN에 삽입되어 있는 아이템의 개수보다 길고, 상기 LPN에 삽입되어 있는 아이템과 상기 트랜잭션의 삽입될 아이템의 상위 부분이 동일하고, 상기 동일한 부분의 순서가 일관되는지 여부를 판단하는 단계를 포함할 수 있다.
일 실시예에서, 상기 LPN 노드를 통합하는 단계는 상기 동일한 부분에 해당하는 아이템의 서포트를 증가시키는 단계, 상기 트랜잭션의 삽입될 아이템의 개수만큼 배열을 할당하여 새로운 LPN을 생성하는 단계, 상기 LPN에 삽입되어 있는 모든 아이템을 상기 새로운 LPN에 삽입하는 단계, 상기 LPN에 삽입되어 있는 아이템과 동일하지 않은 상기 트랜잭션의 삽입될 아이템을 상기 새로운 LPN에 삽입하는 단계 및 상기 LPN을 삭제하는 단계를 더 포함할 수 있다.
실시예들 중에서, 데이터 마이닝 방법은 데이터베이스를 스캔하여 아이템 서포트를 정렬하는 단계 헤더리스트를 생성하는 단계, 트랜잭션을 삽입하여 LP-tree와 LPN 노드를 생성하는 단계 및 상기 LP-tree를 기초로 빈발 패턴을 마이닝하는 단계를 포함하고 상기 LPN 노드는 배열 형식이다.
일 실시예에서, 상기 빈발 패턴을 마이닝하는 단계는 상기 헤더리스트에서 마지막에 순서하는 아이템을 탐색하는 단계, 상기 아이템의 노드-링크를 따라 노드를 방문하는 단계 및 상기 방문된 노드의 서포트를 저장하는 단계를 포함할 수 있다.
일 실시예에서, 상기 빈발 패턴을 마이닝하는 단계는 상기 방문된 노드가 상기 LPN의 헤더노드인 경우 상기 헤더노드가 가리키는 노드가 루트인지 여부를 확인하는 단계, 루트인 경우 상기 노드를 방문하는 단계를 종료하는 단계 및 루트가 아닌 경우 상기 헤더노드에 연결된 LPN의 노드를 방문하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 노드를 방문하는 단계가 종료하는 단계는 조건부 패턴 데이터를 만드는 단계, 조건부 데이터베이스를 처리하는 단계 및 조건부 LP-tree가 생성되는 단계를 더 포함할 수 있다.
실시예들 중에서, 데이터 마이닝 방법은 데이터베이스를 스캔하여 아이템 서포트를 정렬하는 기능, 헤더리스트를 생성하는 단계 및 트랜잭션을 삽입하여 LP-tree와 LPN 노드를 생성하는 기능을 포함하고 상기 LPN 노드는 배열 형식인 것을 특징으로 하는 데이터 마이닝 방법에 관한 컴퓨터 프로그램을 기록한다.
본 발명의 일 실시예에 따른 데이터 마이닝 방법은 배열 형식으로 이루어진 LP-tree를 생성하여 노드 간 포인터의 수를 최소화하고, 이를 통해서 실행시간을 줄일 수 있다.
본 발명의 일 실시예에 따른 데이터 마이닝 방법은 배열 형식으로 이루어진 LP-tree를 생성하기 위하여 BNL(Branch Node List)을 통해 가지노드의 정보를 저장할 수 있다.
본 발명의 일 실시예에 따른 데이터 마이닝 방법은 동일한 아이템에 대하여 복수의 LPN 노드를 생성하지 않기 위하여 LPN 노드를 통합할 수 있다.
본 발명의 일 실시예에 따른 데이터 마이닝 방법은 빈발 패턴을 마이닝 하여 조건부 LP-tree를 생성할 수 있다.
도 1은 본 발명의 일 실시예에 따른 LP-tree 구조를 설명하는 블록도이다.
도 2은 본 발명의 일 실시예에 따른 LPN 구조를 구체적으로 설명하는 블록도이다.
도 3은 본 발명의 일 실시예에 따른 BNL을 설명하는 블록도이다.
도 4는 본 발명의 일 실시예에 따른 LP-tree 생성 과정을 설명하는 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 트랜잭션의 삽입과정을 설명하는 흐름도이다.
도 6는 본 발명의 일 실시예에 따른 LP-growth 알고리즘을 설명하는 흐름도이다.
도 7는 본 발명의 일 실시예에 따른 LP-tree 알고리즘을 설명하는 흐름도이다.
도 8은 본 발명의 일 실시예에 따른 빈발 패턴 마이닝 방법을 설명하는 흐름도이다.
도 9는 본 발명의 일 실시예에 따른 LP-tree에서의 포인터 사용에 대하여 설명하는 블록도이다.
본 발명에 관한 설명은 구조적 내지 기능적 설명을 위한 실시예에 불과하므로, 본 발명의 권리범위는 본문에 설명된 실시예에 의하여 제한되는 것으로 해석되어서는 아니 된다. 즉, 실시예는 다양한 변경이 가능하고 여러 가지 형태를 가질 수 있으므로 본 발명의 권리범위는 기술적 사상을 실현할 수 있는 균등물들을 포함하는 것으로 이해되어야 한다. 또한, 본 발명에서 제시된 목적 또는 효과는 특정 실시예가 이를 전부 포함하여야 한다거나 그러한 효과만을 포함하여야 한다는 의미는 아니므로, 본 발명의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
한편, 본 출원에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다.
"제1", "제2" 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로, 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어"있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결될 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어"있다고 언급된 때에는 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 한편, 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함하다"또는 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이며, 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
각 단계들에 있어 식별부호(예를 들어, a, b, c 등)는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
본 발명은 컴퓨터가 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있고, 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있으며, 또한, 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
여기서 사용되는 모든 용어들은 다르게 정의되지 않는 한, 본 발명이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미를 지니는 것으로 해석될 수 없다.
도 1은 본 발명의 일 실시예에 따른 LP-tree 구조를 설명하는 블록도이다.
도 1을 참조하면, LP-tree(Linear Prefix tree)(100)는 루트(110), 헤더리스트(120), LPN(Linear Prefix Node)(130) 및 BNL(Branch Node List)(140)을 포함한다.
루트(110)는 LP-tree에서 가장 먼저 생성된 노드이다. 즉, 루트(110)는 0번째 노드로서 Parent_Link에 저장되어 있는 헤더 노드이다.
헤더 리스트(120)는 LP-tree(100)에서 패턴을 마이닝하는데 필요한 정보를 가지고 있다. 여기에서, 헤더 리스트(120)는 아이템-이름, 아이템-서포트 및 노드-링크로 이루어진다. 아이템-이름은 LP-tree(100)를 구성하는 아이템의 이름을 나타내고 아이템-서포트는 아이템의 개수를 의미한다. 일 실시예에서, 아이템 이름이 'a'이고 'a'의 서포트가 5인 경우, 아이템 'a'가 트리에서 5번 발생할 수 있다. 노드-링크는 트리에 있고 아이템이 동일한 모든 노드들 중에서 첫번째 노드와 연결 되고 첫번째 노드는 두번째 노드와 다시 연결된다. 체인은 아이템이 동일한 모든 노드들을 연결하는 것에 의해 생성된다.
LPN(Linear Prefix Node)(130)은 트랜잭션 각각의 빈발 아이템들 및 해당 헤더를 저장하며 BNL(Branch Node List)(140)는 가지 노드와 자식 노드의 정보를 포함한다. LPN(130)의 보다 상세한 설명은 도 2에서 하고, BNL(140)의 보다 상세한 설명은 도 3에서 한다.
일 실시예에서, c개의 LPN(130)들로 이루어진 LP-tree(100)는 아래와 같은 구조를 가질 수 있다.
LP-tree = {Headerlist, BNL, LPN1, LPN2, …, LPNc}
LP-tree(100)는 전체적으로 선형 구조를 가진다. 빈발 아이템들 각각의 집합은 배열 형식으로 구성된 노드에 저장된다. 여기에서, 하나의 배열 구조는 아이템들을 많은 가지들로 이루어진 트리로 표현할 수 없기 때문에 다각적인(multiple) 배열이 사용된다. 각각의 배열을 연결하기 위해서 모든 배열은 배열의 제일 첫번째 부분에 헤더를 가진다. 여기에서, 헤더는 부모 배열을 가리킨다. LPN(130)은 헤더와 패턴을 저장하고 있는 배열 노드를 포함하고 배열 노드는 복수의 내부 노드들로 구성되어 있다. 일 실시예에서, LPN(130)이 트리에 삽입된 가장 첫번째 LPN(130)일 경우, 이러한 LPN(130)의 헤더는 트리의 루트(110)를 가리킬 수 있다.
일 실시예에서, 트랜잭션 데이터베이스로 D가 주어졌을 때, D를 구성하는 아이템의 집합은 I={i1, i2,…, in}가 될 수 있고, D는 복수의 트랜잭션들로 구성될 수 있다. 모든 트랜잭션들은 각각 아이템들을 가지며 D 는 TIDs에 해당하는 특정 IDs를 포함할 수 있다. 패턴은 I의 부분 또는 전체에 해당할 수 있다. 일 실시예에서, 패턴 P는 복수의 아이템들을 가지고있고 복수의 아이템들 중 첫번째 아이템은 ib로 표시하고 마지막 아이템은 ie로 표시할 경우, 패턴 P는 다음과 같이 나타낼 수 있다.
P = {ib, … ,ie}, 1≤b<e≤n
P의 서포트는 D에 포함되어 있는 트랜잭션들의 수를 의미한다. 즉, D에서 얼마나 자주 P가 발생하는지를 나타낸다. |P|는 P를 포함하는 트랜잭션들의 수 이고, |D|는 D에 있는 모든 트랜잭션들의 수이다. 여기에서 sup(P)는 아래와 같이 구할 수 있다.
Sup(P)= |P| / |D| , 0≤sup(P)≤1
Sup(P)가 주어진 minsup(최소 서포트, minimum support) 보다 작지 않을 경우, P는 빈발 패턴으로 볼 수 있다. 빈발패턴 P는 L로 표시되며, P는 I에 포함되고 sup(L)≥minsup, 0≤minsup≤1 을 만족한다. 즉 아래와 같이 나타낼 수 있다.
L = {P⊆I | sup(P)≥minsup}
일 실시예에서, 데이터 베이스가 {{TID1: a, b, c}, {TID2: a, b}, and {TID3: b, c, d, e}}로 주어졌을 경우, I는 I = {a, b, c, d, e}가 될 수 있다. 여기에서, minsup의 기준이 60%인 경우, 패턴 {a,b}는 TID1과 TID2에서 나타나고 서포트가 minsup의 기준보다 높으므로 빈발 패턴이 된다. 다른 일 실시예에서, 패턴{a, c}는 TID1에만 있고 서포트가 minsup의 기준보다 낮으므로 빈발 패턴이 아니다.
도 2은 본 발명의 일 실시예에 따른 LPN(Linear Prefix Node)구조를 구체적으로 설명하는 블록도이다.
도 2를 참조하면, LPN(130)은 헤더(210) 및 노드(220)를 포함한다.
LPN(130)은 LP-tree의 기본적인 구조로서 LPN(130)에는 복수의 내부 노드들(220)이 있고 LPN(130)의 가장 위쪽에는 헤더(210)가 있다. 일 실시예에서, “Parent_Link”, “i”, “S”, “L” 및 “b”를 각각 다른 LPN(130)(예를 들어, 부모 LPN)과 연결되어 있는 부모 노드 포인터, 아이템, 서포트, 노드링크 및 가지 정보라고 할 수 있다. 아래의 수식(1)은 LPN(130)의 구성을 나타낼 수 있다. 여기에서, 각각의 내부 노드(220) 정보는 '<' 과 '>' 사이에 표시된다.
수식(1) : LPN = {<Parent_Link>,<i1,S,L,b>,<i2,S,L,b>,…,<in,S,L,b>}
LPN(130)은 각각의 노드(220)에 아이템 정보를 저장한다. 즉, 특정 아이템들인 {i1,i2,…,in}이 LPN(130)에 추가되는 경우, 해당 LPN(130)은 n개의 내부 노드(220)들을 가진다. 보다 구체적으로, 내부 노드(220)들은 삽입된 아이템의 개수에 따라서 생성된다. 일 실시예에서, <in,S,L,b>의 부모 노드는 <in -1,S,L,b>로 표현할 수 있고 <in -1,S,L,b>의 자식노드는 <in,S,L,b>로 표현할 수 있다.
Parent_Link는 LPN(130)의 첫번째 노드인 <i1,S,L,b>의 부모 노드를 가리키는 포인터이고 Parent_Link와 연결된 부모 노드는 루트(110)와 다른 LPN(130)의 노드(220) 중 하나가 될 수 있다. ~pc ,k는 LPN(130)에 있는 특정 노드의 포인터를 나타낸다. 일 실시예에서, n개의 노드(220)를 가지고 있는 c번째 LPN(130)인 LPNc 에서, ~pc ,k는 LPNc의 k번째(k=[0,…,n]) 노드(220)를 가리킬 수 있다. 다른 일 실시예에서, ~proot 는 루트(110)를 가리키는 포인터이다. 일 실시예에서, LPN(130)에 있는 첫번째 노드(220)의 부모가 LPN1의 5번째 노드(220)인 경우, 해당 LPN(130)의 Parent_Link는 ~p1 ,5가 될 수 있다.
LPN(130)의 내부 노드(220)는 수식(1)에서 볼 수 있듯이 4개의 원소들을 가진다. LPN(130)의 헤더(210)는 부모의 가지노드와 연결된다. 즉, 헤더(210)를 트래킹(tracking)하여 패턴들을 얻을 수 있다. 노드 링크에 해당하는 “L”은 연쇄적인 노드들의 역할을 한다. LPN(130)은 복수의 자식 노드들을 가지는 노드(220)를 표현하기 위하여 가지 노드를 사용한다. “b”는 가지 노드가 존재하는지 여부를 표시하기 위한 플래그 값(flag value)으로 사용된다. LPN(130)은 배열의 제한 때문에 복수의 자식 노드들을 관리하지 못한다. 즉, 복수의 자식 노드들을 다루기 위한 가지 노드를 관리하기 위하여 BNL(140)을 사용하고, BNL(140)은 도 3를 통해 상세히 설명한다.
도 3은 본 발명의 일 실시예에 따른 BNL(Branch Node List)을 설명하는 블록도이다.
도 3을 참조하면, BNL(140)은 가지노드 테이블(310) 및 자식 노드 리스트(320)를 포함한다.
BNL(140)은 LP-tree(100)를 생성할 때, 복수의 가지 노드들을 관리한다. 일 실시예에서, 각각의 트랜잭션에 대한 아이템들이 삽입될 경우, 아이템들은 루트(110)에서부터 순차적으로 삽입되고, 삽입되는 과정에서 가지 노드가 발생할 수 있다. 일 실시예에서, 아이템의 삽입이 진행되는 과정에서 어떠한 가지 노드에 도달할 경우, 가지 노드의 모든 자식 노드들을 확인하고 BNL(140) 정보를 참고하여 아이템을 삽입할 적절한 위치로 이동한다. 복수의 자식 노드들은 BNL(140)을 통해 쉽게 접근될 수 있고, 자식 노드들은 리스트 형식으로 생성되며 BNL(140)은 가지 노드들과 자식노드들의 정보만을 저장한다.
가지노드 테이블(310)은 모든 가지 노드들의 포인터들을 저장하고 가지노드 테이블(310)에 저장되어 있는 각각의 구성요소는 하나의 자식노드 리스트(320)를 가진다. 자식노드 리스트(320)는 해당 가지노드의 자식노드 포인트를 가진다. 일 실시예에서, LP-tree(100)가 i 번째 가지노드를 가지는 경우, Bi는 i번째 가지노드를 가리키는 포인터가 될 수 있고, Cij는 Bi의 j번째 자식노드의 포인트가 될 수 있다. 일 실시예에서, BNL(140)은 가지노드 테이블(310)인 {B1,B2,…,Bi}과 자식노드 리스트(320)인 {{Ci ,1,Ci ,2,…,Ci ,j} , {C2 ,1,C2 ,2,…,C2 ,j} , … , {Ci ,1,Ci ,2,…,Ci ,j}}로 이루어질 수 있다. 다른 일 실시예에서, '→'는 다음과 같이 정의할 수 있다. {Bi→ Ci ,1, Ci ,2,…, Ci ,j}는 Bi가 자식노드 포인터들인 {Ci ,1, Ci ,2,…, Ci ,j} 를 가리키는 것을 의미할 수 있다.
아래의 수식(2)는 전체적인 BNL(140)구조를 나타낸다.
수식(2) : BNL = {{B1→C1 ,1,C1 ,2,…},{B2→C2 ,1,C2 ,2,…},…,{Bi→Ci ,1,Ci ,2,…, Ci ,j}}
BNL(140)에 저장되어 있는 Bi에 대한 자식노드 포인터들의 집합은 아래와 같이 표현할 수 있다.
BNL(Bi)={ Ci ,1,Ci ,2,…, Ci ,j }
BNL(140)은 가지노드들의 자식노드들의 개수만큼 자식노드 포인터들을 갖는다. 일 실시예에서, BNL(140)에 저장되어 있는 자식노드들의 포인터들은 이진 탐색법(binary search)을 사용하여 탐색하기 위하여 아이템 이름 순서로 정렬될 수 있다.
도 4는 본 발명의 일 실시예에 따른 LP-tree 생성 과정을 설명하는 흐름도이다.
데이터베이스를 스캔하고(단계 S401) 모든 아이템의 서포트들을 카운팅한다(단계 S402).
카운팅한 서포트를 기준으로 모든 아이템을 내림 차순으로 정렬한다(단계 S403).
정렬한 후 해당 헤더리스트(120)를 생성한다(단계 S404). 여기에서, 헤더리스트(120)는 정렬된 순서에 따라서 저장되고, 헤더리스트(120)에서 상위에 위치하는 아이템들은 큰 서포트 값을 가지고 하위에 위치하는 아이템들은 작은 서포트 값을 가진다. LP-tree생성 과정은 도 7에서 보다 상세히 설명한다.
도 5는 본 발명의 일 실시예에 따른 트랜잭션의 삽입과정을 설명하는 흐름도이다.
도 5a는 LP-tree(100)에 첫번째 트랜잭션을 삽입하는 과정을 설명하는 흐름도 이다.
LP-tree(100)를 생성한다(단계 S501a). 여기에서, LP-tree(100)는 데이터베이스 스캔을 통해 도 4에서 설명한 바와 같이 생성된다.
첫번째로 삽입될 트랜잭션을 결정한다(단계 S502a). 트랜잭션은 헤더리스트(120)의 순서에 따라 첫번째 트랜잭션이 결정된다. 즉, 최소 서포트 보다 작은 서포트를 가진 아이템들은 삭제된다.
트랜잭션을 삽입한다(단계 S503a). 여기에서, LPN(130)은 생성되고 트리(100)는 초기에 비어 있으므로 생성된 LPN(130)은 루트(110)에 연결된다. 또한, 첫번째 트랜잭션은 하나의 LPN(130)에 삽입되고, 트랜잭션 길이만큼 LPN(130)의 내부 배열 노드들이 생성된다.
일 실시예에서, 트랜잭션 길이가 n이고 트랜잭션의 모든 아이템들이 하나의 LPN(130)에 삽입될 경우, LPN(130)의 크기는 헤더(210)를 포함하여 n+1이다. LPN(130)의 헤더(210)는 트랜잭션의 아이템들을 삽입한 후에 부모와 연결된다. 여기에서, 헤더(210)는 현재 LPN(130)이 처음으로 트리에 추가되었기 때문에 루트(110)와 연결된다. 루트(110)의 포인터는 가지노드 테이블(310)에 추가되고 새롭게 생성된 LPN(130)의 첫번째 노드는 루트(110) 포인터와 연결된 자식노드 리스트(320)에 저장된다.
도 5b는 LP-tree(100)에 첫번째 트랜잭션을 제외한 모든 트랜잭션을 삽입하는 과정을 설명하는 흐름도이다.
삽입될 트랜잭션에서 최소 서포트보다 작은 아이템들이 제거되고(단계 S501b), 트랜잭션의 최소 서포트 보다 큰 아이템들은 서포트를 기준으로 내림차순으로 정렬된다(단계 S502b).
BNL(140) 정보를 통해 루트(110)의 모든 자식노드들을 확인한다(단계 S503b). 여기에서, 이전 트랜잭션은 이미 트리(100)에 추가되었기 때문에 루트(110)는 적어도 하나의 자식노드를 가진다. 삽입되려는 아이템이 자식노드에 존재하면 그 자식노드의 LPN을 현재 노드로 하고 아니라면 새로운 LPN을 생성하고 트랜잭션의 아이템들을 모두 새로운 LPN에 삽입한다.
현재 LPN(130)의 내부 자식노드를 확인하고(단계 S504b), 삽입될 아이템이 확인된 노드의 아이템과 동일한지 여부를 확인한다(단계 S505b).
일 실시예에서, 삽입될 아이템이 확인된 노드의 아이템과 동일할 경우, 현재 위치는 동일한 아이템이 있는 노드의 위치로 옮겨지고 해당 아이템의 서포트는 1이 증가한다(단계 S506b). 다른 일 실시예에서, 삽입될 아이템이 확인된 노드의 아이템과 동일하지 않은 경우, 다른 자식노드들을 확인하고(단계 S507b), BNL(140)에 있는 해당 가지 정보를 읽고, 삽입될 아이템이 BNL(140)로부터 얻어진 노드의 아이템과 동일한지 여부를 확인한다(단계 S508b). 일 실시예에서, 아이템이 동일할 경우, 현재 위치는 동일한 아이템이 있는 노드의 위치로 옮겨지고 아이템의 서포트를 1 증가시킨다(단계 S506b). 다른 일 실시예에서, 아이템이 동일하지 않을 경우, 새로운 LPN(130)을 생성하고(단계 S512b), 새로운 LPN(130)에 트랜잭션의 나머지 아이템들을 삽입한다(단계 S513b). 여기에서, 현재 노드는 가지노드가 되고 가지노드의 정보는 BNL(140)에 추가된다.
일 실시예에서, n이 트랜잭션의 길이이고 r이 LPN(130)에 이미 삽입되어 있는 아이템들의 개수인 경우, 새로운 LPN(130)에 남은 아이템들을 동시에 저장한다. 즉, LPN(130)에 있는 배열 노드들의 개수는 헤더(210)를 포함하여 n-r+1개이다.
보다 구체적으로, 모든 트랜잭션들을 저장하기 위해서, LP-tree(100)는 두가지 방법으로 LP-tree(100)의 모든 노드들을 연결한다.
첫번째 방법, LPN(130)의 내부 노드들은 서로 직접적으로 연결된다. 두번째 방법, 가지가 생성될 때, LP-tree(100)는 BNL(140)을 활용하는 해당 자식 노드들을 링크로 연결한다. 모든 트랜잭션들을 처리하면, 완성된 LP-tree(100)를 얻을 수 있다. LP-tree(100) 구조가 다 만들어지면, BNL(140)은 더 이상 사용되지 않기 때문에 BNL(140)은 제거된다. 위의 과정으로 생성된 LP-tree(100)는 주어진 데이터에 있는 모든 트랜잭션들을 저장할 수 있고, LPN(130)의 모든 내부 및 외부 노드들은 서로 연결될 수 있다. 보다 구체적으로, LPN(130)에 있는 모든 내부 노드들은 포인터 없이 접근될 수 있다. 여기에서, 내부 노드는 다른 LPN(130)의 노드들이 LPN(130)의 헤더(210)와 BNL(140)을 통해 연결되는 동안 자식노드들과 함께 부모노드들을 연결한다.
일 실시예에서, LPN(130)은 배열 노드들로 이루어졌기 때문에 배열의 특성을 이용하여 포인터 없이 바로 노드들을 찾을 수 있다. 노드 d가 주어졌을 경우, 그것의 부모노드와 자식노드는 각각 d-1 및 d+1로 나타낼 수 있다. 다른 일 실시예에서, 배열을 오직 하나의 자식 노드만을 가질 수 있기 때문에 d+2는 d의 두번째 자식을 가리키지 않고 d의 조상 노드를 가리킬 수 있다. 다른 일 실시예에서, BNL(140)이 배열에 적용되는 경우, 복수의 자식 노드들이 배열로 표현될 수 있다. 즉, LPN(130)은 완성된 트리구조를 생성할 수 있다.
일 실시예에서, 내부 노드의 개수가 n인 경우, LPN(130)의 노드 N은 N=<I,S,L,b>로 나타낼 수 있고, 특정 k번째 노드인 Nk는 Nk=<ik,S,L,b>로 나타낼 수 있다. 여기에서, Nk parent이 Nk의 부모인 경우, Nk의 부모는 바로 위에 존재하기 때문에 부모를 N(k-1)로 나타낼 수 있다. 여기에서, T가 LPN(130)의 특정 경로 안에 있는 아이템들의 집합인 경우, T는 T={i1,i2, … ,in -1,in}으로 나타낼 수 있다. 아래에 있는 in⇒<in,S,L,b>에서, 아이템 in은 LPN(130)의 내부 노드로 만들어진 것을 의미한다. 즉, 각각의 노드에 대한 아이템 삽입은 아래와 같이 나타낼 수 있다.
i1⇒<i1,S,L,b>, i2⇒<i2,S,L,b>,..., in -1⇒<in -1,S,L,b>, in⇒<in,S,L,b>
일 실시예에서, 현재 노드의 아이템이 ik 인 경우, ik의 부모와 자식 노드들에 있는 아이템은 각각 i(k-1), i(k+1)로 나타낼 수 있다. BNL(Nk)는 BNL(140)에 저장된 Nk에 대한 자식노드들의 포인터들이다. 즉, T는 연속적으로 각각의 노드에 저장되어 있기 때문에, Nk parent Nk child 는 아래와 같이 정의될 수 있다.
Nk parent = {Nk -1}, if ik -1 ∈ T and ik ∈ T
Nk parent = {Parent_Link}, if ik -1 ∈ not T and ik ∈ T
Nk child = {Nk -1}, if ik +1 ∈ T and ik ∈ T and b=false
Nk child = BNL(Nk), if ik +1 ∈ not T and ik ∈ T and b=true
Nk child = {Nk +1}∪BNL(Nk), if ik +1 ∈ T and ik ∈ T and b=true
일 실시예에서, N(k-1)또는 N(k+1)이 동일한 LPN(130)에 Nk와 함께 존재하는 경우, Nk 바로 접근될 수 있다. 여기에서, N(k+1)은 오직 하나의 자식만 가져야 한다. 다른 일 실시예에서, N(k-1) 또는 N(k+1)이 다른 LPN(130)에 있거나 또는 N(k+1)이 적어도 두개의 자식 노드들을 가지는 경우, Nk는 각각 해당 헤더(210)들 또는 BNL(140)을 통한 노드들의 검색을 통해 접근 될 수 있다.
도 6a는 본 발명의 일 실시예에 따른 LP-growth 알고리즘을 설명하는 흐름도이다.
LP-growth는 현재의 LP-tree(100)가 싱글패스 인지 아닌지 여부를 확인한다(단계 S601). 일 실시예에서, LP-tree(100)가 싱글패스인 경우, 알고리즘은 경로에 있는 모든 아이템을 조합하고(단계 S602), 조합된 결과는 빈발 패턴들이 된다. 다른 일 실시예에서, LP-tree(100)가 싱글패스가 아닌 경우, LP-growth는 헤더리스트(120)에 아이템이 있는지 여부를 확인하고(단계 S603), 아이템이 있는 경우 아이템 i를 선택하고(단계 S604), 더 이상 선택할 아이템이 없는 경우 종료된다. 선택된 아이템에 대한 노드 링크를 사용하는 노드를 확인한다(단계 S605). 탐색할 노드가 있다면, 현재 노드에서 LPN 내부의 상위 노드로 이동한다(단계 S606). 현재 노드가 LPN(130)의 헤더노드(210)인지 여부를 확인하고(단계 S607), 현재 노드가 헤더노드(210)인 경우, 현재의 위치는 LPN(130)의 헤더(210)에 저장된 부모노드의 포인터로 이동한다(단계 S608). 현재 노드가 루트인지 여부를 확인한다(단계 S609). 현재 노드가 루트가 아닌 경우, 노드사이의 이동을 반복하고(S610), 루트인 경우 방문된 노드들의 아이템들은 L에 저장되고 노드링크에 연결된 다음 노드를 탐색한다(단계 S611). 선택된 아이템에 연결된 모든 노드 링크들을 탐색했다면, LP-growth는 L들을 이용해 조건적 LP-tree를 생성한다(S612). 생성된 조건적 LP-tree를 이용해 LP-growth를 재귀적으로 수행한다(S613).
LP-growth를 통해서 조건부 트랜잭션의 집합이 조건부 데이터베이스인 L`이 되는 i를 포함하는 모든 조건부 트랜잭션을 얻을 수 있다. 보다 구체적으로, 조건부 LP-tree 생성하기 위하여, LP-tree를 생성하는 과정을 거치고, BNL은 더 이상 필요하지 않기 때문에 을 제거된다. 또한, 패턴을 반복적으로 연장시키기 위해 LP-growth 과정이 반복 될 수 있다. LP-growth에서 LP-tree를 생성하는 과정은 도 7에서 LP-tree 알고리즘과 함께 보다 구체적으로 설명한다.
도 6b는 본 발명의 일 실시예에 따른 도 6a의 흐름도에 상응하는 LP-growth 알고리즘이다.
도 7a는 본 발명의 일 실시예에 따른 LP-tree 알고리즘을 설명하는 흐름도이다.
데이터베이스를 스캔한다(단계 S701). 데이터베이스는 2번 스캔 되고, 첫번째 스캔을 통해서 아이템들의 서포트가 계산되고, 헤더리스트(120)가 생성되며, LP-tree의 생성을 위해서 두번째 스캔을 한다.
BNL(140)로부터 루트(110)의 자식노드와 일치하는 아이템이 있는지 여부를 확인하고(단계 S702). 일 실시예에서, 일치하는 아이템이 있는 경우, 일치하는 아이템이 있는 노드로 이동하고(단계 S703), 아이템의 서포트가 1 증가한다(단계 S704). 그렇지 않으면 새로운 LPN이 생성된다(단계 S705).
현재의 노드인 ~pc ,r가 가지노드인지 아닌지 여부를 확인한다(단계 S706). 일 실시예에서, ~pc ,r 가 가지노드 일 때, 다음 배열의 노드가 삽입될 아이템과 동일한 아이템을 가지고 있는지 여부를 확인한다(단계 S707). 일 실시예에서, 동일한 아이템을 가지고 있는 경우, 해당 아이템의 서포트는 1 증가할 수 있다(단계 S708). 다른 일 실시예에서, 동일한 아이템을 가지고 있지 않은 경우, BNL(140)의 자식 노드를 확인할 수 있다. BNL(140)에서 ~pc ,r 에 해당하는 위치를 찾고, 자식 노드를 찾을 수 있다. 검색된 값들 중에 ik와 동일한 아이템을 가진 자식 노드가 있는지 여부를 확인하고(단계 S709), 동일한 아이템을 가진 자식 노드가 있는 경우 해당 아이템의 서포트를 1 증가시키고(단계 S708), 동일한 아이템을 가진 자식 노드가 없는 경우 새로운 LPN(130)을 만들고(단계 S710) 남은 아이템을 삽입하고(단계 S711) BNL에 가지정보를 기록한다(단계 S712).
다른 일 실시예에서, ~pc ,r가 가지노드가 아닌 경우, ~pc ,r 는 하나의 자식노드를 가지고 있거나 아예 가지고 있지 않기 때문에 다음 노드인 ~pc ,r+1 를 참조하여 동일한 아이템이 있는지 여부를 확인할 수 있다(단계 S713). 일 실시예에서, ~pc,r+1 이 ik와 같은 경우, 해당 노드의 서포트를 1 증가시킨다(단계 S714). 즉, 자식노드는 삽입된 아이템과 동일한 아이템을 가진다.
다른 일 실시예에서 ~pc ,r+1 이 ik가 동일하지 않은 경우, ik가 마지막 아이템인지 여부를 확인한다(단계 S715). 일 실시예에서, ik가 마지막 아이템인 경우, 현재의 LPN(130)에 새로운 가지노드가 되는 새로운 LPN(130)을 현재의 노드에 생성한다(단계 S716). 삽입될 아이템 집합의 크기로 새로운 LPN(130)이 만들어진 후, 새로운 LPN(130)에 나머지 아이템을 삽입하고(단계 S711), 가지정보는 BNL(140)에 기록된다(단계 S712). 다른 일 실시예에서, ik가 마지막 아이템이 아닌 경우, LPN(130) 통합절차를 수행한다(단계 S717). LPN(130) 통합 절차는 도 7c를 참조하여 설명한다.
도 7b는 본 발명의 일 실시예에 따른 도 7a의 흐름도에 상응하는 LP-tree 알고리즘이다.
도 7c는 본 발명의 일 실시예에 따른 LPN(130)의 통합 절차를 설명하는 블록도이다.
각각의 트랜잭션이 종합적인 고려 없이 개개로 수행되는 경우, LPN(130)들이 분열될 수 있다. 즉, 특정 트랜잭션이 하나의 LPN(130)에 충분히 삽입된다고 할지라도, 복수의 LPN(130)들에 저장될 수 있다. 일 실시예에서, 두개의 트랜잭션들 {a,b,c},{a,b,c,d}를 빈 LP-tree(100)에 삽입하는 경우, 첫번째 트랜잭션은 하나의 LPN(130)에 충분히 저장될 것이다. 첫번째 트랜잭션을 삽입한 후 두번째 트랜잭션을 삽입하는 경우, 아이템 'c'를 삽입할 때 가지가 발생하고 새로운 LPN(130)이 생성되고 남아있는 아이템 'd'는 새로운 LPN(130)에 삽입될 수 있다. 즉, 두번째 LPN(130)은 적은 개수의 배열 노드들을 가질 수 있다.
각각의 LPN(130)에 대하여 가능한 한 많은 내부 노드들을 생성하기 위하여 LPN(130) 통합 작업을 통해서, LPN(130)의 끝부분에 노드들이 삽입될 수 있다. 일 실시예에서, I={i1,i2,…,in}이 추가될 아이템들의 집합이고, 'a'는 LPN(130)의 내부 노드들의 아이템인 경우, LPN = {<Parent_Link> , <a1,S,L,b> , <a2,S,L,b> , … , <am,S,L,b>} ,m<n 일 수 있다. 또한, LPN(130) 통합 작업을 적용하기 위해서, 아래의 조건들을 만족해야 한다.
(1) 삽입될 아이템 집합의 길이는 해당 LPN(130)의 삽입된 아이템 집합의 길이보다 길다.(예를 들어, m<n); (2) LPN(130)에서 내부 노드들의 아이템들은 삽입될 아이템들의 상위 부분과 동일하다; (3) 공통 부분의 순서는 일관되어야 한다.(예를 들어, i1=a1, i2=a2, …,im=am,1<=m<n).
위 조건들이 모두 만족되는 경우, 아래 과정에 따라 아이템 삽입 단계를 수행한다.`
(1) 공통되는 아이템들의 서포트는 1 증가한다. (2) 삽입될 아이템들로부터 계산된 길이로 새로운 LPN(130)의 배열을 할당한다. (3) 이전 LPN(130)의 모든 노드들은 새로운 LPN(130)으로 삽입된다. (4) 아이템 집합의 나머지 아이템들은 새로운 LPN(130)의 끝부분에 추가된다. (5) 이전 LPN(130)은 삭제된다.
즉, 이전 LPN(130)들과 비교하여 더 많은 배열 노드들을 가지는 LPN(130)들을 만들 수 있다. 트랜잭션들의 모양이 서로 비슷한 경우, LPN(130) 통합 과정은 더 필요해지고, LPN(130)의 길이는 LPN(130) 통합 과정이 수행될 때마다 더 길어진다. LPN(130) 통합 기술은 오직 삽입된 트랜잭션의 길이가 타겟 LPN의 길이보다 길 때 사용되기 때문에, LPN(130)의 길이가 길수록 LPN(130) 통합 과정의 가능성은 낮아질 수 있다.
도 8은 본 발명의 일 실시예에 따른 빈발 패턴 마이닝 방법을 설명하는 흐름도이다.
헤더리스트(120)로부터 제일 아래에 있는 아이템을 탐색하고(단계 S801), 해당 노드 링크에 연결된 노드를 이동해가면서 방문한다(단계 S802). 방문했던 노드들의 서포트들은 저장되고(단계 S803), 루트(110)에 연결된 각 노드들은 검색된다(단계 S804). 여기에서, 노드들의 검색이 하나의 LPN(130)안에서 이루어진다면 각 노드는 바로 접근될 수 있다. 일 실시예에서, 현재의 노드가 Nk인 경우, Nk의 부모 노드에 접근하기 위해 N(k-1)에 바로 접근할 수 있다.
하나의 LPN(130)에 대해 노드 사이를 이동하면서 방문하는 것을 반복하며, 헤더(210)의 부모노드(즉, 다른 LPN(130))를 참조하는 LPN(130)의 헤더(210)에 접근할 수 있다. LPN(130)의 헤더(210)에 접근한 경우, 헤더(210)의 다음 위치가 루트(110)인지 여부를 확인한다(단계 S805).
일 실시예에서, 헤더(210)의 다음 위치가 루트(110)인 경우, 검색이 완료 되었으므로 작업을 중지한다(단계 S806). 즉, 헤더(210)의 다음 위치가 루트(110)인 것은 상응하는 경로가 완벽히 검색되었다는 것을 의미하고, 해당 경로에 있는 아이템은 처음 방문한 노드의 서포트와 조건부 연결이 된다. 검색이 완료된 이후, 완료되기까지의 과정에서 얻어진 결과를 이용해 조건부 패턴 데이터를 만들어 내고(단계 S807), 조건부 데이터베이스를 처리한다(단계 S808). 보다 구체적으로, 조건부 데이터베이스에서 아이템의 서포트를 계산하고, 서포트가 주어진 최소 서포트 기준값 보다 작으면, 데이터베이스에서 해당 아이템은 제거된다. 조건부 데이터베이스의 각 처리과정은 서포트를 기준으로 내림차순으로 정렬되고, 정렬된 데이터베이스로부터 새로운 조건부 LP-tree가 생성된다(단계 S809). 여기에서, 조건부 LP-tree는 prefix 아이템 집합, 빈발 아이템 또는 이전 단계에서 선택된 패턴을 포함할 수 있다.
다른 일 실시예에서, 헤더(210)의 다음 위치가 루트(110)가 아닌 경우, 단계 S802로 이동하여 헤더(210)로부터 다른 LPN(130)에 연결된 노드를 계속 검색한다.
일 실시예에서, LP-tree(100)가 단일 경로를 형성하는 경우, 트리(100)의 모든 조합은 FP-growth 접근법과 마찬가지로 빈발 패턴으로 간주 될 수 있다. 즉, prefix 아이템 집합과 트리에 포함된 아이템들의 각 조합들을 합성하여 빈발 패턴을 추출할 수 있다. 여기에서, 노드간 이동을 위해서 포인터를 사용해야 하기 때문에, FP-tree에서 트리를 찾는 것은 수많은 포인터 사용을 요구하나, LP-tree(100)는 LPN(130)을 사용하는 것을 통해 포인터 사용 횟수를 최소화 할 수 있다. 이와 관련하여, 도 9에서 보다 상세히 설명한다.
도 9는 본 발명의 일 실시예에 따른 LP-tree에서의 포인터 사용에 대하여 설명하는 블록도이다.
도 9a 및 도 9b는 LP-tree에 대한 설명이고, 도 9c는 FP-tree에 대한 설명이다.
트리가 상향식으로 탐색되는 경우, LP-tree(100)에서 사용되는 포인터의 개수는 FP-tree에서 사용되는 포인터의 개수보다 작거나 같다.
일 실시예에서, n이 특정 노드에서 루트(110)로 가는 경로의 길이인 경우, FP-tree는 해당 경로에 대한 n개의 포인터를 통과해야 하기 때문에 모든 상황에서 n개의 포인터의 사용이 필요할 수 있다.
다른 일 실시예에서, LP-tree(100)의 경우, LP-tree(100)는 적어도 한 개의 LPN(130)으로 구성되어 있고, 포인터(즉, 헤더(210))는 새로운 가지가 발생할 때에만 사용될 수 있다. 즉, LP-growth가 각 LPN(130)의 헤더(210)에 접근할 때 포인터를 사용한다.
도 9a는 방문한 모든 LPN(130)이 하나의 노드를 가지고 있는 경우이다. 일 실시예에서, |Kc|가 헤더(210)의 개수(즉, LPN(130)의 개수)인 경우, |N|은 노드의 개수일 수 있다. 여기에서, 방문하는 노드의 개수 R은 R = |Kc| + |N|으로 표현될 수 있다. 즉, LPN(130)의 헤더(210)를 |N|(노드의 개수)만큼 방문해야 한다.
도 9c에서 FP-tree는 부모 노드에 접근하기 위해 부모노드가 저장된 변수들을 참조한다. 즉, FP-tree에서는 포인터의 접근뿐 아니라 노드의 방문들도 고려하기 때문에 특정 노드로부터 루트(110)로 가는 포인터의 총 사용 횟수는 2X|N|가 될 수 있다.
도 9a에서, LP-tree(100)는 FP-tree와 마찬가지로 부모노드에 접근하기 위하여 헤더(210)를 참조한다. 여기에서, R = 2 X |N|이 될 수 있다. 즉, 최악의 경우에 LP-tree(100)는 FP-tree와 같은 수의 포인터 사용을 필요로 한다. LPN(130)이 증가할수록 LP-tree(100)에서 요구되는 포인터의 수는 감소한다.
도 9b에서는 방문하는 모든 노드가 하나의 LPN(130)에 속해 있어 하나의 헤더(210)만 방문하면 되므로 R= 1+|N|으로 계산될 수 있다. 즉, 하나의 LPN(130)에서 특정 노드로부터 루트(110)로의 아이템 집합이 있다면 하나의 헤더만 방문해도 된다. 도 9b의 경우는 아이템의 개수에 관계없이 최상의 경우로 간주된다. 즉, FP-tree는 |N|개의 포인터를 사용하는 반면, LP-tree(100)는 오직 하나의 포인터만 필요로 한다.
상기에서는 본 출원의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 출원을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
110: 루트
120: 헤더리스트 130: LPN(Linear Prefix Node)
140: BNL(Branch Node List)
210: 헤더노드 220: 내부노드
310: 가지노드 테이블 320: 자식노드 리스트

Claims (19)

  1. 데이터베이스를 스캔하여 아이템 서포트를 정렬하는 단계;
    상기 정렬된 아이템 서포트를 기초로 헤더리스트를 생성하는 단계; 및
    상기 생성된 헤더리스트에 따라 트랜잭션을 삽입하여 LP-tree(Linear Prefix tree)와 LPN(Linear Prefix Node) 노드를 생성하는 단계를 포함하고,
    상기 LPN 노드는 배열 형식인 것을 특징으로 하는 데이터 마이닝 방법.
  2. 제1항에 있어서, 상기 아이템 서포트를 정렬하는 단계는
    상기 데이터베이스의 모든 아이템의 서포트들을 카운팅 하는 단계; 및
    상기 카운팅한 서포트를 기준으로 내림차순으로 정렬하는 단계를 포함하는 것을 특징으로 하는 데이터 마이닝 방법.
  3. 제1항에 있어서, 상기 헤더리스트는
    상기 정렬된 아이템 서포트 순서에 따라 생성되고, 아이템-이름, 아이템-서포트 및 노드-링크를 포함하는 것을 특징으로 하는 데이터 마이닝 방법.
  4. 제3항에 있어서, 상기 노드-링크는
    상기 아이템-이름이 동일한 모든 링크를 순차적으로 연결하여 체인을 생성하는 것을 특징으로 하는 데이터 마이닝 방법.
  5. 제1항에 있어서, 상기 트랜잭션을 삽입하여 LP-tree와 LPN 노드를 생성하는 단계는
    상기 트랜잭션이 상기 LP-tree에 첫번째로 삽입되는 트랜잭션인지 여부를 확인하는 단계;
    상기 트랜잭션이 첫번째로 삽입되는 트랜잭션인 경우 새로운 LPN을 생성하는 단계; 및
    상기 새로운 LPN에 트랜잭션을 삽입하는 단계를 포함하는 것을 특징으로 하는 데이터 마이닝 방법.
  6. 제5항에 있어서, 상기 새로운 LPN을 생성하는 단계는
    상기 트랜잭션의 길이만큼 상기 새로운 LPN의 내부 배열 노드를 생성하는 단계를 포함하는 것을 특징으로 하는 데이터 마이닝 방법.
  7. 제1항에 있어서, 상기 트랜잭션을 삽입하여 LP-tree와 LPN 노드를 생성하는 단계는
    상기 삽입된 트랜잭션에서 최소 서포트보다 작은 서포트 값을 가지는 아이템이 제거되는 단계;
    상기 아이템이 상기 서포트를 기준으로 내림차순으로 정렬되는 단계; 및
    상기 LPN노드의 루트와 헤더노드의 주소를 BNL(Branch Node List)에 추가하는 단계를 포함하는 것을 특징으로 하는 데이터 마이닝 방법.
  8. 제7항에 있어서, 상기 BNL은
    가지노드 테이블 및 자식노드 리스트를 포함하는 것을 특징으로 하는 데이터 마이닝 방법.
  9. 제7항에 있어서, 상기 트랜잭션을 삽입하여 LP-tree와 LPN 노드를 생성하는 단계는
    상기 LPN의 자식노드의 아이템과 상기 트랜잭션의 아이템이 동일한지 여부를 확인하는 단계; 및
    동일할 경우 상기 아이템의 서포트를 증가시키는 단계를 더 포함하는 것을 특징으로 하는 데이터 마이닝 방법.
  10. 제7항에 있어서, 상기 트랜잭션을 삽입하여 LP-tree와 LPN 노드를 생성하는 단계는
    상기 BNL의 정보를 읽는 단계;
    상기 정보에 따라 얻어진 노드의 아이템과 상기 트랜잭션의 아이템이 동일한지 여부를 확인하는 단계; 및
    동일한 경우, 상기 아이템의 서포트를 증가시키는 단계를 더 포함하는 것을 특징으로 하는 데이터 마이닝 방법.
  11. 제10항에 있어서, 상기 트랜잭션을 삽입하여 LP-tree와 LPN 노드를 생성하는 단계는
    상기 BNL 정보에 따라 얻어진 노드의 아이템과 상기 트랜잭션의 아이템이 동일하지 않은 경우 새로운 LPN을 생성하는 단계; 및
    상기 새로운 LPN에 트랜잭션의 아이템을 삽입하는 단계; 및
    상기 새로운 LPN의 노드 정보를 상기 BNL에 추가하는 단계를 포함하는 것을 특징으로 하는 데이터 마이닝 방법.
  12. 데이터베이스를 스캔하여 아이템 서포트를 정렬하는 단계;
    상기 정렬된 아이템 서포트를 기초로 헤더리스트를 생성하는 단계; 및
    상기 생성된 헤더리스트에 따라 트랜잭션을 삽입하여 LP-tree와 LPN 노드를 생성하는 단계를 포함하고,
    상기 트랜잭션을 삽입하여 LP-tree와 LPN 노드를 생성하는 단계는 LPN 노드를 통합하는 단계를 포함하며 상기 LPN 노드는 배열 형식인 것을 특징으로 하는 데이터 마이닝 방법.
  13. 제12항에 있어서, 상기 LPN 노드를 통합하는 단계는
    상기 트랜잭션의 삽입될 아이템의 개수가 상기 LPN에 삽입되어 있는 아이템의 개수보다 길고, 상기 LPN에 삽입되어 있는 아이템과 상기 트랜잭션의 삽입될 아이템의 상위 부분이 동일하고, 상기 동일한 부분의 순서가 일관되는지 여부를 판단하는 단계를 포함하는 것을 특징으로 하는 데이터 마이닝 방법.
  14. 제13항에 있어서, 상기 LPN 노드를 통합하는 단계는
    상기 동일한 부분에 해당하는 아이템의 서포트를 증가시키는 단계;
    상기 트랜잭션의 삽입될 아이템의 개수만큼 배열을 할당하여 새로운 LPN을 생성하는 단계;
    상기 LPN에 삽입되어 있는 모든 아이템을 상기 새로운 LPN에 삽입하는 단계;
    상기 LPN에 삽입되어 있는 아이템과 동일하지 않은 상기 트랜잭션의 삽입될 아이템을 상기 새로운 LPN에 삽입하는 단계; 및
    상기 LPN을 삭제하는 단계를 더 포함하는 것을 특징으로 하는 데이터 마이닝 방법.
  15. 데이터베이스를 스캔하여 아이템 서포트를 정렬하는 단계;
    상기 정렬된 아이템 서포트를 기초로 헤더리스트를 생성하는 단계;
    상기 생성된 헤더리스트에 따라 트랜잭션을 삽입하여 LP-tree와 LPN 노드를 생성하는 단계; 및
    상기 LP-tree를 기초로 빈발 패턴을 마이닝하는 단계를 포함하고,
    상기 LPN 노드는 배열 형식인 것을 특징으로 하는 데이터 마이닝 방법.
  16. 제15항에 있어서, 상기 빈발 패턴을 마이닝하는 단계는
    상기 헤더리스트에서 마지막에 순서하는 아이템을 탐색하는 단계;
    상기 아이템의 노드-링크를 따라 노드를 방문하는 단계;
    상기 방문된 노드의 서포트를 저장하는 단계를 포함하는 것을 특징으로 하는 데이터 마이닝 방법
  17. 제16항에 있어서, 상기 빈발 패턴을 마이닝하는 단계는
    상기 방문 된 노드가 상기 LPN의 헤더노드인 경우 상기 헤더노드가 가리키는 노드가 루트인지 여부를 확인하는 단계;
    루트인 경우 상기 노드를 방문하는 단계를 종료하는 단계; 및
    루트가 아닌 경우 상기 헤더노드에 연결된 LPN의 노드를 방문하는 단계를 더 포함하는 것을 특징으로 하는 데이터 마이닝 방법
  18. 제17항에 있어서, 상기 노드를 방문하는 단계가 종료하는 단계는
    조건부 패턴 데이터를 만드는 단계;
    조건부 데이터베이스를 처리하는 단계; 및
    조건부 LP-tree가 생성되는 단계를 더 포함하는 것을 특징으로 하는 데이터 마이닝 방법
  19. 데이터베이스를 스캔하여 아이템 서포트를 정렬하는 기능;
    상기 정렬된 아이템 서포트를 기초로 헤더리스트를 생성하는 기능; 및
    상기 생성된 헤더리스트에 따라 트랜잭션을 삽입하여 LP-tree와 LPN 노드를 생성하는 기능을 포함하고,
    상기 LPN 노드는 배열 형식인 것을 특징으로 하는 데이터 마이닝 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.
KR1020140045994A 2014-04-17 2014-04-17 빈발 패턴 마이닝 방법 및 이를 저장하는 기록매체 KR101594346B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140045994A KR101594346B1 (ko) 2014-04-17 2014-04-17 빈발 패턴 마이닝 방법 및 이를 저장하는 기록매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140045994A KR101594346B1 (ko) 2014-04-17 2014-04-17 빈발 패턴 마이닝 방법 및 이를 저장하는 기록매체

Publications (2)

Publication Number Publication Date
KR20150120144A KR20150120144A (ko) 2015-10-27
KR101594346B1 true KR101594346B1 (ko) 2016-02-16

Family

ID=54428455

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140045994A KR101594346B1 (ko) 2014-04-17 2014-04-17 빈발 패턴 마이닝 방법 및 이를 저장하는 기록매체

Country Status (1)

Country Link
KR (1) KR101594346B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111597708A (zh) * 2020-05-14 2020-08-28 北京赛宝工业技术研究院有限公司 压缩机质量预警服务的方法、系统、可读介质和电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101275834B1 (ko) 2010-11-09 2013-06-18 충북대학교 산학협력단 상위 k개의 중요 패턴들을 마이닝 하는 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101105736B1 (ko) 2009-03-03 2012-01-17 충북대학교 산학협력단 대용량 트랜잭션 데이터베이스 환경에서 효율적인 빈발 항목 집합 탐색 방법
KR101444832B1 (ko) * 2010-08-09 2014-09-30 충북대학교 산학협력단 연관 규칙 마이닝을 이용한 주제어 기반 인터넷 정보 검색 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101275834B1 (ko) 2010-11-09 2013-06-18 충북대학교 산학협력단 상위 k개의 중요 패턴들을 마이닝 하는 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"Approximate Frequency Counts over Data Streams",G.S. Manku 외1인, Proc.28th Int'l conf. Very Large Data Base(VLDB 02). 2002
"확률 기법에 기반한 근접 빈발 패턴 마이닝 기법의 성능평가", 편광범 외1, 인터넷정보학회논문지 제14권 제1호, 2013.2

Also Published As

Publication number Publication date
KR20150120144A (ko) 2015-10-27

Similar Documents

Publication Publication Date Title
US10157239B2 (en) Finding common neighbors between two nodes in a graph
CN106897374B (zh) 一种基于轨迹大数据最近邻查询的个性化推荐方法
KR101705778B1 (ko) 데이터 스트림 상에서 가중화 최대 빈발 패턴을 마이닝하기 위한 슬라이딩 윈도우 기반 빈발 패턴 관리 방법
JP6973150B2 (ja) 最短経路行列生成プログラム、装置、及び方法
CN102693266A (zh) 搜索数据库的方法、生成索引结构的导航设备和方法
Sucahyo et al. CT-ITL: Efficient frequent item set mining using a compressed prefix tree with pattern growth
Lee et al. Incremental and interactive mining of web traversal patterns
CN104346458A (zh) 数据存储方法和存储设备
CN105809389A (zh) 一种bom树的生成方法及装置
Singh et al. Performance Measure of Similis and FPGrowth Algo rithm
Alamri et al. Indexing moving objects in indoor cellular space
Leung et al. Mining ‘following’patterns from big sparse social networks
KR101275834B1 (ko) 상위 k개의 중요 패턴들을 마이닝 하는 방법
Yang et al. On bends and lengths of rectilinear paths: a graph-theoretic approach
KR101594346B1 (ko) 빈발 패턴 마이닝 방법 및 이를 저장하는 기록매체
KR101761177B1 (ko) 상위 k 중요 패턴 마이닝 방법, 이를 수행하는 장치 및 이를 저장하는 기록매체
JP6705764B2 (ja) 生成装置、生成方法、及び生成プログラム
Yen et al. An efficient incremental algorithm for mining web traversal patterns
CN110032664A (zh) 一种快速建立比特币区块链全节点地址索引的方法
CN102682112A (zh) 存储方法和装置
CN101237347B (zh) 告警数据的分页处理方法
CN102750460A (zh) 分层简化大规模图数据的运算方法
CN101840434A (zh) 一种在空间网络数据库中查找最近k个点对的广度优先方法
CN103294735A (zh) 基于tcam的确定性有穷状态自动机dfa的匹配方法和装置
KR101594345B1 (ko) 빈발 패턴 마이닝 방법 및 이를 저장하는 기록매체

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190121

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20200116

Year of fee payment: 5