카운트-민 스케치 크기 계산기
허용 오차 ε와 실패확률 δ를 넣으면 카운트-민 스케치의 폭·깊이와 메모리를 계산합니다. 오차가 항목 빈도가 아니라 스트림 전체 개수에 비례한다는 점을 개수로 환산해 보여 줍니다.
오차 한계가 «전체 개수 × ε»가 됩니다. 폭을 정하는 값입니다.
오차 한계를 못 지킬 확률입니다. 깊이를 정하는 값입니다.
한 항목이 나올 수 있는 최대 횟수를 담을 수 있어야 합니다. 넘치면 값이 뒤집힙니다.
모든 항목의 빈도를 합한 수입니다. 종류 수가 아닙니다.
이 항목에 대한 상대오차를 보려는 값입니다. 0으로 두면 계산하지 않습니다.
필요한 카운터 배열
2,719 × 5
13,595칸 · 53.1KB · 해시 5개
| 오차계수 ε | 폭 | 칸 수 | 메모리 | 오차 한계 |
|---|---|---|---|---|
| 1% | 272 | 1,360 | 5.31KB | +999,368 |
| 0.1% | 2,719 | 13,595 | 53.1KB | +99,974 |
| 0.01% | 27,183 | 135,915 | 531KB | +10,000 |
| 0.001% | 271,829 | 1,359,145 | 5.18MB | +1,000 |
사용 방법
- 1허용 오차계수 ε를 고릅니다. 오차 한계가 «스트림 전체 개수 × ε»가 됩니다.
- 2실패확률 δ를 고릅니다. 그 오차 한계를 못 지킬 확률입니다.
- 3스트림 전체 개수 N을 넣으면 오차 한계가 «몇 회»인지로 환산돼 나옵니다.
- 4관심 항목의 실제 빈도를 넣으면 그 항목에 대한 상대오차 한계를 확인할 수 있습니다.
자주 묻는 질문
폭 w = ⌈e/ε⌉, 깊이 d = ⌈ln(1/δ)⌉입니다. ε는 허용 오차계수, δ는 그 오차를 못 지킬 확률입니다. ε 0.1%·δ 1%면 폭 2,719 × 깊이 5 = 13,595칸이고, 카운터를 4바이트로 두면 53KB 남짓입니다. Cormode–Muthukrishnan(2005)의 원 논문 분석에서 나온 식입니다.
추정값 ≤ 진짜 빈도 + ε·N이며, N은 스트림 전체 개수입니다. 오차 한계가 그 항목의 빈도가 아니라 «전체»에 비례한다는 것이 핵심입니다. N이 1억이고 ε이 0.1%면 어떤 항목이든 최대 10만회까지 부풀 수 있어, 100만회 나온 항목에는 10% 오차지만 500회 나온 항목에는 200배 오차가 됩니다.
사실상 셀 수 없습니다. 오차 한계 ε·N이 그 항목의 빈도보다 크거나 비슷하면 추정값이 실제의 몇 배로 나오기 때문입니다. 그래서 카운트-민 스케치는 자주 나오는 항목(헤비 히터)을 찾는 데만 씁니다. 상대오차를 10% 안으로 두려면 빈도가 오차 한계의 열 배는 넘어야 합니다.
없습니다. 한 칸을 여러 항목이 나눠 쓰므로 남의 몫이 섞여 들어오기만 하고 빠져나가지는 않아, 모든 행의 값이 진짜 빈도 이상입니다. 그중 가장 작은 값을 답으로 삼기 때문에 과대평가만 하고 과소평가는 하지 않습니다. 추정값이 0이면 그 항목은 확실히 한 번도 나오지 않았습니다.
블룸 필터는 있는지 없는지만 답하고, 카운트-민 스케치는 몇 번 나왔는지를 답합니다. 대신 빈도에는 오차가 붙습니다. 두 자료구조 모두 한쪽으로만 틀린다는 성질을 공유합니다 — 블룸 필터는 없는 것을 있다고만 하고, 카운트-민 스케치는 실제보다 크게만 답합니다.
전송되지 않습니다. 모든 계산은 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.
알아두면 좋은 점
- 보장은 확률적입니다. 오차 한계 ε·N을 δ 확률로는 넘길 수 있으며, 여기 나오는 값은 한계이지 실제 오차의 기댓값이 아닙니다. 실제 오차는 대개 이보다 훨씬 작습니다.
- 해시 함수 d개가 서로 독립이라고 가정합니다. 실제로는 pairwise independent 계열의 값싼 해시를 쓰며, 원 논문의 분석도 그 가정에서 성립합니다.
- 카운터가 넘치면 값이 되돌아 추정이 통째로 망가집니다. 한 칸에는 그 칸을 함께 쓰는 여러 항목의 몫이 쌓이므로, 한 항목의 최대 빈도보다 넉넉한 폭을 잡아야 합니다.
- 빼는(감소) 연산이 섞이면 «모든 칸이 진짜 빈도 이상»이라는 전제가 깨져 이 오차 보장이 성립하지 않습니다. 그때는 카운트 스케치(Count Sketch) 같은 다른 구조를 씁니다.
- 메모리 표기는 1024진법입니다(1KB = 1,024바이트). 실제 구현에서는 해시 시드와 부대 자료가 조금 더 듭니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.