확장 가능한 블룸 필터는 어떻게 작동합니까?


15

확장 가능한 블룸 필터를 읽고 있었고 구성 블룸 필터가 채워질 때마다 더 큰 크기의 새로운 블룸 필터가 추가되는 방법을 이해할 수 없었습니다.

초기에 생성 된 필터에서 설정 비트에 기여한 요소는 존재 여부를 찾을 수 없습니다. 아마도 이것에 대한 이해가 틀렸습니까?

기본 블룸 필터를 이해합니다. 그러나 다이내믹 블룸 필터에 머리를 감쌀 수는 없습니다.

답변:


7

내가 얼마나 정육점을 얻을 수 있는지 볼 수있는 기회를 주도록하겠습니다. :-)

따라서 시작하려면 유한 확률로 최대 오 탐률을 갖는 유한 요소 수를 허용하는 일반 블룸 필터를 만들 수 있어야합니다. 확장 가능한 구현을 빌드하기 전에 이러한 기능을 기본 필터에 추가해야합니다.

확률을 제어하고 최적화하기 전에 주어진 블룸 필터 크기에 대한 확률이 무엇인지 알아 봅시다.

먼저 각 해시 함수를 나타내는 k 개의 비트 조각을 얻기 위해 우리가 보유한 해시 함수 수 (총 비트 수 / 해시 함수 수 = 슬라이스)로 비트 필드를 분할하므로 모든 요소는 항상 k 비트로 설명됩니다.

슬라이스 수 또는 슬라이스 당 비트 수를 늘리면 오 탐지 확률이 줄어 듭니다.

또한 요소가 추가되면 더 많은 비트가 1로 설정되므로 오 탐지가 증가합니다. 이것을 각 슬라이스의 "채우기 비율"이라고합니다.

필터가 많은 양의 데이터를 보유 할 때이 필터에 대한 오 탐지 확률이 슬라이스 수로 증가 된 채우기 비율이라고 가정 할 수 있습니다 (비율을 사용하는 대신 실제로 비트 수를 세는 경우, 반복 문제가있는 순열).

블룸 필터에서 오 탐지 확률을 선택하는 방법을 어떻게 알 수 있습니까? 슬라이스 수를 변경할 수 있습니다 (채우기 비율에 영향을 미침).

얼마나 많은 슬라이스를 가져야하는지 파악하기 위해 슬라이스에 대한 최적의 채우기 비율을 알아내는 것부터 시작합니다. 채우기 비율은 1 인 슬라이스의 비트 수와 0 인 비트 수에 의해 결정되므로 각 비트가 (100 %-(슬라이스의 1 / 비트) 확률로 설정되지 않은 상태로 유지됨을 확인할 수 있습니다. ). 여러 항목을 삽입 할 예정이므로 평판 문제가있는 다른 순열이 있고 예상 채우기 비율로 항목을 확장합니다.이 비율은 (100 %-((100 %-(1 / 비트 조각)) ^ "요소 삽입")). 음, 이것은 다른 방정식과 매우 유사하다는 것이 밝혀졌습니다. 이 논문에서 그들은 필 비율을 다른 방정식과 관련시켜 테일러 시리즈 (1-e ^ (-n / m))에 잘 맞습니다. 이것으로 약간의 퍼징을 한 후에, 최적의 채우기 비율이 항상 약 50 %라는 것이 밝혀졌습니다.

따라서 필터 확률은 슬라이스 수로 증가 된 채우기 비율이므로 50 %를 채우고 P = (50 %) ^ k 또는 k = log_2 (1 / P)를 얻을 수 있습니다. 그런 다음이 함수를 사용하여 확장 가능한 블룸 필터의 필터 목록에서 지정된 필터에 대해 생성해야하는 슬라이스 수를 계산할 수 있습니다.

    def slices_count(false_positive_probability):
        return math.ceil(math.log(1 / false_positive_probability, 2))

편집 : 이 글을 쓴 후 TAoCP Vol 1, 442-445 페이지의 버디 시스템 기반 동적 메모리 할당을 읽을 때 "50 % 규칙"에 대해 언급했습니다. -e ^ (-n / m)). Knuth는 또한 개념에 대한 약간의 배경 지식과 함께 "재검토 된 50 % 규칙"이라는 논문을 참조합니다 ( pdf here ).


이 논문에는 블룸 필터에 대한 설명이 없으므로이 "50 % 규칙"에 대한 근거는 없습니다. 우선, "50 % 규칙"은 실제 모듈의 설계 기준을 넘어서는 여러 가지 고려 사항이 포함되어 있기 때문에 사람들의 관심을 끄는 사람들의 중심이 될 것입니다.
Jeff Burdges

1
안녕하세요 @JeffBurdges, 두 개념이 너무 유사하다는 것이 궁금하지 않습니까?
Jon Bringhurst

4

필터가 true를 반환하면 항목이 확장 가능한 블룸 필터에 있습니다. 따라서 이전 항목에 대한 멤버십 쿼리에 영향을주지 않고 필터를 추가 할 수 있습니다.

최악의 경우 오 탐지를 보장하기 위해 새 필터에는 오 탐지율이 추가되어 기하학적으로 줄어 듭니다. 예를 들어, 첫 번째 필터는 위양성 비율 p, 두 번째 rp, 세 번째 r^2p등을가집니다. 확장 가능한 블룸 필터에 대한 위양성 확률은 다음과 같이 union bound :에 의해 제한됩니다 sum_{k>=0} r^k p = p/(1-r).


3
이 공식에서 'r'은 무엇을 나타 냅니까?
zslayton

1

확장 가능한 블룸 필터를 읽고 있었고 구성 블룸 필터가 채워질 때마다 더 큰 크기의 새로운 블룸 필터가 추가되는 방법을 이해할 수 없었습니다.

초기에 생성 된 필터에서 설정 비트에 기여한 요소는 존재 여부를 찾을 수 없습니다. 아마도 이것에 대한 이해가 틀렸습니까?

안녕하세요,
기본 아이디어는 첫 번째 레벨 필터의 비트 필드가 포화 될 때까지 첫 번째 필터에 추가하는 것입니다. 않는 포화되고 있지 모든 비트를 사용하는 것을 의미하지만 필터가 추가 항목이 너무 많은 잘못된 반응을 만드는 것이 너무 많은 항목이 포함 된 것을 의미한다.

포화 시점부터 모든 새 항목이 포화 필터에 추가되지 않고 신선하고 더 큰 하위 필터 (두 번째 수준 필터)에 추가됩니다.

값을 찾으려면 첫 번째 레벨 필터에서 값을 찾아보고 찾을 수 없으면 두 번째 레벨 필터에서 값을 찾으십시오. 이러한 필터 중 하나에서 찾을 수 있으면 필터에 "알려진 것"입니다 (Bloom 필터의 특성으로 인해 오 탐지가 발생할 수 있음). 필터에서 값을 찾을 수 없으면 필터가 해당 값을 보지 못한 것입니다. 물론 이것은 재귀 데이터 구조로 표현 될 수 있습니다.

Java로 확장 가능한 Bloom 필터 구현과 작동 방법에 대한 설명이 포함 된 내 블로그 게시물 을 읽고 싶을 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.