Mining of Massive Dataset 笔记

本文深入探讨大数据挖掘中的关键问题,包括文档相似性检测、推荐系统和降维技术。通过minhashing和locality-sensitive hashing方法找到相似文档,使用协同过滤和内容基推荐来构建个性化推荐系统,并介绍了PCA和SVD在降维中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//2019.06.03

一、概述

1、这本书是关于“data mining”的,但是它的关注点是在大数据挖掘上,它的观点是“在大数据上应用算法去挖掘信息,而不是使用ML去训练大数据”

Data mining is about applying algorithms to data, rather than using data to “train” a machine-learning engine of some sort.

2、目录

  • 分布式文件系统和Map-reduce
  • 相似搜索(包括minhashing和locality-sensitive hashing)
  • 流数据处理
  • 搜索引擎技术(Google PageRank,Link-spam detection,hubs-and-authorities approach)
  • Frequent-itemset mining
  • 降维算法
  • 网络应用的两个关键问题
  • 大规模图结构的分析算法

CH3:Finding Similar Items

一、概述

  • data-mining的一个关键问题就是检测“相似”项目的数据。--->如何检测(document---(shingling)-->sets--(minhashing)-->short signatures)

  • 当我们搜索任何类似的项目时出现的另一个重要问题是,可能有太多的项目对来测试每一对的相似程度,即使计算任何一对的相似性可以非常容易。---->减少项目(locality-sensitive)
  • 判断相似的方法

二、近邻搜索的应用(Applications of Near-Neighbor Search)

1、集合相似性--->Jaccard similarity

2、Similarity of Documents

Jaccard相似性很好地解决的一类重要问题是在诸如Web或新闻文章集合之类的大型语料库中找到文本上类似的文档

但是我们这里强调的是“character-level similarity”,不是“similar meaning”,这要求我们去检测文档间的单词或者他们使用的单词。逐词比较,看是否一致,但在很多应用中,基本是不同的。

  • 抄袭(找文本相似性)
  • 镜像页面(Mirror Pages):镜像页面间是很相似的,很少有不同
  • 相同来源的文章

3、协同过滤(Collaborative Filtering as a Similar-Sets Problem)

这是一类常见的应用,在推荐中常被应用,具体如下:

  • 在线购物(On-Line Purchases):商品推荐
  • 电影评级(Movie Ratings)

三、Shingling of Documents(步骤1:document--->set)

1、K-shingles:Define a k-shingle for a document to be any substring of length k found within the document.

Example:D is "abcdabd" ,k = 2, 2-shingles for D is{ab,bc,cd,da,bd}   

Note that the substring ab appears twice within D, but appears only once as a shingle. A variation of shingling produces a bag, rather than a set, so each shingle would appear in the result as many times as it appears in the document. However, we shall not use bags of shingles here.(理解:应该是指子串的类型吧,该shingle应该是出现了多次)

2、k大小的选择设定

k的设定取决于典型文档的长度和典型字符的集合大小,重点要记住,k的选取的足够大以保证任何给定的shingles出现在任何文档的概率很低。

例如:对于emails,k=5

3、Hashing Shingles(Key technoogy)

在整个过程中,不是将子串直接作为元祖,而是选择哈希函数,将长度为k的子串映射到一系列buckets上,然后将相关bucket的标号作为shingle.那么表示的文档的结合是一个整数集合,那个整数,就是k-shingles所在的桶标号。这样使得数据被压缩,存储量大大减少

4、shingles bulit from words

在寻找相似新闻或者文章时,因为写作风格等原因,有些停用词(如“and”,"you"等)对我们的主题判断没有任何意义,,所以我们想忽略这些词,那么对于这个问题,我们要去找有用的shingles.

方法:找到一个shingle为定义的“stop word”,那么紧跟的两个词,不管是不是停用词,都形成了一组有用的shingles

Example:"A spokesperson for the Sudzo Corporation revealed today that studies have shown it is
good for people to buy Sudzo products.”

Here, we have italicized all the likely stop words,there are nine shingles from the sentence:

A spokesperson for

for the Sudzo

the Sudzo Corporation

that studies have

have shown it

it is good

is good for

for people to

to buy Sudzo

四、Similarity-Preserving Summaries of Sets(set----->signatures)

元组的集合太大了,尽管用标号来表示,也还是会很大。因而我们想减少他的存储量,这里引入“Signatures”,利用Signature 来比较两个集合的相似度。

1、集合的矩阵表示

 

column:sets

rows:elements of the universal set from which elements of the sets are drawn

但是注意:矩阵不太可能作为数据的存储方式,因为它总是稀疏的,存储太浪费了,但是它可以用作数据的可视化。

2、Minhashing

(1)原理:对矩阵进行置换行排序,对于不同的行有不同minhash值,每次选择colum值为1的最小置换序号

(例如对上图进行置换排列,顺序如左图)

那么对于minhash(S1)=a,minhash(S2)=C,minhash(S3)=b,minhash(S4)=a

3、Minhashing and Jaccard Similarity

(1)所有随机顺序的的minhash最后产生的相同的概率值,与两个集合的Jaccard 相似度值相同。

(2)一般我们是用其来估计,选择100过或几百个来做,而不是把所有情况都给列出来。‘

(3)但是(2)中方式并不合理,明确置换是不可行的,每次做都要遍历一遍大数据集,这样非常耗时。

*但我们可以通过随机散列函数来模拟随机排列的效果,该函数将行数映射到和行数一样多的桶中

那么我们不需要置换列,只需要计算一次就可以把所有的请款计算得到

(这里的行号可能会冲突)

那么此时我们就遍历一遍,每次都计算其minhash,每次更新,其值

a)初始状态

b)第一行(这两个函数的计算都是1,那么他们的minhash肯定是1,记录下来,但是S2,S3在此取不到minhash值,所以不用管)

c)第二行(此时只有S3能取到一个排列的序号值,所以此时他的minhash是2,4)

d)第三行(这里S2,S4取到,更新S2,但是S4取到的h值大于原来,所以不更新)

e)第四行(S1,S3,S4)

f)第五行

五、Locality-Sensitive Hashing for documents(LSH)

尽管用minhash将大的文档压缩成小的signature,来保存文档对的相似性,但是有特别多的文档pairs时,去寻找相似度还是不够高效的。但是如果目标是要计算每一个pair对,那么即使用同步计算,工作量也没有减少。

那么此时更换角度,大多数情况下,我们是想要计算那些高度相似或者说相似度高于某个值的pair对的相似度,换句话说,看起来可能相似的那些pair对的相似度,有些看起来就不相似的,其实可以忽略。

--->Locality-sensitive hashing(LSH)或者叫做near-neighbor search

(1)LSH的方法:通用方法是对项目多次hash,使得类似项目更可能被散列到相同的桶(排除了部分不相似的pair)。然后,考虑任何hash到同一个桶中的buckets是一个候选对,检查这些候选对的相似性。(我们希望,在这个桶里不相似的pair尽可能的少,即FP小,同时希望那些FN尽可能的小)

(2)choose hashing:

*把signature 矩阵划分为b bands(每个段有r行),那么我们对每个band设置一个hash 函数,采用r个整数的向量(该band内一列的部分行),并将其散列到一些桶中。可以对每个band使用相同的hash,但是我们为每个band使用单独的桶阵列,因此在不同band中具有相同矢量的列将不会hash到同一个桶(避免了一些不必要的相似错误)--->条带策略使

### 回答1: 《大规模数据挖掘》是由Jure Leskovec、Anand Rajaraman和Jeffrey Ullman合著的一本书,该书详细介绍了处理大规模数据集的技术和方法。 这本书介绍了数据挖掘的基本概念和技术。它讨论了从海量数据中提取有用信息的方法,包括数据预处理、模型构建、模式识别、分类、聚类等。这些技术可以应用于各种领域,如商业、科学、医疗等。 《大规模数据挖掘》着重介绍了处理大规模数据集的方法。随着互联网和计算设备的普及,我们面临着越来越多的数据。这些数据通常非常庞大,传统的数据处理方法无法适应。因此,本书提供了许多高效的算法和技术,以便有效地处理这些数据。 这本书还介绍了一些数据挖掘的应用场景。例如,它讨论了如何分析用户行为数据来改善个性化推荐系统的性能,如何挖掘社交网络数据来了解用户关系和社群结构,以及如何利用文本挖掘技术来分析大规模文档集合。 总的来说,《大规模数据挖掘》是一本关于处理大规模数据集的权威性书籍。它提供了丰富的理论知识和实践经验,对于那些从事数据挖掘研究和实践的人员具有重要的参考价值。无论是学者、数据分析师还是工程师,都可以从中获取有关大规模数据挖掘的深入理解和实用技巧。 ### 回答2: 《大规模数据挖掘》是一本关于数据挖掘的重要参考书籍。该书由Jure Leskovec、Anand Rajaraman和Jeffrey D. Ullman合著,主要介绍了大数据集上的挖掘技术和实践应用。它被广泛认为是数据挖掘领域的经典之作。 《大规模数据挖掘》首先介绍了数据挖掘的基本概念和技术,包括数据预处理、数据降维、聚类分析、分类与预测、关联规则挖掘等。其次,书中深入探讨了在大规模数据集上进行挖掘的方法和工具。例如,针对大量数据的处理,书中介绍了MapReduce、Hadoop等大数据处理框架,以及如何使用这些工具实现数据挖掘任务。此外,书中还详细论述了数据挖掘的各项技术在互联网、社交网络、推荐系统等领域中的应用案例。 《大规模数据挖掘》的特点之一是其实践性和案例导向。对于每个讲解的技术和方法,书中都提供了大量实例和应用案例,让读者能够更好地理解和应用所学知识。此外,书中还提供了大量的习题和编程作业,帮助读者巩固和应用所学知识。 总体而言,《大规模数据挖掘》是一本内容全面、实用性强的数据挖掘参考书。读者可以通过该书系统地学习和掌握大规模数据挖掘的基本理论、技术和实践方法。无论是对于学术界的研究人员还是对于业界的数据分析师,该书都是一本不可或缺的重要读物。 ### 回答3: 《大规模数据挖掘》是一本关于大规模数据处理和挖掘的经典教材。该书于2011年出版,作者为Jeffrey D. Ullman和Jennifer Widom,并且已被广泛用作大数据领域的教材。 这本书的主要目的是介绍如何有效地处理和分析大规模数据集。在当今互联网时代,每天都有大量的数据被生成和收集,但利用这些庞大的数据集进行有意义的信息提取是一项巨大的挑战。《大规模数据挖掘》从技术和理论的角度出发,讨论了数据挖掘的基本概念、常用算法和工具,帮助读者理解大规模数据挖掘的核心技术。 书中主要涵盖了数据挖掘的各个方面,包括数据预处理、相似性和聚类分析、异常检测、关联规则和频繁模式挖掘、分类和回归分析、推荐系统等。此外,还介绍了用于大规模数据处理的分布式计算、并行算法和存储系统。每个主题都以清晰的语言和丰富的实例进行阐述,使读者能够深入了解算法的原理和实际应用。 《大规模数据挖掘》的另一个重要特点是,尽管书中使用了一些数学和统计的概念,但作者非常注重将这些复杂的概念解释为容易理解和实际应用的形式。这使得读者无论是初学者还是专业人士都能够轻松理解和应用这些技术。 总的来说,《大规模数据挖掘》是一本权威且实用的大数据处理和挖掘教材。无论是从事数据分析的专业人士还是对数据挖掘感兴趣的读者,都能从中获得宝贵的知识和经验。阅读并掌握《大规模数据挖掘》不仅可以帮助人们更好地处理和利用大规模数据集,还可以为解决现实世界中的实际问题提供思路和方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值