Счетчик мин. Эскиз - Count–min sketch

В вычисление, то count – min эскиз (СМ эскиз) это вероятностный структура данных который служит таблицей частот событий в поток данных. Оно использует хэш-функции отображать события в частоты, но в отличие от хеш-таблица использует только сублинейное пространство, за счет переоценки некоторых событий из-за столкновения. Скетч count – min был изобретен в 2003 г. Грэм Кормод и С. Мутху Мутукришнан[1] и описан ими в статье 2005 года.[2]

Скетчи Count – min по сути представляют собой ту же структуру данных, что и счетные Фильтры Блума представленный в 1998 году Fan et al.[3] Однако они используются по-разному и, следовательно, имеют разные размеры: эскиз с минимальным счетчиком обычно имеет сублинейное количество ячеек, соответствующее желаемому качеству аппроксимации эскиза, в то время как счетный фильтр Блума обычно имеет размер, соответствующий количеству элементов в набор.

Структура данных

Цель базовой версии скетча count – min - потреблять поток событий по одному и подсчитывать частоту различных типов событий в потоке. В любое время в эскизе можно запросить частоту того или иного типа события. я из вселенной типов событий , и вернет оценку этой частоты, которая находится на определенном расстоянии от истинной частоты с определенной вероятностью.[а]

Фактическая структура данных эскиза представляет собой двумерный массив ш колонны и d ряды. Параметры ш и d фиксируются при создании эскиза и определяют потребности во времени и пространстве, а также вероятность ошибки при запросе эскиза для частоты или внутренний продукт. Связанный с каждым из d rows - отдельная хеш-функция; хеш-функции должны быть попарно независимые. Параметры ш и d можно выбрать, установив ш = ⌈е/ε и d = ⌈Ln 1 /δ, где ошибка при ответе на запрос находится в пределах аддитивного коэффициента ε с вероятностью 1 − δ (см. ниже), и е является Число Эйлера.

Когда новое событие типа я поступает обновляем следующим образом: для каждой строки j таблицы, примените соответствующую хеш-функцию, чтобы получить индекс столбца k = часj(я). Затем увеличьте значение в строке j, столбец k одним.

В потоке возможны несколько типов запросов.

  • Самый простой - это точечный запрос, который запрашивает количество типов событий я. Расчетное количество дано наименьшим значением в таблице для я, а именно , куда это таблица.

Очевидно, для каждого я, надо , куда истинная частота, с которой я произошло в потоке.

Кроме того, эта оценка гарантирует, что с вероятностью , куда - это размер потока, то есть общее количество элементов, видимых скетчем.

  • An внутренний запрос продукта просит внутренний продукт между гистограммами, представленными двумя скетчами count – min, и .

Небольшие изменения в структуре данных можно использовать для наброска другой другой статистики потока.

Как и эскиз графа, эскиз графа мин представляет собой линейный эскиз. То есть для двух потоков построение эскиза в каждом потоке и суммирование эскизов дает тот же результат, что и объединение потоков и построение эскиза на объединенных потоках. Это делает скетч объединяемым и подходящим для использования в распределенных настройках в дополнение к потоковым.

Снижение предвзятости и ошибок

Одна потенциальная проблема с обычной оценкой минимума для скетчей count-min заключается в том, что они предвзятые оценки истинной частоты событий: они могут переоценивать, но никогда не недооценивать истинное количество в точечном запросе. Кроме того, хотя оценка минимума работает хорошо, когда распределение сильно искажено, другие эскизы, такие как эскиз подсчета на основе средних, более точны, когда распределение недостаточно искажено. Было предложено несколько вариантов эскиза для уменьшения ошибки и уменьшения или устранения систематической ошибки.[4]

Чтобы убрать предвзятость, hCount * оценщик[5]многократно случайным образом выбирает d случайных записей в эскизе, берет минимум для получения несмещенной оценки смещения и вычитает ее.

Оценка максимального правдоподобия (MLE) была получена в Ting.[6] Используя MLE, оценщик всегда может соответствовать или лучше минимального оценщика и работает хорошо, даже если распределение не искажено. В этой статье также показано, что операция устранения смещения hCount * представляет собой процедуру начальной загрузки, которая может быть эффективно вычислена без случайной выборки и может быть обобщена для любого средства оценки.

Поскольку ошибки возникают из-за хэш-коллизий с неизвестными элементами из вселенной, несколько подходов корректируют столкновения, когда несколько элементов вселенной известны или запрашиваются одновременно. [7][8][6]. Для каждого из них должна быть известна значительная часть Вселенной, чтобы получить значительные преимущества.

Консервативное обновление изменяет обновление, но не алгоритмы запроса. Считать c экземпляры типа события я, сначала вычисляется оценка , затем обновления для каждой строки j. Хотя эта процедура обновления делает эскиз не линейным, его все же можно объединить.

Смотрите также

Примечания

  1. ^ Следующее обсуждение предполагает, что происходят только «положительные» события, то есть частота различных типов не может уменьшаться со временем. Существуют модификации следующих алгоритмов для более общего случая, когда допускается уменьшение частот.

Рекомендации

  1. ^ Кормод, Грэм (2009). «Счетчик-минутка» (PDF). Энциклопедия систем баз данных. Springer. С. 511–516.
  2. ^ Кормод, Грэм; С. Мутукришнан (2005). «Улучшенное резюме потока данных: эскиз Count-Min и его приложения» (PDF). J. Алгоритмы. 55: 29–38. Дои:10.1016 / j.jalgor.2003.12.001.
  3. ^ Фан, Ли; Цао, Пей; Алмейда, Джусара; Бродер Андрей (2000), «Сводный кэш: масштабируемый протокол общего доступа к веб-кэшу», Транзакции IEEE / ACM в сети, 8 (3): 281–293, CiteSeerX  10.1.1.41.1487, Дои:10.1109/90.851975, S2CID  4779754. Предварительная версия появилась на SIGCOMM '98.
  4. ^ Гоял, Амит; Доме, Хэл III; Кормод, Грэм (2012). Эскизные алгоритмы для оценки точечных запросов в НЛП. Proc. EMNLP / CoNLL.
  5. ^ Jin, C .; Qian, W .; Сюй, X .; Чжоу, А. (2003), Динамическое поддержание частых элементов в потоке данных, CiteSeerX  10.1.1.151.5909
  6. ^ а б Тинг, Дэниел (2018). «Счет-Мин»: 2319–2328. Дои:10.1145/3219819.3219975. Цитировать журнал требует | журнал = (помощь)
  7. ^ Дэн, Фань; Рафиэй, Давуд (2007), Новые алгоритмы оценки потоковой передачи данных: Count-min может больше, CiteSeerX  10.1.1.552.1283
  8. ^ Лу, Йи; Монтанари, Андреа; Прабхакар, Баладжи; Дхармапурикар, Саранг; Каббани, Абдул (2008). «Контр косы». Обзор оценки эффективности ACM SIGMETRICS. 36 (1): 121–132. Дои:10.1145/1384529.1375472. ISSN  0163-5999.

дальнейшее чтение

  • Дворк, Синтия; Наор, Мони; Питасси, Тониан; Rothblum, Guy N .; Еханин, Сергей (2010). Пан-частные алгоритмы потоковой передачи. Proc. ICS. CiteSeerX  10.1.1.165.5923.
  • Шехтер, Стюарт; Херли, Кормак; Митценмахер, Майкл (2010). Популярность - это все: новый подход к защите паролей от атак по подбору статистических данных. Семинар USENIX по актуальным вопросам безопасности. CiteSeerX  10.1.1.170.9356.

внешняя ссылка