KR20150045732A - 중복된 자료 개수의 근사치를 추정하는 방법 및 시스템 - Google Patents

중복된 자료 개수의 근사치를 추정하는 방법 및 시스템 Download PDF

Info

Publication number
KR20150045732A
KR20150045732A KR20130125370A KR20130125370A KR20150045732A KR 20150045732 A KR20150045732 A KR 20150045732A KR 20130125370 A KR20130125370 A KR 20130125370A KR 20130125370 A KR20130125370 A KR 20130125370A KR 20150045732 A KR20150045732 A KR 20150045732A
Authority
KR
South Korea
Prior art keywords
bits
value
counting
bit string
input
Prior art date
Application number
KR20130125370A
Other languages
English (en)
Other versions
KR101543855B1 (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 KR1020130125370A priority Critical patent/KR101543855B1/ko
Priority to PCT/KR2014/001148 priority patent/WO2015008913A1/ko
Publication of KR20150045732A publication Critical patent/KR20150045732A/ko
Application granted granted Critical
Publication of KR101543855B1 publication Critical patent/KR101543855B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions

Landscapes

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

Abstract

중복된 자료 개수의 근사치를 추정하는 방법 및 시스템이 개시된다. 중복된 자료 개수의 근사치를 추정하기 위해 컴퓨터로 구현되는 근사치 추정 방법은, 원소들에 대한 비트열을 저장하는 카운팅 메모리를 유지하는 단계, 입력된 원소를 파라미터로 이용하는 해쉬함수를 통해 상기 원소의 주소정보를 획득하는 단계, 상기 주소정보를 이용하여 상기 카운팅 메모리에서 상기 원소에 대해 저장된 비트열을 읽어오는 단계, 상기 읽어온 비트열에서 1의 값을 갖는 비트의 개수를 이용하여 상기 원소가 입력된 횟수를 카운팅하되, 0의 값을 갖는 비트의 개수가 기설정된 수 미만인 경우, 상기 원소에 대해 동적으로 할당되는 추가 메모리에 상기 원소가 입력된 횟수를 누적한 누적 횟수를 더 이용하여 상기 원소가 입력된 횟수를 카운팅하는 단계를 포함할 수 있다.

Description

중복된 자료 개수의 근사치를 추정하는 방법 및 시스템{METHOD AND SYSTEM FOR APPROXIMATE COUNTING FOR DUPLICATION NUMBER OF ELEMENT}
본 발명의 실시예들은 중복된 자료 개수의 근사치를 추정하는 방법 및 시스템에 관한 것이다.
멀티셋(multiset)은 집합의 일종이나, 집합(set)과는 다르게 같은 원소를 여러 번 저장할 수 있는 집합이다. 예를 들어, {1, 2, 3, 4, 5, 6, 7}은 집합을, {1, 2, 2, 2, 3, 3, 4, 5, 6, 7, 7}은 멀티셋을 각각 나타낼 수 있다. 이러한 멀티셋은, 새로운 원소를 추가할 수도 있고, 멀티셋의 특정 원소가 몇 번 저장되어있는지도 알아낼 수 있다. 일례로, 상술한 멀티셋 {1, 2, 2, 2, 3, 3, 4, 5, 6, 7, 7}에서 원소 2의 개수는 3이고, 원소 6의 개수는 1이다.
어떤 원소가 멀티셋에 존재하는지를 확인하고, 존재한다면 그 원소가 몇 번 멀티셋에 저장되어있는지를 알아내는 것은 여러 분야에서 매우 중요한 문제이다. 예를 들어, 네트워크에서 하나의 출발지 IP주소에서 몇 개의 패킷을 보냈는지를 확인하기 위해 사용할 수도 있고, 사회관계망에서 발생된 수많은 단어들 중 특정 단어가 몇 번 등장했는지 알아내기 위해서도 사용할 수 있다.
가장 쉽게 이를 구현할 수 있는 자료 구조는 테이블이다. 예를 들어, 어떤 단어가 새롭게 입력될 때마다, 그 단어를 카운터와 함께 테이블에 저장해 놓는 것이다. 새로운 단어라면 테이블에 새로운 엔트리를 추가하고 카운터는 1로 설정한다. 만약, 이미 멀티셋에 존재하는 단어라면 해당 카운터 값을 하나 증가시키면 된다. 특정 단어가 멀티셋에 몇 번 등장하는지를 알고 싶다면, 테이블을 검색해서 카운터 값을 돌려주면 된다.
그러나, 최근에는 인터넷을 통해 유통되는 데이터의 양이 너무 많아져서(Big data 처리), 이런 단순한 셈 방법으로 다루기에는 너무 많은 양의 메모리가 요구되는 문제점이 있다.
일반적으로, 네트워크에서의 소스 IP나 검색분야에서의 키워드들은 그 종류수가 매우 많은 반면, 중복입력이 매우 잦은 소스 IP나 키워드들은 그 수가 그리 많지 않다. 예를 들어, 서버로 전송되는 패킷들은 대부분 몇몇의 소스 IP들에 의해 전송되지, 전체 소스 IP들에게서 골고루 전송되지는 않는다. 뿐만 아니라, 키워드들 역시 자주 쓰이는 몇몇의 키워드들(일례로, "여행", "맛집")이 반복적으로 중복 입력되는 경우가 많을 뿐, 모든 키워드들이 골고루 수신되지는 않는다. 일례로, 키워드 "신경심리학(neuropsychology)"과 같은 키워드가 중복 입력되는 횟수와 키워드 "맛집"과 같은 키워드가 중복 입력되는 횟수는 큰 차이가 존재한다.
그럼에도 불구하고 종래기술에서는 각각의 원소들에 대해 얼마만큼의 카운팅이 필요한가를 알 수 없기 때문에 원소들 각각의 개수를 카운팅하기 위해 필요한 변수의 크기를 모든 원소에 대해 매우 크게(일례로, 가장 많이 입력될 것으로 판단되는 원소의 개수에 맞게) 설정할 수 밖에 없으며, 이에 따라 필연적으로 매우 큰 메모리가 요구된다.
도 1은 종래기술에 있어서, 개별 원소의 개수를 카운팅한 결과를 나타낸 도면이다. 도 1에서는 네 개의 키워드 각각의 입력개수를 카운팅하기 위해, 각각 16-비트 크기의 변수를 이용한다고 가정한다. 이 경우, 각각의 변수의 값은 0부터 65,535(216-1)까지의 값 중 하나를 가질 수 있다. 즉, 각각의 키워드들은 각각의 변수를 이용하여 0부터 65,535(216-1)까지 입력개수가 카운팅될 수 있다. 이때, 키워드 A, B, C, D가 각각 50번, 25번, 60,000번, 250번 입력되었다고 가정한다. 이미 설명한 바와 같이, 원소들 중 일부의 원소들만이 다수 입력될 뿐, 대부분의 원소들은 다수 입력되는 횟수가 매우 작다.
이때, 도 1을 살펴보면, 대부분의 메모리들이 불필요하게 낭비되고 있음을 알 수 있다. 그러나 각각의 원소들이 몇 번 입력될지는 알 수 없기 때문에, 변수의 크기를 원하는 대로 줄일 수도 없다는 문제점이 있다. 만약, 8-비트 크기의 변수들을 이용한다면, 255번째(28-1) 이후에는 다시 0번째로 카운팅되기 때문에 키워드 C에 대해서는 제대로 카운팅을 할 수가 없다. 멀티셋에서는 많이 입력되는 원소들에 대한 정보가 주로 유용하게 이용되기 때문에 많이 입력되는 원소들 각각의 개수를 카운팅할 수 없다는 것은 매우 큰 문제점 된다.
매우 적은 양의 메모리만으로 멀티셋의 개별 원소의 개수를 카운팅할 수 있는 카운팅 방법 및 시스템을 제공한다.
중복된 자료 개수의 근사치를 추정하기 위해 컴퓨터로 구현되는 근사치 추정 방법에 있어서, 원소들에 대한 비트열을 저장하는 카운팅 메모리를 유지하는 단계; 입력된 원소를 파라미터로 이용하는 해쉬함수를 통해 상기 원소의 주소정보를 획득하는 단계; 상기 주소정보를 이용하여 상기 카운팅 메모리에서 상기 원소에 대해 저장된 비트열을 읽어오는 단계; 상기 읽어온 비트열에서 1의 값을 갖는 비트의 개수를 이용하여 상기 원소가 입력된 횟수를 카운팅하되, 0의 값을 갖는 비트의 개수가 기설정된 수 미만인 경우, 상기 원소에 대해 동적으로 할당되는 추가 메모리에 상기 원소가 입력된 횟수를 누적한 누적 횟수를 더 이용하여 상기 원소가 입력된 횟수를 카운팅하는 단계를 포함하는 근사치 추정 방법이 제공된다.
일측에 따르면, 상기 추가 메모리는, 상기 원소의 식별자와 상기 원소가 입력된 누적 횟수를 카운팅하기 위한 변수를 서로 연관하여 저장하는 해쉬 테이블을 포함하는 것을 특징으로 할 수 있다.
다른 측면에 따르면, 상기 카운팅하는 단계는, 상기 0의 값을 갖는 비트의 개수가 기설정된 수 미만인 경우, 상기 읽어온 비트열에서 0의 값을 갖는 비트의 개수를 상기 카운팅 메모리에 포함된 비트들 중 0의 값을 갖는 비트들의 개수의 평균개수와 동일하도록 상기 읽어온 비트열의 비트들의 값을 설정하는 단계를 포함하는 것을 특징으로 할 수 있다.
또 다른 측면에 따르면, 상기 카운팅하는 단계는, 상기 0의 값을 갖는 비트 중 임의의 비트의 값을 1로 변경하여 상기 원소의 입력을 카운팅하는 것을 특징으로 할 수 있다.
또 다른 측면에 따르면, 상기 근사치 추정 방법은, 요청된 원소를 상기 추가 메모리에서 검색하는 단계; 및 상기 요청된 원소가 상기 추가 테이블에 존재하는 경우, 상기 카운팅 메모리에서 상기 주소정보를 이용하여 읽어온 비트열의 1의 개수를 이용하여 카운팅된 횟수 및 상기 요청된 원소와 관련하여 상기 추가 메모리에 누적된 누적 횟수를 이용하여 상기 요청된 원소의 입력된 횟수를 산출하는 단계를 더 포함할 수 있다.
또 다른 측면에 따르면, 상기 근사치 추정 방법은, 상기 요청된 원소가 상기 추가 테이블에 존재하지 않는 경우, 상기 카운팅 메모리에서 상기 주소정보를 이용하여 읽어온 비트열의 1의 개수를 이용하여 카운팅된 횟수를 상기 요청된 원소의 입력된 횟수로 산출하는 단계를 더 포함할 수 있다.
또 다른 측면에 따르면, 상기 해쉬함수를 통해 반환되는 비트열은, 상기 주소정보를 포함하는 첫 번째 정수 및 상기 원소에 대해 저장된 비트열에서 s(s는 자연수)개의 랜덤한 비트위치를 인덱싱하는 s개의 정수를 포함하는 s+1개의 정수로 나뉘어지고, 상기 저장된 비트열의 비트들 중 상기 s개의 정수를 통해 인덱싱되는 비트들의 열인 가상벡터에서 상기 1의 값을 갖는 비트의 개수와 상기 0의 값을 갖는 비트의 개수가 결정되는 것을 특징으로 할 수 있다.
중복된 자료 개수의 근사치를 추정하는 근사치 추정 시스템에 있어서, 원소들에 대한 비트열을 저장하는 카운팅 메모리를 포함하는 적어도 하나의 스토리지 유닛; 및 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 입력된 원소를 파라미터로 이용하는 해쉬함수를 통해 상기 원소의 주소정보를 획득하는 과정; 상기 주소정보를 이용하여 상기 카운팅 메모리에서 상기 원소에 대해 저장된 비트열을 읽어오는 과정; 상기 읽어온 비트열에서 1의 값을 갖는 비트의 개수를 이용하여 상기 원소가 입력된 횟수를 카운팅하되, 0의 값을 갖는 비트의 개수가 기설정된 수 미만인 경우, 상기 원소에 대해 동적으로 할당되어 상기 적어도 하나의 스토리지 유닛에 포함되는 추가 메모리에 상기 원소가 입력된 횟수를 누적한 누적 횟수를 더 이용하여 상기 원소가 입력된 횟수를 카운팅하는 과정을 처리하는 것을 특징으로 하는 근사치 추정 시스템이 제공된다.
매우 적은 양의 메모리만으로 멀티셋의 개별 원소의 개수를 카운팅할 수 있다.
도 1은 종래기술에 있어서, 개별 원소의 개수를 카운팅한 결과를 나타낸 도면이다.
도 2 내지 도 4는 종래기술의 알고리즘들과 본 발명의 실시예에 따른 알고리즘의 성능을 비교하기 위한 도면들이다.
도 5는 본 발명의 일실시예에 있어서, 중복된 자료 개수의 근사치를 추정하는 방법을 도시한 흐름도이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 발명의 실시예들에서는 균일 분포를 갖는 해쉬함수를 이용하여 중복된 자료 개수에 대한 근사치를 추정할 수 있다. 해쉬함수 HA()는 임의의 길이를 갖는 입력 비트열(이하, 'WORD')을 고정길이의 랜덤한 비트열로 변환할 수 있으며, 동일한 입력에 대해서는 동일한 출력을 낼 수 있다. 이때, 해쉬함수 HA()를 통해 출력된 랜덤 비트열은 s+1개의 정수로 나뉘어질 수 있다. 예를 들어, 비트열 "101011110011"은 '1', '0', '1', '0', '1', '1', '1', '1', '0', '0', '1' 및 '1'의 12(11+1) 개의 정수로 나뉘어질 수 있다. 이 경우, 첫 번째 정수는 메모리에서 WORD의 카운팅 값이 저장된 위치(주소)를 나타내는 인덱스로 이용될 수 있고, 나머지 s개에 해당하는 정수들은 기설정된 비트크기의 가상벡터로서, 특정 WORD에 내에서 s개의 랜덤한 비트위치를 나타내는 인덱스로 이용될 수 있다. 위치를 나타내는 인덱스는 다른 인덱스보다 더 많은 수의 비트를 포함할 수도 있다.
첫 번째 실시예에서는, 전체 비트벡터에 포함된 기설정된 크기의 비트벡터(상술한 '가상벡터')를 이용할 수 있다. 첫 번째 실시예에 따른 근사치 추정 방법은 각 WORD의 출현 횟수를 각각의 WORD에 대응하는 가상벡터를 이용하여 카운팅할 수 있다. 이때, 특정 WORD의 출현 횟수가 대응하는 가상벡터를 이용하여 카운팅 가능한 횟수를 초과하는 경우, 근사치 추정 방법은 해쉬 테이블로 만들어진 누적 카운터에 가상벡터의 카운팅 값을 누적 시킨 후, 대응하는 가상벡터를 특정 값(전체 비트벡터에 있는 1의 개수를 전체 비트벡터에 포함된 가상벡터의 크기에 비례해서 조정한 값)으로 재설정하여 재사용할 수 있다. 이 경우, 해쉬 테이블에는 가상벡터 크기를 초과하여 카운팅된 WORD 들의 중복 출현 빈도가 누적될 수 있다. 따라서, 해쉬 테이블에는, 가상벡터의 크기에 기반하여 높은 출현 빈도를 보이는 WORD들의 목록이 유지될 수 있다.
두 번째 실시예에 따른 근사치 추정 방법에서는 인코딩(encoding) 속도와 디코딩(decoding) 속도를 높이기 위해서 가상벡터를 전체 비트벡터 공간에 랜덤하게 구성하지 않고, 하나의 WORD에 국한시켜서 구성할 수 있다. 이 경우, 근사치 추정 방법을 통해 새로운 원소에 대한 처리(encoding)와 특정 원소에 대한 출현 빈도 추정(decoding)의 속도가 매우 빨라질 수 있다.
우선, 본 실시예에서 이용되는 데이터 구조는 아래 (a), (b), (c) 및 (d)와 같다.
(a) 비트벡터: mA 비트 길이를 갖고, 모든 비트들은 0으로 초기화됨.
(b) 해쉬 테이블 mB개의 (f, cB)쌍을 저장함. 여기서, f는 멀티셋(multiset)에 저장될 원소(WORD)의 이름, cB는 f의 누적 출현 빈도를 의미함. f와 cB 모두 0으로 초기화됨.
(c) Z: mA 비트 길이의 비트벡터의 0의 개수
(d) zf: s 비트 길이의 가상벡터의 0의 개수
상술한 데이터 구조를 이용하여 원소를 저장하는 알고리즘은 다음 표 1과 같이 나타날 수 있다.
Figure pat00001
여기서, 'Encode(f)'는 새로운 원소 f가 입력되었을 때, 데이터 구조에서 원소 f를 찾아 카운터 값을 1 증가시키기 위한 함수일 수 있다. 이를 위해, 알고리즘에서는 해쉬함수 HA(f)에서 얻어지는 s+1개의 인덱스들 (w, a 1, ..., a s) 중 첫 번째 인덱스 w를 이용하여 메모리에서 해당 원소 f의 주소를 알아낸 후 (함수 read(w)를 이용하여) 메모리에서 원소 f에 대한 WORD를 레지스터(Reg[1, ..., 32])로 읽어올 수 있다. 이때, 알고리즘은 WORD 내에 포함된 s개의 비트(이 s개의 비트열을 f의 가상벡터라 부름) 중 임의의 하나의 비트를 선택(v ← rand())하여 그 비트가 0인 경우 1로 바꾸고, Z를 1 감소시킬 수 있다. 그리고, 알고리즘은 가상벡터의 0의 개수(zf = NotZ(Reg, a 1, ..., a s)를 셀 수 있다. 만약, 가상벡터의 0의 개수(zf)가 0.3*s보다 작다면, 알고리즘은 해당 가상벡터가 거의 꽉 찬 상태인 것으로 판단하여, 이 가상벡터에 저장된 f의 카운팅 값을 해쉬 테이블의 해당 엔트리에 누적시킬 수 있다(AccB(f, estf)). 여기서, 알고리즘은, zf = s인 경우에 쿠폰 콜렉터의 문제(coupon collector's problem)에 의해 추정치를 계산한 후 노이즈(
Figure pat00002
)를 제거하고, zf = s가 아닌 경우는 선형 카운팅 추정(linear counting estimation)에 의해 추정치를 계산한 후 노이즈를 제거할 수 있다. 노이즈는, 해쉬함수의 사용으로 인해 발생하는 오차를 보상하기 위해 이용될 수 있다.
또한, 알고리즘은 해당 가상벡터의 비트들 중 0의 값을 갖는 비트의 개수가 mA 비트 길이의 비트벡터의 평균 0의 개수와 같아지도록 해당 가상벡터의 값을 재설정할 수 있다(SetZ(Reg, a 1, ..., a s, s*Z/mA-zf)). 이때, 알고리즘은 mA 비트 길이의 비트벡터의 0의 개수 Z가 변화되었으므로, Z를 수정(Z = Z+s*Z/mA-zf)할 수 있다. 마지막으로, 알고리즘은 레지스터의 값을 메모리에 다시 저장(write(w, Reg))할 수 있다. 알고리즘에서
Figure pat00003
는 0.5772156649의 값을 갖는 오일러-마스케로니 상수(Euler-Mascheroni constant)일 수 있다. 또한, 표 1의 알고리즘의 순서 2에서 임의로 선택된 비트가 0이 아닌 경우, 값이 0인 다른 임의의 비트를 선택하는 과정이 반복될 수도 있다.
역으로, 저장된 자료를 이용하여 특정 원소 f의 출현 빈도를 알아내고자 하는 경우에는 다음 표 2와 같은 알고리즘이 이용될 수 있다.
Figure pat00004
여기서, 함수 'Decode(f)'는 원소 f가 입력되었을 때, 원소 f의 출현 빈도를 반환하는 함수일 수 있다. 먼저, 알고리즘은 원소 f가 해쉬 테이블에 존재하는지 여부를 확인하여, 원소 f가 해쉬 테이블에 존재하는 경우 해쉬 테이블에서 누적 카운팅 값을 읽어올 수 있다(CountB(f)). 만약, 원소 f가 해쉬 테이블에 존재하지 않는다면, 함수 'CountB(f)'는 0의 값을 반환할 수 있다. 또한, 알고리즘은 해쉬함수 HA(f)를 통해 얻어지는 인덱스를 이용하여 레지스터로 원소 f에 대해 메모리에 저장된 WORD를 읽어올 수 있으며, 읽어온 WORD내에 있는 원소 f의 가상벡터에서 0의 개수(zf)를 셀 수 있다. 이때, 알고리즘은 zf에 따라 카운팅 값을 계산할 수 있으며, 카운팅 값을 해쉬 테이블에서 얻어지는 누적 카운팅 값과 합산하여 합산된 결과를 원소 f에 대한 출현 빈도로서 출력할 수 있다.
상술한 알고리즘에 따른 근사치 추정 방법은 매우 작은 크기의 메모리(가상벡터)를 이용하여 원소들의 입력된 횟수를 카운팅 하다가 가상벡터를 이용하여 카운팅이 어려운 원소들에 대해서만 추가 메모리(해쉬 테이블)를 이용하여 원소의 입력된 횟수를 카운팅하기 때문에 도 1의 종래기술에서와 같이 모든 원소들에 대해 최대치의 메모리를 할당할 필요가 없어진다. 따라서, 본 발명의 실시예들에서는 매우 적은 양의 메모리만으로 멀티셋(중복된 자료)의 개별 원소를 카운팅할 수 있다. 이를 위해, 근사치 추정 방법은 매우 적은 양의 메모리를 사용하는 대신 정확한 셈(Counting)을 하지 않고, 근사치 셈(Approximate Counting for Multiset)을 할 수 있다. 이러한 근사치 추정 방법에서는 메모리의 양에 따라서 셈(counting)의 정확도가 달라질 수 있다.
도 2 내지 도 4는 종래기술의 알고리즘들과 본 발명의 실시예에 따른 알고리즘의 성능을 비교하기 위한 도면들이다. 도 2의 제1 그래프(200)와 도 3의 제2 그래프(300)는 이 분야의 최신 연구결과에 따른 종래기술의 알고리즘들의 측정 정확도를 나타내고 있으며, 도 4의 제3 그래프(400)는 본 발명의 실시예에 따른 알고리즘의 측정 정확도를 나타내고 있다. 각 그래프들은 3천5백만개의 IP 패킷을 가지고, 송신자 IP 주소별로 각각의 송신자들이 보낸 패킷의 개수를 측정한 것이다. 각 그래프들(200, 300 및 400)에서 가로축은 실제 패킷의 개수이고, 세로축은 알고리즘이 추정한 패킷의 개수이다. 하나의 점은 하나의 송신자 IP 주소에서 보내진 패킷의 개수에 대한 실제 값과 추정 값에 따라 그려진다. 따라서, 각 그래프들에서 y=x 그래프와 가까운 위치의 점들이 분포할수록 정확한 추정 값이라 해석할 수 있다. 이때, 각 그래프들(200, 300 및 400)을 비교해보면, 본 발명의 실시예에 따른 알고리즘의 정확도가 매우 높음을 알 수 있다. 또한, 본 발명의 실시예에 따른 알고리즘에서 해쉬 테이블의 키는 송신자 IP 주소를 나타내기 때문에, 패킷을 많이 보낸 상위 송신자 IP 주소를 쉽게 얻을 수 있다. 반면, 종래기술에 따른 알고리즘들에서는 이러한 기능이 제공되지 않는다.
도 5는 본 발명의 일실시예에 있어서, 중복된 자료 개수의 근사치를 추정하는 방법을 도시한 흐름도이다. 본 실시예에 따른 근사치 추정 방법은 적어도 하나의 스토리지 유닛과 적어도 하나의 프로세서를 포함하는 컴퓨터로 구현되는 카운팅 시스템에 의해 수행될 수 있다. 이때, 근사치 추정 방법이 포함하는 단계들은 적어도 하나의 프로세서에 의해 처리될 수 있다.
단계(510)에서 근사치 추정 시스템은 원소들에 대한 비트열을 저장하는 카운팅 메모리를 유지할 수 있다. 이때, 카운팅 메모리는 상술한 적어도 하나의 스토로지 유닛에 포함될 수 있다. 여기서, 카운팅 메모리는 상술한 비트벡터에 대응할 수 있다.
단계(520)에서 근사치 추정 시스템은 입력된 원소를 파라미터로 이용하는 해쉬함수를 통해 원소의 주소정보를 획득할 수 있다. 여기서, 해쉬함수를 통해 반환되는 비트열은, 주소정보를 포함하는 첫 번째 정수 및 원소에 대해 저장된 비트열에서 s(s는 자연수)개의 랜덤한 비트위치를 인덱싱하는 s개의 정수를 포함하는 s+1개의 정수로 나뉘어질 수 있다. 예를 들어, 주소정보는, 해쉬함수를 통해 출력되는 인덱스들 (w, a 1, ..., a s)의 첫 번째 인덱스 w에 대응될 수 있다.
단계(530)에서 근사치 추정 시스템은 주소정보를 이용하여 카운팅 메모리에서 원소에 대해 저장된 비트열을 읽어올 수 있다. 첫 번째 인덱스 w가 메모리에서 원소의 위치를 나타낼 수 있음은 이미 설명한 바 있다.
단계(540)에서 근사치 추정 시스템은 읽어온 비트열에서 1의 값을 갖는 비트의 개수를 이용하여 원소가 입력된 횟수를 카운팅하되, 0의 값을 갖는 비트의 개수가 기설정된 수 미만인 경우, 원소에 대해 동적으로 할당되는 추가 메모리에 원소가 입력된 횟수를 누적한 누적 횟수를 더 이용하여 원소가 입력된 횟수를 카운팅할 수 있다. 우선, 저장된 비트열의 비트들 중 s개의 정수를 통해 인덱싱되는 비트들의 열인 가상벡터에서 1의 값을 갖는 비트의 개수와 0의 값을 갖는 비트의 개수가 결정될 수 있다. 즉, 상술한 1의 값을 갖는 비트의 개수와 0의 값을 갖는 비트의 개수는 하나의 원소에 대한 비트열에 할당된 가상벡터의 비트들에서 결정될 수 있다. 이와 같이, 가상벡터를 전체 비트벡터 공간에 랜덤하게 구성하지 않고, 하나의 원소(WORD)에 국한시켜서 구성함으로써, 새로운 원소에 대한 처리 (encoding)와 특정 원소에 대한 출현빈도의 추정(decoding) 속도를 획기적으로 올릴 수 있다.
이때, 추가 메모리 역시 상술한 적어도 하나의 스토리지 유닛에 포함될 수 있다. 여기서, 추가 메모리는, 상기 원소의 식별자와 상기 원소가 입력된 누적 횟수를 카운팅하기 위한 변수를 서로 연관하여 저장하는 해쉬 테이블을 포함할 수 있다.
이때, 근사치 추정 시스템은 단계(540)에서 상기 0의 값을 갖는 비트의 개수가 기설정된 수 미만인 경우, 읽어온 비트열에서 0의 값을 갖는 비트의 개수를 카운팅 메모리에 포함된 비트들 중 0의 값을 갖는 비트들의 개수의 평균개수와 동일하도록 읽어온 비트열의 비트들의 값을 재설정하는 단계(미도시)를 더 수행할 수 있다.
이후 설명될 단계(550) 내지 단계(570)은 필요에 따라 선택적으로 근사치 추정 방법에 포함될 수 있다.
단계(550)에서 근사치 추정 시스템은 요청된 원소가 추가 메모리에 존재하는지 여부를 검색할 수 있다. 표 2에서는 함수 'CountB(f)'를 이용하여 해쉬 테이블에서 요청된 원소를 검색하고, 누적 횟수를 추출하는 예를 설명한 바 있다.
단계(560)에서 근사치 추정 시스템은 요청된 원소가 추가 테이블에 존재하는 경우, 카운팅 메모리에서 주소정보를 이용하여 읽어온 비트열의 1의 개수를 이용하여 카운팅된 횟수 및 요청된 원소와 관련하여 추가 메모리에 누적된 누적 횟수를 이용하여 요청된 원소의 입력된 횟수를 산출할 수 있다.
단계(570)에서 근사치 추정 시스템은 요청된 원소가 추가 테이블에 존재하지 않는 경우, 카운팅 메모리에서 주소정보를 이용하여 읽어온 비트열의 1의 개수를 이용하여 카운팅된 횟수를 요청된 원소의 입력된 횟수로 산출할 수 있다.
이와 같이, 본 발명의 실시예들에 따르면, 매우 적은 양의 메모리만으로 멀티셋의 개별 원소의 개수를 카운팅할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (10)

  1. 중복된 자료 개수의 근사치를 추정하기 위해 컴퓨터로 구현되는 근사치 추정 방법에 있어서,
    원소들에 대한 비트열을 저장하는 카운팅 메모리를 유지하는 단계;
    입력된 원소를 파라미터로 이용하는 해쉬함수를 통해 상기 원소의 주소정보를 획득하는 단계;
    상기 주소정보를 이용하여 상기 카운팅 메모리에서 상기 원소에 대해 저장된 비트열을 읽어오는 단계;
    상기 읽어온 비트열에서 1의 값을 갖는 비트의 개수를 이용하여 상기 원소가 입력된 횟수를 카운팅하되, 0의 값을 갖는 비트의 개수가 기설정된 수 미만인 경우, 상기 원소에 대해 동적으로 할당되는 추가 메모리에 상기 원소가 입력된 횟수를 누적한 누적 횟수를 더 이용하여 상기 원소가 입력된 횟수를 카운팅하는 단계
    를 포함하는 근사치 추정 방법.
  2. 제1항에 있어서,
    상기 추가 메모리는, 상기 원소의 식별자와 상기 원소가 입력된 누적 횟수를 카운팅하기 위한 변수를 서로 연관하여 저장하는 해쉬 테이블을 포함하는 것을 특징으로 하는 근사치 추정 방법.
  3. 제1항에 있어서,
    상기 카운팅하는 단계는,
    상기 0의 값을 갖는 비트의 개수가 기설정된 수 미만인 경우, 상기 읽어온 비트열에서 0의 값을 갖는 비트의 개수를 상기 카운팅 메모리에 포함된 비트들 중 0의 값을 갖는 비트들의 개수의 평균개수와 동일하도록 상기 읽어온 비트열의 비트들의 값을 설정하는 단계
    를 포함하는 것을 특징으로 하는 근사치 추정 방법.
  4. 제1항에 있어서,
    상기 카운팅하는 단계는,
    상기 0의 값을 갖는 비트 중 임의의 비트의 값을 1로 변경하여 상기 원소의 입력을 카운팅하는 것을 특징으로 하는 근사치 추정 방법.
  5. 제1항에 있어서,
    요청된 원소를 상기 추가 메모리에서 검색하는 단계; 및
    상기 요청된 원소가 상기 추가 테이블에 존재하는 경우, 상기 카운팅 메모리에서 상기 주소정보를 이용하여 읽어온 비트열의 1의 개수를 이용하여 카운팅된 횟수 및 상기 요청된 원소와 관련하여 상기 추가 메모리에 누적된 누적 횟수를 이용하여 상기 요청된 원소의 입력된 횟수를 산출하는 단계
    를 더 포함하는 근사치 추정 방법.
  6. 제5항에 있어서,
    상기 요청된 원소가 상기 추가 테이블에 존재하지 않는 경우, 상기 카운팅 메모리에서 상기 주소정보를 이용하여 읽어온 비트열의 1의 개수를 이용하여 카운팅된 횟수를 상기 요청된 원소의 입력된 횟수로 산출하는 단계
    를 더 포함하는 근사치 추정 방법.
  7. 제1항에 있어서,
    상기 해쉬함수를 통해 반환되는 비트열은, 상기 주소정보를 포함하는 첫 번째 정수 및 상기 원소에 대해 저장된 비트열에서 s(s는 자연수)개의 랜덤한 비트위치를 인덱싱하는 s개의 정수를 포함하는 s+1개의 정수로 나뉘어지고,
    상기 저장된 비트열의 비트들 중 상기 s개의 정수를 통해 인덱싱되는 비트들의 열인 가상벡터에서 상기 1의 값을 갖는 비트의 개수와 상기 0의 값을 갖는 비트의 개수가 결정되는 것을 특징으로 하는 근사치 추정 방법.
  8. 중복된 자료 개수의 근사치를 추정하는 근사치 추정 시스템에 있어서,
    원소들에 대한 비트열을 저장하는 카운팅 메모리를 포함하는 적어도 하나의 스토리지 유닛; 및
    적어도 하나의 프로세서
    를 포함하고,
    상기 적어도 하나의 프로세서는,
    입력된 원소를 파라미터로 이용하는 해쉬함수를 통해 상기 원소의 주소정보를 획득하는 과정;
    상기 주소정보를 이용하여 상기 카운팅 메모리에서 상기 원소에 대해 저장된 비트열을 읽어오는 과정;
    상기 읽어온 비트열에서 1의 값을 갖는 비트의 개수를 이용하여 상기 원소가 입력된 횟수를 카운팅하되, 0의 값을 갖는 비트의 개수가 기설정된 수 미만인 경우, 상기 원소에 대해 동적으로 할당되어 상기 적어도 하나의 스토리지 유닛에 포함되는 추가 메모리에 상기 원소가 입력된 횟수를 누적한 누적 횟수를 더 이용하여 상기 원소가 입력된 횟수를 카운팅하는 과정
    을 처리하는 것을 특징으로 하는 근사치 추정 시스템.
  9. 제8항에 있어서,
    상기 추가 메모리는, 상기 원소의 식별자와 상기 원소가 입력된 누적 횟수를 카운팅하기 위한 변수를 서로 연관하여 저장하는 해쉬 테이블을 포함하는 것을 특징으로 하는 근사치 추정 시스템.
  10. 제8항에 있어서,
    상기 해쉬함수를 통해 반환되는 비트열은, 상기 주소정보를 포함하는 첫 번째 정수 및 상기 원소에 대해 저장된 비트열에서 s(s는 자연수)개의 랜덤한 비트위치를 인덱싱하는 s개의 정수를 포함하는 s+1개의 정수로 나뉘어지고,
    상기 저장된 비트열의 비트들 중 상기 s개의 정수를 통해 인덱싱되는 비트들의 열인 가상벡터에서 상기 1의 값을 갖는 비트의 개수와 상기 0의 값을 갖는 비트의 개수가 결정되는 것을 특징으로 하는 근사치 추정 시스템.
KR1020130125370A 2013-07-17 2013-10-21 중복된 자료 개수의 근사치를 추정하는 방법 및 시스템 KR101543855B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130125370A KR101543855B1 (ko) 2013-10-21 2013-10-21 중복된 자료 개수의 근사치를 추정하는 방법 및 시스템
PCT/KR2014/001148 WO2015008913A1 (ko) 2013-07-17 2014-02-12 멀티셋의 개별 원소의 개수를 카운팅하는 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130125370A KR101543855B1 (ko) 2013-10-21 2013-10-21 중복된 자료 개수의 근사치를 추정하는 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20150045732A true KR20150045732A (ko) 2015-04-29
KR101543855B1 KR101543855B1 (ko) 2015-08-25

Family

ID=53037587

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130125370A KR101543855B1 (ko) 2013-07-17 2013-10-21 중복된 자료 개수의 근사치를 추정하는 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR101543855B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019107608A1 (ko) * 2017-11-29 2019-06-06 주식회사 더볼터 데이터 집합을 카운팅하는 방법 및 시스템

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8266506B2 (en) 2009-04-18 2012-09-11 Alcatel Lucent Method and apparatus for multiset membership testing using combinatorial bloom filters

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019107608A1 (ko) * 2017-11-29 2019-06-06 주식회사 더볼터 데이터 집합을 카운팅하는 방법 및 시스템

Also Published As

Publication number Publication date
KR101543855B1 (ko) 2015-08-25

Similar Documents

Publication Publication Date Title
US11269834B2 (en) Detecting quasi-identifiers in datasets
US9223829B2 (en) Interdistinct operator
US8200915B2 (en) Management of very large streaming data sets for efficient writes and reads to and from persistent storage
US8824337B1 (en) Alternate directions in hierarchical road networks
US10127254B2 (en) Method of index recommendation for NoSQL database
CN110083475B (zh) 一种异常数据的检测方法及装置
CN109783547B (zh) 一种相似性连接查询方法及装置
WO2005109285A2 (en) Configurational density process and structure
CN110062922A (zh) 流处理系统和方法
CN104424361A (zh) 自动定义热存储和大工作负载
JP5367632B2 (ja) 知識量推定装置及びプログラム
KR101543855B1 (ko) 중복된 자료 개수의 근사치를 추정하는 방법 및 시스템
KR101693108B1 (ko) 읽기 성능 개선을 위한 티-트리 인덱스를 이용한 데이터베이스 읽기 방법 및 그 장치
CN107368281B (zh) 一种数据处理方法及装置
KR101543841B1 (ko) 멀티셋의 개별 원소의 개수를 카운팅하는 방법 및 시스템
JP6784096B2 (ja) データ分配プログラム、データ分配方法、およびデータ分配装置
JP5818740B2 (ja) テキストデータストリームに含まれるアイテムの中から出現頻度の高いアイテムを特定する方法、装置及びコンピュータプログラム
CN110019783A (zh) 属性词聚类方法及装置
US9342511B2 (en) Fast selection in hardware or software
US10404276B1 (en) Stable variable-length order-preserving encoding scheme
CN113962156B (zh) 基于矩阵分解模型的剪枝方法、装置、设备、存储介质
JP2016184213A (ja) 数値データを匿名化する方法及び数値データ匿名化サーバ
US10037148B2 (en) Facilitating reverse reading of sequentially stored, variable-length data
CN112612415B (zh) 一种数据处理方法、装置、电子设备及存储介质
JP5953262B2 (ja) データ索引装置、データ索引方法及びプログラム

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant