Применение HyperLogLog к выборке населения

Алгоритм HyperLogLog, разработанный Flajolet et al., описывает умный способ оценки кардинальности установить, используя лишь небольшой объем памяти. Однако при расчете он учитывает все N элементов исходного набора. Что, если бы у нас был доступ только к небольшой случайной выборке (скажем, 10%) исходного N? Проводились ли какие-либо исследования того, как HyperLogLog или подобные алгоритмы можно адаптировать к этой ситуации?

Я знаю, что это, по существу, проблема, описанная как оценка различных значений, для которой существует множество исследований (см., например, данный документ для обзора). Однако известное мне исследование оценки отдельных значений использует ряд специальных оценок, сильно отличающихся от подхода, используемого HyperLogLog. Поэтому мне интересно, думал ли кто-нибудь уже об адаптации HyperLogLog к проблеме оценки отдельных значений.


person Jon Smark    schedule 25.11.2012    source источник
comment
Я считаю, что было бы лучше опубликовать это на stats.stackexchange.com.   -  person Lior Kogan    schedule 07.12.2012


Ответы (2)


Однако известное мне исследование оценки отдельных значений использует ряд специальных оценок, сильно отличающихся от подхода, используемого HyperLogLog.

Да потому что они решают совсем другую задачу.

Предположим, вы только что конфисковали тайник с 1 000 000 поддельных долларовых банкнот и хотите узнать количество различных серийных номеров.

Выбрав 100 000 из них (используя HyperLogLog, поскольку ваша старинная паровая счетная машина имеет всего 1 КБ памяти), вы подсчитываете 5000 различных серийных номеров, каждый из которых встречается где-то около 20 раз. Тогда вы можете быть уверены, что весь тайник будет содержать лишь немногим более 5000 различных серийных номеров.

Теперь предположим, что 1 серийный номер встречается 95,001 раз, а 4999 серийных номеров встречаются только один раз. Очевидно, какие-то настоящие банкноты попали в ваш тайник. Теперь вы можете быть уверены, что в тайнике содержится около 5% честных банкнот, так что весь тайник содержит около 50 000 различных серийных номеров.

Обратите внимание, что распределение частот в вашей выборке используется для вывода о распределении во всем тайнике. На самом деле это упоминается как один из "специальных" (ваши слова) методов во втором документе. вы цитируете («Оценка количества различных значений (..) на основе выборки»):

Идея параметрической оценки заключается в подгонке распределения вероятностей к наблюдаемым относительным частотам различных значений атрибутов.

Также обратите внимание, что результаты HyperLogLog и подобных методов совершенно нечувствительны к распределению выборок по их значениям. Но ваша окончательная оценка, видимо, очень сильно зависит от этого!

Мой совет: используйте метод по вашему выбору (например, HyperLogLog) для подсчета количества различных значений в вашей выборке, а затем используйте один из методов в «Оценке на основе выборки», чтобы оценить количество значений. во всем мультинаборе или используйте свои предварительные знания о распределении мультинабора для расчета оценки (возможно, вы видели печатный станок фальшивомонетчиков и знаете, что он может печатать только один серийный номер)

person Hans Lub    schedule 06.12.2012

Поиск по цитированию — замечательная вещь. Я не очень хорошо знаком с двумя поставленными задачами, поэтому этот документ может быть не совсем тем, что вы имели в виду. По крайней мере, они наверняка говорят о HyperLogLog и его связи с проблемой, так что, возможно, это удовлетворит ваше любопытство.

Оптимальный алгоритм для задачи о различных элементах

person FoolishSeth    schedule 01.12.2012
comment
Я был знаком с этой бумагой. Я могу что-то упустить (я только бегло просмотрел это), но алгоритм, описанный в статье, кажется, принадлежит к потоковому классу оценщиков, которые обеспечивают свою оценку на основе всей совокупности, а не только выборки (которая проблема у меня). - person Jon Smark; 03.12.2012