本篇以大数据环境下的数据挖掘和机器学习为重点,全面介绍了实践中行之有的数据处理算法,是在校学生和相关从业人员的必备读物。主要内容包括10大内容:
◆分布式文件系统以及MapReduce工具;
◆相似性搜索;
◆数据流处理以及针对易丢失数据等特殊情况的专用处理算法;
◆搜索引擎技术,如谷歌的PageRank;
◆频繁项集挖掘;
◆大规模高维数据集的聚类算法;
◆Web应用中的关键问题一广 告管理和推荐系统;
◆社会网络图挖掘;
◆降维处理,如SVD分解和CUR分解;
◆大规模机器学习。
本章为全书的导论部分,首先阐述数据挖掘的本质,并讨论其在多个相关学科中的不同理解。
接着介绍邦弗朗尼原理( Bonferroni's principle), 该原理实际上对数据挖掘的过度使用提出了警告。
本章还概述了一些非常有用的思想,它们未必都属于数据挖掘的范畴,但是却有利于理解数据挖掘中的某些重要概念。这些思想包括度量词语重要性的TF.IDF权重、哈希函数及索引结构的性质、包含自然对数底e的恒等式等。最后,简要介绍了后续章节所要涉及的主题。
cdn.xitu.io/2019/12/3/16eca3f71d5b1be9?imageView2/0/w/1280/h/960/format/webp/ignore-error/1">
一个基本的数据挖掘问题是从数据中获得“相似”项。我们将在3.1节中介绍该问题的相关应用,并且给出一个具体的Web网页近似查重的例子。这些近似重复的网页可能是抄袭网页,或者仅仅是主机及其他镜像网页信息有所不同的镜像网页。
首先我们将相似度问题表述为寻找具有相对较大交集的集合问题,接着我们介绍如何将文本相似问题转换为上述集合问题并通过著名的“shingling" 技术来解决。然后,我们介绍一一个称为最小哈希( minhashing)的技术,它能够对大集合进行压缩,并且可以基于压缩后的结果推导原始集合的相似度。当相似度要求很高时,也可以使用-些其他的技术,这些技术将在3.9节进行介绍。
任意类型的相似项搜索中存在的另外-一个重要问题是,即使对每项之间的相似度计算非常简单,但是由于项对数目过多,无法对所有项对检测相似度。针对该问题,催生了一种称为局部敏感哈希( Locality Sensitive Hashing,简称LSH )的技术,该技术能够把搜索范围集中在那些可能相似的项对上面。
最后,我们不再将相似度的概念限制在集合的交集运算上,而是考虑在任意空间下的距离度量理论。与此同时,这也激发了一个LSH的通用框架的出现,该框架能够应用在相似度的其他定义中。
本书介绍的大部分算法都假定是从数据库中进行挖掘。也就是说,如果真需要数据的时候,所有数据都可用。本章中,我们将给出另外- -种假设:数据以一-个或多个流的方式到来,如果不对数据进行及时的处理或者存储,数据将会永远丢失。此外,我们假定数据到来的速度实在是太快,以致将全部数据存在活动存储器( 即传统数据库)并在我们选定的时间进行交互是不可能的。
数据流处理的每个算法都在某种程度上包含流的汇总( summarization)过程。我们首先考虑如何从流中抽取有用样本,以及如何从流中过滤除大部分“不想要” 的元素。然后,我们展示如何估计流中的独立元素个数,其中估计方法所用的存储开销远少于列举所有所见元素的开销。
另外一种对流进行汇总的方法是只观察一个定长“窗口”,该窗口由最近的n个元素组成,其中n是某个给定值,通常较大。然后我们就当它是数据库的一一个关系-样对窗口进行查询处理。
如果有很多流并且/或者n很大,我们可能无法存下每个流的整个窗口。因此,即使对这些“窗口”我们都需要进行汇总处理。对于-一个位流窗口,其中的1的数目的近似估计是一个基本问题。
我们将使用一种比存储整个窗口消耗空间要少很多的方法。该方法也能推广到对各种求和值进行近似。.
本章主要关注数据刻画的一类主要技术一频繁 项集发现。该问题常常被看成“关联规则”发现,尽管后者主要是基于频繁项集发现而实现的一一种更复杂的数据刻画方式。
首先,我们介绍数据的“购物篮”模型,其本质上是“项”和“购物篮”两类元素之间的多对多关系。但是其中有一些关于数据形状的假设。频繁项集问题就是寻找出现在很多相同购物篮中(与该购物篮相关的)的项集。
频繁项集发现问题和第3章讨论的相似性搜索不同,前者主要关注包含某个特定项集的购物篮的绝对数目,而后者的主要目标是寻找购物篮之间具有较高重合度的项集,不管购物篮数目的绝对数量是否很低。
上述差异导致了一类新的频繁项集发现算法的产生。我们首先介绍A-Priori算法, 该算法的基本思路是,如果-一个集合的子集不是频繁项集,那么该集合也不可能是频繁项集。基于这种思路,该算法可以通过检查小集合而去掉大部分不合格的大集合。接着,我们介绍基本的A-Priori算法的各种改进,这些改进策略集中关注给可用内存带来很大压力的极大规模数据集。
再接下来,我们还会考虑一些更快的近似算法,这些算法不能保证找到所有的频繁项集。这类算法当中的一些算法也应用了并行化机制,包括基于MapReduce框架的并行化方法。
最后,我们将简要地讨论数据流中的频繁项集的发现问题。
有一类包罗万象的Web应用涉及用户对选项的喜好进行预测,这种系统称为推荐系统( recommendation system )。本章将首先给出这类系统的一些最重要应用样例。
但是,为了集中关注问题本身,下面给出两个很好的推荐系统样例:
(1)基于对用户兴趣的预测结果,为在线报纸的读者提供新闻报道;
(2)基于顾客过去的购物和/或商品搜索历史,为在线零售商的顾客推荐他们可能想要买的商品。
推荐系统使用一系列不同的技术,这些系统可以分成两大类:
基于内容的系统(Content-basedSystem)这类系统主要考察的是推荐项的性质。例如,如果一个Netlix的用户观看了多部西部牛仔片,那么系统就会将数据库中属于“西部牛仔”类的电影推荐给该用户。
协同过滤系统( Collaborative Filtering System )这类系统通过计算用户或/和项之间的相似度来推荐项。与某用户相似的用户所喜欢的项会推荐给该用户。这类推荐系统可以使用第3章的相似性搜索和第7章的聚类技术的基本原理。但是,这些技术本身并不足够,有一些新的算法被证明在推荐系统中十分有效。
现在有很多算法被归入“机器学习”类。同本书介绍的其他算法一样,这些算法的目的都是从数据中获取信息。所有数据分析算法都是基于数据生成概要,基于这些概要信息可以进行决策。
在很多例子中,第6章介绍的频繁项集分析方法都生成了关联规则这类信息,这些信息可以用于规划销售策略或者为其他目标服务。
然而,称为“机器学习”的算法不仅能够对数据进行概括,还可以将它们视作模型的学习器或者数据的分类器,因而可以学到数据中未来可以见到的某种信息。例如,第7章介绍的聚类算法可以产生- -系列簇,这些簇不仅能告诉我们有关被分析数据(训练集)的信息,而且能够将未来数据分到聚类算法生成的某-个簇当中。 因此,机器学习爱好者通常用“非监督学习”这个新词来表达聚类,术语“非监督”( unsupervised )表示输人数据并不会告诉聚类算法最后输出的簇到底应该是什么。而在有监督( supervised )的机器学习(本章的主题)中,给出的数据中包含了至少对- -部分数据进行正确分类的信息。已经分好类的数据称为训练集( training set )。
本章并不打算全面介绍机器学习中所有的方法,而只关注那些适用于处理极大规模数据的方法,以及有可能并行化实现的方法。我们会介绍学习数据分类器的经典的“感知机”方法,该方法能够找到-一个将两类数据分开的超平面。之后,我们会考察-一些更现代的包括支持向量机的技术。与感知机类似,这些方法寻找最佳的分类超平面,以使尽可能少(如果有的话)的训练集元素靠近超平面。最后讨论近邻技术,即数据按照某个空间下最近的一些邻居的类别进行分类。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。