Mining Massive Datasets课程笔记(二)

Finding Similar Sets

在数据挖掘中有一个很基础的问题就是寻找相似项。比如“查找具有相似爱好的用户“等应用的本质就是查找相似项。
这一节介绍的就是如何寻找相似项。采用的相似度衡量概念为“Jaccard 相似度”,具体的意思在后文介绍,其主要思想就是两个集合的交集所占的比例越大则认为两者越相似。
对于数据量非常庞大的情况来讲逐一计算相似度肯定是不现实的,联系hash表的(可以快速寻找到特定元素而不用搜寻所有元素)的特性,首先使用Shingling算法,然后提出MinHashing来compress large sets以及
locality-sensitive Hashing 来 find similar documents or similar sets without doing anything that involves searching all pairs.

Applications of Set-Similarity

  • 寻找相似主题或相似内容的网页
  • 推荐系统:对同一用户按口味推荐可能喜欢的电影
  • 寻找有相似受众的电影
  • 实体解析

Similar Documents

以寻找具有相似的text or words的文档为例(不是相似topic),这一例子有很多现实应用:
- 寻找镜像网页,从而避免在搜索结果中重复出现
- 找到抄袭页面,包括只是大量引用且有改动的情况
- 将描写相同事件的网页聚在一起,呈现在结果页面
这些例子中虽然各个页面的内容大部分是一致的,但是各自有各自的改动或特点,比如同一新闻在不同新闻网站上logo、link甚至标题都会有轻微不同,单纯进行逐个单词的比较来计算相似肯定是不对的。

对于处理相似文本,我们需要三种技术:
这里写图片描述
1. Shingling:Jaccard相似度需要计算集合的交集,因此需要将文档转换为集合形式,这一步称为Shingling;
2. Minhashing:将上一步得到的sets转变为一些短的signatures同时保留sets之间的相似度;
3. Locality-sensitive Hashing:我们知道即使文本的数量只是million级的,要计算signatures间的相似度则有trillion级别的pairs要计算,而LSH可以实现只计算部分相似度很高的signature pairs就可以几乎得到所有的相似项。

这是整体的流程图:
这里写图片描述
下面我们分别讲解这三个步骤的实现方式

Shingles

把相邻的k个字符作为一个元素,从而将整篇文档变为一个集合,通常将k值设在5~10之间。对于K值的选择依赖于文档的长度以及文档中词语的评价长度,最好保证任一shingle在文档中所占的比例都很小。
这里写图片描述

Shingles and Similarity
这里写图片描述

shingles:Compress Option
这里写图片描述

Minhashing

Jaccard similarity Measure

这里写图片描述
Example:
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值