빈발 패턴 마이닝 방법 및 장치
METHOD AND APPARATUS FOR FREQUENT PATTERN MINING
특허 요약
빈발 패턴 마이닝 방법 및 장치가 개시된다. 일실시예에 따른 빈발 패턴 마이닝 장치는 메인 메모리로부터 GPU들의 장치 메모리들 각각으로, 후보 항목집합들의 서로 다른 상대 메모리 주소들을 각각 복사하고, 메인 메모리로부터 장치 메모리들 각각으로, 후보 항목집합들의 지지도들의 연산에 필요한 적어도 하나의 동일한 트랜잭션 블록을 각각 복사하고, GPU들에 의해 처리된 부분 지지도들을 동기화하여 후보 항목집합들의 지지도들을 갱신할 수 있다.
청구항
번호청구항
1

적어도 하나의 프로세서가, 빈발 1-항목집합들에 대응하는 비트 벡터들-상기 비트벡터들 각각은 해당하는 빈발 1-항목집합이 복수의 트랜잭션들에 포함되는지 여부를 지시함-을 상기 복수의 트랜잭션들에 기초하여 분할함으로써 블록들을 생성하는 단계;상기 프로세서가, 메인 메모리로부터 GPU(Graphic Processing Unit)들의 장치 메모리들 각각으로, 후보 k-항목집합들-상기 후보 k-항목집합들 각각은 상기 빈발 1-항목집합들의 항목들 중 k개의 항목들을 포함함- 중 서로 다른 후보 k-항목집합의 상대 메모리 주소를 각각 복사하는 단계;상기 프로세서가, 상기 메인 메모리로부터 상기 장치 메모리들 각각으로, 상기 블록들 중 적어도 하나의 동일한 블록을 각각 복사하는 단계; 및상기 프로세서가, 상기 적어도 하나의 동일한 블록 및 서로 다른 상대 메모리 주소들에 기초하여 상기 GPU들에 의해 계산된 상기 후보 k-항목집합들의 부분 지지도들에 기초하여, 상기 후보 k-항목집합들의 지지도들을 갱신하는 단계를 포함하는빈발 패턴 마이닝 방법.

2

제1항에 있어서,상기 서로 다른 상대 메모리 주소들을 각각 복사하는 단계는상기 프로세서가, 제1 후보 k-항목집합의 상대 메모리 주소를 제1 GPU의 장치 메모리로 복사하는 단계; 및상기 프로세서가, 제2 후보 k-항목집합의 상대 메모리 주소를 제2 GPU의 장치 메모리로 복사하는 단계를 포함하고,상기 적어도 하나의 동일한 블록을 각각 복사하는 단계는상기 프로세서가, 상기 블록들 중 제1 블록을 상기 제1 GPU의 장치 메모리로 복사하는 단계; 및상기 프로세서가, 상기 제1 블록을 상기 제2 GPU의 장치 메모리로 복사하는 단계를 포함하는,빈발 패턴 마이닝 방법.

3

제1항에 있어서,상기 프로세서가, 상기 비트 벡터들을 포함하는 트랜잭션 비트맵-상기 트랜잭션 비트맵은 수직 비트맵 레이아웃(vertical bitmap layout)에 의해 표현됨-을 수직적 파티셔닝(vertically partitioning)하여 트랜잭션 블록들을 생성하는 단계를 더 포함하고,상기 블록들은 상기 트랜잭션 블록들인,빈발 패턴 마이닝 방법.

4

제3항에 있어서,상기 서로 다른 상대 메모리 주소를 각각 복사하는 단계는상기 프로세서가, 상기 트랜잭션 비트맵의 빈발 1-항목집합을 상대 메모리 주소로 매핑하는 사전을 이용하여, 상기 후보 k-항목집합들의 상대 메모리 주소들을 생성하는 단계; 및상기 프로세서가, 상기 생성된 상대 메모리 주소들 각각을 외부 피연산자(outer operand)로서 상기 장치 메모리들 각각으로 복사하는 단계를 포함하는,빈발 패턴 마이닝 방법.

5

제4항에 있어서,상기 상대 메모리 주소들을 생성하는 단계는상기 프로세서가, 후보 k-항목집합에 포함된 빈발 1-항목집합들을 식별하는 단계; 및상기 프로세서가, 상기 식별된 빈발 1-항목집합들의 상대 메모리 주소들의 조합을 포함하는 상기 후보 k-항목집합의 상대 메모리 주소를 생성하는 단계를 포함하는,빈발 패턴 마이닝 방법.

6

제4항에 있어서,상기 적어도 하나의 동일한 블록을 각각 복사하는 단계는상기 프로세서가, 상기 트랜잭션 블록들 중 어느 하나의 트랜잭션 블록을 내부 피연산자(inner operand)로서 상기 장치 메모리들 각각으로 복사하는 단계를 포함하고,상기 지지도들을 갱신하는 단계는상기 프로세서가, 상기 트랜잭션 블록 및 상기 각 상대 메모리 주소들을 이용하여 상기 각 GPU들에 의하여 계산되고, 상기 각 상대 메모리 주소들에 대응하는 부분 지지도들을 수신하는 단계; 및상기 프로세서가, 상기 상대 메모리 주소들에 대응하는 상기 부분 지지도들에 기초하여, 상기 후보 k-항목집합들의 지지도들을 갱신하는 단계를 포함하는,빈발 패턴 마이닝 방법.

7

제1항에 있어서,상기 프로세서가, 상기 빈발 1-항목집합들을 분할하여 프래그먼트(fragment)들을 생성하는 단계;상기 프로세서가, 상기 프래그먼트들 별로 프래그먼트 내 빈발 1-항목집합들의 모든 조합인 항목집합들을 생성하는 단계;상기 프로세서가, 상기 생성된 항목집합들에 대응하는 비트 벡터들을 계산하는 단계; 및상기 프로세서가, 상기 계산된 비트 벡터들을 포함하는 트랜잭션 비트맵-상기 트랜잭션 비트맵은 수직 비트맵 레이아웃(vertical bitmap layout)에 의해 표현됨-을 수직적 파티셔닝(vertically partitioning)하고, 상기 프래그먼트들 별로 분할하여 프래그먼트 블록들을 생성하는 단계를 더 포함하고,상기 블록들은 상기 프래그먼트 블록들인,빈발 패턴 마이닝 방법.

8

제7항에 있어서,상기 서로 다른 상대 메모리 주소들을 각각 복사하는 단계는상기 프로세서가, 상기 트랜잭션 비트맵의 항목집합을 상대 메모리 주소로 매핑하는 사전을 이용하여, 상기 후보 k-항목집합들의 상대 메모리 주소들을 생성하는 단계; 및상기 프로세서가, 상기 상대 메모리 주소들 각각을 외부 피연산자(outer operand)로서 상기 장치 메모리들 각각으로 복사하는 단계를 포함하는,빈발 패턴 마이닝 방법.

9

제8항에 있어서,상기 상대 메모리 주소들을 생성하는 단계는상기 프로세서가, 후보 k-항목집합에 포함된 항목집합들을 식별하는 단계; 및상기 프로세서가, 상기 식별된 항목집합들의 상대 메모리 주소들의 조합을 포함하는 상기 후보 k-항목집합의 상대 메모리 주소를 생성하는 단계를 포함하는,빈발 패턴 마이닝 방법.

10

제8항에 있어서,상기 적어도 하나의 동일한 블록을 각각 복사하는 단계는상기 프로세서가, 상기 프래그먼트 블록들 중 적어도 하나의 프래그먼트 블록을 내부 피연산자(inner operand)로서 상기 장치 메모리들 각각으로 복사하는 단계를 포함하고,상기 지지도들을 갱신하는 단계는상기 프로세서가, 상기 프래그먼트 블록 및 상기 각 상대 메모리 주소들을 이용하여 상기 각 GPU들에 의하여 계산되고, 상기 각 상대 메모리 주소들에 대응하는 부분 지지도들을 수신하는 단계; 및상기 프로세서가, 상기 상대 메모리 주소들에 대응하는 상기 부분 지지도들에 기초하여, 상기 후보 k-항목집합들의 지지도들을 갱신하는 단계를 포함하는,빈발 패턴 마이닝 방법.

11

적어도 하나의 프로세서가, 트랜잭션 데이터로부터 빈발 1-항목집합들을 마이닝하는 단계;상기 프로세서가, 상기 빈발 1-항목집합들에 대응하는 비트 벡터들-상기 비트벡터들 각각은 해당하는 빈발 1-항목집합이 복수의 트랜잭션들에 포함되는지 여부를 지시함-을 포함하는 트랜잭션 비트맵-상기 트랜잭션 비트맵은 수직 비트맵 레이아웃(vertical bitmap layout)에 의해 표현됨-을 상기 복수의 트랜잭션들에 기초하여 수직적 파티셔닝(vertically partitioning)하여 트랜잭션 블록들을 생성하는 단계;상기 프로세서가, GPU들에 의하여 상기 트랜잭션 블록들로부터 계산된 후보 k-항목집합들-상기 후보 k-항목집합들 각각은 상기 빈발 1-항목집합들의 항목들 중 k개의 항목들을 포함함-의 지지도들을 수신하는 단계; 및상기 프로세서가, 상기 지지도들에 기초하여 상기 후보 k-항목집합들 중 빈발 k-항목집합들을 마이닝하는 단계를 포함하는빈발 패턴 마이닝 방법.

12

제11항에 있어서,상기 지지도들을 계산하는 단계는상기 프로세서가, 상기 트랜잭션 비트맵의 빈발 1-항목집합을 상대 메모리 주소로 매핑하는 사전을 이용하여, 상기 후보 k-항목집합들의 상대 메모리 주소들을 생성하는 단계;상기 프로세서가, 상기 상대 메모리 주소들 각각을 외부 피연산자(outer operand)로서 상기 GPU들의 장치 메모리들 각각으로 복사하는 단계;상기 프로세서가, 상기 트랜잭션 블록들 중 어느 하나의 트랜잭션 블록을 내부 피연산자(inner operand)로서 상기 장치 메모리들 각각으로 복사하는 단계;상기 프로세서가, 상기 각 GPU들이, 상기 트랜잭션 블록 및 상기 각 상대 메모리 주소들을 이용하여 상기 각 상대 메모리 주소들에 대응하는 부분 지지도들을 계산하는 단계; 및상기 프로세서가, 상기 부분 지지도들에 기초하여, 상기 후보 k-항목집합들의 지지도들을 갱신하는 단계를 포함하는,빈발 패턴 마이닝 방법.

13

제12항에 있어서,상기 지지도들을 계산하는 단계는상기 프로세서가, 제2 트랜잭션 블록을 내부 피연산자(inner operand)로서 상기 장치 메모리들 각각으로 복사하는 단계; 상기 프로세서가, 상기 각 GPU들이, 상기 제2 트랜잭션 블록 및 상기 각 상대 메모리 주소들을 이용하여 상기 각 상대 메모리 주소들에 대응하는 제2 부분 지지도들을 계산하는 단계; 및상기 프로세서가, 상기 제2 부분 지지도들에 기초하여, 상기 후보 k-항목집합들의 지지도들을 갱신하는 단계를 더 포함하는,빈발 패턴 마이닝 방법.

14

적어도 하나의 프로세서가, 트랜잭션 데이터로부터 빈발 1-항목집합들을 마이닝하는 단계;상기 프로세서가, 상기 빈발 1-항목집합들을 분할하여 프래그먼트(fragment)들을 생성하는 단계;상기 프로세서가, 상기 프래그먼트들 별로 프래그먼트 내 빈발 1-항목집합들의 모든 조합인 항목집합들을 생성하는 단계;상기 프로세서가, 상기 생성된 항목집합들에 대응하는 비트 벡터들-상기 비트벡터들 각각은 해당하는 항목집합이 복수의 트랜잭션들에 포함되는지 여부를 지시함-을 계산하는 단계;상기 프로세서가, 상기 계산된 비트 벡터들을 포함하는 트랜잭션 비트맵-상기 트랜잭션 비트맵은 수직 비트맵 레이아웃(vertical bitmap layout)에 의해 표현됨-을 상기 복수의 트랜잭션들에 기초하여 수직적 파티셔닝(vertically partitioning)하고, 상기 프래그먼트들 별로 분할하여 프래그먼트 블록들을 생성하는 단계;상기 프로세서가, GPU들에 의하여 상기 프래그먼트 블록들로부터 계산된 후보 k-항목집합들-상기 후보 k-항목집합들 각각은 상기 항목집합들 중 k개의 항목집합들 내 항목들을 포함함-의 지지도들을 수신하는 단계; 및상기 프로세서가, 상기 지지도들에 기초하여, 상기 후보 k-항목집합들 중 빈발 k-항목집합들을 마이닝하는 단계를 포함하는빈발 패턴 마이닝 방법.

15

제14항에 있어서,상기 지지도들을 계산하는 단계는상기 프로세서가, 상기 트랜잭션 비트맵의 항목집합을 상대 메모리 주소로 매핑하는 사전을 이용하여, 상기 후보 k-항목집합들의 상대 메모리 주소들을 생성하는 단계;상기 프로세서가, 상기 상대 메모리 주소들 각각을 외부 피연산자(outer operand)로서 상기 GPU들의 장치 메모리들 각각으로 복사하는 단계;상기 프로세서가, 상기 프래그먼트 블록들 중 적어도 하나의 프래그먼트 블록을 내부 피연산자(inner operand)로서 상기 장치 메모리들 각각으로 복사하는 단계;상기 프로세서가, 상기 각 GPU들이, 상기 프래그먼트 블록 및 상기 각 상대 메모리 주소들을 이용하여 상기 각 상대 메모리 주소들에 대응하는 부분 지지도들을 계산하는 단계; 및상기 프로세서가, 상기 부분 지지도들에 기초하여, 상기 후보 k-항목집합들의 지지도들을 갱신하는 단계를 포함하는,빈발 패턴 마이닝 방법.

16

제15항에 있어서,상기 지지도들을 계산하는 단계는상기 프로세서가, 적어도 하나의 제2 프래그먼트 블록을 내부 피연산자(inner operand)로서 상기 장치 메모리들 각각으로 복사하는 단계; 상기 프로세서가, 상기 각 GPU들이, 상기 제2 프래그먼트 블록 및 상기 각 상대 메모리 주소들을 이용하여 상기 각 상대 메모리 주소들에 대응하는 제2 부분 지지도들을 계산하는 단계; 및상기 프로세서가, 상기 제2 부분 지지도들에 기초하여, 상기 후보 k-항목집합들의 지지도들을 갱신하는 단계를 더 포함하는,빈발 패턴 마이닝 방법.

17

적어도 하나의 프로세서가, 트랜잭션 데이터로부터 빈발 1-항목집합들을 마이닝하는 단계;상기 프로세서가, TFL(Traversal from the First Level) 전략 또는 HIL(Hopping from Intermediate Level) 전략을 선택하는 단계;상기 프로세서가, 상기 선택된 전략에 기초하여, 상기 빈발 1-항목집합들에 대응하는 비트 벡터들-상기 비트벡터들 각각은 해당하는 빈발 1-항목집합이 복수의 트랜잭션들에 포함되는지 여부를 지시함-을 상기 복수의 트랜잭션들에 기초하여 분할함으로써 블록들을 생성하는 단계;상기 프로세서가, GPU들에 의하여 상기 블록들로부터 계산된 후보 k-항목집합들-상기 후보 k-항목집합들 각각은 상기 빈발 1-항목집합들의 항목들 중 k개의 항목들을 포함함-의 지지도들을 수신하는 단계; 및상기 프로세서가, 상기 지지도들에 기초하여, 상기 후보 k-항목집합들 중 빈발 k-항목집합들을 마이닝하는 단계를 포함하는빈발 패턴 마이닝 방법.

18

제17항에 있어서,상기 블록들을 생성하는 단계는상기 프로세서가, 상기 TFL 전략이 선택된 경우, 상기 비트 벡터들을 포함하는 트랜잭션 비트맵-상기 트랜잭션 비트맵은 수직 비트맵 레이아웃(vertical bitmap layout)에 의해 표현됨-을 수직적 파티셔닝(vertically partitioning)하여 트랜잭션 블록들을 생성하는 단계를 포함하는,빈발 패턴 마이닝 방법.

19

제18항에 있어서,상기 지지도들을 계산하는 단계는상기 프로세서가, 상기 트랜잭션 비트맵의 빈발 1-항목집합을 상대 메모리 주소로 매핑하는 사전을 이용하여, 상기 후보 k-항목집합들의 상대 메모리 주소들을 생성하는 단계;상기 프로세서가, 상기 상대 메모리 주소들 각각을 외부 피연산자(outer operand)로서 상기 GPU들의 장치 메모리들 각각으로 복사하는 단계;상기 프로세서가, 상기 트랜잭션 블록들 중 어느 하나의 트랜잭션 블록을 내부 피연산자(inner operand)로서 상기 장치 메모리들 각각으로 복사하는 단계;상기 프로세서가, 상기 각 GPU들이, 상기 트랜잭션 블록 및 상기 각 상대 메모리 주소들을 이용하여 상기 각 상대 메모리 주소들에 대응하는 부분 지지도들을 계산하는 단계; 및상기 프로세서가, 상기 부분 지지도들에 기초하여, 상기 후보 k-항목집합들의 지지도들을 갱신하는 단계를 포함하는,빈발 패턴 마이닝 방법.

20

제19항에 있어서,상기 지지도들을 계산하는 단계는상기 프로세서가, 제2 트랜잭션 블록을 내부 피연산자(inner operand)로서 상기 장치 메모리들 각각으로 복사하는 단계; 상기 프로세서가, 상기 각 GPU들이, 상기 제2 트랜잭션 블록 및 상기 각 상대 메모리 주소들을 이용하여 상기 각 상대 메모리 주소들에 대응하는 제2 부분 지지도들을 계산하는 단계; 및상기 프로세서가, 상기 제2 부분 지지도들에 기초하여, 상기 후보 k-항목집합들의 지지도들을 갱신하는 단계를 더 포함하는,빈발 패턴 마이닝 방법.

21

제17항에 있어서,상기 블록들을 생성하는 단계는상기 프로세서가, 상기 HIL 전략이 선택된 경우, 상기 빈발 1-항목집합들을 분할하여 프래그먼트(fragment)들을 생성하는 단계;상기 프로세서가, 상기 프래그먼트들 별로 프래그먼트 내 빈발 1-항목집합들의 모든 조합인 항목집합들을 생성하는 단계;상기 프로세서가, 상기 생성된 항목집합들에 대응하는 비트 벡터들을 계산하는 단계;상기 프로세서가, 상기 계산된 비트 벡터들을 포함하는 트랜잭션 비트맵-상기 트랜잭션 비트맵은 수직 비트맵 레이아웃(vertical bitmap layout)에 의해 표현됨-을 수직적 파티셔닝(vertically partitioning)하고, 상기 프래그먼트들 별로 분할하여 프래그먼트 블록들을 생성하는 단계를 포함하는,빈발 패턴 마이닝 방법.

22

제21항에 있어서,상기 지지도들을 계산하는 단계는상기 프로세서가, 상기 트랜잭션 비트맵의 항목집합을 상대 메모리 주소로 매핑하는 사전을 이용하여, 상기 후보 k-항목집합들의 상대 메모리 주소들을 생성하는 단계;상기 프로세서가, 상기 상대 메모리 주소들 각각을 외부 피연산자(outer operand)로서 상기 GPU들의 장치 메모리들 각각으로 복사하는 단계;상기 프로세서가, 상기 프래그먼트 블록들 중 적어도 하나의 프래그먼트 블록을 내부 피연산자(inner operand)로서 상기 장치 메모리들 각각으로 복사하는 단계;상기 프로세서가, 상기 각 GPU들이, 상기 프래그먼트 블록 및 상기 각 상대 메모리 주소들을 이용하여 상기 각 상대 메모리 주소들에 대응하는 부분 지지도들을 계산하는 단계; 및상기 프로세서가, 상기 부분 지지도들에 기초하여, 상기 후보 k-항목집합들의 지지도들을 갱신하는 단계를 포함하는,빈발 패턴 마이닝 방법.

23

제22항에 있어서,상기 지지도들을 계산하는 단계는상기 프로세서가, 적어도 하나의 제2 프래그먼트 블록을 내부 피연산자(inner operand)로서 상기 장치 메모리들 각각으로 복사하는 단계; 상기 프로세서가, 상기 각 GPU들이, 상기 제2 프래그먼트 블록 및 상기 각 상대 메모리 주소들을 이용하여 상기 각 상대 메모리 주소들에 대응하는 제2 부분 지지도들을 계산하는 단계; 및상기 프로세서가, 상기 제2 부분 지지도들에 기초하여, 상기 후보 k-항목집합들의 지지도들을 갱신하는 단계를 더 포함하는,빈발 패턴 마이닝 방법.

24

하드웨어와 결합되어 제1항 내지 제23항 중 어느 하나의 항의 방법을 실행시키기 위하여 기록 매체에 저장된 컴퓨터 프로그램.

25

CPU; 및메인 메모리를 포함하고,상기 CPU는빈발 1-항목집합들에 대응하는 비트 벡터들-상기 비트벡터들 각각은 해당하는 빈발 1-항목집합이 복수의 트랜잭션들에 포함되는지 여부를 지시함-을 상기 복수의 트랜잭션들에 기초하여 분할함으로써 블록들을 생성하고,상기 메인 메모리로부터 GPU들의 장치 메모리들 각각으로, 후보 k-항목집합들-상기 후보 k-항목집합들 각각은 상기 빈발 1-항목집합들의 항목들 중 k개의 항목들을 포함함- 중 서로 다른 후보 k-항목집합의 상대 메모리 주소를 각각 복사하고,상기 메인 메모리로부터 상기 장치 메모리들 각각으로, 상기 블록들 중 적어도 하나의 동일한 블록을 각각 복사하고,상기 적어도 하나의 동일한 블록 및 서로 다른 상대 메모리 주소들에 기초하여 상기 GPU들에 의해 계산된 상기 후보 k-항목집합들의 부분 지지도들에 기초하여, 상기 후보 k-항목집합들의 지지도들을 갱신하는빈발 패턴 마이닝 장치.