码迷,mamicode.com
首页 > 其他好文 > 详细

locality sensitive hashing(LSH)局部敏感哈希

时间:2020-04-03 15:07:00      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:比较   原则   hash   mic   表示   序列   多少   str   lsh   

参考:https://www.cnblogs.com/fengfenggirl/p/lsh.html

 

一、引入

LSH就是对高维空间的数据进行近邻搜索的一种算法。它的原则是:原来在高维空间中就很接近的点,如果能够设计一种hash函数,使得它们的哈希值很大概率是一样的,那么再给一个新的高维空间上的点,再用这个hash函数得到一个哈希值,则哈希值相同的点是有很大概率在原来的高维空间上是近似的。总之,LSH就是降维+查找匹配的算法。

二、Jaccard相似度

Jaccard相似度就是交集除以并集。用于比较有限样本集之间的相似性与差异性。Jaccard系数值越大,样本相似度越高。

技术图片

比如说我们要比较人们的购物袋中,啤酒和奶粉的相似度,也就是说我们想要找到有多少人的购物袋里会同时出现啤酒和奶粉。那我们就去数一下同时存在啤酒奶粉的购物袋有几个,再数一下所有的购物袋,二者相除即可得到结果。、

Jaccard重点关注的是交集部分。

三、shingling

一篇文档可以看成是一个字符串,文档的k-shingle为在该文档中长度为k的所有子串。任意一篇文档都可以表示为k-shingles的集合,比如“A document is a string of characters”这句话的所有3-shingles为{ ”A d”, ”do”, ”doc”, ”ocu”, ”cum”, ”ume”, ”men”, ”ent”, . . . , ”ers” }。

如果k非常小,那么k个字符的序列会出现在大多数的文档中,如k=1,许多文档都有相同的字符,几乎所有的文档都有很高的相似性。如果k应该足够大,那么对于给定的shingle出现在不同的文档中的概率是非常低的。比如这两个单词“ document”和“monument”:
SIM( { d, o, c, u, m, e, n, t } , { m, o,n, u, m, e, n, t } ) = 6/8
SIM( { doc, ocu, cum, ume, men, ent } ,{mon, onu, num, ume, men, ent } ) = 3/9
可以看见,k为3时比k为1时的Jaccard相似度要低很多。

 

locality sensitive hashing(LSH)局部敏感哈希

标签:比较   原则   hash   mic   表示   序列   多少   str   lsh   

原文地址:https://www.cnblogs.com/liuxiangyan/p/12626486.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!