- 浏览: 1655868 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (405)
- C/C++ (16)
- Linux (60)
- Algorithm (41)
- ACM (8)
- Ruby (39)
- Ruby on Rails (6)
- FP (2)
- Java SE (39)
- Java EE (6)
- Spring (11)
- Hibernate (1)
- Struts (1)
- Ajax (5)
- php (2)
- Data/Web Mining (20)
- Search Engine (19)
- NLP (2)
- Machine Learning (23)
- R (0)
- Database (10)
- Data Structure (6)
- Design Pattern (16)
- Hadoop (2)
- Browser (0)
- Firefox plugin/XPCOM (8)
- Eclise development (5)
- Architecture (1)
- Server (1)
- Cache (6)
- Code Generation (3)
- Open Source Tool (5)
- Develope Tools (5)
- 读书笔记 (7)
- 备忘 (4)
- 情感 (4)
- Others (20)
- python (0)
最新评论
-
532870393:
请问下,这本书是基于Hadoop1还是Hadoop2?
Hadoop in Action简单笔记(一) -
dongbiying:
不懂呀。。
十大常用数据结构 -
bing_it:
...
使用Spring MVC HandlerExceptionResolver处理异常 -
一别梦心:
按照上面的执行,文件确实是更新了,但是还是找不到kernel, ...
virtualbox 4.08安装虚机Ubuntu11.04增强功能失败解决方法 -
dsjt:
楼主spring 什么版本,我的3.1 ,xml中配置 < ...
使用Spring MVC HandlerExceptionResolver处理异常
3.4 文档局部性敏感哈希(Locality-Sensitive Hashing for Documents)
虽然我们可以通过minhash来压缩大的文档到小的签名,并且仍然能够保留每对文档的相似性。
但是找到相似的对仍然很难实现,因为虽然文档数可能不是非常多,但是文档的对数会变得非常的大。
如果我们的目标是计算每对文档的相似度,那么我们没有办法减少我们的工作量,虽然并行处理的方法可以减少花费的时间。然而如果我们想找到最相似的对或者在一个相似度下界之上的相似对,那么我们可以值把关注聚集在那些最可能相似的对中,不需要计算所有的对。这就是Locality-Sensitive Hashing的理论。在这节我们只考虑特殊形式的LSH,为我们已经学习到的问题设计:有shingle集合代表的文档,然后用minhash到短的签名。在3.6节我们会展示LSH的基本理论、一些应用和相关技术。
3.4.1 Minhash签名的LSH
LSH一个通用的方法是将item进行多次hash,这样相似的item就比不相似的更有可能hash到同一个桶中。我们将hash到同一个桶中的所有的对作为候选的对,然后只检查候选对的相似度。我们希望不相似的对不会hash到相同的桶中,所以就不会被检查。那些不相似的对被hash到同一个桶中被称为假阳性,希望在所有的对中只会占很小的比例。我们仍然希望真正相似的对会hash到同一个桶中,至少在这些hash函数中的一个,否则被称为假阴性,我们希望在真正相似的对中,假阴性只占一小部分比例。
如果我们已经将所有的items都已经进行了minhash签名,一种有效的方式是选择hash能够把签名矩阵分成b个段,每个段有r行。对于每一个段,有一个hash函数把r个整数组成的向量(在那个段里的一列的一部分)hash成某个很大的桶号。我们可以对所有的段使用同一个hash函数,但是对每一个段我们使用一个单独的桶,所以在不同段具有相同向量的列不会hash到同一个桶中。
越是相似的两个列,他们越是可能在某个段上相等,因此从直观上这个策略能够使得越是相似的列越可能成为候选的对。
3.4.2 分段(Banding)技术分析
假如我们使用了b个段,每个段r行,假设一个对文档的Jaccard相似度是s,他们的minhash签名在签名矩阵的一行相同的概率是s。我们 计算一下这些文档成为候选pair的概率。
1.在一个段中签名的所有行相同的概率是s^r。
2.在一个段中前面在至少一行都不相等的概率是1-s^r
3.任意一个段签名不是在所有的行中都相等的概率(1-s^r)^b
4.签名至少在一个band中所有的行都相等,即候选pair的概率是1-(1-s^r)^b。
不管我们怎么选择常量b和r,这个函数的形式是S-曲线。
例子:比如我们考虑b = 20, r = 5.
1-(1-s^5)^20的在值为:
s 1-(s-s^r)^b
.2 .006
.3 .047
.4 .186
.5 .470
.6 .802
.7 .975
.8 .9996
当我们去s=0.8,即我们考虑两个文档80%相似,他们称为候选對的概率是99.96%。
3.4.3 将这些技术结合起来
我们现在已经有一种方式可以找到结合的相似的候选对,然后从中选择真正相似的文档。
这种方式可能出现假阴的现象:真正相似的由于没有成为候选对而没有被标示为相似。
结合起来过程如下:
1.选择k的值,然后将每一个文档构建k-shingles,可选的,将k-shingles hash成
更短的桶号。
2.将document-shingle按照shingle排序。
3.选择minhash签名的长度n.计算每个文档的的minhash签名
4.选择相似文档的相似的threshold t,选择bands数b和行数r,br=n,t大约等于
(1/b)^(1/r).如果避免假因现象,可以选择b和r使其小于t。如果速度是比较重要
的因素,希望显示假阳的样例,可以选择b和r使其大于t。
5.根据LSH的算法来构建候选pairs
6.检查候选对的签名,判断是否他们匹配度是否小于t。
7.可选择的,如果签名相似,可以再检查一下文档本身,检查他们是否相似,避免两个
文档不相似的文档侥幸的具有相似的签名。
3.5 距离计算方法
我们来学习一下各种距离计算方法,Jaccard相似度给出了两个集合的相似度,1减去
Jaccard相似度被称为Jaccard距离。还有其他很多的描述距离的方法。
3.5.1距离定义:
距离是一个函数d(x,y),以空间中的两个点x,y为参数,结果为一个实数,并且满足:
1. d(x,y) >= 0
2. d(x,y) == 0 当且仅当x=y
3. d(x,y) == d(y,x)
4. d(x,y) <= d(x,z) + d(z,y)
3.5.2 欧拉距离:
d([x1,x2,...,xn],[y1,y2,...,yn]) = sqrt(sum(xi - yi)^2)
更一般的:
d([x1,x2,...,xn],[y1,y2,...,yn]) = (sum(xi - yi)^r)^(1/r)
称为Lr-norm。
当r=2的时候L2-norm,r=1的时候L1-norm被称为曼哈顿距离。
3.5.3 Jaccard Distance
d(x,y) = 1-SIM(x,y)
3.5.4 cosine距离:
X = [x1 , x2 , . . . , xn ]
Y = [y1 , y2 , . . . , yn ]
d(X,Y) = X . Y / |Y| * |X|
3.5.5 编辑距离:
两个字符串x=x1x2...xn, y=y1y2...yn,最小的添加、删除、修改单个字符,将x变成
y的操作次数。
可以使用动态规划的方法来计算。
3.5.6 海明距离
给一个空间向量,海明距离被定义为两个向量不同组建的个数。海明距离最常用在二进制类型的向量中。
3.6 局部敏感函数理论【待续】
虽然我们可以通过minhash来压缩大的文档到小的签名,并且仍然能够保留每对文档的相似性。
但是找到相似的对仍然很难实现,因为虽然文档数可能不是非常多,但是文档的对数会变得非常的大。
如果我们的目标是计算每对文档的相似度,那么我们没有办法减少我们的工作量,虽然并行处理的方法可以减少花费的时间。然而如果我们想找到最相似的对或者在一个相似度下界之上的相似对,那么我们可以值把关注聚集在那些最可能相似的对中,不需要计算所有的对。这就是Locality-Sensitive Hashing的理论。在这节我们只考虑特殊形式的LSH,为我们已经学习到的问题设计:有shingle集合代表的文档,然后用minhash到短的签名。在3.6节我们会展示LSH的基本理论、一些应用和相关技术。
3.4.1 Minhash签名的LSH
LSH一个通用的方法是将item进行多次hash,这样相似的item就比不相似的更有可能hash到同一个桶中。我们将hash到同一个桶中的所有的对作为候选的对,然后只检查候选对的相似度。我们希望不相似的对不会hash到相同的桶中,所以就不会被检查。那些不相似的对被hash到同一个桶中被称为假阳性,希望在所有的对中只会占很小的比例。我们仍然希望真正相似的对会hash到同一个桶中,至少在这些hash函数中的一个,否则被称为假阴性,我们希望在真正相似的对中,假阴性只占一小部分比例。
如果我们已经将所有的items都已经进行了minhash签名,一种有效的方式是选择hash能够把签名矩阵分成b个段,每个段有r行。对于每一个段,有一个hash函数把r个整数组成的向量(在那个段里的一列的一部分)hash成某个很大的桶号。我们可以对所有的段使用同一个hash函数,但是对每一个段我们使用一个单独的桶,所以在不同段具有相同向量的列不会hash到同一个桶中。
越是相似的两个列,他们越是可能在某个段上相等,因此从直观上这个策略能够使得越是相似的列越可能成为候选的对。
3.4.2 分段(Banding)技术分析
假如我们使用了b个段,每个段r行,假设一个对文档的Jaccard相似度是s,他们的minhash签名在签名矩阵的一行相同的概率是s。我们 计算一下这些文档成为候选pair的概率。
1.在一个段中签名的所有行相同的概率是s^r。
2.在一个段中前面在至少一行都不相等的概率是1-s^r
3.任意一个段签名不是在所有的行中都相等的概率(1-s^r)^b
4.签名至少在一个band中所有的行都相等,即候选pair的概率是1-(1-s^r)^b。
不管我们怎么选择常量b和r,这个函数的形式是S-曲线。
例子:比如我们考虑b = 20, r = 5.
1-(1-s^5)^20的在值为:
s 1-(s-s^r)^b
.2 .006
.3 .047
.4 .186
.5 .470
.6 .802
.7 .975
.8 .9996
当我们去s=0.8,即我们考虑两个文档80%相似,他们称为候选對的概率是99.96%。
3.4.3 将这些技术结合起来
我们现在已经有一种方式可以找到结合的相似的候选对,然后从中选择真正相似的文档。
这种方式可能出现假阴的现象:真正相似的由于没有成为候选对而没有被标示为相似。
结合起来过程如下:
1.选择k的值,然后将每一个文档构建k-shingles,可选的,将k-shingles hash成
更短的桶号。
2.将document-shingle按照shingle排序。
3.选择minhash签名的长度n.计算每个文档的的minhash签名
4.选择相似文档的相似的threshold t,选择bands数b和行数r,br=n,t大约等于
(1/b)^(1/r).如果避免假因现象,可以选择b和r使其小于t。如果速度是比较重要
的因素,希望显示假阳的样例,可以选择b和r使其大于t。
5.根据LSH的算法来构建候选pairs
6.检查候选对的签名,判断是否他们匹配度是否小于t。
7.可选择的,如果签名相似,可以再检查一下文档本身,检查他们是否相似,避免两个
文档不相似的文档侥幸的具有相似的签名。
3.5 距离计算方法
我们来学习一下各种距离计算方法,Jaccard相似度给出了两个集合的相似度,1减去
Jaccard相似度被称为Jaccard距离。还有其他很多的描述距离的方法。
3.5.1距离定义:
距离是一个函数d(x,y),以空间中的两个点x,y为参数,结果为一个实数,并且满足:
1. d(x,y) >= 0
2. d(x,y) == 0 当且仅当x=y
3. d(x,y) == d(y,x)
4. d(x,y) <= d(x,z) + d(z,y)
3.5.2 欧拉距离:
d([x1,x2,...,xn],[y1,y2,...,yn]) = sqrt(sum(xi - yi)^2)
更一般的:
d([x1,x2,...,xn],[y1,y2,...,yn]) = (sum(xi - yi)^r)^(1/r)
称为Lr-norm。
当r=2的时候L2-norm,r=1的时候L1-norm被称为曼哈顿距离。
3.5.3 Jaccard Distance
d(x,y) = 1-SIM(x,y)
3.5.4 cosine距离:
X = [x1 , x2 , . . . , xn ]
Y = [y1 , y2 , . . . , yn ]
d(X,Y) = X . Y / |Y| * |X|
3.5.5 编辑距离:
两个字符串x=x1x2...xn, y=y1y2...yn,最小的添加、删除、修改单个字符,将x变成
y的操作次数。
可以使用动态规划的方法来计算。
3.5.6 海明距离
给一个空间向量,海明距离被定义为两个向量不同组建的个数。海明距离最常用在二进制类型的向量中。
3.6 局部敏感函数理论【待续】
发表评论
-
推荐系统note
2013-06-24 18:36 0推荐系统 第一章 Introduction 1.1基本概念 1 ... -
[zz]推荐系统-从入门到精通
2013-04-20 14:38 2498为了方便大家从理论到实践,从入门到精通,循序渐进系统地理解和掌 ... -
[ZZ]计算机视觉、模式识别、机器学习常用牛人主页链接
2012-11-30 13:13 12219牛人主页(主页有很多论文代码) Serge ... -
计算广告学
2012-08-12 13:53 0计算广告学一: 1、核 ... -
期望最大(EM)算法推导
2012-08-05 19:54 8432X是一个随机向量,我们希望找到 使得取得最大值,这就是关于的最 ... -
Large-Scale Support Vector Machines: Algorithms and Theory
2012-04-12 00:32 0支持向量机是一种流行 ... -
[zz]数据挖掘邻域的5篇经典文章
2011-05-12 13:50 1787转载自 http://www.dataminingblog.c ... -
大规模数据挖掘-第三章 学习笔记一
2011-05-01 00:06 10858第三章 查找相似的Items 数据挖掘的一个基本问题是检测相似 ... -
HtmlUnit解析html会丢掉不可见的Element
2010-01-15 21:06 2915最近使用htmlunit来作为后端抽取数据,htmlunit的 ... -
信息抽取思考笔记
2009-12-07 21:48 1708信息抽取的两种方式:基于内嵌浏览器的navigation的抽取 ... -
基于模式发现的信息抽取(1)
2009-12-03 23:37 2687IEPAD:基于模式发现的 ... -
分享一本文本挖掘的书
2009-09-21 23:28 1701好不容易从国外找到的,有需要的可以下来看看。 The inf ... -
《Web Data Mining Exploring Hyperlinks, Contents, and Usage Data》列入读书单中
2009-09-10 18:00 2053liubing同学写的,web content mining的 ... -
机器学习的开放源代码项目mahout
2009-04-16 23:05 5446最近看了刚发布的开放源代码项目mahout,实现了很多机器学习 ... -
网页分析/挖掘中常用数据结构和算法
2008-12-30 11:28 2753网页在render的时候都生成DOM树的,所以树形的数据结构用 ... -
一个很好的Machine Learning的开源工具网站
2008-12-30 10:41 2226mloss.org http://www.mloss.org/ ... -
基于firefox浏览器的Deep Web Navigation总结
2008-12-29 12:24 2213先占个位置,这两天准备回家,办手续,定房子什么的,比较忙,先提 ... -
一份夭折了的Information Extraction的总体设计
2008-12-26 17:46 1301由于项目提前closed,我的一个Information Ex ... -
Programming Collective Intelligence读书笔记三 推荐系统(续)
2008-12-26 17:14 1915根据前面的两个相似度 ... -
今天听了fanwei博士的Data Mining的讲座
2008-12-26 12:41 2057牛人,哥伦比亚大学PH.D,在 IBM T.J.Watson ...
相关推荐
大规模数据挖掘第三章学习笔记一 本资源摘要信息主要介绍了大规模数据挖掘中的第三章学习笔记一,涵盖了数据挖掘中的基本问题、相似度计算方法、集合相似度算法、文档相似度计算方法、Locality-Sensitive Hashing...
在这里,我们重点关注第一章的学习笔记,即"第一章导论"。 在数据挖掘的导论部分,通常会涵盖以下几个关键知识点: 1. 数据挖掘定义:数据挖掘是一种从大量数据中通过算法发现有价值信息的过程。它涉及到模式识别...
- 第三部分(第12-15章):重点讲解数据挖掘技术,包括模拟、聚类等方法的应用。 - 第四部分(第16-19章):强调数据分析在实际场景中的应用,特别是商业和金融领域。 #### 二、第18章预测分析概述 - **预测分析...
- **MLlib (Machine Learning Library)**:提供了一系列机器学习算法和工具,方便用户进行大规模数据分析和挖掘。 - **GraphX**:用于图计算和图数据处理的模块。 ##### 第2章:Spark弹性分布数据集 - **2.1 ...
对于大规模数据,Python的Spark库(PySpark)能提供分布式计算能力,有效地处理大数据集。 八、深度学习 在数据挖掘中,深度学习如神经网络、卷积神经网络(CNN)和循环神经网络(RNN)等用于图像识别、文本分类等任务...
大数据处理工具,如Hadoop和Spark,可以协助处理大规模数据集。数据挖掘则涉及到发现数据集中的潜在模式和关系。 5. **案例应用**:"机器学习实践指南++案例应用解析.pdf"可能包含实际的项目案例,帮助你将理论知识...
- 实现简单,计算效率高,适合处理大规模数据集。 - 能够自动找出数据的分组结构,无需预先设定类别。 缺点: - 对初始质心的选择敏感,可能导致收敛到局部最优而不是全局最优。 - 需要预先设定簇的数量K,而这在...
"大数据学习资料全排序二次排序"这个主题,显然关注的是如何有效地对大规模数据进行排序,尤其是涉及到二次排序的概念。二次排序通常是指在第一次排序的基础上,根据另一个或多个字段进行第二次排序,以满足更复杂的...
这些论文揭示了Google如何处理和存储大规模数据的内部机制。 Hadoop 的核心由三个主要组件构成: 1. HDFS(Hadoop Distributed File System):分布式文件系统。HDFS设计为将大文件分块存储在不同的节点上,提供高...
4. 数据库范式:数据库设计中,通常需要遵循一定的规范,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和第四范式(4NF),以保证数据的规范化和减少数据冗余。 5. 数据仓库与数据挖掘:数据仓库是整合来自...
Jordan,“通过挖掘控制台日志检测大规模系统问题”,Proc。 ACM SOSP, 2009, p. 117-132。 BGL 4747963 HPC Blue Gene/L 运行时日志 A. Oliner 和 J. Stearley,“超级计算机说什么:五个系统日志的研究”,Proc。 ...
论文提到这项工作曾在第一届健康信息检索与数据挖掘研讨会上展出,这反映了该研究领域的学者们对于探索新技术和方法以应对健康信息学数据挑战的重视。通过参与这些专业会议,研究者们可以交流思想、分享发现,并得到...
总的来说,"juzhen.rar_稀疏"这个压缩包内容涵盖了稀疏矩阵的基本概念、存储方法、操作技巧以及可能涉及的相关算法,对于理解和处理大规模稀疏数据具有很高的学习价值。通过深入学习这些知识,开发者能够优化代码,...
Apache Hadoop和Spark提供了分布式计算框架,用于处理和分析大规模数据集。 9. 实践项目:理论知识的巩固往往来自于实际项目。通过案例研究,学习者可以将所学应用于真实数据集,解决业务问题,提高问题解决和模型...
在这个名为“Data_Scraaping-2-week-3-Coursera”的课程中,我们聚焦于数据抓取的第三周内容,它属于Coursera上的一门数据科学课程。这门课程主要关注如何使用Jupyter Notebook这个强大的工具来执行和展示数据抓取的...
- **RDFox**:支持高度可扩展的记忆体 RDF 三元组存储和数据推理,适用于大规模数据处理。 ##### 知识检索 - **索引系统构建**:通过建立索引系统来提高查询效率。 - **查询结果排序**:根据相关性或其他指标对...
文档第一章开门见山地介绍了企业这一盈利性组织的基本概念。在这里,企业被描述为具有独立法人资格和经济实体的组织,其存在目的就是实现盈利。企业的运行是一个复杂的投入产出过程,涉及到对存量(如资本、存货等)...