机器学习实践指南——基于R语言

978-7-115-47817-7
作者: [英] 尼格尔·刘易斯(N.D. Lewis) 著
译者: 高蓉 李茂
编辑: 陈冀康

图书目录:

详情

本书通过对R语言的讲解,帮助读者构建机器学习的模型,同时了解一系列与数据科学相关的理论,以及如何利用R语言开展研究。本书对读者的技术背景不做任何要求,专为那些希望构建使用的数据模型的读者,以及想要掌握高效的数据处理工具的读者提供了全面的介绍。

图书摘要

版权信息

书名:机器学习实践指南——基于R语言

ISBN:978-7-115-47817-7

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

著    [英] 尼格尔•刘易斯(N.D. Lewis)

译    高 蓉  李 茂

责任编辑 陈冀康

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315


Simplified Chinese translation copyright ©2018 by Posts and Telecommunications Press.

ALL RIGHTS RESERVED.

Learning from Data Made Easy with R, A Gentle Introduction for Data Science. by N.D. Lewis.

Copyright © 2016 by N.D. Lewis.

本书中文简体版由作者授权人民邮电出版社出版。未经出版者书面许可,对本书的任何部分不得以任何方式或任何手段复制和传播。

版权所有,侵权必究。


随着R语言的流行,从数据中学习比过去更加轻松。本书是通过R语言掌握机器学习和数据科学技能的快速入门指南,书中一步一步地介绍如何在免费和流行的R统计包中建立每一种类型的模型。书中的案例描述得很清楚,几乎所有的代码都可以使用。读完本书,读者将可以在自己专注的某个领域把书中所介绍的技术付诸实践。

本书适合机器学习和数据科学入门的读者阅读,尤其适合通过R语言实现数据建模和分析方法的读者学习。

特别感谢:

我的妻子安吉拉,感谢她的耐心和不断鼓励。

我的女儿戴安娜,感谢她为我的书和网站拍摄了数百张照片。

感谢在我更早的书中向我提问和提出建议的读者。


高蓉,博士,任教于杭州电子科技大学,毕业于南开大学;研究领域包括资产定价、实证金融、数据科学应用;已出版教材和译著多部,发表学术论文数篇。感谢杭州电子科技大学2016年高等教育研究资助项目YB201631“投资学教学与R软件应用”对本书翻译工作的支持。

李茂,任教于天津理工大学,毕业于北京师范大学,热爱数据科学,从事与统计和数据分析相关的教学和研究工作。


感谢你阅读本书。我希望书中的这些想法能够加快你的数据科学实践,正如它们帮助了我和其他成千上万的人。事实上,我希望这本书能够让你和像你一样的成千上万的人接受数据科学工具。

人生中从来就没有足够的时间可以学习所有的知识。你差不多淹没在工作和个人责任、项目、最后期限以及一系列五花八门能消耗你一整天的任务中。本书的目的在于指导动手实践,并成为学习成功的思想、一流的技术以及数据科学家可用的从数据中学习解决方案的实用指南。

本书所介绍的内容,适用于那些为小型广告公司工作的数据科学家、由决策科学家组成的小组、为了完成数据科学项目课程作业的学生或者进行预测项目的个人顾问。即使你不是天才的统计学家或编程专家,也可以很好地理解本书讨论的实用思想和直接的解决方案。

重点在于“如何做到”,正如本杰明·富兰克林所说:“告诉我,我忘了;交给我,我记得;让我参与,我学会了。”本书的实践知识将为你提供新方法和切实可行的解决方案。

本书希望能把强大实用的机器学习技术传授给日常工作者。因此,本书的材料为重点关注数据分析和建模的个人设计。重点内容仅仅是那些已证明可行、能够迅速理解并能在最短的时间内部署的技术、思想和策略。

在许多场合,各行各业的个人都提过这样的问题:“在我关心的领域中,如何能够快速理解并应用从数据中学习要求的技术?”答案曾经是阅读复杂的数学教科书,然后使用诸如C、C++和Java这样的语言对复杂的公式进行编程。

随着R的兴起,从数据中学习比过去更加轻松。本书的目的在于带你快速入门。它一步步地向你展现如何在免费和流行的R统计包中建立每一种类型的模型。本书中的案例描述得很清楚,几乎可以把印在书页上的代码直接键入到R中。

对于实践者来说,这个主题最不那么激动人心的地方在于计算机制。尽管理论家必须面对这个主题的许多“可怕”之处,但是从业者并不需要重视,甚至可以通过使用R包而几乎完全忽略。本书按照惯例保留了一些算法并进行充分的讨论。但是,因为这是一本实践导向的书,指导你亲自动手,在现实数据中实现想法,所以我没有在处理算法细节、证明定理、讨论引理上花费太多的时间。

R的新用户可以轻松使用这本书,不需要任何预备知识。键入书中的实例并阅读实例下面的注意,将是你最大的收获。R的副本和免费的入门教程指南可以从https://www.r-project.org/下载。如果你对R完全陌生,那么可以到http://cran.r-project.org/other-docs.html阅读精彩的教程。该教程向新手很好地介绍了R。

最后要注意的是,数据科学的主题并不是数学,不关注定理的证明。在根本上,它在为真实的生活、真实的人、机器学习算法应用的真实问题提供有用的解决方案。无论你是谁,无论你来自哪里,无论你的背景或教育经历如何,你将有能力理解本书概述的思想。我个人认为,结合适合的软件工具,具备一点点恒心和正确的引导,任何真正有兴趣的人都可以成功运用数据科学技术。

古希腊哲学家伊壁鸠鲁曾经说过:“我不是为大多数人而写,我为你而写;我们每个人都是另一个人的听众。”尽管本书中的思想与成千上万的人有关,但我依然努力牢记伊壁鸠鲁的原则,让读到的每一页都完全对一个人有意义,那个人就是你。


读完本书,你将可以在自己特别关心的某个领域实践我讨论过的一个或几个内容。你会惊奇地发现,这些技术结合R可以快速且轻松地使用和部署。只需要一些不同的应用,你很快就能训练有素。

因此,你务必要把书中学到的知识付诸实践。为了帮助你,我创建了免费的指南“快速提高R语言生产效率的12种资源”,可到http://www.auscov.com下载该指南。它将和你分享12种可以提高R语言生产效率的优秀资源。

好了,现在轮到你了!


 

如果你正在使用Windows操作系统,那么使用installr包可以轻松地更新到R的最新版本。输入以下代码:

 

不要为记不住两个小时前输入的内容而焦虑!我也记不住!假如你在同一个R会话中登录,只需要键入:

它将向你返回当前会话输入命令的完整历史。

 

在32位的Windows操作系统计算机上,无论你安装的内存容量有多大,R只能使用最多3GB的内存。使用下列命令可以检查内存的可用性:

使用下列命令可以从内存中移除所有的对象:

这是一本鼓励你亲自动手操作的书。通过输入案例代码、阅读参考材料并且动手做实验,你会最大程度地获益。通过完成大量案例和阅读参考资料,你将扩展知识面,深化直观理解和强化实践技能。

另外,至少还有其他两种阅读本书的方法。你可以把它作为有效的参考工具。翻到你需要的章节,迅速查看计算如何在R中执行。如果书中的案例给出了最佳的结果类型,那么检查这些结果,并把案例调整到自己的数据上。另一种方法是观察真实世界的例子、例证、案例研究、提示以及笔记,以激发你产生自己的想法。这样既有助于学习普遍的方法,又能搞清相关例子、案例研究和文献的线索来源。

> install . packages (" installr ")
> installr :: updateR ()
history (Inf)
memory . limit ()

专家提示

rm(list=ls())

如果你的计算机没有安装文中提到的某个包,可以键入install. packages("package_name")进行下载并安装。例如,要下载并安装class包,你需要在R控制台键入:

install . packages (" class ")

一旦包安装完成,你要调用它。为了实现这一点,在R控制台键入:

require (class)

class包现在可以使用了。你只需要在R会话开始时键入这些代码,一次就可以。

R函数通常有多个参数。在本书的例子中,我主要关注快速模型开发需要的关键参数。在R控制台中键入“? function_name”,可以获取函数中可用的附加参数的信息。例如,要找到naiveBayes函数的附加参数,就键入:

? naiveBayes

函数和附加参数的细节会出现在默认Web浏览器中。在拟合你关心的模型完毕之后,我强烈鼓励你对附加参数进行实验。

在本书始终展示的R代码例子中,我也引入了set.seed方法,帮助你精确重复页面上出现的结果。

目前,主要的操作系统的R包都可以获取。考虑到Windows操作系统广受欢迎,本书示例使用R的Windows版本。

专家提示

无须等到读完整本书才在自己的分析中实践学到的方法。你几乎可以立刻体验到它们神奇的力量。你可以直接翻到有兴趣的部分,直接在自己的研究和分析中检验、创造并探索知识。

专家提示

正如标题所示,本书与数据科学模型的理解和实践有关。更确切地说,它是一种尝试,为你提供必要的R工具来轻松快捷地建立分类器。本书的目标是为读者提供完成这项工作需要的工具,并提供足够的说明,使你在自己感兴趣的领域中思考真正的应用问题。我希望这个过程不仅有益而且充满欢乐。

运用本书中的知识将改变你的数据科学实践。哪怕你在每一章只运用一个例子,在面对日益泛滥的可用数据的挑战与机遇时,你将为优胜而非仅仅生存进行了更完善的准备。

当你在自己的专业领域中成功使用了这些模型,可写信让我知道,我非常想听一听你的意见。联系我info@NigelDLewis.com或者访问www.auscov.com。


我们只能向前看到很短的路,但却可以看到还有很多事情需要做。

——艾伦·图灵

从数据中学习究竟是什么?科学家从数据中学习,企业、政府和慈善机构也一样。事实上,无论是私人、公共的,还是慈善部门的领域,几乎没有哪个领域不在部署数据驱动的模型,以发掘和利用数据中的关系。

我们置身于数据之中,亚马逊网站每天发生2.5万次销售/交付,10万个基因几乎同时测序,超过100亿张图片存储在网页上。而大约在几个月之内,英国的国家卫生局对6000万份健康记录进行了数字化处理。我们所有人每天都在使用数据,而且许多人在工作的付薪过程中都使用了数据。营销公司的分析师必须决定,他的受众/听众选择模型需要包含哪些因素。本地卫生部门的研究人员测量季节性流感的发病率。气象学家运行气候模型,计算降水的可能性、温度的变化以及云层覆盖的百分比。

公共部门和某些公司需要将海量信息转换为可操作的战略性公共/商业决策。从数据中学习提供了一系列实践性的技术和工具,来帮助开发稳健的归纳模型,用以从数据中提取可用的见解。归纳的简单含义是指观点源于经验数据,而非根据理论第一的原则来推导。

本书的首要目标是帮助你把大量数据转化为可用的知识。为此,我们将借助理论来重塑数据科学挑战的思考方式。但是,本书不是一本专门讨论引理、证明以及抽象理论细节的教科书。它为这样的读者而准备:他们希望获得一个重要的、成功的框架,用来建立有用的预测分析模型,从而为他们工作的组织以及他们服务的客户改善运营方式和提高盈利。同时务必了解,数据科学这项职业不适合那些缺乏好奇心或者技术能力的人,任何处理实证数据的职业也同样不适合。

在本章中,你会学到归纳推理与演绎推理的关键区别,确定学习问题的三大要素,以及发现使用归纳模型的一个明确框架。

图1.1围绕着假设检验,展示了归纳法和演绎法之间的一个关键区别。两种方法都始于观察有趣的现象,但归纳方法更关心选择最佳的预测模型。而演绎方法更关心探索理论,主要是结合数据来检验某个理论的假设。根据经验数据的“有分量的证据”,来判断这个假设是接受还是拒绝。

图1.1 归纳和演绎

我想起在我听过的理论经济学课上,教授曾严厉警告:“不能信任数据。”也许,这种经历并不仅仅出现在我的课堂上。一位著名的计量经济学教授曾解释道1:“经济学中有一种普遍观点,如果当前的经验证据不可信,或经济现象无法预测,那么主要是因为经济太复杂,而且产生的数据太混乱,不适合建立统计模型。”或许,你也有过类似经历。

但是,当我离开课堂,步入了经验分析的真实世界,居然很快发现,只要给我足够的数据和适合的工具,使用数据驱动的归纳法会带给我意义重大的结论。

注意

 

在每个可以想到的领域——商业的、工业的以及政府的,成功的数据驱动的归纳模型都已经存在,或正在建立。数据决策的模型越来越多地用来制定决策,如可以识别你的语音的智能手机,又如实施外科手术的机器人2,再如核爆炸的检测3

无论你是否在这些领域中工作,医疗诊断、手写体识别、市场、金融预测、生物信息学、经济学的领域,还是在其他任何要求经验分析的专业领域,你常常会面对这样的情况,潜在的首要原则尚未发现,或正在研究的系统过于复杂,无法通过充分详细的数学描述来提供有用的结果。我发现,数据驱动的归纳方法在以上所有情况中都有用,你也会认同这一点。

注意

 

在科学之外,演绎分析可能在经济学学科中占据了顶峰地位,其中大部分的焦点(甚至今天也一样)都围绕着检验和评估演绎理论的经济学有效性。事实上,经济学家对理论进行客观验证的渴望催生了新的统计学子学科——计量经济学4

尽管归纳和演绎的区别相当大,但它们实际上也可以互补使用。对于一个研究者来说,计划一个同时包含归纳元素和演绎元素的项目是非同寻常的。

如果你曾经或长或短地从事过经验建模领域的工作,那你很可能发现这种情况:你计划执行一个归纳或演绎的项目,但没想到随着时间的推移,你又发现了其他更适合的方法来阐明你的研究问题。需要牢记的是,归纳方法或演绎方法的使用,部分地依赖于你的数据分析目标5

注意

 

演绎推理优越性的相对下降,可以部分地由数据驱动模型的高度成功来解释。意大利学者马特奥·帕尔多(Matteo Pardo)和乔治·斯贝沃格里尼(Giorgio Sberveglieri)在十多年前正确地观察到6:“在当前,从遵循首要原则的经典建模到开发数据建模,发生了一种范式转换。”有趣的是,需要注意,现在数据建模者的短缺是世界性的问题7

我们的讨论始于学习问题的基础。例如,有监督的分类问题,其中我们得到的数据是实值的属性——响应对(xy)。三个元素组成了基本的学习问题。

(1)响应变量或目标变量有K种类别,。对于二元分类(K=2),我们通常假设,或者

(2)假定属性(或特征)x和目标y之间存在着一种概率关系,这个关系可以通过一个未知的概率分布刻画:

为什么要以概率术语指定xy之间关系呢?因为实践中有观察不到的非确定性因素影响着这种关系。例如,在面包圈的烘焙中,温度、湿度、面粉的重量、面粉的质地、部件磨损等方面,轻微的变化都会影响制作的面包圈的质地、口感和质量。输出的变化反映了对未观测到的因素缺乏认识,并导致了xy之间的概率关联。图1.2显示了这种情况,其中,给定xy发生的条件概率捕捉了未观测到的因素的影响,写为

图1.2 学习问题的概率设定

(3)因为数据科学是一种内在的经验活动,所以我们还观察到了概率分布的一组样本,N个独立同分布(i.i.d)的数据对。独立性假设意味着每个新观测产生了新的相关信息。相同的分布意味着观测提供了关于潜在概率分布的固定但未知的信息。因此,给定一个i.i.d假设,可以在理论上构建一个一致的预测变量,其含义是,随着获得的数据越来越多,预测变量的预测值也越来越接近真实值。

为了预测与过去观测相关的新情况,我们需要从数据中学习的能力,即对过去观测一般化的能力。这个目标是基于假设类H构造一个好的预测变量,这个假设根据x预测y,其中是参数向量。

注意

 

符号^是表示估计的标准方法。通常,我们获得参数向量的估计,记为,然后使用它来计算x的预测变量。例如,在简单的线性回归中,我们会有

预测变量或者学习器是关于生成数据的真实函数的一种假设。假设的类H是我们的算法可以考虑的函数集合。它的选择需要先验知识作为归纳偏置。相对于其他假设,归纳偏置可以是偏爱归纳学习器的任何假设。它包括一些基础假设或假设集合,这些学习器一般化了目标函数,使它超越了训练数据。例如:

注意

 

归纳偏置是数据科学实践中的一个关键要素,正如伦敦经济学院的Jonathan Baxter的解释8:“在机器学习中,可能最重要的事情就是学习机器假设空间的预先偏置,它要足够小,以保证合理训练集的好的一般化(预测能力),也要足够大,这样它才能包含学习问题好的解决答案。”

为了实现目标,我们需要一个准则,用以在H的相互竞争的假设中进行选择。我们用表示在预测y导致的误差。如果很大,那么在预测时,的表现就不好。如果很小,那么在预测时,就表现良好。

对于标记为的二元分类来说,一个常见的损失函数是:

这是一个指标函数,如果的符号不同于

损失函数的另一种选择是平方误差损失(称为L2损失或者最小二乘方法),如果你曾经建立过传统的线性回归方程,那么你一定会熟悉下列方程:

预期的误差定义成:

(1.1)

这个量通常称为预期风险,并且,我们希望选择一个函数来使它最小化。但是,因为是未知的,不能直接观测。相反,训练样本的经验风险的计算是最小化的。

注意

 

因为平方误差损失对离群观测的变动敏感,所以通常会指定绝对损失函数(称为L1损失):

在这种情况下:

(1.2)

现在,我们的学习框架已经准备就绪,可以把注意力转向我们作为数据科学家需要执行的真实任务。相当幸运,结果发现从数据中学习可以恰好分成3种基本类型的工作:

(1)类别决策边界的分类或估计。例如,流水线上按大小和颜色分类的鸡蛋。

(2)未知连续函数的回归或估计。例如,预测本地音乐节创造的票房平均价值。

(3)概率密度的估计。例如,估计爱尔兰沿海河流中白斑狗鱼的密度。

本书将自始至终主要讨论分类的问题,因为这是数据科学家面对的最频繁的任务。但是,我们得出的经验教训适用于所有3种类型的任务。

注意

 

学习问题的框架类似于基于模型的统计归纳和统计推断方法,这些方法在20世纪的早期创立9。在统计方法中,最优点的估计理论用来获得参数向量的估计。然后,使用p值的假设检验和/或置信区间评估。在机器学习中,重点更多地偏向评估的准确性,它用来估计y。尽管在实际操作中,这两种方法常常结合使用。在这两种方法中,y都根据尚未看到的测试数据进行评价。

1.Spanos, Aris. Learning from data: The role of error in statistical modeling and inference. 未出版的手稿 (2012).

2.这是一个非常激动人心的应用领域。如果你有兴趣,参见:

3.参见:

4.本质上,统计用于经济分析。在这个方法中,经验模型是从理论原则中推导出来的,然后使用数据“检验”理论。其他的社会科学学科使用类似的方法。

5.如果你想深入研究,这里有3篇经典文章:

6.Pardo, Matteo, and Giorgio Sberveglieri. Learning from data: A tutorial with emphasis on modern pattern recognition methods. Sensors Journal, IEEE 2.3 (2002): 203-217.

7.关于这种情况,这里有一些相当典型的评论:

8.Baxter, Jonathan. Learning internal representations. Proceedings of the eighth annual conference on Computational learning theory. ACM, 1995.

9.参见:


相关图书

ChatGPT原理与应用开发
ChatGPT原理与应用开发
动手学机器学习
动手学机器学习
机器学习与数据挖掘
机器学习与数据挖掘
机器学习公式详解 第2版
机器学习公式详解 第2版
自然语言处理迁移学习实战
自然语言处理迁移学习实战
AI医学图像处理(基于Python语言的Dragonfly)
AI医学图像处理(基于Python语言的Dragonfly)

相关文章

相关课程