minhash算法

在实际应用的过程中,相似性度量和计算是非常常用的一个方法,例如网页去重、判断帖子是否相似、推荐系统衡量物品或者用户的相似度等等,当数据量大的时候,计算的时间和空间复杂度就会是一个非常重要的问题,例如在判断相似发帖的时候,我们可以用kmeans来进行聚类,但是资源的消耗是巨大的,所以本文推荐一种方法,minhash+lsh(局部敏感hash),用minhash来降维,用lsh来做近似查询,本文主要介绍一下minhash。

在介绍minhash之前,先给出相似性的度量方法。

1. 相似性的度量

相似性度量有很多方法,欧氏距离是比较常用的,这里我们用一下Jaccard相似性系数,公式如下


计算方法很简单,文档A和文档B共有的单词数除以A和B单词的集合,例如A={a,b,c,d},B={c,d,e,f},那么相似性系数就是2/6=0.33。

2. minhash

刚才我们知道在求相似度的时候我们用到了文档和单词。通常情况下,我们都会将文档和单词表示成doc-term矩阵的形式,可以看到term具体的是什么对最后的结果没有任何影响,所以我索性用行号来代表term,行号跟term是一一对应的,例如

  s1 s2 s3
0 1 0 0
1 0 0 1
2 0 1 0
3 1 0 1
4 0 0 1

第一行中的S1,、S2、S3表示文档,第一列的01234表示行号,也即单词,其他部分1表示文档S中有这个单词,0表示没有这个单词,有了这个集合,我们看一下minhash是怎么做的

随机确定一个顺序,例如上面的顺序是01234,随机确定一个顺序,例如12340,注意这里是随机,目的就是不让最后的结果受人为的干扰,结果如下

<
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值