任何人都可以向我解釋有損計數算法嗎?它是查找流中項目頻率的流式算法。謝謝。什麼是有損計數?
什麼是有損計數?
回答
假設您正在查看Facebook個人資料的流量。你有數十億次點擊。您想要查找最常訪問的配置文件。你可以爲每個配置文件保留一個計數,但是你會有很多計數來跟蹤,其中絕大多數會毫無意義。
有損計數,您定期從表中刪除非常低的計數元素。最常訪問的配置文件幾乎不會有低計數,如果他們這樣做,他們將不可能長時間呆在那裏。
該算法基本上涉及將輸入分組爲塊或塊並在每個塊內計數。然後,將每個元素的計數減1,並刪除其計數降爲零的元素。
最頻繁命中的配置文件將得到您的計數並留在那裏。任何未經常擊中的配置文件將在幾個塊中降至零,您不必再跟蹤它們。
請注意,最終結果與訂單有關,給予最後處理的計數權重更大。在某些情況下,這是非常有意義的,並且是有利的而不是缺點。 (如果您基本知道哪些配置文件是最受歡迎的現在,那麼您希望今天訪問的訪問次數超過上個月的訪問次數。)
該算法有大量的改進。但基本的想法是 - 找到重擊者而不必跟蹤每一個元素,根據目前的數據定期清除任何看起來不太可能成爲重擊者的元素的數量。
你可以找到有損計數(和粘性採樣)如何工作on this blog post和open-source version here的解釋。
查看次數最多的項目「生存」。給定頻率閾值f,頻率誤差e和元素總數N,輸出可以表示如下:計數超過fN_eN的元素。
最糟糕的情況我們需要(1/e)* log(eN)計數器。例如,我們可能希望打印出擊率超過20%,誤差閾值爲2%(經驗法則:誤差=頻率閾值的10%)的Facebook頁面。對於頻率f = 20%,e = 2%,將輸出真實頻率超過f = 20%的所有元素 - 沒有誤報。但我們低估了。元件的輸出頻率可以比其真實頻率低至多2%。誤報可能會出現,頻率在18% - 20%之間。最後,不會輸出頻率小於18%的元素。
由於尺寸1/E的窗口,以下保證持有:
- 頻率由最多E *低估ň
- 沒有出現假陰性
- 誤報有至少的F真實頻率N - e N
鏈接有幫助,謝謝 – DiveInto
- 1. 究竟是什麼損失?
- 2. 計數有什麼問題
- 3. 什麼是有效日期時間/解析器是否損壞?
- 4. 什麼是「損壞的工作區」?
- 5. 什麼是「一站式內存損壞」?
- 6. 爲什麼x264/x265無損編碼比有損編碼慢
- 7. 什麼是有損圖像壓縮的最新技術?
- 8. 爲什麼計數位數很有用?
- 9. WebClient.OpenReadAsync()損壞JSON數據。爲什麼?
- 10. 什麼是轉換和計數數組的有效方式?
- 11. 什麼是簡單單詞中的損失函數?
- 12. 數據被覆蓋或損壞。是什麼原因?
- 13. 什麼是使用DNNRegressor的損失函數?
- 14. git統計數據是什麼意思?
- 15. WebSphere FFDC計數是什麼意思?
- 16. GSL統計數據是什麼?
- 17. Tomcat什麼是線程總計數
- 18. ++計數器是什麼意思?
- 19. 什麼是自動引用計數?
- 20. 觸發下載計數的是什麼?
- 21. 什麼是性能計數器?
- 22. 爲什麼IBOutlet保留計數是2
- 23. NiFi計數器的用途是什麼?
- 24. 爲什麼Vector。計數是靜態的?
- 25. Tomcat:會話計數。它是什麼?
- 26. 爲什麼圖像損壞
- 27. 爲什麼堆已損壞?
- 28. 機器學習中損失函數和RMSE有什麼區別?
- 29. 什麼是「警告:在def文件結束時損壞.drectve」是什麼意思?
- 30. 計數有什麼用途?第7行
在其他來源中,是塊還是塊命名爲桶? – neilmarion
你能否介紹一個僞代碼,以便更清楚地說明它?非常感謝大衛先生。 – neilmarion
這是一個示例實現 https://github.com/mayconbordin/streaminer –