日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Bloom Filter 和 Count-Min Sketch 介绍

發布時間:2023/12/20 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Bloom Filter 和 Count-Min Sketch 介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Bloom Filter

introduction

首先,我們假設有四種存儲設備,分別是 Tape, HDD, SSD, Memory.當然,我們知道,這四種設備的響應速度是按順序遞增的,也就是說 Memory 的速度最快,當然,我們都希望所有的程序都可以跑在 Memory 中,但是這四種設備的存儲大小即容量也是不一樣的,價格也是隨之遞增的.Ex .g 當我們在 Java 中使用 Set 類型去存儲數據的時候,數據越多,查詢所需的時間越長,同時 Jvm heap 也越大.實際生產環境中的數據量極大,在一些實時性要求比較高的應用當中,不可能將所有的數據都放在 Memory 中,當允許一定的誤差的情況下,(即使用準確性去換取實時性,這是一種 tradeoff)這里就提出了,一種 Probabilistic data structure,它可以在一定程度上去接受一定的誤差,從而使響應速度加快,所要存儲的數據也大大縮小.

Bloom Filter 的概念提出的比較早,早在1970年就由一個叫 Bloom(真的叫這個名字)的人在一篇名為"Space / Time trade-offs in hash coding with allowable errors"

structure

  • Initial the structure

  • Add an element to this structure

  • query 判斷存在還是不存在

  • If one hash function map to 0, It means NO!( 有一個 map 到0 就不行)
    But if all hash functions map to 1, it means maybe YES(即使 所有的 hash 函數都能 map 到1, 也不能說明就一定存在, 這里有一定的 false positive, 即認為是正確的,但實際上不是正確的概率)

    use cases

  • one hit wonders
  • avoiding lookups
  • real-time matching
  • Count-Min Sketch

    introduction

    Count-min Sketch 是一個概率數據結構,用作數據流中事件的頻率表。它使用散列函數將事件映射到頻率,但與散列表不同,散列表僅使用子線性空間,但會因過多計算沖突導致的某些事件。

    Count-min Sketch 本質上與 Fan 等人在 1998 年引入的計數 Bloom filter 相同的數據結構. 但是,它們的使用方式各不相同,因此尺寸也有所不同:計數最小草圖通常具有次線性單元數,與草圖的所需近似質量有關,而計數 Bloom filter 的大小通常與其中的元素數集合。

    Main aim is to count things, how many times have i seen an element

    structure

    實際的草圖數據結構是 w 列和 d 行的二維數組。參數 w 和 d 在創建草圖時是固定的,并確定時間和空間需求以及在查詢頻率或內部產品草圖時的錯誤概率。與每個 d 行相關聯的是一個單獨的散列函數; 哈希函數必須是成對獨立的。參數 w 和 d 可以通過設置 w =?e/ε?和 d =?ln1 /δ?來選擇,其中在回答查詢時的誤差在概率為 1 - δ的附加系數ε內(見下文) ,e 是歐拉數。

  • 結構圖

  • 對于 Hash Function 的要求,可以是最簡單的 hash function ,但所有的 hash function 必須不同.

  • 添加元素
    當一個新的類型 i 事件到達時,我們更新如下:對于表中的每一行 j,應用相應的散列函數來獲得列索引 k = hj(i)。然后將第 j 行第 k 列中的值加 1。


  • 查詢(統計元素個數)

    The estimated count is given by the least value in the table for i, namely {\displaystyle {\hat {a}}{i}=\min {j}\mathrm {count} [j,h_{j}(i)]} {\hat a}{i}=\min {j}{\mathrm {count}}[j,h_{j}(i)], where {\displaystyle \mathrm {count} } {\mathrm {count}} is the table.
    就是取最小的 count 作為 element 出現的次數,故名 count-min
    ![query1](https://raw.githubusercontent.com/Titanssword/Notes/master/pic/bloomfilter%20and%20CMS/Screenshot from 2018-02-20 06-33-42.png)

  • Probabilistic problem

    Epsilon: accepted error added to counts with each item
    Delta: probability that estimate is outside accepted error

    use cases

  • any kind of frequency tracking
  • NLP (word count)
  • Extension heavy-hitters
  • range-query
  • 參考

    James Stanier 的演講教程
    wikipedia 解釋
    Algorithms & Data Challenges Berlin Meetup
    Mar 19, 2013 PPT
    An Improved Data Stream Summary: The Count-Min Sketch and Its Applications

    總結

    以上是生活随笔為你收集整理的Bloom Filter 和 Count-Min Sketch 介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。