R语言数据挖掘(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-17 07:39:11

点击下载

作者:(哈)贝特·麦克哈贝尔(BaterMakhabel)

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

R语言数据挖掘

R语言数据挖掘试读:

前言

世界各地的统计学家和分析师正面临着处理许多复杂统计分析项目的迫切问题。由于人们对数据分析领域的兴趣日益增加,所以R语言提供了一个免费且开源的环境,非常适合学习和有效地利用现实世界中的预测建模方案。随着R语言社区的不断发展及其大量程序包的不断增加,它具备了解决众多实际问题的强大功能。

R编程语言诞生已经有数十年了,它已经变得非常知名,不但被社区的科学家而且被更广泛的开发者社区所熟知。它已经成长为一个强大的工具,可以帮助开发者在执行数据相关任务时生成有效且一致的源代码。由于R语言开发团队和独立贡献者已经创建了良好的文档,所以使用R语言编程并不困难。

进而,你可以使用来自R语言官方网站的程序包。如果你想不断提高自己的专业水平,那么你可能需要阅读在过去几年中已经出版的书籍。你应该始终铭记:创建高水平、安全且国际兼容的代码比初始创建的第一个应用程序更加复杂。

本书的目的是帮助你处理在复杂的统计项目中遇到的一系列可能比较困难的问题。本书的主题包括:学习在运行R语言程序时,如何使用R代码段处理数据,挖掘频繁模式、关联规则和相关规则。本书还为那些具有R语言基础的读者提供了成功创建和自定义最常用数据挖掘算法的技能和知识。这将有助于克服困难,并确保在运用R语言公开可用的丰富程序包开发数据挖掘算法时,R编程语言能够得到最有效的使用。

本书的每一章是独立存在的,因此你可以自由地跳转到任何一章,学习你觉得自己需要对某个特定的话题进行更加深入了解的章节。如果你觉得自己遗漏了一些重要的知识,你可以回顾前面的章节。本书的组织方式有助于逐步拓展你的知识框架。

你需要了解如何编写不同的预测模型、流数据和时间序列数据的代码,同时你还会接触到基于MapReduce算法(一种编程模型)的解决方案。学完本书,你将会为自己所具备的能力(知道哪种数据挖掘算法应用于哪种情况)而感到自信。

我喜欢使用R编程语言进行多用途数据挖掘任务的开发与研究,我非常高兴能与大家分享我的热情和专业知识,帮助大家更有效地使用R语言,更舒适地使用数据挖掘算法的发展成果与应用。

本书主要内容

第1章阐述数据挖掘的概要知识,数据挖掘与机器学习、统计学的关系,介绍数据挖掘基本术语,如数据定义和预处理等。

第2章包含使用R语言编程时,学习挖掘频繁模式、关联规则和相关规则所需的高级且有趣的算法。

第3章帮助你学习使用R语言编写经典分类算法,涵盖了应用于不同类型数据集的多种分类算法。

第4章讲述更多的分类算法,如贝叶斯信念网络、支持向量机(SVM)和k近邻算法。

第5章讲述如何使用流行与经典的算法进行聚类,如k均值、CLARA和谱算法。

第6章介绍与当前行业热点话题相关的高级聚类算法的实现,如EM、CLIQUE和DBSCAN等。

第7章介绍如何应用经典和流行算法来检测现实世界案例中的异常值。

第8章运用最流行、最经典以及一流的算法来讲解流数据、时间序列和序列数据挖掘这3个热点话题。

第9章介绍图挖掘和社交挖掘算法的概要及其他有趣的话题。

第10章介绍应用领域中最流行算法的有趣应用。

附录包含算法和数据结构的列表以便帮助你学习数据挖掘。

学习本书的准备知识

任何一台装有Windows、Linux或者Mac OS系统的个人计算机都可以运行本书给出的代码示例。本书所使用的软件都是开源的,可以从http://www.r-project.org/上免费获取。

读者对象

本书适合对R语言和统计学具有基本知识的数据科学家、定量分析师和软件工程师。本书假定读者只熟悉非常基本的R语言知识,如主要的数据类型、简单的函数和如何来回移动数据。不需要先前熟悉数据挖掘软件包。但是,你应该对数据挖掘的概念和过程有基本的认知。

即使你对于数据挖掘完全是一个新人,你也能够同时掌握基本和高级的数据挖掘算法的实现。你将学习如何从各种数据挖掘算法中选择合适的算法,将这些算法应用于现实世界可用的大多数数据集中的某些特定数据集中。

约定

本书中,你将发现多种文字印刷格式,它们用于对不同类型的信息进行区分。下面是关于这些格式的一些例子以及它们的含义。

文本中的代码、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟URL、用户输入和Twitter ID如下所示:“我们可以通过使用include指令来包含其他的上下文。”

新的术语和重要词用粗体标示。例如,在屏幕上、菜单中或者对话框中看到的词将这样出现在文本中:“单击Next按钮进入下一个界面。”

警告或者重要的说明将会出现在这样的图标后面。

提示或技巧将会出现在这样的图标后面。

读者反馈

读者的反馈始终是受欢迎的。让我们知道你如何看待本书——你喜欢哪些内容或者你可能不喜欢哪些内容。读者的反馈对于我们制定使读者真正获得最大效用的主题是十分重要的。

可以通过发送电子邮件至邮箱feedback@packtpub.com,并在电子邮件的主题中提及书名来给我们提供意见。

如果你对于某个主题有专长,或者你有兴趣编写一本书或协助完成一本书,可以到网站www.packtpub.com/authors看一看我们的撰稿指南。

客户支持

既然你现在自豪地拥有了一本Packt书,那么我们可以做很多事来帮助你充分利用你购买的书籍。

下载示例代码

你可以从你在http://www.packtpub.com网站的账户上下载所有你已经购买的Packt书的示例代码。如果你在其他地方购买本书,你可以访问http://www.packtpub.com/support网站并注册,我们将通过电子邮件直接给你发送文件。你也可以在网站https://github.com/batermj/learning-data-mining-with-r找到本书的代码文件。

勘误表

虽然我们已经尽力确保书中内容的准确性,但错误难免会发生。如果你在我们的某一本书中发现错误(可能是文本或者代码中的错误)并向我们报告错误,我们将不胜感激。由此,你可以使其他读者免于困惑并帮助我们改进该书的后续版本。如果你发现任何错误,请通过访问http://www.packtpub.com/submit-errata网站,选择相应图书,单击errata submission form(勘误提交表单)的链接,并输入错误的详细信息以便报告给我们。一旦你的错误得到验证,你的提交将被接受并上传到我们的网站,或者添加到现有的勘误表中,列于该标题下的勘误表部分。任何现有的勘误表均可从http://www.packtpub.com/support网站上选择你所需要的标题进行查看。

盗版行为

因特网上版权材料的盗版行为是所有媒介一直存在的问题。在Packt,我们非常重视对版权和许可证的保护。如果你在网络上遇到任何形式非法复制我们著作的行为,请立刻向我们提供位置地址或者网站名称以便我们能够寻找补救方法。

我们的联系方式是copyright@packtpub.com,请一并附上关于涉嫌盗版材料的链接。

我们非常感谢你对我们的作者以及我们为你带来有价值内容的能力的保护。

问题

如果你对本书有任何方面的问题,可以联系我们(questions@packtpub.com),我们将竭尽所能帮助你解决。致谢

感谢我的妻子Zurypa Dawletkan和儿子Bakhtiyar。他们支持我利用多个周末和夜晚使得本书得以出版。

我也要感谢Luke Presland,给予我机会来撰写这本书。十分感谢Rebecca Pedley和Govindan K,你们对本书的贡献是巨大的。感谢Jalasha D’costa和其他技术编辑及团队为该书出版付出的努力,使得本书看起来还不错。同时,感谢组稿编辑和技术审校者。

我也要谢谢我的兄弟Bolat Makhabel博士(LinkedIn:BOLATMJ),他给我提供了本书英文版封面的照片,他具有医学背景。照片中的植物名为Echinops(植物学的拉丁名字),哈萨克语称为Lahsa,在中国称为蓝刺头。这种植物用于传统的哈萨克医药,也是我兄弟研究的一部分。

尽管我的专业知识来源于不断的实践,但它也来源于我的母校(清华大学)和戴梅萼教授、赵雁南教授、王家钦教授、Ju Yuma教授以及其他众多老师为我打下的坚实基础。他们的精神鼓励我在计算机科学和技术领域继续努力。我要感谢我的岳父母Dawletkan Kobegen和Burux Takay,感谢他们照顾我的儿子。

最后,我要对我的姐姐Aynur Makhabel和姐夫Akimjan Xaymardan表达我最大的敬意。第1章预备知识

本章中,你将学习基本的数据挖掘术语,比如数据定义、预处理等。

最重要的数据挖掘算法将通过R语言进行说明,以便帮助你快速掌握原理,包括但不局限于分类、聚类和异常值检测。在深入研究数据挖掘之前,我们来看一看将要介绍的主题:● 数据挖掘● 社交网络挖掘● 文本挖掘● 网络数据挖掘● 为什么选择R● 统计学● 机器学习● 数据属性与描述● 数据测量● 数据清洗● 数据集成● 数据降维● 数据变换与离散化● 结果可视化

在人类历史上,来自每个方面的数据结果都是广泛的,例如网站、由用户的电子邮件或姓名或账户构成的社交网络、搜索词、地图上的位置、公司、IP地址、书籍、电影、音乐和产品。

数据挖掘技术可应用于任何类型的旧数据或者新数据,每种数据类型都可以运用特定的技术(并不需要全部技术)得到最好的处理。也就是说,数据挖掘技术受到数据类型、数据集大小以及任务应用环境等条件的限制。每一种数据集都有自己适合的数据挖掘解决方案。

一旦旧的数据挖掘技术不能应用于新的数据类型或者如果新的数据类型不能转换成传统的数据类型,那么总是需要研究新的数据挖掘技术。应用于Twitter庞大资源集的流数据挖掘算法的演变是一个典型的例子,针对社交网络开发的图挖掘算法是另一个例子。

最流行且最基本的数据形式来自数据库、数据仓库、有序数据或者序列数据、图形数据以及文本数据等。换句话说,它们是联合数据、高维数据、纵向数据、流数据、网络数据、数值数据、分类数据或者文本数据。1.1 大数据

大数据是数据量很大的数据,它不适合存储在单台机器中。也就是说,在研究大数据时,数据本身的大小成为了问题的一部分。除了容量(Volume),大数据的其他两个主要特征就是多样性(Variety)和速度(Velocity),这就是大数据著名的三个特征。速度指的是数据处理的速率或者数据处理有多快;多样性指的是各种数据源类型。大数据源集合产生的噪声更频繁并且影响挖掘的结果,这就需要高效的数据预处理算法。

因此,分布式文件系统用来作为对大量数据成功执行并行算法的工具,可以肯定的是,每过1秒,我们将得到更多的数据。数据分析和可视化技术是与海量数据相关的数据挖掘任务的主要部分。海量数据的特性吸引了许多与平台相关的新的数据挖掘技术,其中一个就是RHadoop。我们将在后面的内容中对它进行描述。

大数据中的一些重要数据类型如下所述:● 第一种数据类型来自摄像机视频,它包含了用于加快犯罪调查分析、增强零售分析以及军事情报分析等更多的元数据。● 第二种数据类型来自嵌入式的传感器,如医用传感器,用来监测病毒的任何潜在爆发。● 第三种数据类型来自娱乐,由任何人通过社交媒体自由发布的信息。● 第四种数据类型来自消费者图像,它们源自社交媒体,像这种图像的标注是很重要的。

下面的表说明了数据大小增长的历史。该表显示信息每两年翻一番多,改变着研究人员或者公司的管理方式,通过数据挖掘技术从数据中获取价值,揭示着新的数据挖掘研究。可扩展性和效率

效率、可扩展性、性能、优化以及实时执行的能力对于几乎所有的算法都是很重要的问题,它对数据挖掘也是如此。数据挖掘算法始终有一些必要的衡量指标或者基准因素。

随着数据量的持续增长,保持数据挖掘算法的效率和可扩展性对于有效地从众多数据存储库或数据流中的海量数据集里提取信息是很有必要的。

从单台机器到广泛分布的数据存储、众多数据集的庞大规模以及数据挖掘方法计算的复杂性,这些都是驱动并行和分布式数据密集型挖掘算法发展的因素。1.2 数据源

数据充当数据挖掘系统的输入,因此数据存储库是非常重要的。在企业环境中,数据库和日志文件是常见来源;在网络数据挖掘中,网页是数据的来源;连续地从各种传感器中提取数据也是典型的数据源。这里有一些免费的在线数据源十分有助于学习数据挖掘:● 频繁项集挖掘数据存储库(Frequent Itemset Mining Dataset Repository):一个带有数据集的存储库,用于找到频繁项集的方法(http://fimi.ua.ac.be/data/)。● UCI机器学习存储库(UCI Machine Learning Repository):一个数据集的集合,适用于分类任务(http://archive.ics.uci.edu/ml/)。● statlib的数据及其描述库(The Data and Story Library at statlib):DASL是一个在线库,它拥有说明基本统计方法用途的数据文件和故事。我们希望提供来自多主题的数据,这样统计学教师可以找到学生感兴趣的真实世界的例子。使用DASL强大的搜索引擎来查找感兴趣的故事和数据文件(http://lib.stat.cmu.edu/DASL/)。● 词汇网(WordNet):一个英语词汇数据库(http://wordnet.princeton.edu)。1.3 数据挖掘

数据挖掘就是在数据中发现一个模型,它也称为探索性数据分析,即从数据中发现有用的、有效的、意想不到的且可以理解的知识。有些目标与其他科学,如统计学、人工智能、机器学习和模式识别是相同的。在大多数情况下,数据挖掘通常被视为一个算法问题。聚类、分类、关联规则学习、异常检测、回归和总结都属于数据挖掘任务的一部分。

数据挖掘方法可以总结为两大类数据挖掘问题:特征提取和总结。1.3.1 特征提取

这是为了提取数据最突出的特征并忽略其他的特征。下面是一些例子:● 频繁项集(Frequent itemset):该模型对构成小项集篮子的数据有意义。(找出一堆项目中出现最为频繁、关系最为密切的一个子集。——译者注)● 相似项(Similar item):有时你的数据看起来像数据集的集合,而目标是找到一对数据集,它们拥有较大比例的共同元素。这是数据挖掘的一个基本问题。1.3.2 总结

目标是简明且近似地对数据集进行总结(或者说摘要),比如聚类,它是这样一个过程:检查数据的集合并根据某些度量将数据点分类到相应的类中。目标就是使相同类中的点彼此之间的距离较小,而不同类中的点彼此之间的距离较大。1.3.3 数据挖掘过程

从不同的角度定义数据挖掘过程有两种比较流行的过程,其中更广泛采用的一种是CRISP-DM:● 跨行业数据挖掘标准过程(Cross-Industry Standard Process for Data Mining,CRISP-DM)。● 采样、探索、修正、建模、评估(Sample,Explore,Modify,Model,Assess,缩写为SEMMA),这是由美国SAS研究所制定的。

1.3.3.1 CRISP-DM

这个过程共分6个阶段,如下图所示。它不是一成不变的,但通常会有大量的回溯。

让我们详细地看一看每个阶段:● 业务理解(business understanding):这项任务包括确定业务目标、评估当前形势、建立数据挖掘目标并制订计划。● 数据理解(data understanding):这项任务评估数据需求,包括原始数据收集、数据描述、数据探索和数据质量的验证。● 数据准备(data preparation):一旦获得数据,在上一步中确定数据源。然后需要对数据进行选择、清洗,并形成期望的形式和格式。● 建模(modeling):可视化和聚类分析对于初步分析是有用的。可以应用像广义规则归纳(generalized rule induction)这样的工具开发初始关联规则。这是一个发现规则的数据挖掘技术,从条件因素与给定的决策或者结果之间的因果关系来对数据进行说明。也可以应用其他适用于数据的模型。● 评估(evaluation):结果应该在第一阶段中的业务目标指定的环境下对模型结果进行评估。在大多数情况下,这会导致新需求的确定,转而返回到前一个阶段。● 部署(deployment):可以使用数据挖掘来验证之前的假设或者知识。

1.3.3.2 SEMMA

下图是SEMMA过程的概览。

让我们详细地看一看这些过程:● 采样(sample):在该步中,提取一个大数据集的一部分。● 探索(explore):为了更好地理解数据集,在此步中搜索未预料的趋势和异常。● 修正(modify):创建、选择和转换变量,以便专注于模型构建过程。● 建模(model):搜索多种模型的组合,以便预测一个满意的结果。● 评估(assess):根据实用性和可靠性对数据挖掘过程的结果进行评估。1.4 社交网络挖掘

正如我们前面提到的,数据挖掘是从数据中发现一个模型,社交网络挖掘就是从表示社交网络的图形数据中发现模型。

社交网络挖掘是网络数据挖掘的一个应用,比较流行的应用有社会科学和文献计量学、PageRank和HITS算法、粗粒度图模型的不足、增强模型和技术、主题提取的评估以及网络的评估与建模。社交网络

当涉及社交网络的讨论时,你会想到Facebook、Google+和LinkedIn等。社交网络的基本特征如下:● 存在一个参与网络的实体集合。通常情况下,这些实体是人,但它们也完全可能是其他实体。● 网络的实体之间至少存在一种关系。在Facebook上,这种关系被称为朋友,有时,这种关系要么存在要么不存在,两个人要么是朋友要么不是朋友。然而,在社交网络的其他例子中,关系有一个度。这个度可以是离散的,比如在Google+上,朋友、家人、相识或者不相识;这个度也可能是一个实际的数字,比如平均一天内两个人相互交谈所花费的时间。● 社交网络有一个非随机性或者忠诚性的假设。这个条件最难形式化,但直观解释是关系趋于集中;也就是说,如果实体A与B和C都相关,那么B与C相关的概率就高于平均水平。

下面是社交网络的一些种类:● 电话网络(telephone network):该网络的节点是电话号码,代表个体。● 电子邮件网络(E-mail network):该网络的节点是电子邮件地址,也代表个体。● 合作网络(collaboration network):该网络的节点代表发表了研究论文的个体,连接两个节点的边表示联合发表一篇或者多篇论文的两个个体。

社交网络以无向图建模。实体是节点,如果两个节点根据刻画网络的关系相互关联,那么就有一条边连接两个节点。如果相关联的关系有一个度,那么这个度就通过标记边来表示。

下载代码示例

你可以从http://www.packtpub.com的账户中下载所有你购买的Packt出版社出版的书籍的示例代码文件。如果你在其他地方购买了这本书,你可以访问http://www.packtpub.com/support网站并注册,我们将通过电子邮件直接给你发送文件。

这里有一个例子,它是用R语言的sna程序包中的科尔曼高中朋友数据(Coleman’s High School Friendship Data)进行分析。数据来源于对某个学年同一高中的73个男孩之间的友好关系的研究,所有被调查对象提供了两个时间点(春季和秋季)来报告其关系。数据集的名称是coleman,它是R语言中的数组类型。节点代表一个具体的学生,线代表两个学生之间的关系。春季秋季1.5 文本挖掘

文本挖掘基于文本数据,关注从大型自然语言文本中提取相关信息,并搜寻有意义的关系、语法关系以及提取实体或各项之间的语义关联。它也被定义为自动或半自动的文本处理。相关的算法包括文本聚类、文本分类、自然语言处理和网络挖掘。

文本挖掘的特征之一是数字与文本混合,或者用其他的观点来说,就是源数据集中包含了混合数据类型。文本通常是非结构化文件的集合,这将被预处理并变换成数值或者结构化的表示。在变换之后,大部分的数据挖掘算法都可以应用,并具有不错的效果。

文本挖掘的过程描述如下:● 第一步准备文本语料库,包括报告、信函等。● 第二步基于文本语料库建立一个半结构化的文本数据库。● 第三步建立一个词语文档矩阵,包含词语的频率。● 第四步进行进一步的分析,比如文本分析、语义分析、信息检索和信息总结。1.5.1 信息检索和文本挖掘

信息检索帮助用户查找信息,经常与在线文档相关联,它着重于信息的获取、组织、存储、检索和分布。信息检索(Information Retrieval,IR)的任务是根据查询检索有关的文档。信息检索的基本技术是测量相似性。其基本步骤如下所述:● 指定一个查询。下面是一些查询类型:● 关键词查询(keyword query):由一个关键词列表表示,用来查

找包含至少一个关键词的文档。● 布尔查询(boolean query):由布尔运算符和关键词构建的查询。● 短语查询(phrase query):由组成短语的一系列词语所构成的

查询。● 近邻查询(proximity query):短语查询的降级版本,它可以是

关键词和短语的组合。● 全文档查询(full document query):一个完整文档的查询,用于

寻找类似于查询文档的其他文档。● 自然语言问题(natural language questions):该查询有助于将用

户的需求表示成一个自然语言问题。● 搜索文档集。● 返回相关文档的子集。1.5.2 文本挖掘预测

预测文本的结果与预测数值数据挖掘一样耗力,并且有与数值分类相关联的相似问题。文本挖掘预测通常是一个分类问题。

文本预测需要先验知识,通过样本了解如何对新文档做出预测。一旦文本变换成数值数据,就可以应用预测方法。1.6 网络数据挖掘

网络挖掘的目的是从网络超链接结构、网页和使用数据来发现有用的信息或知识。网络是作为数据挖掘应用输入的最大数据源之一。

网络数据挖掘基于信息检索、机器学习(Machine Learning,ML)、统计学、模式识别和数据挖掘。尽管很多数据挖掘方法可以应用于网络挖掘,但是由于异构的、半结构化的和非结构化的网络数据,所以网络挖掘不单纯是一个数据挖掘问题。

网络挖掘任务至少可以定义为3种类型:● 网络结构挖掘(web structure mining):这有助于从超链接中寻找有关网址和页面的有用信息或者有价值的结构总结。● 网络内容挖掘(web content mining):这有助于从网页内容中挖掘有用的信息。● 网络用法挖掘(web usage mining):这有助于从网络日志中发现用户访问模式,以便检测入侵、欺诈和试图闯入的情况。

应用于网络数据挖掘的算法源自经典的数据挖掘算法。它们有很多相似之处,比如挖掘过程,但也存在差异。网络数据挖掘的特征使其不同于数据挖掘的原因如下:● 数据是非结构化的。● 网络信息不断变化和数据量不断增长。● 任何数据类型都可以在网络上得到,如结构化和非结构化数据。● 网络上存在异构信息,冗余页面也存在。● 网络上链接着海量信息。● 数据是噪声数据。

网络数据挖掘不同于一般数据挖掘是由于源数据集的巨大动态容量、极其多样化的数据格式等。与网络相关的最流行的数据挖掘任务如下:● 信息提取(Information Extraction,IE):信息提取的任务包含以下步骤:词汇标记、句子分割、词性分配、命名实体识别、短语解析、句子解析、语义解释、话语解释、模板填充以及合并。● 自然语言处理(Natural Language Processing,NLP):它研究人与人和人与机器互动的语言特征、语言能力和行为模型、用这样的模型实现过程的框架、过程/模型的迭代优化以及对结果系统的评估技术。与网络数据挖掘相关的经典自然语言处理任务包括标注、知识表示、本体论模型等。● 问题回答(question answering):目标就是以自然语言形式从文本集中寻找问题的答案。它可以归类为槽填充、有限域以及具有更高难度的开放域。一个简单的例子就是基于预先定义的常见问题解答(FAQ)来回答客户的询问。● 资源发现(resource discovery):比较流行的应用是优先收集重要的页面;使用链路拓扑结构、主题局部性和主题爬行进行相似性搜索;社区发现。1.7 为什么选择R

R是一种高质量、跨平台、灵活且广泛使用的开源免费语言,可用于统计学、图形学、数学和数据科学。它由统计学家创建,并为统计学家服务。

R语言包含了5000多种算法以及全球范围内具备专业知识的数百万用户,并得到了充满活力且富有才华的社区贡献者的支持。它不仅可以使用完善的统计技术,也允许使用试验性的统计技术。

R是一个用于统计计算与图形学的免费开源软件,其环境由R-projects维护,根据自由软件基金会(Free Software Foundation)的GNU通用公共授权(General Public License)的条款,R语言的源代码是可以获得的。由于存在各种平台,如Unix、Linux、Windows以及Mac OS,所以R语言也编译和开发了用于不同平台的版本。R的缺点有哪些

R存在以下3个缺点:● 一个缺点就是内存约束,因此它需要将整个数据集存储在内存(RAM)中以便实现高性能,这也称为内存分析。● 类似于其他开源系统,任何人都可以创建和贡献经过严格测试或者未经过严格测试的程序包。换言之,贡献给R社区的程序包是容易出错的,需要更多的测试以确保代码的质量。● R语言似乎比某些其他商业语言慢。

幸运的是,存在可用于解决这些问题的程序包。有些方法可以归为并行解决方案,本质就是将程序的运行分散到多个CPU上,从而克服上面所列R语言的缺陷。有不少好的例子,比如RHadoop,但并不局限于RHadoop。你很快就会在下面的章节中看到更多关于这个话题的内容。你可以从综合R典藏网(Comprehensive R Archive Network,CRAN)下载SNOW添加包和Parallel添加包。1.8 统计学

统计学研究数据收集、数据分析、数据解释或说明,以及数据表示。作为数据挖掘的基础,它们的关系将在下面章节中说明。1.8.1 统计学与数据挖掘

第一次使用数据挖掘这个术语的人是统计学家。最初,数据挖掘是一个贬义词,指的是企图提取得不到数据支持的信息。在一定程度上,数据挖掘构建统计模型,这是一个基础分布,用于可视化数据。

数据挖掘与统计学有着内在的联系,数据挖掘的数学基础之一就是统计学,而且很多统计模型都应用于数据挖掘中。

统计模型可以用来总结数据集合,也可以用于验证数据挖掘结果。1.8.2 统计学与机器学习

随着统计学和机器学习的发展,这两个学科成为一个统一体。统计检验被用来验证机器学习模型和评估机器学习算法,机器学习技术与标准统计技术可以有机结合。1.8.3 统计学与R语言

R是一种统计编程语言,它提供大量基于统计知识的统计函数。许多R语言添加包的贡献者来自统计学领域,并在他们的研究中使用R语言。1.8.4 数据挖掘中统计学的局限性

在数据挖掘技术的演变过程中,由于数据挖掘中统计的局限性,人们在试图提取并不真正存在于数据中的信息时可能会犯错误。

Bonferroni原则(Bonferroni’s Principle)是一个统计定理,也被称为Bonferroni校正(Bonferroni correction)。你可以假设你找到的大部分结果都是事实上不存在的,即算法返回的结果大大超过了所假设的范围。1.9 机器学习

应用于机器学习算法的数据集称为训练集,它由一组成对的数据(x,y)构成,称为训练样本。成对的数据解释如下:● x:这是一个值向量,通常称为特征向量。每个值或者特征,要么是分类变量(这些值来自一组离散值,比如{S,M,L}),要么是数值型。● y:这是一个标签,表示x的分类或者回归值。

机器学习过程的目的就是发现一个函数y=f(x),它能最好地预测与每一个x值相关联的y值。原则上y的类型是任意的,但有一些常见的和重要的类型:● y:这是一个实数,机器学习问题称为回归。● y:这是一个布尔值,真或者假,通常分别写为+1和-1。在这种情况下,机器学习问题称为二元分类。● y:这是某些有限集合的成员。这个集合的成员可以认为是类,并且每个成员代表一类。此机器学习问题称为多级分类。● y:这是某些潜在无限集合的成员,例如,x的一个解析树,它被解析为一个句子。

到现在为止,在我们可以更直接地描述挖掘目标的情况下,还没有证明机器学习是成功的。机器学习和数据挖掘是两个不同的主题,尽管它们共享一些算法——特别是目标为提取信息时。在某些情况下,机器学习是有意义的,一个典型的情形就是当我们试图从数据集中寻找某些信息。1.9.1 机器学习方法

算法的主要类型均列于下方,每个算法由函数f区分。● 决策树(decision tree):这种形式的f呈树形,树的每个节点都有一个关于x的函数,用来确定必须搜索哪个子节点或者哪些子节点。● 感知器(perceptron):这些是应用于向量的分量的阈值函数。对每个i=1,2,…,n,权重wi与第i个分量相关联,且有一个阈值。如果阈值满足条件,输出为+1,否则为-1。● 神经网络(neural net):这些是有感知器的非循环网络,某些感知器的输出用作其他感知器的输入。● 基于实例的学习(instance-based learning):此方法使用整个训练集来表示函数f。● 支持向量机(support-vector machine):该类的结果是一个分类器,它对未知数据更准确。分类的目标是寻找最优超平面,通过最大化两个类的最近点之间的间隔将它们分隔。1.9.2 机器学习架构

这里,机器学习的数据方面指的是处理数据的方式以及使用数据构建模型的方式。● 训练和测试(training and testing):假定所有数据都适用于训练,分离出一小部分可用的数据作为测试集,使用余下的数据建立一个合适的模型或者分类器。● 批处理与在线学习(batch versus online learning):对于批处理方式,在其进程的开始,整个训练集都是可得到的;对于在线学习,其训练集以数据流的形式获得,且对它进行处理后不能被再次访问。● 特征选择(feature selection):这有助于找出那些用作学习算法输入的特征。● 创建训练集(creating a training set):通过手动创建标签信息,从而把数据变为训练集。1.10 数据属性与描述

属性(attribute)是代表数据对象的某些特征、特性或者维度的字段。

在大多数情况下,数据可以用矩阵建模或者以矩阵形式表示,其中列表示数据属性,行表示数据集中的某些数据记录。对于其他情况,数据不能用矩阵表示,比如文本、时间序列、图像、音频以及视频等。数据可以通过适当的方法,如特征提取,变换成矩阵。

数据属性的类型来自它的语境、域或者语义,有数值、非数值、分类数据类型以及文本数据。有两种适用于数据属性与描述的视角,它们在数据挖掘与R语言中被广泛使用,如下所述:● 基于代数或者几何视角的数据(data in algebraic or geometric view):整个数据集可以建模为一个矩阵。线性代数和抽象代数在这里起着很重要的作用。● 基于概率视角的数据(data in probability view):将观测数据视为多维随机变量。每一个数值属性就是一个随机变量,维度就是数据的维度。不论数值是离散的还是连续的,这里都可以运用概率论。

为了帮助读者更自然地学习R语言,我们将采用几何、代数以及概率视角的数据。

这里有一个矩阵的例子。列数由m确定,m就是数据的维度;行数由n确定,n就是数据集的大小。

其中,xi表示第i行,表示一个m元组,如下所示:

Xj表示第j列,表示一个n元组,如下所示:1.10.1 数值属性

因为数值数据是定量的且允许任意计算,所以它易于处理。数值数据与整数或者浮点数的性质是一样的。

来自有限集或者可数无限集的数值属性称为是离散的(discrete),例如一个人的年龄,它是从1150开始的整数值。来自任何实数值的其他属性称为是连续的(continuous)。主要有两种数值类型:● 定距尺度(interval-scaled):这是以相同单位尺度测量的定量值,例如某些特定鱼类的重量,以国际度量标准,如克或者千克。● 定比尺度(ratio-scaled):除了值之间的差值之外,该值可以通过值之间的比率进行计算。这是一个具有固定零点的数值属性,因此可以说一个值是另一个值的多少倍。1.10.2 分类属性

分类属性的值来自一组符号构成的集域(集合),例如人类服装的大小被分类为{S,M,L}。分类属性可以划分为两种类型:● 名义(nominal):该集合中的值是无序的且不是定量的,这里只有相等运算是有意义的。● 定序(ordinal):与定类类型相反,这里的数据是有序的。这里除了相等运算外,也可以进行不相等运算。1.10.3 数据描述

基本描述可以用来识别数据的特征,区分噪声或者异常值。两种基本的统计描述如下所示:● 集中趋势的度量(measures of central tendency):它测量数据分布的中间或中心位置:均值、中位数、众数、值域中点等。● 数据的离散程度的度量(measures of dispersion of the data):它包括全距、四分位数、四分位数间距等。1.10.4 数据测量

数据测量用于聚类、异常值检测和分类。它指的是近似性、相似性和差异性的度量。两个元组或数据记录之间的相似值的取值范围是0~1的一个实数值,数值越大,元组之间的相似度就越高。差异性的原理相反,差异性值越大,两个元组就越不相似。

对于一个数据集,数据矩阵在n×m阶矩阵(n个元组和m个属性)中存储了n个数据元组:

相异度矩阵存储了数据集中的所有n个元组的近似度集合,通常为一个n×n阶的矩阵。在下面的矩阵中,d(i,j)是两个元组之间的差异性。0表示彼此之间高度相似或者高度接近,同样,1表示完全不相同。数值越大,相异度就越高。

大多数时候,相异度和相似度是相关的概念。相似性度量通常可以使用一个函数来定义,可以用相异性的度量来构建相似性,反之亦然。

这里有一张表,它列出了不同类型属性值常用的度量方法。1.11 数据清洗

数据清洗是数据质量的一部分,数据质量(Data Quality,DQ)的目标如下:● 准确性(数据被正确记录)。● 完整性(所有相关数据都被记录)。● 唯一性(没有重复的数据记录)。● 时效性(数据不过时)。● 一致性(数据是一致的)。

数据清洗试图填补缺失值、发现异常值同时平滑噪声、修正数据中的不一致性。数据清洗通常是一个两步迭代的过程,由差异检测和数据变换构成。

在大多数情况下,数据挖掘的过程都包含如下两个步骤:● 第一步对源数据集进行测试以便发现差异。● 第二步是选择变换方法来修正数据(基于要修正属性的准确性以及新值与原始值的接近程度)。然后应用变换来修正差异。1.11.1 缺失值

在从各类数据源获取数据的过程中,当某些字段为空或者包含空值时会存在许多情况。好的数据录入程序应该尽量避免或者最小化缺失值或错误的数目。缺失值与默认值是无法区分的。

如果某些字段存在缺失值,那么有一些解决方案——每种解决方案都有不同的考虑与缺陷,并且每种方案在特定情况下都是可用的。● 忽略元组:由于忽略元组,除了那个缺失值以外,你也不能使用剩余的值。这种方法只适用于当元组包含的一些属性有缺失值或者每个属性缺失值的百分比变化不大时。● 人工填补缺失值:对于大型数据集,该方法并不适用。● 使用全局常量填补缺失值(use a global constant to fill the value):使用该常量填补缺失值可能会误导挖掘过程,并不十分安全。● 使用属性集中趋势的度量来填补缺失值:集中趋势的度量可用于对称数据分布。● 使用属性均值或者中位数:当给定元组时,对于属于同一类的所有样本使用属性均值或者中位数。● 使用最可能的值来填补缺失值:缺失值可以用回归或者基于推理的工具,比如贝叶斯形式或者决策树归纳所确定的数据进行填补。

最流行的方法是最后一种方案,它基于当前值以及源于其他属性的值。1.11.2 垃圾数据、噪声数据或异常值

正如在物理测试或者统计测试中,噪声是发生在获取测量数据的测试过程中的一个随机误差。对于数据收集的过程,不管你使用什么方法,噪声都不可避免地存在。

用于数据平滑的方法如下所述。随着数据挖掘研究的发展,新的方法也不断出现。● 分箱:这是一个局部范围平滑的方法,在该方法中,使用近邻值计算特定箱子的终值。已排序的数据分布到多个箱子中,箱子中的每个值将被基于近邻值来计算出的值所取代。计算可以是箱子的中位数、箱子的边界,即箱子的边界数据。● 回归:回归的目标是找到最佳曲线或者多维空间中某个类似于曲线的东西(函数)。因此,其他值可以用于预测目标属性或者变量的值。在其他方面,这是一种比较流行的平滑方法。● 分类或者异常检测:分类器是发现噪声或者异常的另一种固有方法。在分类过程中,除了异常值外,大部分源数据将被分组到几个类中。1.12 数据集成

数据集成将多个数据源中的数据合并,形成一个一致的数据存储。其常见的问题如下:● 异构数据:这没有普遍的解决方案。● 不同的定义(different definition):这是内在的,即相同的数据具有不同的定义,如不同的数据库模式。● 时间一致性:这可以检查数据是否在相同的时间段收集。● 旧数据:这指的是从旧系统留下的数据。● 社会学因素:这限制了数据的收集。

处理上述问题也有一些方法:● 实体识别问题:模式整合和目标匹配是棘手的,这称为实体识别问题。● 冗余与相关性分析:有些冗余可以通关相关性分析来检测。给定两个属性,基于可用的数据,这样的分析可以测量一个属性影响另一个属性的强度。● 元组重复:在元组级可以检测重复,从而可以检测属性之间的冗余。● 数据值冲突的检测和分辨率:在不同的抽象级,属性可能不同,其中一个系统中的一个属性可能在不同的抽象级被记录。1.13 数据降维

在分析复杂的多变量数据集时,降低维度往往是必要的,因为这样的数据集总是以高维形式呈现。因此,举例来说,从大量变量来建模的问题和基于定性数据多维分析的数据挖掘任务。同样,有很多方法可以用来对定性数据进行数据降维。

降低维度的目标就是通过两个或者多个比原先矩阵小很多的矩阵来取代大型矩阵,但原始矩阵可以被近似重构。通常是选取这些小矩阵的乘积来重构原始的矩阵,这一般会损失一些次要信息。1.13.1 特征值和特征向量

一个矩阵的特征向量是指该矩阵(下述方程中的A)乘以该特征向量(下述方程中的v)的结果为一个常数乘以该特征向量。这个常数就是关于该特征向量的特征值。一个矩阵可能有好几个特征向量。

Av=λv

一个特征对就是特征向量及其特征值,也就是上式中的(v,λ)。1.13.2 主成分分析

用于降维的主成分分析(Principal Component Analysis,PCA)技术将多维空间中的点集所构成的数据视为一个矩阵,其中行对应于点,列对应于维度。

该矩阵与其转置的乘积具有特征向量和特征值,其主特征向量可以看作空间中的方向,且沿着该方向,点排成最佳的直线。第二特征向量表示的方向使得源于主特征向量的偏差在该方向上是最大的。

主成分分析降维是通过最小化表示矩阵中给定列数的均方根误差来近似数据,用其少数的特征向量来表示矩阵中的点。1.13.3 奇异值分解

一个矩阵的奇异值分解(Singular Value Decomposition,SVD)由以下3个矩阵构成:● U● Σ● V

U和V是列正交的,其列向量是正交的且它们的长度为1。Σ是一个对角矩阵,其对角线上的值称为奇异值。原始矩阵等于U、Σ和V的转置的乘积。

当连接原始矩阵的行和列的概念较少时,奇异值分解是有用的。

当矩阵U和V通常与原始矩阵一样大时,采用奇异值分解降维。为了使用较少列的U和V,删除U、V和Σ中与最小奇异值对应的列。这样根据修正后的U、Σ和V重构原始矩阵时就最小化了误差。1.13.4 CUR分解

CUR分解旨在将一个稀疏矩阵分解成更小的稀疏矩阵,这些小矩阵的乘积近似于原始矩阵。

CUR从一个给定的稀疏矩阵中选择一组列构成矩阵C和一组行构成矩阵R,C和R的作用就相当于奇异值分解中的U和VT。行与列是根据一个分布随机选择的,该分布取决于元素平方和的平方根。在矩阵C和R之间有一个方阵称为U,它是由所选择的行与列的交集的伪逆(pseudo-inverse)所构造出来的。

根据CUR解决方案,3个分量矩阵C、U和R将被检索。这3个矩阵的乘积将近似于原始矩阵M。在R社区中,有一个R添加包rCUR用于CUR矩阵分解。1.14 数据变换与离散化

根据前面的内容,我们可以知道总有一些数据格式最适合特定的数据挖掘算法。数据变换是一种将原始数据变换成较好数据格式的方法,以便作为数据处理前特定数据挖掘算法的输入。1.14.1 数据变换

数据变换程序将数据变换成可用于挖掘的恰当形式。它们如下所述:● 平滑:使用分箱、回归和聚类去除数据中的噪声。● 属性构造:根据给定的属性集,构造和添加新的属性。● 聚合:在汇总或者聚合中,对数据执行操作。● 标准化:这里,对属性数据进行缩放以便落入一个较小的范围。● 离散化:数值属性的原始值被区间标签或者概念标签所取代。● 对名义数据进行概念分层:这里,属性可以被推广到更高层次的概念中。1.14.2 标准化数据的变换方法

为了避免依赖数据属性的测量单位的选择,数据需要标准化。这意味着将数据变换或者映射到一个较小的或者共同的范围内。在这个过程后,所有的属性获得相同的权重。有许多标准化的方法,我们看看其中的一些办法。● 最小-最大标准化:该方法保留了原始数据值之间的关系,对原始数据进行线性变换。当一个属性的实际最大值和最小值可用时,该属性将被标准化。● z分数标准化:这里,属性值的标准化是基于属性的均值和标准差。当对一个属性进行标准化时,如果其实际最大值和最小值是未知的,则该方法仍然是有效的。● 十进制标准化:该方法通过移动属性值的小数点将其标准化。1.14.3 数据离散化

数据离散化通过值映射将数值数据变换成区间标签或者概念标签。离散化技术包括:● 通过分箱将数据离散化:这是一个根据指定数目的、分段的、自上而下的无监督分割技术。● 根据直方图分析将数据离散化:在该技术中,直方图将属性值分割在不相交的范围内,称为桶或者箱,同样为无监督的方法。● 通过聚类分析将数据离散化:在该技术中,应用聚类算法离散化数值属性,它通过将该属性的值分割到不同的类或者组中。● 通过决策树分析将数据离散化:这里,决策树采用自上而下的分割方法,它是一个有监督的方法。为了离散化数值属性,该方法选择具有最小熵的属性值作为分割点,并递归地划分所得的区间以实现分层离散化。● 通过相关分析将数据离散化:该技术采用自下而上的方法,通过发现最佳近邻区间,然后递归地将它们合并成更大的区间,这是一个有监督的方法。1.15 结果可视化

可视化是数据描述的图形表示,以便一目了然地揭示复杂的信息,包括所有类型的结构化信息表示。它包括图形、图表、图解、地图、故事板以及其他结构化的图示。

好的可视化结果使你有机会通过专家的眼光来查看数据。可视化结果很美,不仅因为它们的美学设计,而且因为它们有效地生成见解和新理解的优雅的细节层。

数据挖掘的每个结果都可以通过使用算法进行可视化说明。可视化在数据挖掘过程中起着重要的作用。

创建最佳的可视化有4个主要特征:● 新颖的:可视化不能只作为一个信息渠道,而且还要提供一些新意,以新的风格呈现信息。● 信息化的:对这些因素和数据本身的注意将形成一个有效的、成功的且漂亮的可视化结果。● 有效的:好的可视化结果有明确的目标、清晰定义的信息或者用于表达信息的特殊视角。它必须尽可能简单明了,但不应该丢失必要的、相关的复杂性。这里无关的数据可以看作噪声。可视化应该反映它们所代表的数据的质量,揭示数据源中内在的和隐含的性质与关系,以便给最终使用者带来新的知识、见解和乐趣。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载