SlideShare uma empresa Scribd logo
1 de 26
Count Min Sketch
대충 이해하기
charsyam@naver.com
Count 를 위한 확률적 자료구조
IP가 100만개 정도 되는데
Count를 해야 한다면?
IP 개수에 따른 메모리 할당 양
개수 메모리(Redis 에서 계산)
10000 1.64MB
100000 8.69MB
1000000 77.49MB
2000000 123.64MB
IP 개수가 늘어날 수록
메모리 사용량도 늘어난다.
IP는 특정 IP 들이 많을까?
다들 동일한 횟수로 접근할까?
TOP(K)의 Count가 정확해야할 때
Count Min Sketch가 유리
근사한 Count 값을 구하는 것이 목적
계산 시간과 메모리를 적게 사용한다.
필요한 값
d = 몇 개의 hash 함수를 쓸 것인가?
w = 메모리 공간을 얼마나 쓸 것인가?
Count Min Sketch
0 1 2 3 4 5
Hash 1 0 0 0 0 0 0
Hash 2 0 0 0 0 0 0
Hash 3 0 0 0 0 0 0
Hash 4 0 0 0 0 0 0
w : 사용하고자 하는 메모리 공간
d
할당되는 메모리는
w * d * 변수크기
만큼 사용된다.
Hash 는 어떤 hash라도 가능
Hash % w 값으로 나오는 값을 사용
Example
1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 5.5.5.5 6.6.6.6
Hash 1 1 2 1 3 5 4
Hash 2 5 4 3 5 1 3
Hash 3 2 4 5 1 0 2
Hash 4 1 2 2 3 0 4
다음과 같은 해시결과가 나온다고 하자.
Example
그리고 다음과 같은 데이터셋이 있다고 가정한다.
1.1.1.1
2.2.2.2
1.1.1.1
3.3.3.3
1.1.1.1
Example : 1.1.1.1
0 1 2 3 4 5
Hash 1 0 1 0 0 0 0
Hash 2 0 0 0 0 0 1
Hash 3 0 0 1 0 0 0
Hash 4 0 1 0 0 0 0
Hash1(1.1.1.1) = 1
Hash2(1.1.1.1) = 5
Hash3(1.1.1.1) = 2
Hash4(1.1.1.1) = 1
나온 해시 값의 자리를 1 증가시킨다.
Example : 2.2.2.2
0 1 2 3 4 5
Hash 1 0 1 1 0 0 0
Hash 2 0 0 0 0 1 1
Hash 3 0 0 1 0 1 0
Hash 4 0 1 1 0 0 0
Hash1(2.2.2.2) = 2
Hash2(2.2.2.2) = 4
Hash3(2.2.2.2) = 4
Hash4(2.2.2.2) = 2
나온 해시 값의 자리를 1 증가시킨다.
Example : 1.1.1.1
0 1 2 3 4 5
Hash 1 0 2 1 0 0 0
Hash 2 0 0 0 0 1 2
Hash 3 0 0 2 0 1 0
Hash 4 0 2 1 0 0 0
Hash1(1.1.1.1) = 1
Hash2(1.1.1.1) = 5
Hash3(1.1.1.1) = 2
Hash4(1.1.1.1) = 1
나온 해시 값의 자리를 1 증가시킨다.
Example : 3.3.3.3
0 1 2 3 4 5
Hash 1 0 3 1 0 0 0
Hash 2 0 0 0 1 1 2
Hash 3 0 0 2 0 1 1
Hash 4 0 2 2 0 0 0
Hash1(3.3.3.3) = 1
Hash2(3.3.3.3) = 3
Hash3(3.3.3.3) = 5
Hash4(3.3.3.3) = 2
나온 해시 값의 자리를 1 증가시킨다.
Example : 1.1.1.1
0 1 2 3 4 5
Hash 1 0 4 1 0 0 0
Hash 2 0 0 0 1 1 3
Hash 3 0 0 3 0 1 1
Hash 4 0 3 2 0 0 0
Hash1(1.1.1.1) = 1
Hash2(1.1.1.1) = 5
Hash3(1.1.1.1) = 2
Hash4(1.1.1.1) = 1
나온 해시 값의 자리를 1 증가시킨다.
이제 1.1.1.1 의 개수를 세어보자
0 1 2 3 4 5
Hash 1 0 4 1 0 0 0
Hash 2 0 0 0 1 1 3
Hash 3 0 0 3 0 1 1
Hash 4 0 3 2 0 0 0
Hash1(1.1.1.1) = 1
Hash2(1.1.1.1) = 5
Hash3(1.1.1.1) = 2
Hash4(1.1.1.1) = 1
각 자리의 값
(hash1, 1) = 4, (hash2, 5) = 3, (hash3, 2) = 3, (hash4, 1) = 3
즉 4, 3, 3, 3 중에서 가장 작은 MIN 값은 3 이므로 1.1.1.1의 개수는 3이 된다.
이제 3.3.3.3 의 개수를 세어보자
0 1 2 3 4 5
Hash 1 0 4 1 0 0 0
Hash 2 0 0 0 1 1 3
Hash 3 0 0 3 0 1 1
Hash 4 0 3 2 0 0 0
Hash1(3.3.3.3) = 1
Hash2(3.3.3.3) = 3
Hash3(3.3.3.3) = 5
Hash4(3.3.3.3) = 2
각 자리의 값
(hash1, 1) = 4, (hash2, 3) = 1, (hash3, 5) = 1, (hash4, 2) = 2
즉 4, 1, 1, 2 중에서 가장 작은 MIN 값은 1 이므로 3.3.3.3의 개수는 1이 된다.
W가 10000이고 d 가 4라면
4 * 10000 * 4 해서
160kb 정도만 메모리를 사용
160kb 와 77.49MB 중에 큰 것은?
Count Min Sketch 는 해시의 충돌을
감안하고 고정된 크기에서 특정 값의
개수를 근사치로 구하는 방법
Count Min Sketch
실제 값 <= 근사치 값
이 성립한다.
(해시 충돌이 일어나면
다른 것의 값이 더해질 수 있으므로)
w와 d를 늘리면 좀 더 충돌이 줄어드므로
에러 값이 줄어든다.
근사값이지만, 운이 나쁘면 튀는 값이
위의 원리로 나올 수도 있다.
여러 해시값 들 중에 가장 적은 값을 가지
고 있는 해시의 값이 자신의 근사값이 됨.
감사합니다.

Mais conteúdo relacionado

Mais procurados

검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민종민 김
 
Embulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loaderEmbulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loaderSadayuki Furuhashi
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴Terry Cho
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020Ji-Woong Choi
 
엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나종민 김
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advanceDaeMyung Kang
 
NGINX Back to Basics: Ingress Controller (Japanese Webinar)
NGINX Back to Basics: Ingress Controller (Japanese Webinar)NGINX Back to Basics: Ingress Controller (Japanese Webinar)
NGINX Back to Basics: Ingress Controller (Japanese Webinar)NGINX, Inc.
 
RocksDB detail
RocksDB detailRocksDB detail
RocksDB detailMIJIN AN
 
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교Amazon Web Services Korea
 
Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용흥배 최
 
Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipelineJongho Woo
 
Elasticsearch in Netflix
Elasticsearch in NetflixElasticsearch in Netflix
Elasticsearch in NetflixDanny Yuan
 
EMR 플랫폼 기반의 Spark 워크로드 실행 최적화 방안 - 정세웅, AWS 솔루션즈 아키텍트:: AWS Summit Online Ko...
EMR 플랫폼 기반의 Spark 워크로드 실행 최적화 방안 - 정세웅, AWS 솔루션즈 아키텍트::  AWS Summit Online Ko...EMR 플랫폼 기반의 Spark 워크로드 실행 최적화 방안 - 정세웅, AWS 솔루션즈 아키텍트::  AWS Summit Online Ko...
EMR 플랫폼 기반의 Spark 워크로드 실행 최적화 방안 - 정세웅, AWS 솔루션즈 아키텍트:: AWS Summit Online Ko...Amazon Web Services Korea
 
Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3SANG WON PARK
 
Analyzing 1.2 Million Network Packets per Second in Real-time
Analyzing 1.2 Million Network Packets per Second in Real-timeAnalyzing 1.2 Million Network Packets per Second in Real-time
Analyzing 1.2 Million Network Packets per Second in Real-timeDataWorks Summit
 
Side by Side with Elasticsearch & Solr, Part 2
Side by Side with Elasticsearch & Solr, Part 2Side by Side with Elasticsearch & Solr, Part 2
Side by Side with Elasticsearch & Solr, Part 2Sematext Group, Inc.
 
아름답고 유연한 데이터 파이프라인 구축을 위한 Amazon Managed Workflow for Apache Airflow - 유다니엘 A...
아름답고 유연한 데이터 파이프라인 구축을 위한 Amazon Managed Workflow for Apache Airflow - 유다니엘 A...아름답고 유연한 데이터 파이프라인 구축을 위한 Amazon Managed Workflow for Apache Airflow - 유다니엘 A...
아름답고 유연한 데이터 파이프라인 구축을 위한 Amazon Managed Workflow for Apache Airflow - 유다니엘 A...Amazon Web Services Korea
 
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDBNAVER D2
 

Mais procurados (20)

검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민
 
Embulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loaderEmbulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loader
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advance
 
NGINX Back to Basics: Ingress Controller (Japanese Webinar)
NGINX Back to Basics: Ingress Controller (Japanese Webinar)NGINX Back to Basics: Ingress Controller (Japanese Webinar)
NGINX Back to Basics: Ingress Controller (Japanese Webinar)
 
RocksDB detail
RocksDB detailRocksDB detail
RocksDB detail
 
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교
 
Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용
 
Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipeline
 
Elasticsearch in Netflix
Elasticsearch in NetflixElasticsearch in Netflix
Elasticsearch in Netflix
 
EMR 플랫폼 기반의 Spark 워크로드 실행 최적화 방안 - 정세웅, AWS 솔루션즈 아키텍트:: AWS Summit Online Ko...
EMR 플랫폼 기반의 Spark 워크로드 실행 최적화 방안 - 정세웅, AWS 솔루션즈 아키텍트::  AWS Summit Online Ko...EMR 플랫폼 기반의 Spark 워크로드 실행 최적화 방안 - 정세웅, AWS 솔루션즈 아키텍트::  AWS Summit Online Ko...
EMR 플랫폼 기반의 Spark 워크로드 실행 최적화 방안 - 정세웅, AWS 솔루션즈 아키텍트:: AWS Summit Online Ko...
 
Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3
 
Redis at LINE
Redis at LINERedis at LINE
Redis at LINE
 
Analyzing 1.2 Million Network Packets per Second in Real-time
Analyzing 1.2 Million Network Packets per Second in Real-timeAnalyzing 1.2 Million Network Packets per Second in Real-time
Analyzing 1.2 Million Network Packets per Second in Real-time
 
Side by Side with Elasticsearch & Solr, Part 2
Side by Side with Elasticsearch & Solr, Part 2Side by Side with Elasticsearch & Solr, Part 2
Side by Side with Elasticsearch & Solr, Part 2
 
아름답고 유연한 데이터 파이프라인 구축을 위한 Amazon Managed Workflow for Apache Airflow - 유다니엘 A...
아름답고 유연한 데이터 파이프라인 구축을 위한 Amazon Managed Workflow for Apache Airflow - 유다니엘 A...아름답고 유연한 데이터 파이프라인 구축을 위한 Amazon Managed Workflow for Apache Airflow - 유다니엘 A...
아름답고 유연한 데이터 파이프라인 구축을 위한 Amazon Managed Workflow for Apache Airflow - 유다니엘 A...
 
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
[124]네이버에서 사용되는 여러가지 Data Platform, 그리고 MongoDB
 
Redis
RedisRedis
Redis
 

Mais de DaeMyung Kang

How to use redis well
How to use redis wellHow to use redis well
How to use redis wellDaeMyung Kang
 
The easiest consistent hashing
The easiest consistent hashingThe easiest consistent hashing
The easiest consistent hashingDaeMyung Kang
 
How to name a cache key
How to name a cache keyHow to name a cache key
How to name a cache keyDaeMyung Kang
 
Integration between Filebeat and logstash
Integration between Filebeat and logstash Integration between Filebeat and logstash
Integration between Filebeat and logstash DaeMyung Kang
 
Data Engineering 101
Data Engineering 101Data Engineering 101
Data Engineering 101DaeMyung Kang
 
How To Become Better Engineer
How To Become Better EngineerHow To Become Better Engineer
How To Become Better EngineerDaeMyung Kang
 
Kafka timestamp offset_final
Kafka timestamp offset_finalKafka timestamp offset_final
Kafka timestamp offset_finalDaeMyung Kang
 
Kafka timestamp offset
Kafka timestamp offsetKafka timestamp offset
Kafka timestamp offsetDaeMyung Kang
 
Data pipeline and data lake
Data pipeline and data lakeData pipeline and data lake
Data pipeline and data lakeDaeMyung Kang
 
Internet Scale Service Arichitecture
Internet Scale Service ArichitectureInternet Scale Service Arichitecture
Internet Scale Service ArichitectureDaeMyung Kang
 
Redis From 2.8 to 4.x(unstable)
Redis From 2.8 to 4.x(unstable)Redis From 2.8 to 4.x(unstable)
Redis From 2.8 to 4.x(unstable)DaeMyung Kang
 
Redis From 2.8 to 4.x
Redis From 2.8 to 4.xRedis From 2.8 to 4.x
Redis From 2.8 to 4.xDaeMyung Kang
 

Mais de DaeMyung Kang (20)

Ansible
AnsibleAnsible
Ansible
 
Why GUID is needed
Why GUID is neededWhy GUID is needed
Why GUID is needed
 
How to use redis well
How to use redis wellHow to use redis well
How to use redis well
 
The easiest consistent hashing
The easiest consistent hashingThe easiest consistent hashing
The easiest consistent hashing
 
How to name a cache key
How to name a cache keyHow to name a cache key
How to name a cache key
 
Integration between Filebeat and logstash
Integration between Filebeat and logstash Integration between Filebeat and logstash
Integration between Filebeat and logstash
 
Data Engineering 101
Data Engineering 101Data Engineering 101
Data Engineering 101
 
How To Become Better Engineer
How To Become Better EngineerHow To Become Better Engineer
How To Become Better Engineer
 
Kafka timestamp offset_final
Kafka timestamp offset_finalKafka timestamp offset_final
Kafka timestamp offset_final
 
Kafka timestamp offset
Kafka timestamp offsetKafka timestamp offset
Kafka timestamp offset
 
Data pipeline and data lake
Data pipeline and data lakeData pipeline and data lake
Data pipeline and data lake
 
Redis acl
Redis aclRedis acl
Redis acl
 
Coffee store
Coffee storeCoffee store
Coffee store
 
Scalable webservice
Scalable webserviceScalable webservice
Scalable webservice
 
Number system
Number systemNumber system
Number system
 
Internet Scale Service Arichitecture
Internet Scale Service ArichitectureInternet Scale Service Arichitecture
Internet Scale Service Arichitecture
 
Bloomfilter
BloomfilterBloomfilter
Bloomfilter
 
Redis From 2.8 to 4.x(unstable)
Redis From 2.8 to 4.x(unstable)Redis From 2.8 to 4.x(unstable)
Redis From 2.8 to 4.x(unstable)
 
Redis From 2.8 to 4.x
Redis From 2.8 to 4.xRedis From 2.8 to 4.x
Redis From 2.8 to 4.x
 
Soma search
Soma searchSoma search
Soma search
 

Último

A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 

Último (6)

A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 

Count min sketch

  • 1. Count Min Sketch 대충 이해하기 charsyam@naver.com
  • 2. Count 를 위한 확률적 자료구조
  • 3. IP가 100만개 정도 되는데 Count를 해야 한다면?
  • 4. IP 개수에 따른 메모리 할당 양 개수 메모리(Redis 에서 계산) 10000 1.64MB 100000 8.69MB 1000000 77.49MB 2000000 123.64MB IP 개수가 늘어날 수록 메모리 사용량도 늘어난다.
  • 5. IP는 특정 IP 들이 많을까? 다들 동일한 횟수로 접근할까?
  • 6. TOP(K)의 Count가 정확해야할 때 Count Min Sketch가 유리
  • 7. 근사한 Count 값을 구하는 것이 목적 계산 시간과 메모리를 적게 사용한다.
  • 8. 필요한 값 d = 몇 개의 hash 함수를 쓸 것인가? w = 메모리 공간을 얼마나 쓸 것인가?
  • 9. Count Min Sketch 0 1 2 3 4 5 Hash 1 0 0 0 0 0 0 Hash 2 0 0 0 0 0 0 Hash 3 0 0 0 0 0 0 Hash 4 0 0 0 0 0 0 w : 사용하고자 하는 메모리 공간 d 할당되는 메모리는 w * d * 변수크기 만큼 사용된다.
  • 10. Hash 는 어떤 hash라도 가능 Hash % w 값으로 나오는 값을 사용
  • 11. Example 1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 5.5.5.5 6.6.6.6 Hash 1 1 2 1 3 5 4 Hash 2 5 4 3 5 1 3 Hash 3 2 4 5 1 0 2 Hash 4 1 2 2 3 0 4 다음과 같은 해시결과가 나온다고 하자.
  • 12. Example 그리고 다음과 같은 데이터셋이 있다고 가정한다. 1.1.1.1 2.2.2.2 1.1.1.1 3.3.3.3 1.1.1.1
  • 13. Example : 1.1.1.1 0 1 2 3 4 5 Hash 1 0 1 0 0 0 0 Hash 2 0 0 0 0 0 1 Hash 3 0 0 1 0 0 0 Hash 4 0 1 0 0 0 0 Hash1(1.1.1.1) = 1 Hash2(1.1.1.1) = 5 Hash3(1.1.1.1) = 2 Hash4(1.1.1.1) = 1 나온 해시 값의 자리를 1 증가시킨다.
  • 14. Example : 2.2.2.2 0 1 2 3 4 5 Hash 1 0 1 1 0 0 0 Hash 2 0 0 0 0 1 1 Hash 3 0 0 1 0 1 0 Hash 4 0 1 1 0 0 0 Hash1(2.2.2.2) = 2 Hash2(2.2.2.2) = 4 Hash3(2.2.2.2) = 4 Hash4(2.2.2.2) = 2 나온 해시 값의 자리를 1 증가시킨다.
  • 15. Example : 1.1.1.1 0 1 2 3 4 5 Hash 1 0 2 1 0 0 0 Hash 2 0 0 0 0 1 2 Hash 3 0 0 2 0 1 0 Hash 4 0 2 1 0 0 0 Hash1(1.1.1.1) = 1 Hash2(1.1.1.1) = 5 Hash3(1.1.1.1) = 2 Hash4(1.1.1.1) = 1 나온 해시 값의 자리를 1 증가시킨다.
  • 16. Example : 3.3.3.3 0 1 2 3 4 5 Hash 1 0 3 1 0 0 0 Hash 2 0 0 0 1 1 2 Hash 3 0 0 2 0 1 1 Hash 4 0 2 2 0 0 0 Hash1(3.3.3.3) = 1 Hash2(3.3.3.3) = 3 Hash3(3.3.3.3) = 5 Hash4(3.3.3.3) = 2 나온 해시 값의 자리를 1 증가시킨다.
  • 17. Example : 1.1.1.1 0 1 2 3 4 5 Hash 1 0 4 1 0 0 0 Hash 2 0 0 0 1 1 3 Hash 3 0 0 3 0 1 1 Hash 4 0 3 2 0 0 0 Hash1(1.1.1.1) = 1 Hash2(1.1.1.1) = 5 Hash3(1.1.1.1) = 2 Hash4(1.1.1.1) = 1 나온 해시 값의 자리를 1 증가시킨다.
  • 18. 이제 1.1.1.1 의 개수를 세어보자 0 1 2 3 4 5 Hash 1 0 4 1 0 0 0 Hash 2 0 0 0 1 1 3 Hash 3 0 0 3 0 1 1 Hash 4 0 3 2 0 0 0 Hash1(1.1.1.1) = 1 Hash2(1.1.1.1) = 5 Hash3(1.1.1.1) = 2 Hash4(1.1.1.1) = 1 각 자리의 값 (hash1, 1) = 4, (hash2, 5) = 3, (hash3, 2) = 3, (hash4, 1) = 3 즉 4, 3, 3, 3 중에서 가장 작은 MIN 값은 3 이므로 1.1.1.1의 개수는 3이 된다.
  • 19. 이제 3.3.3.3 의 개수를 세어보자 0 1 2 3 4 5 Hash 1 0 4 1 0 0 0 Hash 2 0 0 0 1 1 3 Hash 3 0 0 3 0 1 1 Hash 4 0 3 2 0 0 0 Hash1(3.3.3.3) = 1 Hash2(3.3.3.3) = 3 Hash3(3.3.3.3) = 5 Hash4(3.3.3.3) = 2 각 자리의 값 (hash1, 1) = 4, (hash2, 3) = 1, (hash3, 5) = 1, (hash4, 2) = 2 즉 4, 1, 1, 2 중에서 가장 작은 MIN 값은 1 이므로 3.3.3.3의 개수는 1이 된다.
  • 20. W가 10000이고 d 가 4라면 4 * 10000 * 4 해서 160kb 정도만 메모리를 사용 160kb 와 77.49MB 중에 큰 것은?
  • 21. Count Min Sketch 는 해시의 충돌을 감안하고 고정된 크기에서 특정 값의 개수를 근사치로 구하는 방법
  • 22. Count Min Sketch 실제 값 <= 근사치 값 이 성립한다. (해시 충돌이 일어나면 다른 것의 값이 더해질 수 있으므로)
  • 23. w와 d를 늘리면 좀 더 충돌이 줄어드므로 에러 값이 줄어든다.
  • 24. 근사값이지만, 운이 나쁘면 튀는 값이 위의 원리로 나올 수도 있다.
  • 25. 여러 해시값 들 중에 가장 적은 값을 가지 고 있는 해시의 값이 자신의 근사값이 됨.