YaChudo

Count–min sketch

Переглядів: 0. Оновлено 14.11.2026.


В інформатиці count–min sketch (CM-ескіз; англ. count–min sketch) — це імовірнісна структура даних, що слугує таблицею частот подій у потоці даних. Вона використовує геш-функції для відображення подій у частоти, але, на відміну від геш-таблиці, займає лише сублінійний обсяг пам'яті — ціною того, що частоти деяких подій завищуються через колізії. Count–min sketch винайшли 2003 року Ґрем Кормоуд (Graham Cormode) і С. Муту Мутукрішнан (S. Muthu Muthukrishnan), а описали його в статті 2005 року.

Count–min sketch — це альтернатива до count sketch та AMS sketch; його можна вважати реалізацією лічильникового фільтра Блума. Проте їх використовують по-різному: count–min sketch зазвичай має сублінійну кількість клітинок, тоді як лічильниковий фільтр Блума розмірюють під кількість елементів у множині.

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

Мета базової версії — споживати потік подій (по одній за раз) і підраховувати частоту різних типів подій. У будь-який момент ескіз можна запитати про частоту конкретного типу події i зі всесвіту типів подій 𝒰; він поверне оцінку, що перебуває на певній відстані від справжньої частоти, з певною ймовірністю.

Сама структура даних — це двовимірний масив з w стовпців і d рядків. З кожним із d рядків пов'язана окрема геш-функція; геш-функції мають бути попарно незалежними. Параметри можна обрати так:

w=⌈e/ε⌉,d=⌈ln⁡(1/δ)⌉

де похибка у відповіді на запит перебуває в межах адитивного фактора ε з імовірністю 1−δ, а e — число Ейлера.

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

Точковий запит

Точковий запит питає про лічильник типу події i. Оцінений лічильник дається найменшим значенням у таблиці:

âi=minjcount[j,hj(i)]

Для кожного i маємо ai≤âi, де ai — справжня частота. Крім того, оцінка гарантує, що âi≤ai+εN з імовірністю 1−δ, де N=∑i∈𝒰ai — розмір потоку.

Скалярний добуток

Запит скалярного добутку оцінює скалярний добуток між гістограмами, представленими двома ескізами. Нехай a⋅b^j=∑k=0wcounta[j,k]⋅countb[j,k]. Тоді скалярний добуток оцінюють як a⋅b^=minja⋅b^j, причому a⋅b≤a⋅b^.

Злиття потоків

Як і count sketch, count–min sketch є лінійним ескізом. Якщо побудувати ескіз на кожному з двох потоків і додати ескізи, результат буде таким самим, як якби потоки спершу конкатенували. Це робить ескіз злиттєздатним і придатним для розподілених середовищ.

Зменшення зсуву та похибки

Звичайний оцінювач-мінімум є зсунутим: ескіз може завищувати, але ніколи не занижує справжній лічильник у точковому запиті. Запропоновано кілька варіацій для усунення зсуву:

  • Оцінювач hCount* — багаторазово випадково обирає d записів і бере мінімум, щоб отримати незсунену оцінку зсуву.
  • Оцінювач максимальної правдоподібності (MLE) — завжди здатен зрівнятися з оцінювачем-мінімумом або перевершити його.
  • Консервативне оновлення — оновлює count[j,hj(i)]←max⁡{count[j,hj(i)],âi+c}. Робить ескіз нелінійним, але він лишається злиттєздатним.

Див. також

Примітки

Посилання


Джерело: стаття у Вікіпедії та історія редагувань (автори).