我正在使用simhash,但也看到minhash更有效。
但我不明白。
請爲我解釋:什麼比simhash更有利的minhash?什麼比simhash更有利於minhash?
1
A
回答
0
在simhash中,我們不需要存儲超平面。它有更差的誤差界限。 Simhash lecture
1
Simhash速度更快,通常內存要求比minhash要小,但它受限於它只能檢測非常接近的相似性。如果兩個項目的差異不是很小,它們的相似性將不會被檢測到。另一方面,Minhash可以用來檢測相當遠的相似性,例如相互之間只有5%相似度的項目。 Simhash也有點複雜的理解。
Minhash依靠每個項目產生多個哈希值,例如,通常介於20和400之間的64位散列。這些散列都需要存儲,以及它們所屬的項目的ID,通過散列索引。要查找所有包含例如估計與給定項目的相似度爲50%,則必須找到至少共享給定項目哈希值的50%的所有其他項目。這可能涉及枚舉相當大數量的hash-itemID對。另一方面,Simhash只對每個項目使用單個散列,例如,一個64位散列;並生成這個散列,使得非常相似的項目將具有非常相似的位模式的散列。該散列必須與多個表(例如8個不同的表)一起存儲(與該項的ID一起),每個表以不同的方式排列散列的位,並且每個表按數字順序排列排列的散列。使用多個表可以實現一個聰明的技巧,通過這個技巧,您可以快速找到所有散列,它們與給定的散列最多相差n位;問題是n不能很大:取決於你期望存儲多少項目,整個散列中有多少位,以及你可以保留在內存中的表數量,n可能低至3或可能高達6或7.
Minhash和simhash都依賴於它們將表保存在主內存中的速度,儘管如果需要克服內存限制,它們都能夠在多個機器上分割。創建simhash的方法由Google持有的專利所涵蓋,儘管他們似乎允許至少非商業用途的算法。
相關問題
- 1. 有些地方比其他地方更有利於編程嗎?
- 2. 什麼讓NSdata有利?
- 3. 爲什麼c#有更多關於LINQ的書比vb
- 4. 有什麼比fastload更快的嗎?
- 5. 爲什麼Document.querySelector比Element.querySelector更有效率
- 6. 有什麼比Django的flatpage更好嗎?
- 7. 還有什麼比%random更好嗎
- 8. 存儲Minhash的結果
- 9. 什麼比PHP Glob更好?
- 10. 什麼比std :: pow更快?
- 11. 什麼比邊框更好?
- 12. 什麼比innerHTML更快?
- 13. 蟒蛇simhash進口問題[github.com/seomoz/simhash-py]
- 14. 爲什麼pre-order遍歷有利於克隆樹?
- 15. 爲什麼Swift 2有利於強制展開可選項?
- 16. 什麼時候有利於約束SQL Server 2005中的連接?
- 17. 什麼數據庫有利於保持小圖像
- 18. 有什麼我可以做的更好地利用CPU核心?
- 19. 爲什麼有些divs的利潤率?
- 20. 我對流利NHibernate有什麼期待?
- 21. simhash like算法來比較兩個文本文件
- 22. 比較web頁面 - simhash和DOM邊緣節點處理
- 23. 爲什麼有更多的線程比核心更快?
- 24. 相似哈希函數(simhash)
- 25. simhash功能可靠嗎?
- 26. 計算成對simhash「距離」
- 27. 有什麼比在MySQL中連接表更有效嗎?
- 28. 對於矩陣運算,爲什麼「ikj」比「ijk」更快?
- 29. 爲什麼在Firefox中爲bitwise-xor(^)比不等於(!=)comparisson更快?
- 30. 爲什麼基於參數的定義比遞歸更高效?
[在SimHash和MinHash之間爲生產系統選擇]的可能副本(http://stackoverflow.com/questions/27712472/choosing-between-simhash-and-minhash-for-a-production-system) – KornMuffin