Дан фильтр Блума размером N битов и K хэш-функций, из которых установлены M-биты (где M <= N) фильтра.
Можно ли приблизить количество элементов, вставленных в фильтр Блума?
Простой пример
Я обдумывал следующий пример, предполагая, что BF состоит из 100 битов и 5 хэш-функций, где установлены 10 битов ...
В лучшем случае: если предположить, что хеш-функции действительно идеальны и однозначно отображают бит для некоторого числа значений Х, то, учитывая, что 10-битные значения установлены, мы можем сказать, что в BF было вставлено только 2 элемента.
В худшем случае: если предположить, что хэш-функции плохие и постоянно отображаются в один и тот же бит (но уникальны друг для друга), то можно сказать, что в BF было вставлено 10 элементов.
Похоже, что диапазон [2,10], где значение about в этом диапазоне, вероятно, определяется ложноположительной вероятностью фильтра - я застрял в этой точке.
источник
Ответы:
Да. Из Википедии :
Если вы вставили элементы в фильтр размера n с использованием k хеш-функций, вероятность того, что определенный бит по-прежнему равен 0, равная N К
Вы можете измерить эту вероятность как пропорцию 0 бит в вашем фильтре. Решение для даетя
Я использовал это на практике, и пока ваш фильтр не превышает его емкость, ошибка обычно составляет менее 0,1% для фильтров до миллионов битов. Поскольку фильтр превышает его емкость, ошибка, конечно, возрастает.
источник
Если вы предполагаете, что для каждой хэш-функции для каждого объекта бит задан равномерно случайным образом, и у вас есть счетчик количества установленных битов, вы должны иметь возможность ограничить вероятность того, что количество вставленных объектов было в определенном диапазоне, возможно, с использованием формулировки шаров и бункеров. Каждый бит является ячейкой, и он устанавливается, если в нем есть хотя бы 1 шарик, каждый вставленный объект бросает шариков, где k - количество хеш-функций, а n k - количество шариков, брошенных после вставки n объектов. , Учитывая , что б бункеров, по крайней мере , 1 мяч в них, что вероятность того, что по крайней мере , т шары были брошены? Я думаю, что здесь вы можете использовать тот факт, что:К К н к N б T
Но проблема с такой формулировкой состоит в том, что я не вижу простого способа вычислить P ( t ) или P ( b ) , но найти значение t, которое максимизирует эту вероятность, не должно быть слишком сложно.
источник
Интересный вопрос, давайте рассмотрим некоторые конкретные случаи.
Пусть ключи, п о п биты, п т о т а л биты в полных и м элементов , вставленных. Сначала мы будем пытаться найти функцию P ( K , п О п , п т о т л , м ) , которая является вероятностью состояние , наступающее.К Nо п Nт о т л м п( к , но п, нт о т л, м )
Если , то Р ( к , п о п , п т о т л , м ) должен быть 0 , то есть , это невозможно.к м < по п п( к , но п, нт о т л, м ) 0
Если , то мы ищем вероятность того, что k m хэшей попадут в одно и то же ведро, и первое может пометить, куда должны идти другие. Итак, мы хотим найти вероятность того, что k m - 1 хэшей попадет в конкретный сегмент.Nо п= 1 к м к м - 1
Это действительно простые случаи закончились. Если то мы хотим найти вероятность того, что k m хэшей попадет в 2 разных сегмента, и по крайней мере 1 попадет в каждое. Есть п т о т л ( н т о т л - 1 ) пара ведер и вероятность того , что хеши земли в каком - либо конкретной 2 является ( 2 / п т о т л ) к мNо п= 2 к м 2 1 ntotal(ntotal−1) 2 (2/ntotal)km таким образом, вероятность того, что хэши попадут в блока, равна:2
Мы уже знаем вероятность того, что они упадут в ведро, поэтому давайте вычтем это, чтобы дать вероятность того, что они упадут ровно в 2 .1 2
Я думаю, что мы можем обобщить это сейчас.
Я не совсем уверен, как сделать эту формулу более поддающейся вычислению. Наивно реализованный, он привел бы к экспоненциальному времени выполнения, хотя с помощью запоминания тривиально добиться линейного времени. Тогда это всего лишь случай нахождения наиболее вероятного . Мой инстинкт говорит, что будет один пик, так что может быть возможно найти его очень быстро, но наивно, вы определенно можете найти наиболее вероятный m в O ( n 2 ) .m O(n2)
источник
n choose k
Предположим, что хэши распределены равномерно.
Переписывание:
источник
Ключевой идеей является приблизительное ожидание числа нулевого бита.
Тогда ожидание нулевых битовых чисел должно быть:
источник
Вероятность того, что конкретный бит равен 1 после n вставок, равна: P = 1 - (1 - 1 / m) ^ (kn)
Пусть X_i - дискретная случайная величина, равная 1, если бит в i-й позиции равен 1, а в противном случае - 0. Пусть X = X_1 + X_2 + .... + X_m. Тогда E [X] = m * P.
Если общее число установленных битов равно S, то: E [X] = S, что подразумевает m * P = S. Это можно решить для n.
источник