机器学习实践指南(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-07 13:12:16

点击下载

作者:(英)阿图尔·特里帕蒂(Atul Tripathi),王喆,曹建勋

出版社:机械工业出版社

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

机器学习实践指南

机器学习实践指南试读:

前言

当今世界,数据已经成为新的“价值金矿”并以指数级的速度增长着。这种增长既包括现存数据的增长,也包括新数据的增长,这些新的数据以结构化和非结构化的形式展现,并来源于社交媒体、互联网、文档文献以及物联网等多种多样的数据源。数据流必须实时地收集、处理、分析,并最终展现出来以确保数据的使用者能够在如今快速变化的环境中做出理性且明智的决定。机器学习技术将待解决问题的上下文信息应用于这些数据上,用统计学技术确保不断快速到达的复杂数据能够以科学的方式加以分析。并利用机器学习算法从数据中进行迭代学习,发现数据中的隐藏模式和规律。机器学习的这种迭代学习的模式是非常重要的,正因如此,当机器学习模型被暴露在新的数据中时,它们才能从新的数据集中独立地适应和学习以产出可靠的结论。

我们将首先介绍本书中包含的多种不同的机器学习主题,随后,基于现实世界的问题在不同的章节中对各个主题进行一一探讨,例如分类、聚类、模型选择和正则化、非线性问题、监督学习、无监督学习、增强学习、结构化预测、神经网络、深度学习,还有最后的案例研究。本书的机器学习算法以R语言作为编程语言。本书适用于R语言的初学者,但是熟悉R语言对理解和使用本书的代码肯定是会有所帮助的。

你将学习如何合理地决定使用哪类算法以及如何应用这些算法得到最佳的效果。如果你想要对图像、文字、语音或者其他形式的数据都建立有意义的多功能的应用,本书绝对会成为你的得力助手。本书的主要内容

第1章涵盖了机器学习的各种概念。本章使读者初步了解本书涵盖的各个主题。

第2章包括以下算法:判别函数分析、多元逻辑回归、Tobit回归、泊松回归。

第3章包括以下主题和算法:层次聚类、二进制聚类、k均值聚类。

第4章包括以下主题和算法:压缩方法、降维方法和主成分分析。

第5章包括以下主题和算法:广义加性模型、平滑样条、局部回归。

第6章包括以下主题和算法:决策树学习、朴素贝叶斯、随机森林、支持向量机、随机梯度下降。

第7章包括以下主题和算法:自组织映射和矢量量化。

第8章包括以下主题和算法:马尔可夫链、蒙特卡洛模拟。

第9章包括以下主题和算法:隐马尔可夫模型。

第10章包括以下主题和算法:神经网络。

第11章包括以下主题和算法:递归神经网络。

第12章包括世界银行数据分析。

第13章包括再保险合同定价。

第14章包括用电量预测。本书的重点

本书的重点是用R语言构建基于机器学习的应用。我们已经使用R语言构建过各种解决方案。我们的重点是利用R语言库和函数以最佳方式来克服现实世界的挑战。我们尽量保持所有代码的友好性和可读性。我们认为这将使读者能够很容易地理解代码,并在不同的场景中随时使用它。本书的目标读者

本书是为想构建实用的基于机器学习的应用的专业人士,以及统计、数据分析、机器学习、计算机科学或其他专业的学生和专业人士准备的。本书适用于R语言的初学者,但是熟悉R语言对理解和使用本书的代码肯定是会有所帮助的。对于那些希望在现有技术栈中探索机器学习技术的有经验的R语言程序员来说,本书也将是非常有用的。特殊章节

在本书中,你将频繁看到如下小节:准备工作和具体实施步骤。

为了更加清晰地说明怎样完成一个机器学习方法,我们使用了如下特殊章节。准备工作

该节告诉你机器学习方法需要哪些准备,并描述了如何设置该机器学习方法所要求的软件或其他先决条件。具体实施步骤

该节包含了机器学习方法的各个具体步骤。下载示例代码

本书的代码位于GitHub上,读者可从https://github.com/PacktPublishing/Practical-Machine-Learning-Cookbook下载。下载本书的彩图

本书还为你提供了一个PDF文件,其中包含了本书的彩图。这些彩图将帮助你更好地理解输出的变化。你能够从地址https://www.packtpub.com/sites/default/files/downloads/PracticalMachineLearningCookbook_ColorImages.pdf下载该文件。第1章机器学习引言

本章将介绍机器学习及其涵盖的多个话题。你将了解以下内容:

·什么是机器学习

·分类方法概述

·聚类方法概述

·模型的选择和正则化概述

·非线性方法概述

·监督学习概述

·无监督学习概述

·增强学习概述

·结构化预测概述

·神经网络概述

·深度学习概述1.1 什么是机器学习

人类自出生起就暴露在各种数据中。眼睛、耳朵、鼻子、皮肤、舌头不断收集着各种形式的数据,然后大脑将其转换成视觉、听觉、嗅觉、触觉和味觉。大脑处理各种形式的感觉器官收到的原始数据,并将其转换成语音,进而用语音表达对于这些原始数据的观点。

当今世界,我们用与机器相连的传感器收集数据。从各式各样的网站和社交网络收集数据。之前的手写材料也在电子化、数字化后被加入数据集中。这些形式丰富、从不同数据源中采集的数据需要经过处理才能得到更有洞察力的、更有意义的结果。

机器学习算法有助于从不同数据源收集数据,转换富数据集的形式,并基于分析结果,帮助我们采取明智的行动。机器学习算法是高效、准确的方法,并提供通用的学习方法来解决以下问题:

·处理大规模问题

·做出准确的预测

·解决各种不同的学习问题

·学习哪些结果可以得出,以及在何种条件下这些问题能够学习

机器学习算法的一些应用领域如下:

·基于销售数据的价格预测

·预测药物的分子反应

·检测汽车保险欺诈

·分析股市回报

·识别高风险贷款

·预测风力发电厂产量

·跟踪和监测医疗保健设备的利用率和位置

·计算能源有效利用率

·分析智能城市交通运输增长趋势

·估算采矿业矿产储量1.2 分类方法概述

线性回归模型本质上进行量化的响应,但是这样的响应本质上是定性的。就像态度(强烈不同意,不同意,中立,同意和强烈同意)这样的响应,其本质上就是定性的。对于一个观察来说,预测一个定性的响应可以视作对这个观察进行分类,因为这涉及把这个观察分配给一个类别或种类。分类器对于今天的许多问题(如药物或基因组学预测、垃圾邮件检测、面部识别和财务问题)来说是非常重要的工具。1.3 聚类方法概述

聚类是将相似对象聚合成一簇的过程。每一个簇由彼此之间相似并且与其他类的对象不相似的对象组成。聚类的目标是确定一组未标记数据的内在分组。聚类可用于数据挖掘(DNA分析、营销研究、保险研究等),文本挖掘,信息检索,统计计算语言学,以及基于语料库的计算词典学等不同应用领域。聚类算法必须满足如下要求:

·可扩展性

·处理各种类型的属性

·发现任意形状的簇

·处理噪音和异常值的能力

·可解释性和可用性

右图是聚类的一个示例。1.4 监督学习概述

监督学习需要学习一组输入变量(通常为向量)和输出变量(也称为监控信号)之间的映射,并应用此映射来预测未知数据的输出。监督学习的方法尝试发现输入变量和目标变量之间的关系。发现的关系在称为“模型”的结构中表示。通常隐藏在数据集中的模型描述和现象解释,在知道输入属性的值后,这些模型可以用于预测目标属性的值。

监督学习是从监督的训练数据(训练样本集)推测函数的机器学习任务。训练数据由一组训练样本组成。在监督学习中,每个例子是一组,它由一个输入对象和一个期望的输出值组成。监督学习算法分析训练数据并学习出预测函数。

为了解决监督学习问题,必须执行以下步骤:

1)确定训练样本的类型。

2)收集训练集。

3)确定预测函数的输入变量。

4)确定预测函数的结构和相应的学习算法。

5)完成设计。

6)评估预测函数的准确性。

监督学习的方法可以应用在各个领域,如市场营销、财务和制造业。

在监督学习中要考虑的一些问题如下:

·权衡有偏变量

·函数复杂性和训练数据量

·输入空间的维度

·输出数据中的噪声

·数据的异构性

·数据的冗余性

·交互性和非线性问题的存在1.5 无监督学习概述

无监督学习针对全体输入样本,学习出一种特定的模型来表征输入样本整体的统计结构。无监督学习是重要的,因为它在大脑的学习过程中比监督学习更常见。例如,眼睛中光感受器的活动是随着视觉世界而不断变化的。它们持续提供可用于显示世界上有什么对象、如何呈现、照明条件怎样等的所有信息。然而,基本上没有关于场景内容的信息在视觉学习期间是可用的。这就使得无监督的方法至关重要,并用作适合神经突触的计算模型。

在无监督学习中,机器接收输入,但是既没有有监督的目标输出,也没有从环境中获得奖励或者反馈。想象一下机器在没有得到环境的任何反馈时可能会学到什么,这似乎有些神秘。然而,建立一个正式的无监督学习框架是可行的,因为无监督学习是基于这样的概念:机器学习的目标是建立一种用于决策制定、预测未来输入、高效传输输入到其他机器等目的的输入的表示。某种意义上来说,可认为无监督学习是在上述数据中发现模式和规律,并且考虑噪声的影响。

无监督学习的一些目标如下:

·在不需要目标输出的前提下,在大型数据集中发现有用的结构。

·提高输入数据集的学习速度。

·通过为每个可能的数据向量分配分数或概率来构建数据向量模型。1.6 增强学习概述

增强学习是训练一个会自我行动的“代理人”来最大化它从世界中获取奖励的问题。它是关于如何行动以及如何将事件情况映射到动作,以最大化量化的奖励信号的问题。像大多数机器学习方法一样,学习者刚开始不知道要采取哪些行动,而是要通过尝试来发现哪些行为能够产生最大的奖励。强化学习的两个最重要的区别特征是“尝试,错误,搜索”的过程和延迟奖励。强化学习的一些例子如下:

·当一名棋手思考下一步棋时,他是通过计划下一步可能的反馈以及计数器的反馈来做决策的。

·自适应控制器实时调整炼油厂的操作参数。控制器在指定边际成本的基础上权衡优化收益/成本/质量,而不是严格遵守工程师最初建议的设定参数。

·一只瞪羚在出生后几分钟就挣扎着站起来。半小时后,它已经能够以20英里/时奔跑。

·教一只狗一个新的技巧——不告诉它做什么,但是如果它做正确/错误的事情,就给它奖励/惩罚。它不得不弄清楚它如何得到奖励/惩罚,这称为信用分配问题。

增强学习就像试错学习一样。代理人应该从环境经验中发现良好的策略,以便在过程中不失去太多的奖励。“探索”旨在寻找有关环境的更多信息,而“利用”旨在借助已知信息来最大化奖励。例如:

·餐厅选择。利用:去你最喜欢的餐厅。探索:尝试一个新的餐厅。

·石油钻探。利用:在最有名的地点进行钻探。探索:在新的位置钻探。

增强学习的主要内容如下:

·策略:策略是代理人的行为函数。它确定从环境的感知状态到所采取行为之间的映射。它对应于心理学所称的一组刺激反应规则或关联。

·价值函数:价值函数是对未来奖励的预测。某个状态的价值是从该状态开始代理人期望在未来积累的奖励总额。而奖励决定了环境状态的即时、内在的可取性,价值表示了状态长期的可取性,其中考虑了该状态之后的状态序列以及伴随这些状态的奖励。

·模型:模型预测下一步环境将会如何变化。它预测下一个状态和下一个状态的即时奖励。1.7 结构化预测概述

结构化预测是机器学习问题的重要应用领域。考虑输入x和输出y,x和y可能是如下类型的数据:一组标注过的时间序列,一张图片的一组属性,句子的解析成分,或者从一张图片上分割出的一组对象,结构化预测问题是很有挑战性的,因为y是包含它的输出变量的数量的指数级别。由于预测需要搜索巨大的参数空间,因此结构预测问题在计算上是具有挑战性的。因为从有限的数据中学习精确的模型需要推导不同结构化输出之间的共同点,所以预测也需要统计方面的因素。结构化预测本质上是一个映射问题,其中映射必须捕捉x和y之间的区别性交互,并且还允许在y上进行有效的组合优化。

结构化预测是关于从输入数据中预测结构化输出的问题,不同于只预测一个数值的分类或回归问题。例如:

·自然语言处理,自动翻译(输出:句子)或句子解析(输出:解析树)。

·生物信息学,二级结构预测(输出:二分图)或酶功能预测(输出:树中的路径)。

·语音处理,自动转录(输出:句子)或文本转语音(输出:音频信号)。

·机器人,规划(输出:动作顺序)。1.8 神经网络概述

神经网络代表了进行信息处理的仿大脑结构。这些模型受生物学的启发,而不是大脑实际功能结构的精确复制。神经网络能够从数据中学习的能力很强,已证明它是许多预测和业务分类应用场景中非常有应用价值的系统。

人工神经网络通过更新网络架构和连接权重来学习,使网络能够有效地执行任务。它可以从可用的训练模式中学习,或者从训练样本或输入—输出关系中自动学习。学习过程由以下方式设计:

·了解可用信息。

·学习范例,从环境中获取模型。

·学习规则,找出更新权重的过程。

·学习算法,通过学习规则确定调整权重的过程。

学习规则有四种基本类型:

·纠错规则

·玻耳兹曼

·赫布

·竞争学习1.9 深度学习概述

深度学习是指一组相当广泛的机器学习技术和架构,它们的特点是使用了多层非线性信息处理结构化模型架构。深度学习架构有三大类:

·无监督或生成式深度学习网络

·有监督深度学习网络

·混合深度学习网络第2章分类

本章将涵盖如下内容:

·判别函数分析:分析地下卤水

·多元逻辑回归:理解学生的课程计划选择

·Tobit回归:评估学生的学术能力

·泊松回归:理解加拉帕戈斯群岛现存物种2.1 引言

判别分析(Discriminant analysis)用来对观察对象进行区分并分组,进而分配新的观察对象到先前定义好的组中。举例来说,如果进行一项研究来调查有哪些变量能够被用来区分(1)灵长类动物(2)鸟类或(3)松鼠食用的水果,研究者可以收集多个被这三类动物食用的水果的特点。那么大多数水果会自然分到这三类中。判别分析可被用来确定哪些变量能够最好地预测一种水果是否会被鸟类、灵长类或者松鼠食用。此外,判别分析还常被用于生物物种分类,医学肿瘤分类,以及信用卡和保险行业的风险界定。判别分析的主要目标是判别和分类。关于判别分析的三个假设是:各判别变量之间具有多元正态分布,变量间的低多重共线性,各组变量的协方差矩阵相等。

多元逻辑回归(Multinomial logistic regression)基于多个自变量,预测样本所在的分类或者分类在某因变量上的概率。它一般使用在因变量有两个以上名字型分类或无序分类的情况下,而且这种问题中自变量的虚拟编码相当普遍。自变量可以是二分的(二进制)或连续的(区间或比例)。多元逻辑回归使用最大似然估计来进行分类问题求解,而不是传统多项式回归中使用的最小二乘估计。样本概率分布的一般形式被事先假设,在参数估计的过程中,首先设定参数的初值,在设定的参数初值下,计算从事先假定分布进行样本抽样的似然值。该过程被迭代进行直到在某个参数估计下得到最大似然值。

Tobit回归(Tobit regression)是用来描述非负自变量和因变量之间关系的。它也被称为审查回归模型。该模型被设计用来在因变量存在或左或右的删剪时估计变量之间的线性关系。因变量删剪发生在下面的情况下,当一个变量的值等于或者高于某个阈值时,该变量取值为该阈值,所以变量的真实值可能等于该阈值,也可能高于该阈值。Tobit模型用在许多样本的因变量为零或特定值的应用中(如汽车支出、医疗支出、工作时间、工资等)。该模型是为了度量受限的因变量,这些因变量只在它高于或低于某个截断阈值时才能观察到。例如:

·工资最低额被最低工资限制,所以工资额不会低于最低工资

·捐献给慈善机构的捐赠额度

·最高的编程收入

·个人的可用时间和休闲活动时长

泊松回归(Poisson regression)处理因变量是一个计数总和的情况。除了因变量(Y)是一个符合泊松分布的计数之外,泊松回归与传统的多项式回归很相似。因此,Y的可能值是非负整数:0,1,2,3等。一般来说,非常大的计数是很少见的。泊松回归与逻辑回归相似,因为逻辑回归也是有一个离散的响应变量。有所不同的是,泊松回归的响应不像逻辑回归那样局限于特殊的值。2.2 判别函数分析:地下卤水地质化学测量

假设有一项对从矿井收集的古代工艺品的研究。从矿井采集岩石样品并对采集的岩石样品进行地质化学测量。一个相似的地质化学测量已经在收集来的古代工艺品上进行过。为了将岩石样本进行分类,归类到它们被挖掘出来的矿井,判别函数分析(DFA)可以作为一个很好的工具。然后,建立好的函数就可以用于判定这些古代工艺品来源于哪个矿井。准备工作

为了应用判别函数分析,我们需要使用一组从矿井采集的数据集合。

第1步:收集和描述数据

我们使用标题为BRINE的地质学数据分析数据集。该数据集可以从http://www.kgs.ku.edu/Mathgeo/Books/Stat/ASCII/BRINE.TXT获取。其中的数据以标准格式存储,每行是一个样本,每列是一类变量。每个样本被指派给一个地质单元并列在最后一列。该数据集一共包含19个样本和8个变量。这8个数值型变量如下:

·No

·HCO3

·SO4

·CL

·CA

·MG

·NA

·Group具体实施步骤

以下为实现细节。

第2步:探索数据

首先载入下面的包:

版本信息:本节的代码在R 3.2.3中测试(2015-12-10)。

让我们探索一下这些数据并初步理解变量之间的关系。我们从导入名为brine.txt的文本数据开始。我们将这些数据保存到brine数据框中,具体操作如下:

接下来,输出brine数据框。head()函数返回brine数据框的内容。brine数据框被当作输入变量传入head()函数。具体命令如下:

结果如下:

DFA假设变量符合多元正态分布。因此在分析之前需要验证数据是否符合多元正态性。

为了验证数据集是否适合进行转换,我们首先画出这些数据。pairs()函数用来画出数据,该函数可产生一个离散点矩阵。交叉作图法只交叉比较1~6列的变量。最后一个变量(第7列)是组名,所以不列入比较。操作如下:

画出的图表如下面的截图:

第3步:转换数据

明显可见数据呈现彗星状分布。这表明需要对数据进行log变换,log变换对地质化学数据来说是常见的变换方法。首先对整个数据集进行复制是很好的实践经验,然后对地质化学指标进行log变换。因为数据中包含了0,所以我们对这份数据集采用log+1变换,而不是log变换。brine数据框复制到brine.log数据框。对该数据框进行log变换。代码如下:

在对数据进行变换之后,为了重新评估多元正态性。使用pairs()函数重新绘出brine.log。现在的分布看上去更加正态。相比之前的图偏斜减少了。

画出的图表如下面的截图:

第4步:训练模型

这一步是通过判别函数分析训练模型。调用lda()函数进行判别函数分析如下:

调用的形式很像线性回归或ANOVA,都需要传入一个定义好的方程。该问题中,GROUP变量当作因变量,地质化学指标当作自变量。这次试验中,变量间没有交叉,所以变量用+操作加起来而不是*操作。因为没有调用attach()函数,所以数据框的名字也必须传入。在运行DFA之后,通过如下命令查看结果:

结果如下所示:

·输出结果的第1部分显示拟合的公式。

·第2部分是各组的先验概率,它反映了数据集内各组的占比。换句话说,如果你没有度量变量,并且实验中各组的样本数量代表了实际各组的相对丰富程度,那么这个先验概率将可描述任何未知样本属于各组的概率。

·第3部分用各组各变量平均值表的形式显示了各组的均值。扫描此表可以帮助你发现某组是否在一个或多个变量中具有特殊性。

·第4部分显示了判别函数的系数(a组、b组和c组)。因为该实验一共有三个分组,所以有3-1个线性判别(如果只有两个分组,则只需要1(2-1)个线性判别)。每个变量对于每个线性判别(LD1和LD2)有一个相应的系数。

·最后,第5部分显示了迹(trace)的比例,该比例给出了每个判别函数的方差解释。在这里,第一个判别解释了将近75%的方差,其余的由第二个判别解释。

第5步:分类数据

predict()函数也是MASS包中的一部分,该函数使用lda()的结果将样本分配给各组。换句话说,lda()得到了一个能够分组的线性函数,predict()可以在相同的数据中应用该函数,用来检验分类函数的分类能力有多强。按照统计学惯例,x-hat是x的预测(hat加到对象名字上,以明确它们是预测)。代码如下:

输出brine.log.hat如下:

结果如下:

上面的输出以每个样本被指定的分类开始。接下来列出了每个样本属于每个分组的后验概率,每一行(即每个样本)的概率之和为1.0。这些后验概率衡量了样本属于每个分类的强度。如果一个样本属于某个组的概率比其他概率高出很多,那么该样本属于这个组的可能性就很高。如果两个或多个概率接近,那么样本的分组就比较不确定。

接下来的命令可以在有多个分组的情况下以一个快捷的方式找到每个样本的最大概率:

因为数据集中大多数概率值是较大的(>0.9),这表明大多数样本已经被成功分配给一个组。

如果大多数概率是大的,整体的分类就是成功的。predict()的尾数数据输出列出了每个样本对于每个判别函数轴的分数。就像主成分分析中的分数也可以被画出一样,这些分数被画出以展现分组在判别函数中是如何分布的。代码如下:

这三组占据了完全不同并且不重叠的区域。只有一个1组的样本靠近2组,所以我们可以明确地说这个判别是成功的。

画出的图表如下:

第二种图表展示一个特定的判别函数轴上的数据:

同样,判别函数1上有着良好的组分割,特别是2组更加明显。

第6步:评估模型

DFA的分类效率需要被评估,可以通过比较predict()的分类结果和真实分组来进行评估。table()函数是一个很有用的用于评估的函数。按照约定,调用该函数时,需将实际分组当作第一个参数,预测的分组当作第二个参数,代码如下:

输出tab的值:

结果如下:

输出的每一行对应每个分组的原始数据,每一列对应于DFA做出的分组。在一个完美的分类中,大的数值会落在对角线上,对角线外的值应该是0,这就表明所有属于1组的样本被DFA判别为属于1组,其他组类似。该表的形式能够让你很好地洞察哪些分组被可信的判别了。它也能表明哪些分组可能是混乱的以及哪种错分类比其他常见。

下面的命令可以计算整体预测准确度,即落在对角线上的样本比例:

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

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载