高效数据科学构建与实践指南-全-

高效数据科学构建与实践指南(全)

原文:Building an Effective Data Science Practice

协议:CC BY-NC-SA 4.0

一、简介:数据科学过程

1918 年 6 月。一个由爱丁顿教授、戴森爵士和其他人组成的小组委员会安排了去巴西北部索布拉尔和普林西比岛的探险。这两次探险的目标?为了在 1919 年 5 月 29 日发生的日食期间收集一些数据…

  • 一个叫爱因斯坦的家伙创造了一个新的引力模型,他称之为广义相对论 ,似乎很少有人理解。基于这一模型,他在 1915 年预测,当光线接近太阳时,会偏转大约 1.75 弧秒。爱因斯坦根据过去几个世纪收集的数据创建了他的模型;他的模型甚至解释了水星运动的一个令人困惑的方面,这在牛顿物理学之前是无法解释的。但是这种靠近太阳的光线偏转到目前为止还没有被观察到。因此,这次探险——它的唯一目的是收集接近太阳的光线路径的数据。这些新数据将验证或否定爱因斯坦的引力模型。

…1919 年 5 月 29 日。这可能是物理学史上最重要的一次日食。日食让科学家们能够收集关于某些恒星位置的数据,这将表明恒星发出的光在到达地球上我们这里的途中擦过太阳时所走的路线。

1919 年 11 月。数据分析证实了爱因斯坦的预测。广义相对论被认为是对我们宇宙中万有引力定律的更恰当的描述,而不是现有的标准——牛顿定律。

我们所说的数据 科学

引力模型如何演变,以及广义相对论如何最终被接受的故事,是科学方法的例证。

给定某些观察结果,科学家首先创建一个能够解释这些观察结果的模型。在这样做的时候,模型可能无法解释的一些观察结果,例如,牛顿物理学如何不能令人满意地解释水星运动的某些方面。无论如何,这样的模型可能是有用的,只要它实际上是可应用的并且足够通用,例如,牛顿物理学足够通用来描述地球上大多数常见情况下的吸引力和由此产生的运动。

即使一个模型实际上是有用的,寻找更好的模型——那些可以更好地解释观察结果或更好地预测未知情况下特定事件的模型。这种基于观察证据验证模型的概念是科学方法的基石之一。因此,科学家继续这个观察循环➤模型➤观察,每次通过这个循环都会产生更好的模型。

牛顿和爱因斯坦的引力模型解释了宇宙中物体间的吸引力和由此产生的运动。一般来说,我们使用术语模型来指代任何能够被充分解释和/或预测观察结果的现实表示。

一个简单得多的模型示例是建筑师按比例缩小的规划城镇模型 1 ,该模型显示了住宅和商业空间、路线和其他设施的布局——我们可以使用这样一个按比例缩小的模型来确定两栋建筑之间的距离,或者从您计划购买的房屋到达附近学校可能需要的时间。从按比例缩小的模型中获得的这些预测在现实世界中足够有用和准确。

将科学方法应用于宇宙中的物质及其行为称为物理学,将科学方法应用于活的有机体称为生物学。同样,将科学方法应用于任何数据都可以被视为数据科学。更实际的是,在当前时代,数据科学的特点是使用软件来日益自动化这一科学过程中的步骤。

在本书中,我们将 运用软件 将科学方法应用到数据中称为 数据科学 。根据我们的经验,我们发现这个概念实际上更有用——它强调科学方法是学科的核心,软件是科学的主要机制/设备。

从团队所需的技能到需要使用的工具和技术,这种数据科学视角将影响为您的企业构建数据科学实践的每一个决策。

现在,让我们来看看将科学方法应用于数据时通常遵循的数据科学流程。

数据科学过程

对于数据科学,即使用软件将科学方法应用于数据,数据科学团队遵循迭代过程。在数据科学的背景下,这种科学方法通常被称为数据科学过程

这个过程可以分解为一系列宽泛的步骤,从收集数据的第一步开始(数据捕获步骤)。接下来是选择相关数据,清理,并根据需要进行转换(**数据准备),然后使用图表/绘图进行可视化探索和理解(数据可视化)。这种探索和理解对于下一步至关重要——从数据中学习以构建模型(机器学习),这是这一过程的核心。然后,这些模型用于推断新观察的结果(推断)。图 1-1 描述了这些步骤,这些步骤将在本节的剩余部分进行更详细的解释。

*img/504530_1_En_1_Fig1_HTML.jpg

图 1-1

数据科学流程(迭代隐含在这些步骤中)

请注意,这是数据科学流程的简化表示,因为您很少会遇到要求您按顺序执行这些步骤的数据科学问题。大多数问题都需要在不同的步骤之间来回重复,我们称之为数据科学过程的迭代。让我们看几个例子:

  • 您可能会在数据可视化步骤中意识到大量数据被破坏(例如,传感器读数超出预期范围),因此您可能会返回到数据捕获步骤以收集更多正确的数据。

  • 您可能会在机器学习步骤中意识到,如果输入的数据以某种方式转换,您选择的模型可能会表现得更好,因此您可以返回到数据准备步骤,以适当的方式转换数据。

  • 您可能会注意到,在推理步骤中,您的模型没有以期望的准确度预测生产环境中的结果,并且可能会决定返回到机器学习步骤,尝试构建更准确的模型。

正如我们所看到的,数据科学流程并不仅限于创建模型,它还会继续下去,以确保模型可以部署到生产运营中并得到监控。随着时间的推移,这导致不断收集观察证据来验证或改进模型。

技术、工具和技能的整个生态系统都是围绕这一数据科学过程的——我们将继续回到它,看看它是如何作为端到端解决方案的一部分实现的。这个数据科学过程也将构成我们在第三部分中如何对各种技术、工具和技术进行分类的基础。

让我们看几个简单的例子来分别说明这个过程中的每一步。我们将从科学方法的核心步骤——机器学习——开始,它会产生候选模型。

机器学习

让我们从图 1-2 中的机器学习步骤开始,因为这是理解该过程其他步骤的基础。

img/504530_1_En_1_Fig2_HTML.jpg

图 1-2

机器学习:基于经验预测工资的例子

在图 1-2 所示的例子中,我们有一个给定行业的雇员及其工资的数据。在这个简单的例子中,我们假设我们有关于工作经验的信息,我们想确定这个行业中员工的经验和工资之间的典型关系。一旦我们知道了这种关系,它将帮助我们根据个人的经验来预测个人的典型工资——这在招聘过程中会很有用。

机器学习步骤获取经验和工资的数据,仅仅通过查看这些数据,它就自动确定 2 一般来说

工资(K) = 8 ×经验(年)+ 40

这个模型现在可以用于下一步,推理,来预测新个人的工资。例如,如果个人有 2.5 年的经验(这个值在最初的观察中没有出现),这个模型将预测他们的工资是 60K。

请注意,像所有模型一样,这只是对现实的充分有用的表示——肯定会有一些误差和近似。举个例子,从数据中我们看到 6 年的经验应该是 87K 的工资,但是我们的模型会预测 88K,误差 1K。但是尽管如此,如果我们一起考虑所有的数据点,这个模型产生了一个可接受的总体误差。 3 如果误差是可接受的,就像在这个例子中,这个模型是有用的。如果误差太大,我们将继续寻找更好的模型。

机器学习算法和产生的模型在结构上可能变得越来越复杂。虽然在这种情况下,我们有一个方程可以表示我们的模型,但其他一些模型可以表示为树或复杂的图形拓扑等。我们将在第十六章中讨论这些内容。

数据捕捉(来自 世界 )

一个模型完全依赖于我们从世界收集的观察数据。例如,想象一下,如果我们没有关于水星轨道的数据,我们不会知道牛顿的模型有一些缺点,或者爱因斯坦的模型似乎更有前途。如果我们缺乏对世界的了解,也就是说,缺乏对获取数据的系统的了解,那么我们可能会忽略一些对构建良好模型至关重要的数据。让我们借助一个例子来看这个问题。

图 1-3 显示了一个场景,其中我们捕获了特定位置的温度、湿度和降雨量的样本数据,以创建一个机器学习模型。

img/504530_1_En_1_Fig3_HTML.jpg

图 1-3

数据采集:降雨预测示例

在这种情况下,我们的前提是我们能够根据当前的温度和湿度读数预测下一个小时的降雨量。 4推断期间,该模型将大致确定,如果温度为 22 度,湿度为 75%,那么在接下来的一个小时内预计降雨量为 8 毫米。

但实际上,降雨量也取决于风速。现在,我们输入到机器学习中的数据可能都是在风速约为 10 公里/小时时捕获的——如图 1-4 中的灰色栏所示,表明这没有被捕获。

img/504530_1_En_1_Fig4_HTML.jpg

图 1-4

数据捕捉:降雨量取决于风速

由于没有捕捉到风速,并且模型仅使用温度和湿度,因此不管风速如何,它预测在温度为 22 度、湿度为 75%的情况下降雨量为 8 毫米。只有当当前风速也接近 10 公里/小时时,这个预测才是正确的。如果风速与 10 公里/小时(比如 20 公里/小时)相差很大,预测可能不正确。

该模型不能充分代表现实,因为它无法了解降雨量是否以及如何受到风速的影响。这里的主要潜在问题是,我们没有获取所有必要的数据来创建一个能够充分代表现实的模型。

虽然这个例子非常简单,但现实世界中的许多数据科学项目都因为类似的问题而面临最初的失败。数据科学家可能会创建看起来不错的模型,也就是说,他们在创建模型所基于的数据/观察值上有非常小的误差,但有时他们会在生产中神秘地失败。在第十六章中,我们将介绍一些数据科学技术来防止这种情况。但是对该领域的基本理解需要来自业务,以防止由于数据不足而导致的这种有缺陷的模型。 6

数据准备

捕获的数据通常需要以某种方式进行转换,以从中提取最大限度的信息。图 1-5 展示了一个典型的销售预测案例。

img/504530_1_En_1_Fig5_HTML.jpg

图 1-5

数据准备:将交易时间转换为销售预测有用数据的示例

在由系统捕获的交易数据中,比如零售店的收银台,交易时间被捕获为以纪元时间表示的时间戳,即自 1970 年 1 月 1 日午夜 UTC 以来的毫秒数。 7 交易数据还捕获每笔交易的销售额。我们期望销售模式不依赖于交易的时间戳,而是依赖于星期几和月份。例如,周末或假日的销售模式将不同于平日。类似地,像 12 月这样的休假月份会有不同于其他月份的模式。此外,在给定的一天中,不同时段的销售额会有所不同。

因此,我们合计交易销售额来计算每小时的总销售额。因此,我们最终得到五个字段:小时、日、月、年、和相应的销售额。这将使我们能够可视化模式,如前面提到的模式,并允许机器学习步骤确定销售如何受到这些领域的影响。

根据您的业务,您将确定最初捕获的数据中的哪些字段包含哪种有用的信息。另一个例子是,数字传感器读数被转换成高/中/低枚举,如果这与您的用例更相关的话。机器学习步骤将相应地从这些信息中学习,以产生更好的模型。

数据可视化

img/504530_1_En_1_Figa_HTML.jpg

一旦数据科学家准备好数据,他们首先要探索数据和各个领域之间的关系。我们将这一步骤称为数据可视化。通常,在这种可视化分析过程中,数据科学家会发现一些模式,使他能够决定哪些机器学习技术可能表现得更好。

例如,两个字段(如薪水和经验)之间的线性关系会促使数据科学家首先尝试线性回归模型。类似地,他们可以基于视觉模式来确定某些字段之间是否存在相关性,或者某些行是否是异常值。这些分析有助于数据科学家完成机器学习步骤的设计。用于数据可视化的技术将在第十五章中介绍。

推理

img/504530_1_En_1_Figb_HTML.png

这是机器学习之后的步骤,一旦数据科学团队确定已经创建了足够好的模型,就会执行该步骤。结果模型通常被部署为生产系统的一部分,以根据属性推断关于新观察的信息。例如,如果温度、湿度和风速的当前读数可用,降雨模型可用于推断当天晚些时候的降雨量。或者,给定一个未来的日期,我们可以使用销售模型来预测潜在的销售额。

将模型部署到生产系统中的行为是从科学规程到(软件)工程规程的过渡。这种过渡边界有其独特的挑战以及应对这些挑战的相应技术和工具。在过去的几年里,这个利基领域已经发展成为一门学科,命名为 ML Ops ,我们将在第十七章中详细介绍。

回想一下,对于科学方法,我们需要继续收集模型表现如何的信息。作为科学方法的一部分,验证模型或揭示模型问题的观察证据对于改进模型至关重要。因此,收集到的关于模型的观察结果通常会持续存在,并有效地成为数据科学流程中下一次大迭代的世界的一部分。

数据工程

到目前为止,我们看到的所有步骤都需要软件工程技术来优化数据的存储和计算。大数据规模的数据科学实验通常需要专门的工程支持,以确保对数据的优化和随时访问,尤其是在有多个应用程序或数据源的情况下,这在当今相当常见。

我们将在第三部分更详细地讨论数据工程。目前,关键的一点是,我们将数据工程视为推动科学发展的工程主干,因此是数据科学过程中无处不在的水平。

简要介绍了什么是数据科学,并对数据科学过程有了一个概述,让我们看看它与这些天流行的一些其他时髦词汇有什么关系。

术语混乱:AI、ML、数据科学、深度学习等。

数据科学、机器学习、AI、深度学习等。,人们通常不确定哪个术语适用于特定的问题或用例。因此,现在我们越来越经常地看到诸如 DS/ML、AI/ML 等术语。

虽然术语和炒作游戏将会继续,但重要的是要准确理解在你的业务中需要哪种技术来解决哪种问题,并理解应用这些技术需要哪种技能。

考虑到这一动机,我们将参照图 1-6 简要介绍这些术语对我们的意义。

img/504530_1_En_1_Fig6_HTML.png

图 1-6

术语混乱

AI 或人工智能是一个相当通用的术语,用来表示高级应用程序或自动化,它们似乎像人类在类似情况下一样智能地运行。 8

让我们考虑一个可以检测电子邮件是否是垃圾邮件的人工智能引擎 9 。在高层次上,有两种可能的方法来解决这个问题。

基于规则的方法

我们知道哪些是垃圾邮件中出现的典型单词和短语。例如,像“提供”、“免费”、“额外现金”、“你是赢家”等词和短语。指示垃圾邮件。一个简单的 规则 可以是,如果这些单词或短语中的任何一个出现,引擎就宣布该电子邮件为垃圾邮件。稍微复杂一点的规则可以基于电子邮件中这种指示词出现的次数或频率来计算电子邮件的得分。当然,随着垃圾邮件发送者变得越来越有创意,开发者需要将更多这样的规则添加到引擎中。此外,随着文本中指示垃圾邮件的模式的复杂性随着时间的推移而增加,规则的复杂性也会相应增加。

基于误报调整引擎也是困难的。也就是说,如果引擎声明一封电子邮件是垃圾邮件,但用户覆盖并说该电子邮件不是垃圾邮件,那么相应地调整规则可能会变得很棘手,除非跟踪到原因,即导致此异常的潜在模式。

请注意,这个垃圾邮件过滤器的示例以及我们采用的解决方案相当简单。一般来说,根据问题的复杂程度,基于规则的人工智能系统中的规则可以变得越来越复杂和精密。几十年来,基于规则的人工智能已经足以为各行业的专家系统提供动力,并在国际象棋方面变得如此强大,以至于大师们最终在 2000 年代中期停止了与国际象棋引擎的竞争。

数据科学方法

现在,考虑一种不同的数据驱动的科学方法,其中我们试图根据新电子邮件与我们的历史电子邮件数据集中过去的垃圾邮件或非垃圾邮件的相似性来推断新电子邮件是否是垃圾邮件。

根据数据科学的流程, 11 我们从数据捕获开始,也就是通过收集关于电子邮件的观察(数据),也就是说,我们有大量被标记为垃圾邮件或非垃圾邮件的电子邮件。然后,数据科学家尝试基于这些数据构建一个模型。为此,他们将首先执行数据准备步骤,应用技术将电子邮件文本转换为有助于机器学习算法的格式。然后,他们将执行一些数据可视化,以确定这些数据的分布或模式。 12 相应地,他们将执行机器学习—他们将选择合适的机器学习算法,该算法可以利用准备好的数据创建一个模型,该模型可以将电子邮件分类为垃圾邮件或非垃圾邮件。然后,他们将评估该模型的性能;在这种情况下,他们可能会选择垃圾邮件检测的准确性作为评估模型好坏的标准。根据模型性能,他们将继续完善模型和整体方法;这通常需要通过数据准备机器学习步骤的迭代。

一旦找到满意的模型,就可以将其部署在电子邮件服务器上进行垃圾邮件检测,这是数据科学过程的推理步骤。如果有误报,也就是说,如果模型说某封电子邮件是垃圾邮件,而用户说它不是,那么该电子邮件及其标签(非垃圾邮件)将被添加回我们的数据,即邮件正文和标签。下次机器学习步骤运行时,它会从这些新信息中学习,并建立一个模型,该模型可以在未来将类似的邮件分类为非垃圾邮件,而无需任何人工干预。

Hype Notes

在过去的几十年里,人工智能经历了衰落和复兴的不同阶段。在 2000 年代中期至后期经历了十年的相对炒作停滞后,始于 2012 年左右的基于数据科学的人工智能方法的流行将人工智能推回了炒作的聚光灯下。

最近在深度学习方面持续的创新和成功,特别是过去几年的 GANs 和强化学习,正在维持和推动人工智能的炒作。这一次,我们预计人工智能将继续存在。

正如我们在前面的例子中看到的,机器学习技术在数据科学中发挥着关键作用。随着时间的推移,术语机器学习,或 ML ,已经扩大了它的范围,包含了几乎所有现有的统计和计算方法。你可能听说过决策树、SVM(支持向量机)、线性回归和其他类似的 ML 技术,我们将在第十六章中介绍。在所有的 ML 技术中,一种称为深度学习的技术子类在解决图像中的对象检测和自然语言处理(NLP)等复杂问题方面获得了很大的普及和采用,特别是自 2015 年左右以来。深度学习技术基于神经网络的概念。尽管该理论有着悠久的历史,但当前的复兴始于 2010-2012 年期间,当时具有更多层和复杂性的更深层次的网络可以被成功训练来解决图像处理问题,如对象检测和图像分类。13

实际上,与其他经典的 ML 技术相比,使用深度学习技术所需的方法和技能有显著的不同。我们将在第三章和第二十章中详细阐述这些细微差别。

Rule-Based vs. Data Science

重要的是要记住,数据科学这个术语是在最近十年才开始流行的。深度学习虽然在理论上相当古老,但也只是在最近十年才开始变得容易处理和有用。

但是人工智能已经存在很久很久了。专家系统控制着复杂的机器,计算机程序变得比任何国际象棋大师都强大,远在数据科学这个术语流行之前。因此,很有可能你的企业并不真正需要数据科学——更传统的人工智能,例如基于规则的方法,在许多情况下就足够了。

让我们看一个例子,人们可能会感受到数据科学的魅力,但基于规则的系统可能就足够了。考虑一个智能城市解决方案,它集成了多种设备、系统和传感器,以支持可操作的策略。您可能遇到过的一个常见政策类别是停车政策——基于一天中的时间和一周中的某一天的分级停车费率很常见。智慧城市平台可以允许更复杂的政策,这些政策可以根据当前的占用率、附近的交通和天气情况动态地增加或减少停车位的停车率,因为所有这些信息都已经集成到智慧城市平台中。在这种情况下,人们可能会尝试创建一个基于数据科学的模型来估计停车需求并相应地决定定价。这有几个问题。首先,在开始之前,我们需要收集大量关于在各种交通和天气条件下停车的历史数据。第二,定义一套规则可能会简单得多,而且足以根据这些规则来改变停车费率。一个示例规则是,如果附近车道的交通流量增加一倍,则将停车费率提高 20%。分析师可以访问一个应用程序,他们可以在其中观察规则是如何执行的,并随着时间的推移对它们进行调整。

请注意,基于规则的方法通常可以充当替身、引导机制,直到有足够的数据可用于创建基于数据科学的预测模型。在我们刚刚看到的停车示例中,一旦我们启用了基于规则的动态定价并收集了几个月的数据,就可以使用数据科学来确定基于预测模型的最佳定价规则。

结论

我们讨论了数据科学的过程,这是本书其余部分的方向。我们还看到了数据科学过程如何有效地允许我们使用软件将科学方法应用于数据,即进行数据科学。

然后,我们澄清了一些与数据科学和人工智能相关的术语,以帮助确定哪一个最适合手头的业务问题。业务问题的种类决定了最适合解决这些问题的技术种类。基于所需技术的种类,您可以确定团队中所需的适当技术和技能组合。

因此,在下一章中,我们将开始研究数据科学如何融入业务,以及它如何为业务带来好处。

进一步阅读

《戴森、爱丁顿和戴维森》(1919)中给出了爱丁顿和戴森探险的扣人心弦的叙述。幸运的是,数据科学项目的数据收集要简单一些。至少,在这个互联网和基于云的数据时代,我们在收集数据时很少需要担心“轮船公司罢工”之类的情况。

文献中有大量关于数据科学的不同定义和解释。有关数据科学的更多理论和历史背景,请参考布拉施勒、施塔代尔曼和斯托克林格(2019)的第 1 、 2 和 8 章。

参考

布拉施勒、马丁、蒂洛·施塔代尔曼和库尔特·斯托克杰。应用数据科学,从数据驱动型业务中吸取的经验教训。瑞士楚格的查姆:施普林格,2019。

戴森,F. W .,A. S .爱丁顿和 c .戴维森。根据 1919 年 5 月 29 日日全食时的观测,确定太阳引力场对光线的偏转英国皇家学会哲学汇刊。伦敦,1920 年。291-333.

*

二、数据科学和您的业务

理解了数据科学过程及其所包含的内容之后,我们现在深入研究数据科学的业务适用性。

我们将首先介绍数据科学可以为您的企业带来的各种好处,包括每种好处的几个示例。然后,我们将讨论一些要考虑的方面,以确保您的企业已准备好开始进行数据科学。

数据科学如何融入企业

数据科学可以以几种不同的方式在企业中使用。图 2-1 从较高的层面说明了这一点。

img/504530_1_En_2_Fig1_HTML.jpg

图 2-1

企业中的数据科学

让我们从头到尾走一遍,从业务流程框开始。当业务策略(a)被执行时,要么产品被创建,要么某些操作过程被自动化(b)。产品的一个例子是你的技术公司可能已经创建的云托管应用。运营自动化的一个例子是 SCADA 1 系统或物联网基础设施,您可能已经将其作为企业数字化的一部分进行了设置。

在这两种情况下,都会生成数据(c)。例如,数据可以是关于客户如何在线使用你的服务的,或者是关于你的车间设备如何运行的。所有这些数据都可以被数据科学团队使用(d)2(e),以创建通过运营优化/产品增强来帮助改进流程/产品的模型(f),和/或为业务提供战略洞察力(g)。

为了向业务提供这些不同种类的好处,数据科学团队使用为您的业务策划的技术(I)和技术(j)来执行数据科学流程(h)。回想一下,我们将使用软件科学方法应用于数据视为数据科学——数据科学过程中使用的技术实现了科学方法,而技术实现了所需的软件。(我们将在本书的第三部分中探讨技巧和技术。)

现在让我们通过一些例子来更深入地研究前面提到的业务优势。

运营优化

数据科学团队可以创建预测模型来指示特定活动可能发生的时间,这些预测模型可用于优化活动的计划。

例如,考虑预测加油站的库存需求的情况。假设我们使用数据科学来创建模型,该模型可以根据过去的使用数据来预测燃气公司主终端附近的每个加油站何时需要补充每种燃料。提前很好地了解补充需求允许为将来的日期创建从主终端到加油站的优化交付计划。优化可以基于加油站所需的燃料类型/数量、未来日期可用的卡车类型以及在这些日期完成再加注的最佳路线。

RoI Notes

在这个预测加油站库存需求的例子中,从预测模型到业务 RoI 的路径已经被标出。因此,从事数据科学将是一个明智的决定。你也做好了知识准备,数据科学产生的预测模型不是终结;在这些模型的基础上,需要更复杂的优化算法来开始看到 RoI。

产品增强

如果您正在构建技术产品,数据科学模型可以帮助您为产品添加与众不同的功能。一个常见的例子是推荐引擎,它在网飞上推荐电影或者在亚马逊上推荐产品。推荐引擎通常基于相似用户过去的选择进行推荐。基于语音的技术、聊天机器人等。,是可以添加到任何产品中以改善客户互动的其他示例。

假设你有一个客户服务的技术解决方案。您可以在您的解决方案中添加一项功能,在语音通话过程中自动检测客户是否失望、愤怒或有任何负面情绪。为了实现这一点,您可以使用语音转录服务,将语音实时转换为文本。然后,您可以将这些文本输入到基于数据科学的情绪分析模型中,该模型可以对客户的情绪进行分类。一旦你的产品可以实时了解客户情绪,它就可以提供各种商业利益。它可以作为团队领导的实时反馈回路。离线分析还可以确定哪些客户服务主管面对难缠的客户,以及他们如何处理这些情况。作为产品的创造者,您可以将这些分析作为增值服务提供给客户(客户服务公司)。

同样,物联网解决方案通常使用基于数据科学的预测功能来区分自己。例如,用于监控工业能源或水消耗的基于云的物联网解决方案可以提供增值服务,根据为特定客户量身定制的模型来预测能源或水需求。预测性维护是另一个常见的用例——比如说,特定设备或装置的功率读数异常可以表明潜在故障的开始。这些异常由基于过去读数趋势的模型检测到。主动解决此类情况有助于预见和防止运行期间的停机。因此,如果您的物联网解决方案提供这样的功能,它将对潜在的工业客户更具吸引力。

战略洞察力

数据驱动的业务战略转型一直呈上升趋势,特别是自大数据革命以来。数据科学在战略决策和管理咨询中发挥着越来越重要的作用。

考虑确定开设新店的最佳地点的问题。传统上,这是基于客户的人口统计因素和地理因素,如靠近交通枢纽、购物中心和竞争对手的商店。在过去几年中,关于人们使用移动应用程序和位置移动的数据迅速增加,称为移动数据。鉴于潜在客户流动性的可见性增加,现在有可能创建更复杂的 ML 模型,将流动性以及地理和人口因素纳入决策制定。 3 这样的模型可以确定一组候选地点中的哪一个可能吸引最多的访问次数。

另一个传统问题是识别潜在的客户流失。除了确定可能流失的客户,我们还想确定可能的原因。为此,我们将首先创建一个模型,该模型可以预测哪些客户会流失,还可以对销售渠道、折扣、产品分类等因素进行排序。,这是很重要的。这将有助于做出解决这些根本原因的战略决策。 4 例如,如果您发现折扣是一个重要因素,您可以根据模型进行模拟分析,以确定更高的折扣可以减少客户流失的程度——这种分析将有助于获得最佳折扣,从而在对收入影响最小的情况下减少客户流失。

您的企业为数据科学做好准备了吗?

每个人似乎都同意数据科学显然很酷。它似乎适用于解决您业务中的一些问题。接下来呢?假设,如果你现在有一个数据科学团队听从你的命令他们会在做什么?他们有足够的生产力吗?

甚至在开始数据科学之旅之前,就需要规划出实现业务投资回报的潜在途径。这一点的重要性怎么强调都不为过。

警示故事

我们看到的一个例子是,一家公司投资开发了一种能力,可以根据每次运行几天的化学过程中的各种控制参数和读数来预测化学产品的产量。聪明的人使用尖端的深度学习算法,并能够随着过程的进行预测产品的产量。他们在这些预测中取得了非凡的准确性,甚至构建了一个应用程序来显示产量的预测趋势,并在实际产量与预测值相差很大时通知关键人员。

达到这一里程碑后,他们现在想回去调整控制参数以提高产量。由于使用了极其复杂的神经网络,他们无法解释 5 的预测,也没有真正获得关于控制参数如何影响产量的可操作的见解。因此,事实证明,到目前为止,他们的所有投资都没有产生预期的重大商业价值。

另一方面,我们在上一节中看到的例子,特别是那些运营优化的例子,是在开始研究数据科学之前概述了实现业务 RoI 的途径的例子。一旦我们知道了业务目标,我们就可以尝试开始数据科学。

一开始是数据

正如我们从数据科学过程中看到的,数据科学的起点是数据。这是一个显而易见的观点,但是它的含义和重要性经常被忽视。

您的组织是否拥有从事数据科学来解决您的问题所需的数据?如果没有,您将首先需要定义一个旨在收集面向该目标的数据的数据策略。数据战略最好由首席数据科学家这样的人来定义。如果你雇佣了一个首席数据科学家,他们可以帮助定义策略,但是在策略被执行和数据可用之前,他们会相对闲置。因此,实际上最好的办法是在这个早期阶段找一个顾问。

数据是和谁一起的?

如果您拥有必要的数据,那么数据科学家加入您的组织后,他们是否可以访问这些数据?在大型企业中,数据分散在多个业务线和数十个(如果不是数百个)应用程序中,数据科学家最常见的抱怨是他们无法访问所需的数据。在数据科学开始之前,通常需要为数据科学创建一个数据沙箱,并确保必要的管道将数据传送到这个沙箱中。这需要定义一个开发数据管道的战略路线图,与数据科学试图解决的业务问题保持一致。

Hiring Notes

数据源的复杂性和范围也可能决定您的数据科学团队的最初雇佣——有些数据科学家将进行必要的数据集成和清理 6 ,而其他人则希望为他们提供适当的数据,以便他们专注于纯粹的科学分析。 7

模特说“我在这里,送我”

到目前为止,您已经确保了数据可以通过必要的基础设施获得和访问。对于成功的数据科学之旅,要确保的另一个方面是组织流程足够成熟,可以部署和使用最终将创建的数据科学模型。您将需要与各自系统的工程团队协调,以确保在创建模型时已经做好准备。

企业经常进行数据科学研究,结果却是数据科学家抱怨数据,或者模型在生产中不见天日。根据本节中的概述进行业务准备情况分析将有助于尽早降低数据科学实践的风险。

结论

商业考虑是最重要的——即使是像数据科学这样酷的东西;尤其是像数据科学这样的跨学科领域。数据科学可能需要企业进行大量投资并做好准备,如果做得好,投资回报会非常高。但也有一些陷阱,从事数据科学的仓促决定往往在事后才被发现。

在本章中,我们讨论了数据科学带来的好处,以及在开始研究数据科学之前需要考虑的方面。在下一章中,我们将深入探讨数据科学的两种文化,以及它们如何与您的业务相关联。当你着手组建一个数据科学团队时,这些考虑将有助于确定你的团队成员需要什么样的技能和科学文化才能最好地与你的业务目标保持一致。

进一步阅读

本章介绍的数据科学的业务和运营方面将在本书的第四部分更详细地介绍。

数据科学在商业战略和管理咨询中的应用在《丘鲁苏》(2018)中有相当深度的论述。

参考

杰瑞米·大卫·丘鲁苏。数据驱动,21 世纪管理咨询导论。纽约州纽约市:斯普林格,2018 年。

卡拉姆舒克、德米特罗等人。艾尔。"地理定位:挖掘基于位置的在线服务,以优化零售店布局."第 19 届 ACM SIGKDD 知识发现和数据挖掘国际会议论文集。计算机械协会,2013 年。793-801.

三、僧侣与牛仔:数据科学文化

在您的业务环境中接触了数据科学之后,现在是时候确定什么样的数据科学文化最适合您的业务了。数据科学主要有两种文化——僧侣文化(由僧侣定义和实践)和西部蛮荒文化(被牛仔形象化)。

在这一章中,我们将详细阐述这两种文化如何实践数据科学以及这两种文化的商业含义。这将有助于确定你希望主要灌输哪种文化。主导文化不仅会推动技术和工具的选择,还会推动你的招聘策略——僧侣和牛仔都倾向于称自己为数据科学家,辨别你的形成团队需要谁对实现你的业务目标至关重要。

数据科学的两种文化

回想一下我们在第一章对科学方法的讨论,模型有两个目的:解释观察结果和预测未来观察结果。例如,参见图 1-2 。在这种情况下,该模型揭示了一个潜在的事实,即员工的工资从大约 4 万英镑开始,每年增加(大约)8 万英镑。基于这种理解,我们也可以预测未来经验观察的工资。因此,这款?? 1T7 同时满足了两个目的。

因此,考虑到两个目的——解释观察结果和预测未来观察结果—,数据科学的两种文化围绕着关注两个目的还是只关注预测。为了进一步澄清这一点,让我们回顾一下在前面章节中看到的几个例子,更深入地研究正在解决的问题。

回想一下第二章中的警示故事,我们看到预测化学品产量的能力不足以帮助调整控制参数以获得最佳产量。在这种情况下,人们需要更深入地了解化学过程在自然中如何工作,也就是说,在给定控制参数和初始混合物的情况下,反应将如何随时间进行以及最终的产量。仅仅预测产量是一个相对简单的问题,而不是确定所有控制参数本身之间的相互关系以及它们对产量的集体影响。在这种情况下,尤其是涉及到自然过程时,关注估计数据背后的真相,也就是说,可能产生数据的过程,通常是有益的。这允许我们控制某些参数,以在很大程度上影响底层过程本身。一旦完全理解,化学过程本身在很大程度上是不变的——除非引入新的参数/化学物质,否则我们可以永远继续使用相同的模型。

相比之下,预测商店对产品的潜在需求是一个难题。在这种情况下,我们可能会使用历史销售数据和其他几个数据源,如来自社交媒体的趋势、商店周围可能发生的事件等。,建立一个预测需求的复杂模型。在这种情况下,我们的主要目标是预测,以便我们可以相应地计划库存。

了解哪些因素对需求的影响比其他因素更大可能是有用的;在某些情况下,如社交媒体因素,我们甚至可能试图推动趋势。但是控制潜在因素的这一方面是次要的和附带的——需求预测才是目标。随着销售数据、社会趋势和附近事件的不断变化,我们也可以用新数据频繁更新我们的模型。

与前面的化学过程例子相比,需求预测案例中的模型着眼于短期的、相对偶然的方面,而不是自然过程背后的长期事实。

这两个极端的例子凸显了两种数据科学文化的特征。一种文化侧重于完全理解产生观察结果的基本过程,而另一种文化主要侧重于能够准确预测未来的观察结果。相应地,在这两种文化中,数学、统计和算法技术的选择往往是不同的。

我们把第一种文化称为修道文化,它专注于破译潜在的真理。我们称第二种文化为西部文化,它专注于预测准确性的经验目标。根据我们的经验,虽然专家数据科学家可以在修道院和蛮荒的西部地区导航,但他们往往天生就有一种默认的主导文化。我们将在本章的后面部分讨论数据科学家的文化背景。

我们认为,理想情况下,问题陈述和业务目标应该规定哪种文化/方法适合于该问题。对于某些业务来说,混合方法可能是合适的。

混合文化

例如,考虑一家气象公司。由于业务主要依赖于自然天气过程,因此投入精力更详细地了解潜在的天气系统是非常有意义的。这使得企业能够在技术上推进该领域,创造更好的工具和数据收集来源以及先进的天气模型。对于这方面的业务,修道文化是合适的。

面向客户的业务可能不仅仅局限于预测天气。也许你正在为航运公司提供高级服务,比如基于你的天气预测和其他海洋数据的路线算法。或者,您可能正在向海岸线行业提供服务,使用整合了您的天气模型以及客户行业的其他数据的模型来预测中断。在这些情况下,为您的客户提供的更具体的模型可以基于狂野西部文化,因为了解客户数据的底层流程对您的核心业务没有太大好处。经常更新这些为您的客户量身定制的模型也是合理的。

如果在这一点上,这两种文化看起来有点抽象,不要担心——我们将在本书中继续添加更多的细节来区分这两种文化。在本书中如此早地介绍这两种文化的主要原因是,我们相信采用适合您业务的文化是增加您数据科学实践成功机会的关键之一。

在下面的章节中,我们将详细阐述与这两种文化相关的一些因素,并将这些因素与您的业务目标对应起来。

文化差异

表 3-1 总结了两种文化之间的主要差异。我们将在第二十章中继续添加这个表格。

表 3-1

修道院与狂野西部:第一版

|

因素

|

修道文化

|

西部文化

|
| --- | --- | --- |
| 心态 | 找到导致观察的潜在的、永恒的真理(自然) | 现在就找到有效的方法。可以经常更新。经验主义是唯一永恒的真理 |
| 目的 | 对观察结果背后的真理的估计,从而使预测和更深刻、准确的因果 2见解成为可能 | 预测准确性是首要目标因果往往是一种损失。因果洞察力要么是不相关的,不太准确的,要么只是有好处的 |
| 估价 | 我的估计有多接近事实? | 我得到的预测是否如我所愿的那样准确? |

在下一部分,我们将看看这些文化因素如何与您的业务相关联。

数据科学文化和您的业务

虽然我们还不知道僧侣和牛仔是如何工作的,以及他们在实践中有什么不同,但我们对他们的根本动机有足够的了解。基于此,我们已经可以看到如何识别哪种文化更适合您的业务问题的轮廓。表 3-2 总结了这些因素。需要注意的是,这些并不详尽,也不具有规定性,它们只是指示性的。

表 3-2

哪种文化适合你的企业?

|

因素

|

修道文化适合如果

|

西部文化适合如果

|
| --- | --- | --- |
| 商业目标 | 推进自然科学是一种商业策略,例如,洞察天气系统 3 | 管理、战术决策或产品/运营增强是战略目标,例如,需求预测 4 |
| 病因(因果关系) | 病因学是至关重要的,例如,影响化学过程的控制参数 5 | 病因有好有坏,例如,需求预测、网飞推荐等。 |
| 数据同质性 | 您的数据来自特定人群/环境,因此可以确定生成数据的单一、真实、潜在(自然)过程,例如,您公司的某个化学过程 6 | 您处于大数据领域,具有多个数据源和各种人口/环境,其中可能不存在单一的潜在事实,例如,使用社交媒体和历史销售的需求预测 |

在某些情况下,甚至在一个企业中,不同的问题似乎需要不同的文化。当我们团结一致地看待一个企业中现存的问题时,一种主导的文化就会出现——通常这种主导文化也足以解决未来的问题。

对于与主流文化大相径庭的偶然问题,一个实用的方法是找一个顾问来解决这个特定的问题。例如,如果你灌输一种西部文化,并且有一个问题需要病因学的洞察力(例如,说生物学的原因因素与你的问题的背景相关),你可以得到咨询僧侣(例如,生物统计学家)的帮助。

数据科学家的文化谱系

数据科学家的僧侣与牛仔二分法最好被视为如图 3-1 所示的一系列特征。

img/504530_1_En_3_Fig1_HTML.jpg

图 3-1

数据科学家——特征谱

虽然来自这两种文化的专家通常可以根据需要灵活地调整自己,但如果您团队的形成成员更接近与您的业务目标一致的文化,通常会更顺利。

数据科学的理论和实验

大多数科学努力都有两个相互交织的方面——理论和实验。例如,在物理学中,提出新的候选模型如爱因斯坦或牛顿的引力模型 7理论方面。进行实验来收集数据——因为没有足够的观察来创建模型或验证模型——是实验的方面。爱丁顿和戴森的探险是实验的一个例子。

和其他科学领域一样,数据科学也需要理论和实验。就数据科学而言,理论由数据科学过程中使用的众多统计技术和算法组成,构成了数据科学家的武器库。实验包括编写软件代码来反复应用这些技术,以获得候选模型。

僧侣和牛仔都使用统计技术和算法——尽管他们在实践中的默认选择通常不同,这取决于他们在早期光谱中的位置。相应地,理论和实验的首选方法在两种文化中也有所不同。直觉上,僧侣文化更倾向于正式的统计方法和由人类洞察力驱动的实验。另一方面,狂野西部文化倾向于日益复杂的算法和自动化,如图 3-2 所示。我们将在第二十章中用具体的例子涵盖这些变化,并用更多的技术细节总结文化方面。

img/504530_1_En_3_Fig2_HTML.jpg

图 3-2

两种文化中的理论和实验

请注意,如前一节所述,该图仅说明了极端情况下的特征。数据科学家通常涵盖整个早期的范围,但在不同程度上倾向于范围的一端。

这些方面会间接影响数据科学团队的基础设施和工程需求。

数据工程

工程需求通常由数据科学文化驱动。这主要与之前讨论的数据同质性因素有关。

如果您的数据科学家主要是修道士,他们可能更喜欢同质数据,因为它更容易发现潜在的“真相”对于异构数据,不太可能发现单一的潜在真相。因此,他们可能通常处理相对包含和同质的数据。这通常意味着可能要花费更多的数据工程工作来提供干净的、相关的数据子集。这样的数据集大小通常适合在单台机器上进行分析。僧侣们往往倾向于分析一个单一的同质数据集几个星期来制作他们的模型,因为他们对真相的洞察力越来越强。

另一方面,牛仔对同质数据没有特别的偏好。他们经常处理从多个来源获得的异构数据,这是大数据的特征。在最极端的情况下,他们会在机器学习步骤中在多个 GPU 上运行深度学习。考虑到数据的异构性,他们也从数据准备步骤开始,更快地迭代多个变量。在这种情况下,更多的数据工程工作将用于数据科学流程中所有步骤的大数据高效访问,包括数据准备、数据可视化和机器学习。

需要注意的是,这些只是根据我们的经验得出的一些观察结果——我们已经看到了与这些典型趋势的偏差。最终,这一切都取决于数据科学家针对手头的问题所采取的具体方法。

结论

已经介绍了数据科学中的两种文化——这些文化之间差异的潜流将贯穿本书。这一讨论将在第二十章继续,我们将总结进一步的差异,包括技术方面。

我们还谈到了业务目标如何勾勒出适当的文化——为了建立适当的文化,数据科学团队需要由僧侣或牛仔组成。在第二十二章中,我们将重温僧侣和牛仔的定义特征,特别是关于他们的技能和背景——这将有助于概述基于理想文化的团队形成方面。

第一部分概述

至此,我们结束了本书的第一部分。我们在第一章中介绍了数据科学流程,在第二章中介绍了数据科学如何与您的业务相关联。在本章中,我们看到了科学方法的更多细节,尤其是数据科学中的两种文化。关键要点是,业务目标应该决定如何引导数据科学实践——本书的这一部分广泛涵盖了这些形成因素。

我们现在准备更深入地研究使用数据科学解决的问题类别。我们将在第二部分中讨论这些内容。

四、分类

先说一类常见的问题,叫做分类问题。分类问题要求您根据一些观察到的属性的值来推断/预测新观察值所属的类别/范畴。例如,根据邮件正文、发件人的电子邮件地址等推断邮件是“垃圾邮件”还是“普通邮件”。;根据交易的详细信息,如交易地点、支付金额和方式等,推断数字支付交易是“欺诈”还是“非欺诈”。

假设一家汽车公司推出了一款新车,营销团队执行了有效的广告策略,吸引了感兴趣的客户源源不断的询问。数据科学可以帮助识别最终可能购买汽车的感兴趣客户,以便销售团队可以关注这些客户,从而提高销量。这是一个分类问题,因为这里的目标是推断一个感兴趣的客户属于购买汽车的客户类别还是不购买汽车的客户类别。让我们看看实现这一目标可以遵循的数据科学流程的详细步骤。这是我们讨论的第一个端到端问题,我们将在后面的章节中更详细地讨论它的步骤。我们还将利用第一个问题来介绍一些我们将在整本书中使用的新术语。

数据捕捉

目标是预测哪些客户最终会购买汽车。数据科学中一切魔力的源泉是 数据 。如果可以的话,您可以使用包含以前类似汽车的感兴趣客户的详细信息的过去数据。如果这些数据不可用,您可以定义一个策略来获取最初几个感兴趣的客户的相关详细信息。然后,这些数据将用于数据科学流程的后续步骤,以构建模型,根据初始客户的趋势预测未来哪些感兴趣的客户可能会购买汽车。因此,作为数据获取策略的一部分,您可以指导销售团队获取每个初始客户的性别、年龄、职业和年收入 1 以及该客户的结果以表明该客户是否购买了汽车。您认为应该可以根据其他四个变量的值以合理的准确度预测感兴趣的客户的结果。做出预测所依据的变量(性别、年龄、等)。,在这种情况下)被称为特征,而你试图预测其值的变量(在这种情况下为结果)被称为目标。请注意,这里的目标变量的值就像所有分类问题中的值一样,都是类别(购买、未购买等)。).所收集数据的快照如图 4-1 所示。假设在这种情况下,销售团队在 excel 文件中手动输入这些详细信息。我们将在第三部分讨论如何以编程方式捕获数据,以及帮助您这样做的工具/库。

img/504530_1_En_4_Fig1_HTML.jpg

图 4-1

数据捕获步骤中收集的数据的快照

数据准备

获取数据后,您需要以各种方式准备数据,以构建有效的模型。我们在上一步中捕获的数据中有一些行的结果打开,这表示正在进行查询。这些客户发起了调查,并在收集数据时与销售团队进行了积极的讨论。由于我们不知道这些客户最终是否会购买汽车,因此这些客户的数据与构建我们的预测模型无关。作为准备数据的一部分,我们将删除对此类客户的观察。如果您查看图 4-2 中数据准备步骤准备的数据快照,您会注意到数据准备步骤已经删除了对这些客户的观察。

在处理分类问题时,您可能还会遇到这样的情况,即 target 变量中的类没有被同等地表示。例如,与那些结果购买的客户相比,你可能有更多的结果而非被购买的客户。这被称为类别不平衡,可能会导致代表性不足类别的预测准确度较低。 2 您可以选择在数据准备步骤中解决类不平衡,方法是转换您的数据集,使其更加平衡。 3 此外,捕获的数据可能会有错误的观察结果。例如,您可能会遇到年龄为“0”的行,这表示在输入该客户的详细信息时出错。作为准备数据的一部分,您应该删除这些错误的观察/行;否则,你可能会创建一个学习错误趋势的模型。在第三部分中,我们将会看到更多在这一步中常用的技术,以及帮助您将这些技术应用到数据中的工具/库。

img/504530_1_En_4_Fig2_HTML.jpg

图 4-2

数据准备步骤准备的数据快照

数据可视化

在这一步中,您可以使用强大的可视化功能来分析您的准备数据,以深入了解趋势。这些见解在很多方面都很有用,可以帮助你在机器学习步骤中建立有效的模型。图 4-3 显示了基于我们准备好的数据在这一步创建的可视化。这里的可视化效果是一个堆积条形图,它将每个收入段中没有购买汽车的客户数量堆积在购买汽车的客户数量之上。每个条形的总高度表示相应细分市场中感兴趣的客户总数,每个条形中的绿色部分表示实际购买了该细分市场中汽车的感兴趣客户。我们可以看到,在过去,我们有更多对高收入细分市场感兴趣的客户。此外,在高收入人群中,购买汽车的感兴趣客户的比例似乎更高。这意味着年收入似乎对一个客户最终是否会买车有影响,也就是说年收入似乎影响结果。这种洞察力会让你对使用年收入来建立预测结果的模型更有信心。你也可以想象其他的功能,一旦你对你选择的功能感到自信,你就为下一步做好了准备,机器学习。

正如前面提到的因为这是一个分类问题,所以目标变量中的值是我们在这个可视化中堆叠的类(购买,而不是)。如果目标变量包含连续值(如薪水),可视化效果会有所不同,回归问题将在下一章讨论。数据可视化本身是一个庞大的主题,为您的问题设计正确的可视化的艺术可以帮助您轻松发现趋势,否则很难识别。在第三部分中,我们将会看到一些更流行的可视化工具,以及可以用来创建这些可视化工具的工具/库。

img/504530_1_En_4_Fig3_HTML.jpg

图 4-3

分类问题的数据可视化

机器学习

由于我们的目标变量中的值是类(购买的,而不是购买的),我们将在这一步使用分类机器学习算法之一。分类机器学习算法从过去的观察中学习,以推断新观察的类别。为了简单起见,我们在这里选择一个决策树算法,因为我们还没有介绍更复杂的算法,这些算法将在本书的第三部分讨论。第三部分还讨论了实现这些算法的相应工具/库。

决策树算法基于我们准备好的数据建立一个决策树模型。图 4-4 显示了我们的决策树模型的局部视图,它关注于与本讨论相关的部分,而忽略了其他细节。请注意,决策树了解到,35 岁以下的女性不会购买汽车,无论她们的职业或收入如何。另一方面,年龄超过 35 岁、收入超过 10 万英镑的男性购买汽车,与他们的职业无关。该模型现在能够预测未来哪些感兴趣的客户可能会购买该车。

img/504530_1_En_4_Fig4_HTML.png

图 4-4

机器学习步骤创建的决策树模型的局部视图

推理

既然所有的艰苦工作都已完成,该是收获收益的时候了。现在,您可以将刚刚创建的模型部署到生产环境中,并请求应用程序开发人员创建一个应用程序,销售主管可以用它来预测新客户是否会购买汽车。销售主管将在应用程序中填写感兴趣的新客户的详细信息(性别、年龄、职业、年收入),应用程序会将这些详细信息传递给你部署的模型进行预测。该模型将基于细节遍历树来进行预测。图 4-5 显示了部署的决策树模型如何基于新客户的详细信息遍历该树,以预测结果。这里的新客户是 30 岁的女性,因此模型将在性别节点向左 4 ,然后在年龄节点再次向左,并预测未购买,表明客户不可能购买汽车应用程序将接收这个预测的结果,并将其显示在主管的屏幕上。我们将在第三部分中研究一些在生产环境中部署模型和使用它们进行推理/预测的常用方法以及相关的工具/库。

img/504530_1_En_4_Fig5_HTML.png

图 4-5

推理过程中决策树模型的遍历

数据工程

数据工程在整个数据科学过程中负责数据的存储和访问,如图 4-6 所示。在本例中,我们假设数据在数据捕获步骤中存储在电子表格中,然后在后面的步骤中读入适当的数据结构。因此,在我们的场景中,我们不需要繁重的数据工程,但是当您处理大量数据时,数据工程对于确保高效存储和快速访问变得非常重要。在第三部分中,我们将研究一些有效存储和访问数据的技术以及相关的工具/库。对于后面章节中的其他问题,我们将跳过数据工程部分,除非某个问题需要从数据工程的角度进行独特的处理。

img/504530_1_En_4_Fig6_HTML.jpg

图 4-6

分类问题的数据工程

结论

分类问题是数据科学家工作中最常见的问题类型之一。因此,如果你正在建立一个数据科学实践,很有可能你或你的团队最终会从事这方面的工作。在这一章中,我们研究了什么是分类问题,并讨论了一个具体的场景来演示如何解决这类问题。

五、回归

一个回归问题需要你根据一些观察到的属性的值来推断/预测对应于一个新观察到的量。我们在第一章中简单讨论过的问题,目的是根据一个人的经验来预测他的工资,根据温度、压力等来预测降雨量。,都是回归问题的例子。

假设您是一家提供健康保险的保险公司,想要优化保险费以实现利润最大化。虽然你可能想提供一个负担得起的保费,以吸引客户,你会收取更高的保费,为客户谁可能索赔高数额,以减少您的损失。您可以建立模型来预测客户可能索赔的金额,并将其作为决定该客户最终保费的因素之一。这是一个回归问题,因为我们想要预测数量索赔金额。让我们来看看您可以在数据科学过程的不同步骤中针对此问题使用的可能技术。

数据捕捉

您将从查看过去用户的存储策略记录及其索赔详细信息开始。让我们看看影响客户索赔金额的因素。老年人更有可能需要医疗护理,因此可能会要求更高的金额。身体质量指数较高的人可以要求更高的金额,因为他们患心脏病的风险更高。同样,吸烟者可能会要求更高的金额,因为它对健康有不良影响。还有许多其他因素,如性别、职业等。一个人索赔的金额取决于此。你可以找出所有相关的细节(年龄,吸烟状况等)。)作为我们模型的特征,以及索赔金额,这是我们从策略记录中的目标到另一个位置,以便在数据科学流程的后续步骤中轻松访问。为简单起见,我们将只关注年龄、吸烟状况、性别作为特征。注意,这里的目标变量就像所有的回归问题一样,是连续值。我们假设每个客户只有一份年度保单,并且索赔金额是该客户在相应年度索赔的总金额。从策略记录中提取的数据的快照如图 5-1 所示。这里的每一行对应一个用户及其策略。 1

img/504530_1_En_5_Fig1_HTML.jpg

图 5-1

从保单记录中提取的数据

数据准备

由于这是一个回归问题,你将需要在后面的机器学习步骤中选择一个回归机器学习算法。通常情况下,假设您决定在最初的实验中使用线性回归算法。线性回归试图创建一个线性方程,解释如何根据要素值计算目标变量的值。第一章的例子中,机器学习步骤得出的等式“薪水(K) = 8 ×经验(年)+ 40”是线性回归的一个例子。很明显,这样的等式只对数字特征有效,也就是说,特征的值是数字。在我们捕获的数据中,年龄是一个数字特征,但是我们也有类似性别的特征,它们是分类的,也就是说,它们包含类别或类(例如,男性/女性)。

因此,作为准备数据的一部分,我们需要将我们的分类特征(性别吸烟状态)转换成数字特征。这些特性中的每一个都只有两个可能的值,因此您可以轻松地将一个值编码为 0 ,将另一个值编码为 1 。因此,对于性别,您可以将男性编码为 1 ,将女性编码为 0 。对于吸烟状态,您可以将吸烟者编码为 1 ,将不吸烟者编码为 0 。图 5-2 显示了编码后准备好的数据的部分快照。

img/504530_1_En_5_Fig2_HTML.jpg

图 5-2

具有编码分类特征的准备数据

数据可视化

现在让我们探索我们的目标变量及其与特征的关系。由于这是一个回归问题,目标变量包含连续值,因此,我们设计了在这种情况下有用的可视化。让我们把注意力集中在可视化目标索赔金额年龄的关系上。您可以生成一个散点图,将每个客户/保单显示为一个标记,其 x 坐标基于客户的年龄,y 坐标基于他们的索赔金额。你可以通过限制一次只调查一部分顾客来简化调查——让我们看看女性和不吸烟的顾客。如果你看图 5-3 ,你会注意到索赔金额与年龄成线性关系。假设您注意到其他人群(男性吸烟者、男性不吸烟者等)的索赔金额与年龄呈线性关系。)也是。这使得这个场景适合尝试线性回归算法,该算法可以计算出这种线性关系。所以现在你有一个令人信服的理由在机器学习步骤中使用线性回归。

img/504530_1_En_5_Fig3_HTML.jpg

图 5-3

可视化索赔金额和年龄之间的关系

机器学习

由于我们的目标变量包含连续值,我们将在这一步使用回归机器学习算法之一。回归机器学习算法从过去的观察值中学习,预测对应于新观察值的量。我们已经讨论了在这种情况下使用线性回归算法构建预测模型的各种原因。

线性回归算法基于准备好的数据构建一个线性回归模型,如前所述,该模型是一个线性方程,解释了如何从特征值计算目标变量值。图 5-4 显示了线性回归算法为该问题建立的线性方程。根据这个等式,我们可以知道索赔额随着年龄的增加而增加 0.4K。我们还可以看出,男性(性别= 1)的索赔金额比女性高 2.1K。吸烟者(吸烟状态=1)倾向于比不吸烟者多索赔 2.9K。这个模型现在能够根据新客户的年龄、性别和吸烟状况来预测他们的索赔金额。

img/504530_1_En_5_Fig4_HTML.jpg

图 5-4

由机器学习步骤创建的线性回归模型

推理

我们刚刚创建的线性回归模型可以部署并用于预测新客户的索赔金额。该模型将简单地使用该等式,使用年龄、性别和吸烟状况来计算索赔金额。图 5-5 显示了部署的线性回归模型如何使用两个新客户的等式计算索赔金额。该模型预测,第二个吸烟的男性顾客可能会比第一个顾客要求更高的金额,尽管他是年轻的顾客。所以你会建议向第二个顾客收取更高的保险费。

img/504530_1_En_5_Fig5_HTML.png

图 5-5

推断时用线性方程预测索赔额

结论

在这一章中,我们介绍了回归问题,并作为例子详细讨论了一个具体问题。我们讨论了这个问题的数据科学过程,给出了可以用于这类问题的技术的概述。如前所述,每个新问题都需要您决定最适合解决它的技术。

六、自然语言处理

正如在第一章中所讨论的,人工智能指的是像人类一样有智能行为的计算机。人类智力的一个方面是理解和说语言的能力。人工智能的子领域专注于让计算机像人类一样理解和生成语言,被称为自然语言处理。我们将从此用流行的缩写 NLP 来指代这个子领域。教计算机如何理解和说自然语言有很多好处。人类可以做数学计算,但是当计算机学会做数学计算时,它们可以比人类更快地完成更复杂的计算。同样,当计算机学习人类语言时,它们可以处理更多的语言数据,这带来了无数的可能性。

正如刚刚讨论过的,NLP 包括让计算机理解生成人类语言。前者被称为自然语言理解NLU,后者被称为自然语言生成NLG 。让我们来看看几个常见的 NLP 问题:

  • 情感分析是指找到一段文字的整体情感。例如,发现来自客户的评论是正面的还是负面的。对公司产品在不同平台上的所有评论进行情感分析,可以让你对客户对产品的接受程度有一个总体的了解。

  • 文档分类是指将文档分配到类或类别中。情感分析可以被认为是文档分类的特殊情况,其中类别是正面的、负面的或中性的。

  • 自动完成是指根据输入的前几个字符预测文本的其余部分。例如,当您开始在搜索引擎的搜索框中键入时,预测您的查询文本可以将您从在手机的小键盘上键入整个文本的痛苦中解脱出来。

  • 语言翻译是指将一种语言的文本翻译成另一种语言。

  • 意图分类指的是将一个意图(来自一组给定的意图)分配给一段文本。例如,聊天机器人可以使用意图分类来判断用户输入文本的意图是购买还是安装或者其他意图,然后发送回与该意图相关的详细信息。

  • 文本摘要是指对一大段文本自动生成摘要。

就像它的父领域 AI 一样,NLP 有两种方法:基于规则的方法和数据科学的方法。让我们详细看看一个文档分类问题,看看如何使用数据科学方法来解决它。假设你的公司有一个个人助理产品,可以帮助用户管理他们的待办事项、电子邮件、会议、设备等。,基于来自他们的语音命令。假设这个个人助理的用户是一名工程师,他接收与产品开发、研究工作、培训等相关的电子邮件。他们可能会发现为每个类别创建一个文件夹并通过将每个电子邮件移动到其相关文件夹来组织他们的电子邮件是很有用的。你可以给助手添加一个有趣的功能,自动将用户的电子邮件移动到正确的文件夹中。例如,如果用户收到了要求他们完成在线培训的电子邮件,则助手可以根据电子邮件中的文本,判断出该电子邮件属于类别“培训”,并因此将其移动到文件夹“培训”。这个问题属于文档分类,因为这里的目标是将每个文档(在这个例子中是电子邮件)分配到一个类别。让我们看看数据科学如何通过在每个步骤中选择适当的技术来帮助您实现这一目标。

数据捕捉

当用户将电子邮件移动到适当的文件夹时,助理在初始阶段默默地观察用户。电子邮件的这种初始手动移动捕获了必要的数据,助理将使用这些数据来学习如何在未来基于电子邮件文本自动确定每封电子邮件的正确文件夹,而无需询问用户。图 6-1 显示了用户已经移动到这些文件夹中的文件夹和一些样本邮件。

img/504530_1_En_6_Fig1_HTML.png

图 6-1

电子邮件和包含文件夹的快照

数据准备

这个问题的解决方案与我们到目前为止讨论的解决方案不同,因为数据科学流程的所有步骤都是在助手中自动完成的,而不是由数据科学家来执行每个步骤。作为数据准备的一部分,助理可以从每封电子邮件中去掉问候(例如嗨汤姆、)和结束(例如问候、丰富的),并用其类别标记剩余的电子邮件正文,该类别是包含该电子邮件的文件夹的名称。图 6-2 显示了整合数据的快照,其中剥离的电子邮件正文标有其类别。这个想法是,助理将使用这些数据来建立一个模型,该模型学习如何通过查看电子邮件正文中的重要单词来推断电子邮件的类别。

img/504530_1_En_6_Fig2_HTML.png

图 6-2

包含电子邮件正文及其类别的准备数据

接下来,助手通过删除标点符号、将其转换为小写、提取单个单词以及删除“a”、“in”、“the”等停用词来预处理每个电子邮件正文。,这对于推断电子邮件的类别可能没有用。图 6-3 显示了这些预处理步骤后的准备数据。

img/504530_1_En_6_Fig3_HTML.png

图 6-3

删除标点符号、转换为小写、标记化和删除停用词后的准备数据

如前所述,助手试图学习如何通过查看电子邮件正文中重要单词的出现来推断类别。单词的不同屈折形式可能不会给出关于电子邮件类别的任何额外线索。例如,电子邮件是否包含单词“课程”或“课程”并不重要,两者都表明该电子邮件可能属于“培训”类别因此,助手可以对电子邮件单词执行词汇化,这将把单词的屈折形式转换回它们的基本形式。所以所有邮件中的“course”和“courses”都会变成“course”这个基本词。将所有电子邮件中的多种变形形式转换为基本单词也将减少助理必须处理的词汇(唯一单词的总集)。图 6-4 显示了词汇化后的准备数据——Email _ Base _ Words一栏包含了邮件单词的基本形式。为了简单起见,我们有意避免在术语化过程中详细处理的词性 1 。在实际项目中,在执行词汇化时,您可能需要考虑每个单词所属的词性。

img/504530_1_En_6_Fig4_HTML.png

图 6-4

词汇化后的准备数据

助手将创建一个模型,该模型学习推断电子邮件的类别。因此,准备数据中的类别是模型的目标变量。但是该模型还需要基于其值进行预测的特征。所以,助手会使用某种机制从 Email_Base_Words 中提取特征。让我们假设助手使用单词袋技术来实现这一点——我们将在第十四章中探讨一种更高级的技术。单词包将确定所有电子邮件中唯一基本单词的总集合,然后为词汇表中的每个基本单词创建一个特征。电子邮件的特征值是相应的基本词在该电子邮件中出现的次数。图 6-5 显示了使用单词袋技术提取的特征的局部视图;该图还显示了目标变量类别。你可以看到,在我们的词汇中,每个基础词对应一个特征。第一封电子邮件的特征修复的值是“1 ”,因为基础词修复在该电子邮件的基础词列表中出现过一次。对于第二封电子邮件,该特征的值为“0”,因为第二封电子邮件不包含单词 fix 。类似地,特征可视化的值对于第三封电子邮件是“2”,因为该电子邮件的基本单词列表包含单词“可视化”两次。现在功能和目标都可用了,助手可以继续进行数据科学流程的下一步。由于没有数据科学家积极参与其中,他们可以查看可视化并从中得出见解,因此助手将直接进入机器学习步骤。

img/504530_1_En_6_Fig5_HTML.png

图 6-5

词汇袋技术应用后的特点和目标

机器学习

助手现在会将这些准备好的数据交给机器学习算法,该算法可以学习如何根据特征值推断电子邮件所属的类别。这个问题现在被简化为一个简单的分类问题,所以我们不会涉及太多的细节,因为我们已经在前面的章节中讨论过这样的分类问题。助手可以尝试不同的可用分类机器学习算法,包括深度学习算法。我们将在第十六章中讨论深度学习。该助理还需要一种机制来评估不同算法产生的模型能够推断出电子邮件的类别。根据性能评估,它可以决定哪个模型具有最佳性能,以及该性能是否足以让它开始推断新电子邮件的类别,并相应地将它们移动到正确的文件夹。我们将在第十六章的后面部分研究评估模型性能的这个关键方面。一旦助手瞄准了一个看起来有希望的模型,它就会切换到推理模式。

推理

助手直到现在只是观察和学习;现在,它变得活跃,并试图路由新的电子邮件到正确的文件夹。它将使用已经创建的模型来推断每个新收到的电子邮件的类别,并将其移动到与该类别相对应的文件夹中。但是,正如上一节所讨论的,该模型只能根据特性的值来推断类别。这意味着助理需要从每封新邮件中提取特征值,然后将它们传递给模型进行推理。为此,它将遵循前面数据准备一节中描述的相同预处理步骤。图 6-6 显示了一封新收到的电子邮件以及它在推断之前所经过的预处理。首先删除问候语和结束语,然后删除标点符号、转换为小写、提取单词和删除停用词。接下来是词汇化,最后,单词袋应用于基本单词列表,以生成传递给模型的特征值。请注意,功能修复发布的值都是“1”,因为这封电子邮件的基本单词列表中这两个单词都出现了一次。然后,该模型基于特征值推断出该电子邮件的类别是产品开发、,因此助理将该电子邮件移动到文件夹产品开发。

img/504530_1_En_6_Fig6_HTML.png

图 6-6

使用从新电子邮件中提取的特征的模型进行推断

可能发生的情况是,模型错误地推断出电子邮件的类别,助手最终将电子邮件放在了错误的文件夹中。当用户阅读电子邮件时,他们会将其移动到正确的文件夹中,作为对助手的反馈。下一次助理重复使用电子邮件及其文件夹来建立模型的整个过程时,新模型将自动从新电子邮件及其文件夹中学习。当助手开始使用新模型时,之前可能分类错误的电子邮件现在可能会正确分类。因此,随着时间的推移,助手在将电子邮件移动到正确的文件夹方面变得越来越好。

结论

NLP 是人工智能的一个热门子领域,正在快速发展。我们看到了 NLP 的两个方面,并简要地看了几个常见的 NLP 问题。我们讨论了自然语言处理的数据科学方法,并介绍了制作能够将电子邮件移动到适当文件夹的个人助理产品的步骤。这涉及到 NLP 中使用的一些常见的文本预处理步骤的讨论。这些步骤还介绍了如何将文本转换成 ML 模型使用的数字特征。

七、聚类

我们几乎本能地倾向于判断两个物体何时相似或不相似。例如,当我们看到自然界中的无数物体时,我们倾向于将它们分成两组:一组能够摄取食物并将其转化为能量,能够繁殖等等。而第二组没有表现出这些特征的物体。一旦我们辨别出两个如此明显不同的群体,我们就给他们一个名字——有生命的和无生命的。虽然这似乎是一个过于简单的例子,但基于生物特征、进化等的类似分组。,导致各种生物分类学。?? 1

当零售商店之类的公司希望根据客户的人口统计数据、购买模式和其他个人信息对客户进行分组时,也会出现同样的趋势。

这些是我们人类“智能”的一个基本方面的几个例子——我们天生的趋势和能力,即创建相似的对象/观察的组,也就是说,创建组,使得一个观察与其组中的其他观察更相似,而不是与其他组中的观察更相似。我们称这样的观察组为星团。我们将涉及识别给定一组观察值的聚类的问题称为聚类

对于聚类,我们首先决定关注观察的哪些特征/属性。一旦基于这些属性创建了聚类,我们就分析这些聚类以理解每个聚类内的确切相似性;这将为每个集群产生一个名称和有用的描述。最后,对这些集群的这种洞察会带来一定的商业利益,例如为零售店的目标客户群(集群)确定适当的营销活动。

在这一章中,我们将看一个基于购买模式对客户进行聚类的端到端示例。这将说明如何使用数据科学过程来解决聚类问题,以从数据中获得洞察力。

数据捕捉

假设我们有一家商店的客户交易数据,包含客户购买的各种产品的详细信息,如图 7-1 所示。

img/504530_1_En_7_Fig1_HTML.png

图 7-1

客户交易

每行捕获客户购买的产品数量。 2 注意,客户通常在一次交易中购买多种产品——在这种情况下,相应的行具有相同的值 Trans_id

有了这些数据,我们有兴趣在我们的客户中找到共同的行为(购买)模式。

数据准备

在这种情况下,让我们假设我们只对最近的趋势和模式感兴趣。因此,我们将首先过滤数据,只关注上个月(比如 4 月)的交易。为此,我们可以根据 Trans_date 来过滤行。

然后,我们将汇总并透视最近交易的数据,以获得图 7-2 所示的结构。

img/504530_1_En_7_Fig2_HTML.png

图 7-2

每位客户每种产品的总数量

请注意,我们已经合计了整个四月份每位客户的产品数量,例如,Alice 在四月份总共购买了四种薯片。

处理缺失值

对于聚类,考虑如何处理观察值中的任何缺失值是很重要的。对于聚类来说,丢失值的处理可能相当微妙。一些技术遵循迭代方法,其中仅基于可用值形成聚类,然后使用聚类来推断缺失值。通常需要对域有深入的了解,以确保如果推断出任何值来替换丢失的值,不会对集群产生负面影响。

在我们的例子中,我们没有任何缺失值——如果客户没有购买某个特定的产品,我们在前面的表中的值就是零。

正常化

有些属性的取值范围可能与其他属性大相径庭。例如,一些产品可能比其他产品更频繁地被购买(例如,袜子可能比电子产品更频繁地被购买)。在这种情况下,我们可以对这些值进行标准化,以便所有产品的数量都落在相似的范围内。这有助于确保销售更多的产品不会严重偏向集群。

在我们的例子中,我们相信产品没有这样的变化。所以我们可以继续使用之前的数据。

数据可视化

一种特别适用于聚类的数据可视化技术是树状图。这通常在机器学习步骤之后的第二次迭代中使用。因此,我们将在机器学习步骤的一个小节中研究它。

机器学习

我们将使用一种叫做凝聚聚类的技术。 3 这种想法很简单,它的工作原理如下:

  1. 从单观测值分类开始,也就是说,创建与观测值一样多的分类,并为每个分类分配一个观测值。

  2. 将最相似**的两个集群合并成一个更大的集群。

    1. 重复执行这个步骤,直到一个单独的集群包含所有的观察值。

    2. 跟踪各种合并操作——这些操作会产生集群的层次结构。

    **

**当前面的步骤完成后,我们将有一个集群的层次结构,可以在图中可视化,如图 7-3 所示。

img/504530_1_En_7_Fig3_HTML.jpg

图 7-3

树状图:聚类的层次结构

我们将在下一节“数据可视化迭代”中详细分析这个图。但在此之前,我们先暂停一下,理解一下前面步骤中的“相似”到底是什么意思——我们如何量化观察值的相似性?

观察的相似性

有几种方法可以定义两个观察值的相似性——参见图 7-4 中的一些方法。

img/504530_1_En_7_Fig4_HTML.png

图 7-4

相似性度量的动机

参考 A、B、C 三点及其对应的向量。现在,让我们比较两个相似的概念:

  1. 点与点之间的距离:如果我们观察点与点之间的成对距离,我们会发现 A 和 B 彼此最接近。因此,如果这个度量——欧几里得距离——被当作相似性度量,那么 B 将更类似于 A,而不是 c。

  2. 向量之间的角度:如果我们观察向量对之间的角度,我们会发现 B 和 C 彼此“最接近”。因此,如果将该度量作为相似性度量,那么 B 将更类似于 C,而不是 a。角度的余弦,称为余弦相似性,是一种常见的度量,因为其值恰好落在-1(非常不相似)和 1(非常相似)之间。注意余弦相似度只判断向量的方向,而不判断向量的大小。

总而言之,如果观察值被表示为 n 维空间中的点,,那么欧几里德距离将测量两个观察值彼此接近的程度,而余弦相似度将测量两个观察值指向相同方向的程度。

因此,我们看到可能有多种“相似性”的概念——领域决定了哪一个是最合适的。例如,如果某些属性表示陆地上的实际位置,则可以使用欧几里德距离-例如,如果您有来自不同位置的多个传感器的读数,并且您希望根据它们的读数和位置对它们进行分组,那么这可能是适用的。

在我们的特定案例中,我们对客户的偏好感兴趣,也就是说,他们比其他人更喜欢哪种产品。如果我们选择欧几里德距离,那么购买数量较少的客户将倾向于聚集在一起,而不管他们的偏好——就像在前面的例子中 A 和 B 被认为更相似。我们需要一个不受所购买产品的绝对数量影响的指标,而只受表明偏好的各种产品的相对数量影响—这完全取决于向量的“方向”,而不是它们的大小。 5 因此,我们决定在本例中使用余弦相似度作为相似度度量。在下一节中,我们将看到这对集群的影响。

相似性度量的选择是聚类中最关键的因素。正如我们所看到的,这很大程度上依赖于对领域的理解。因此,相似性度量最好通过与数据分析师/领域专家密切合作来决定。

ADVANCED NOTE: LINKAGE

回想一下,在凝聚聚类的步骤 2 中,我们需要合并最相似的两个聚类。当两个集群有多个观测值时,为了合并它们,我们还需要一种机制来量化两个集群的相似性——这被称为链接

通常使用的三种联动方式是平均联动。 6 它们根据从每个聚类中选择哪个(些)观察值来表示两个聚类的总体相似性而变化。通常,用各种链接机制评估模型,以得出最有用的变体。链接的更多细节超出了我们的范围。

在我们的例子中,我们使用了平均链接

创建了凝聚聚类模型后,现在让我们更详细地分析图 7-3 中的树状图。关于数据科学过程,这可以被视为数据可视化步骤的迭代。

数据可视化迭代

现在让我们更详细地浏览图 7-3 的树状图。

x 轴包含使用客户标记的初始单观察聚类。

每个横条代表由两个聚类合并而成的聚类,例如,红色横条代表由包含 Alice 和 Bob 的两个初始单观察聚类合并而成的聚类。同样,绿色横条表示由 Chandler 集群和红色集群(包含 Alice 和 Bob)合并而成的集群。

我们现在可以从底部到顶部阅读树状图,以了解集群形成的顺序。当我们从底部向顶部移动时,我们遇到水平线的顺序表明了星团形成的顺序。因此,集群按以下顺序形成:

  1. 通过合并 Dilbert 和 Einstein 的集群得到的 Magenta 集群:首先,这两个客户彼此最相似。

  2. 红色群集通过合并 Alice 和 Bob 的群集。

  3. 通过合并钱德勒星团和红色星团的绿色星团:钱德勒更像爱丽丝/鲍勃,而不是呆伯特/爱因斯坦。

  4. 通过合并品红色和绿色集群来合并蓝色集群。

y 轴表示相异度,即,较低的值表示较高的相似度。在我们的例子中,因为我们使用了余弦相似度,所以相异度被计算为(1–余弦 _ 相似度),这也被称为余弦距离。因此,我们可以从图中看到,呆伯特和爱因斯坦的聚类之间的余弦距离约为 0.03(品红色水平线的高度),而品红色和绿色聚类之间的余弦距离约为 0.26(蓝色水平线的高度)。

已经理解了如何阅读树状图,现在让我们看看如何解释树状图,以及从中可以推断出什么样的见解。

ADVANCED NOTE: ROLE OF THE SIMILARITY MEASURE

请注意相似性度量在聚类中的作用——尽管 Dilbert 购买的产品比 Einstein 多得多,但它们被认为是相似的,因为我们使用了余弦相似性,并且它们都有相似的方向,即相似的偏好。例如,他们似乎都更喜欢水果/果汁,而不是巧克力/蛋糕。

如果我们使用欧几里德距离,爱因斯坦会首先与爱丽丝/钱德勒聚集在一起,因为他们购买的产品更少,而且在欧几里德空间中的点上更接近。

推理

在前面的章节中,我们看到了在推理步骤中预测新观察值的例子。在聚类的情况下,我们根据创建的聚类来推断一些见解,这也被称为知识发现。 7

解读树状图

使用聚集聚类的优点之一是,我们可以分析层次结构,以确定哪种聚类在业务环境中最有意义。参考图 7-5 了解如何在我们当前的示例中实现这一点。

img/504530_1_En_7_Fig5_HTML.png

图 7-5

从树状图中识别有意义的聚类

在树状图中,当我们从顶部向底部移动时,聚类的数量增加。如果我们在任何地方画一条水平线,那么它相交的垂直线的数量决定了集群的数量。图 7-5 中显示了两条这样的水平线,它们代表了识别星团的两种可能机制,我们称之为 L1 和 L2。

  1. L1 得到两个聚类:一个聚类包含 Dilbert 和 Einstein,第二个聚类包含 Chandler、Alice 和 Bob。

  2. L2 得出三个聚类:一个聚类包含呆伯特和爱因斯坦,第二个聚类只包含钱德勒,第三个聚类包含爱丽丝和鲍勃。

数据分析师可能会调查每个集群中的观察结果,并确定,如图 7-5 所示,

  • 在 L1 的例子中,两个集群分别代表喜欢健康食品和垃圾食品的顾客。 8

  • 在 L2 的例子中,这三个分类分别代表喜欢健康、甜食和油炸食品的顾客。

领域理解和业务环境将决定选择 L1 和 L2 中的哪一个。例如:

  • 如果爱吃甜食的客户群很少,吸引/锁定他们的成本很高,那么只有两个客户群可能是有用的。因此,L1 将被选中。

  • 如果爱吃甜食的人恰好是该行业的一个重点领域,那么 L2 可能会被选中。

营销的可行见解

根据业务环境的不同,可以有不同种类的可操作的见解。假设你选择了 L2,下面是几个市场营销的例子:

  • 假设你计划储备一些新产品,比如黄油饼干和能量棒。你知道这些新的黄油饼干是油炸的,能量棒是健康的。

    • 你可能会向油炸食品爱好者群宣传黄油饼干。由于饼干也有点甜,你也可以向爱吃甜食的人做广告。

    • 你可能会向注重健康的人群宣传能量棒。如果你知道能量棒碰巧也很甜,例如,含有天然糖,你也会向爱吃甜食的人宣传它。

  • 假设在使用 L2 创建这些集群后不久,您已经储备了一种新产品。甚至没有深入分析产品的内容/性质,谁可能会喜欢等等。,您可以使用集群来提出建议。例如,如果你发现 Dilbert 在购买新产品,你可以向 Einstein 推荐(例如,使用折扣券)。同样,如果你发现 Bob 在购买新产品,你也可以向 Alice 推荐。我们将再次讨论第九章中的建议。

结论

在任何捕获了大量数据并希望从中获得一些见解的企业中,都经常会遇到聚类问题。解决聚类问题通常会带来关于客户、流程、领域等的新知识。,并且是从数据中进行知识发现的常用方法之一——通常称为 KDD。我们将在第二十三章中再次关注 KDD 项目。

在这一章中,我们看了一个集群问题的端到端例子。用于聚类的思维过程和技术通常适用于其他领域——我们将在第九章“建议”中看到一个例子

进一步阅读

James 等人(2013)对集群问题和典型挑战进行了出色的介绍。它还涵盖了各种聚类技术的更多细节,包括聚集聚类。

参考

詹姆斯、加雷斯等人统计学习导论。纽约:施普林格,2013 年。

**

八、异常检测

通常,我们倾向于对观察结果是意外的还是异常的有一个固有的概念。似乎表现不稳定或给出很少看到的读数的传感器;前所未闻的症状/测试读数组合,或医学图像(如 CT 扫描)中的罕见模式;和不寻常的 IT 系统中的网络流量,这些是容易引起注意的一些情况。检测数据中的任何异常事件被称为异常检测。

大体上,根据您拥有的数据类型,异常检测分为三类:

  • 标记数据:如果您知道数据中的哪些观察值是正常的,哪些是异常的,并且目标是预测哪些新的观察值是异常的,那么这类似于将两个目标分类为正常异常的分类。既然你把某些观察结果视为异常,那么很可能你的正常观察结果要比异常观察结果多得多。所以,你需要恰当地处理阶级不平衡。因为这可以用分类技术来解决,所以我们在这一章中将不再讨论。

  • 未标记的数据:如果您不知道哪些观察值是正常的,哪些是异常的,那么您需要首先训练一个模型来确定现有数据中的异常观察值。然后,您可以在新的观察中应用相同的模型来检测异常。在这种情况下,一个隐含的假设是,异常观察的百分比相对较小。

  • 纯数据:你有你知道不包含任何异常观察的数据。在这种情况下,您需要训练一个模型来学习什么是正常观察值。然后,您可以确定是否有任何新的观察结果被模型视为不正常,也就是说,是否有任何新的观察结果对于模型来说是新奇的。一个新的观察可以潜在地指示一个异常。异常检测的这个子类通常被称为 新奇检测

在关于异常检测的这一章中,我们将首先介绍使用未标记数据和纯数据进行异常检测的例子。然后,我们将看一个端到端的例子,说明在数据科学过程中,针对无标签数据和纯数据的异常检测问题的步骤。然后我们将稍微更正式地总结异常的概念以及 ML 算法的选择如何影响这个概念。最后,我们将看几个复杂异常的例子,包括集体异常和上下文异常的概念。

使用未标记数据的异常检测

  • 你有来自病人的数据,他们中的一些人患有你有兴趣研究的特殊疾病,比如说乳腺癌。癌症患者在人口中所占的比例相当小,因此您可能希望将此视为异常检测问题,即识别异常的患者,这可能预示着乳腺癌。在这种情况下,除了医学图像之外,特征可以包括患者的相关医学信息。

  • 您拥有企业中数千用户远程登录的审计数据。根据登录模式,您希望推断是否发生了任何入侵攻击,例如,潜在的用户帐户被黑客攻击。在这种情况下,这些特征可以包括用户在一天中登录的 IP 地址的数量、远程登录的地理位置、月份、星期几以及其他这样的因素。我们的目标是检测是否发生了任何异常模式,例如,一个用户通常在一天内从四到六个不同的 IP 地址登录,突然在一天内从十个以上的 IP 地址登录。

  • 您有工厂生产的零件的各种测量数据。根据之前对您的工业流程的分析,您知道通常有 2%的制造零件在某种程度上是有缺陷的。您对通过将异常检测技术应用于每个零件的测量来持续自动确定哪些零件有缺陷感兴趣。(其更复杂的变化是能够基于每个零件的多个图像来检测这些有缺陷的零件。)

使用纯数据的新颖性检测

  • 作为视频监控系统的一部分,你有正常情况的视频。如果看到任何不正常的图像或动作,你需要发出警报。例如,在火车车厢上的正常情况下,人们会平静地行走或坐着。如果我们使用这些视频训练一个模型,该模型就可以检测出异常情况(图像或视频),如有人挥舞枪支、骚扰或人群恐慌。

  • 您的公司生产管道,这些管道用于形成输送石油或天然气的长管道。管道通常延伸到无监督的偏远地区,很容易被篡改。管道包含监测振动的传感器,目标是检测是否出现任何异常振动,例如,由于在管道中钻孔而出现的异常振动。在这种情况下,您将捕获许多关于正常振动值的数据,但由于实际限制,您可能没有关于有人以不同方式闯入管道的数据。在这种情况下,您的数据(正常振动值的数据)可以被视为纯数据,您的目标是训练一个可以正确捕捉正常行为的模型。当振动值与正常行为大相径庭时,我们可以称之为异常,这可能表明管道中存在篡改或故障。

异常检测的数据科学过程

在本节中,我们将查看一个示例数据集( HeartDisease ),并涵盖异常检测环境中数据科学流程的步骤。

世界和数据采集

数据 1 包含来自一组患者的读数、与心脏功能相关的某些测试的读数、一些症状和先前存在的状况,以及诸如年龄和性别的患者元数据。有了这些信息,我们的目标是找到哪些患者是异常的——异常可能表明,比如说,潜在心脏状况的存在。

捕获的数据类型将决定进一步的分析。例如,如果我们只有一组健康的患者,那么我们需要使用处理纯数据的技术。另一方面,如果我们的队列也可能包含心脏病患者,并且他们的百分比相对较小,那么这就是使用未标记数据进行异常检测的情况。在这一点上,检查世界(在分析师的帮助下——在这种情况下,可能是诊断医生或临床医生)是否在我们观察的人群中存在已知的心脏病患病率也是有意义的。这可以帮助我们以后确定异常分数的阈值。

数据准备

常见的数据准备方面,如处理缺失值等。,在这里也适用。此外,快速查看各种特性的值的范围表明,一些特性(如性别)是分类的,而另一些是数字的。数字特征也具有不同的范围。

通常,对于处理数字特征的算法来说,归一化使所有的值落在 0 和 1 之间是很有用的。在这种情况下,让我们也准备一个规范化数据集。(在某些情况下,我们可能只有在对数据进行初步的探索性视觉分析后才这样做。)

数据可视化

通常情况下,我们会首先查看单个要素的任何值是否是异常值。例如,这可以从箱线图中看出。此外,我们可以尝试查看特征值的某些组合是否相当罕见,例如,散点图。

注意,我们在这里使用术语异常值是指图中的一个点是“视觉”异常值。图中的异常值可能表示也可能不表示异常观察值;目测异常值通常只是分析的起点。

例如,这种分析可能会指出哪些特征更有可能识别异常,并有助于获得关于数据的更多直觉。

箱线图

让我们先来看看图 8-1 中的一个特征血清胆固醇的方框图。

img/504530_1_En_8_Fig1_HTML.jpg

图 8-1

血清胆固醇箱形图

该图表明大多数观察值倾向于落在 126 和 360 之间(一半的观察值落在 210 和 273 之间)。我们可以将 126–360 范围之外的值视为异常值。对于我们用来绘图的库,它用十字表示极端异常值,用圆圈表示轻度异常值。在这种情况下,我们看到有三个异常值,其中一个是极端异常值。

让我们仔细看看这个方框图中的不同视觉元素在高层次上代表了什么。方框的下边缘代表第一个四分位数(Q1) ,表示 25%的观察值低于该值(210)。方框的上边缘代表第三个四分位数(Q3) ,表示 75%的观察值低于该值(273)。方框内的粗水平线代表中值,表示 50%的观察值低于该值(240)。第三个四分位数和第一个四分位数之间的距离称为四分位数间距(即 IQR = Q3–Q1)。上须延伸至最大观察值,该值落在从 Q3 开始测量的 IQR 的 1.5 倍的距离内(因此上须延伸至 360°)。较低的须状物延伸到最小的观察值,该观察值落在从 Q1 测量的 IQR 的 1.5 倍的距离内(因此较低的须状物延伸到 126)。正如你在图 8-1 中看到的,两个胡须之外的观察结果被绘制为异常值。请注意,在这种情况下,下须下方没有异常值。

箱线图是一种快速获得单个要素值的直观方法。

您可以记下一些看起来有趣的观察结果,例如,它们是否是多个特征的箱线图中的异常值,等等。,以便与领域专家或业务分析师进一步讨论。在这种情况下,领域专家可以是诊断医生/心脏病专家。

该分析仅使用了数字特征。我们可以使用条件盒图在分析中进一步包括分类特征。

条件盒图

为分类要素的每个值创建的箱线图称为条件(或分组)箱线图。例如,图 8-2 显示了跨越性别值的血清胆固醇的条件箱线图(比如,男性/女性表示为 0/1)。

img/504530_1_En_8_Fig2_HTML.jpg

图 8-2

条件盒图–不同性别值的血清胆固醇水平

如果我们将其与图 8-1 中血清胆固醇的早期箱线图进行比较,我们可以看到异常值是如何受患者性别影响的。例如,我们在血清胆固醇水平箱形图中看到三个异常值,但在这里,我们只看到一个。这是因为 Sex=0 的正常范围要大得多,从 141 到 417。因此,我们之前认为图 8-1 中的两个异常值现在看起来是图 8-2 中雄性的正常值。此外,我们看到在女性中,似乎没有血清胆固醇水平异常。

因此,一个人的性别会影响哪些 ?? 血清胆固醇值被认为是正常的。这就是特征之间的关系对于异常检测的重要性。类似地,我们还会使用其他分类特征来查看条件盒图,例如 ChestPainType、等。

数字特征之间的关系也可以类似地相关。为了分析两个数字特征之间的关系,我们可以使用散点图。

散点图

散点图用于可视化两个数字特征之间的关系,如图 8-3 所示。请注意,在这里,我们使用了归一化的特征值,因此两个要素在相同的比例上。

img/504530_1_En_8_Fig3_HTML.png

图 8-3

血清胆固醇与最大心率的散点图

我们用较大的点突出显示了几个点,这些点表示潜在的异常观察,因为它们在图中似乎有些孤立。还要注意点 X,它看起来比它的邻居更加孤立。通过独立地观察这两个特征,我们可能会注意到其他潜在的异常观测,但是我们的注意力不会被吸引到像 x 这样的观测上。

我们可以绘制多个散点图,以确定哪些特征潜在地指示一些异常。

使用诸如盒图和散点图之类的技术,我们可以得到一些直觉,哪些特征可能与指示异常相关。在研究了一些可视化之后,我们通常会对异常如何依赖于多个特征有所了解。潜在地,也有可能一个观察值对于仅仅一个或两个特征不是异常,但是所有特征的值的组合可能是异常。

一旦我们超越了两三个特征,我们就不可能“可视化”数据来获得这种类型的洞察力。但是到目前为止,我们的直觉确实表明,我们可以希望根据 n 维空间中观察结果的相对位置来检测一些异常。现在让我们转向机器学习,以帮助我们使用多种特征将我们的视觉直觉扩展到 n 维空间。

机器学习

当我们使用箱线图和散点图时,我们实际上是在目测观察结果之间的距离,也就是说,被视为很远的观察结果被视为异常。有几种算法通过将概念扩展到多个特征,以类似的方式基于观测值之间的距离来检测异常。

我们将使用局部异常因子(LOF)算法。我们在这里的选择是出于以下原因。首先,它是直观的,与我们视觉上倾向于感知的异常值高度共鸣。其次,它是少数几种可以合理地用于两种情况的算法之一——无标签数据或纯数据。最后,在像这样的医疗保健例子中,我们可能感兴趣的是找到与“相似”患者不同的患者,而不是与整个队列不同的患者。这自然会导致我们发现“局部”异常,也就是说,异常的观察值与相似的观察值不同,但不一定与整个数据集相关。LOF 发现的观察值与其邻居相比相对孤立,因此能够检测局部异常。

我们将使用观测值的术语“局部密度”来表示该观测值周围邻居的密度,也就是说,如果邻居在观测值周围密集,则该观测值的局部密度高。 3 LOF 致力于直觉,如果一个观测值的局部密度低于其邻居的局部密度,那么该观测值比其邻居更反常。图 8-4 用一个玩具的例子提供了一个快速的直觉。

img/504530_1_En_8_Fig4_HTML.png

图 8-4

局部异常因素:具有两个特征的玩具示例 4

正如我们从该图中看到的,与相邻点相比相对孤立的点会得到较高的异常值(异常值)分数。在这种情况下,异常分数实际上是一个观测值的局部密度相对于其邻居的偏差的函数。例如,点 A 的局部密度与其两个最近邻居的局部密度相似,因此 A 获得与其两个最近邻居相似的分数。另一方面,点 B 的局部密度小于其最近邻居的局部密度,由于这一点,B 得到比其邻居更高的分数。

如果我们在我们的心脏病数据集上运行 LOF,但仅使用两个特征 SerumCholestoralMaxHeartRate,我们会得到如图 8-5 所示的结果。

img/504530_1_En_8_Fig5_HTML.jpg

图 8-5

LOF 只使用两个特征:血清胆固醇和最大心率

我们可以将其扩展到使用标准化心脏病数据集中的多个特征来运行 LOF 算法,以获得所有观察值的异常分数,并根据异常分数对它们进行排序。当我们使用七个选定的特征运行 LOF 时,包括血清胆固醇、最大心率、性别,我们获得了如图 8-6 所示的异常值。

img/504530_1_En_8_Fig6_HTML.jpg

图 8-6

心脏病数据集上使用 LOF 的异常评分

这些异常分数现在可以用于推断。

推理

现在,模型已经为机器学习步骤中的观察值生成了异常分数,我们可以继续确定异常。为了做到这一点,我们将首先为异常分数设置一个适当的阈值。例如,如果我们保持阈值为 1.3,我们会将前五次观察称为异常。这就是分析师的洞察力在决定一个合适的阈值时有用的地方。分析师还可以确定相对异常分值是否合适,例如,检查正常观察值是否没有得到高异常分值。基于来自分析师的输入,我们可以通过修改参数和 LOF 算法中使用的特征来执行进一步的迭代。

NOVELTY DETECTION USING LOF

注意,LOF 算法也可以与纯数据一起用于新颖性检测。在这种情况下,每一个新的观察都要进行独立的新颖性测试。新观测值的局部密度与其相邻观测值的局部密度(在纯数据中)进行比较,以确定其异常值。如果新观测的局部密度显著低于其邻居的局部密度,则它可以被视为新观测。

异常现象的剖析

看到异常检测的例子后,让我们稍微更正式地研究一下当我们说“这个观察是异常”时,我们到底是什么意思我们很少说一个观察结果本身是不正常的,我们通常是说它与我们看到的其他观察结果相比感觉不正常。

这种直觉反映在由大多数异常检测技术生成的异常分数中。异常分数可以用来确定相对异常,正如我们在前面的心脏病例子中看到的。例如,业务分析师可以根据观察值的异常分数对其进行排序,并确定一个适当的阈值——分数超过该阈值的观察值可以被标记为异常。在我们需要更深入地了解异常行为的情况下,这种将业务分析师包括在内的方法非常有益。例如,分析师可以根据领域需求定制虚警 6 比率:

  • 一个医疗诊断用例会建议,错误警报越多越好,而不是冒着疾病未被检测到的风险。因此,分析师可能会选择一个保守的低门槛。

  • 在物联网使用案例中,来自众多传感器的数据点数以百万计,虚警可能会使分析变得不堪重负。如果异常不指示严重故障,而是可容忍的故障或者仅仅是感兴趣的观察,则可以选择更高的阈值来减少错误警报,这是冒着忽略偶然故障的风险的。

除此之外,各种异常检测技术对异常是什么强加了它们特定的概念和解释。例如:

  • 在基于最近邻的技术中,观察值被视为 n 维空间中的点。然后,以某种方式将每个观察值与其邻居进行比较,以得出异常分数,即,观察值的异常性由其在 n 维空间中的位置及其最近邻居的位置来确定。(LOF 是这类技术的一个例子。)

  • 在基于概率密度函数的技术中,如核密度估计,概率上极不可能发生的观测值被视为异常。

  • 在基于聚类的技术中,例如 k-means,观察值根据它们的相似性被分组到聚类中。不属于任何集群、【7】或者远离集群中心、或者属于非常稀疏的集群的点,则可以被视为异常。

确定这些概念中的哪一个最适合手头的问题也是选择相应技术的一个因素。

复杂异常

异常现象不一定是孤立发生的。通常是一组特定的观察结果是异常的,或者异常取决于额外的上下文信息。我们将看一下每种情况的几个例子。

集体异常

几个常见的异常作为一组观察值出现,这样每个观察值本身都不是异常的,但是整个组的出现是异常的。例如,如果在一台计算机上,缓冲区溢出、远程会话启动和数据传输事件同时发生,则这是一个异常,可能表明存在黑客攻击。但是,这三个事件中的每一个都可能在正常操作中单独发生。 8

集体异常的其他典型例子有

  • 来自传感器的一系列读数似乎不正常。例如,在我们前面看到的管道示例中,假设我们预期偶尔的单个读取可能是不寻常的,也就是说,它不是异常。但是某种程度上持续的异常读数序列是异常的(并且将指示篡改)。在这种情况下,读数的顺序是一个集体异常。

  • 一系列日志或事件可以表明对软件或网络的入侵攻击。在一些复杂的系统中,一系列的日志也有可能指示错误的行为,从而导致不良的用户体验。在这些情况下,NLP 可以与异常检测技术相结合来标记异常。

语境异常

在许多情况下,异常取决于观察数据的环境。常见的上下文是观察的时间和位置。

例如,一个人在任何一天可能通常最多花费 500 美元,除了像圣诞节这样的假期,他们可能花费高达 2000 美元。现在,如果他们在 12 月花费 2000 美元,这是正常的。但如果他们在 7 月份花掉哪怕 1000 美元,也会被认为是反常的。

类似地,位置的地理环境(例如,纬度/经度)、附近的事件/景点以及其他此类信息也可以发挥重要作用。

在某些情况下,精心设计一个概括的上下文来降低复杂性并使分析易于处理是很有用的。例如,在信用卡欺诈检测中,一种方法是将每个人视为一个上下文,因为每个人的消费模式会有很大的不同。但是这将需要大量的模型和增加的复杂性。一个更容易处理的方法是从客户细分中构建概要,并使用概要作为上下文。

合并适当的上下文对于提高异常检测的准确性至关重要。特别是在大数据时代,当互联网上的上下文数据很容易获得时,例如在社交媒体上,您可以尝试将更多的上下文吸收到您的分析中,以提高相关性和准确性。

时间序列

在一段时间内,按时间顺序观察到的一系列数据称为时间序列数据。示例包括传感器读数、金融交易或心电图读数。这里,时间是我们正在分析异常的一系列观察值的上下文。考虑到它的重要性和广泛的适用性,我们将介绍这个特例的几个额外的例子。

忽略时间信息并将这些数据简单地视为一个序列可能是不合适的。将时间信息结合到分析中可以发现依赖于数据周期性的异常。例如:

  • 在 ECG 中,特定读数或读数集合可能在正常范围内,但仍然与通常预期的规则和周期形式不一致。读数周期的这种不一致可能表明心律不齐。

  • 个人的交易可能具有一定的周期性,例如,定期发生的海外交易,例如,每个季度。如果我们在一个季度内看到多笔海外交易,这将表明一种异常。

  • 考虑我们在本节开始时看到的例子,根据登录模式(如远程用户登录的不同 IP 地址的数量)检测入侵攻击。在这种情况下,时间通常是一个重要因素,例如,周末或节假日的登录模式可能与平日不同。此外,个人可能有特定的模式需要考虑,例如,经常在周四和周五出差的人可能在这两天有不同的模式。

结论

在本章中,我们讨论了异常检测问题的各种细微差别和类型。我们还看了一个例子来了解人类的方式(例如,方框图)和算法(有点神秘)来确定异常。

异常检测是领域专家(或业务分析师)可以发挥重要作用的领域之一——尝试了解模型何时标记异常或遗漏异常。这一点的重要性会根据您的业务环境中异常的关键程度和影响而有所不同。

进一步阅读

有许多关于异常检测的调查报告。其中一个经典是 Chandola、Banerjee 和 Kumar (2009)。尽管异常检测技术从那时起已经发展了很多,但是对数据类型、问题/应用程序和技术进行分类的概念框架仍然在很大程度上适用。

有关该领域的更多详细信息和最新报道,请参考 Mehrotra、Mohan 和 Huang (2017)。它涵盖了异常检测在各个领域的应用,随后是用于异常检测的方法和算法。

参考

Chandola,Varun,Arindam Banerjee 和 Vipin Kumar。"异常检测:综述."ACM 计算调查,第 41 卷,第 3 期【2009 年 7 月。

梅赫罗特拉、基尚、奇卢库里·莫汉和黄华明。异常检测原理和算法。瑞士查姆:施普林格,2017。

九、推荐

曾几何时,你可能有一位密友向你推荐一本书、一首歌或一部电影——因为这位朋友知道你的“品味”,你通常会查看他们的推荐。

在当今的网络世界中,网站和移动应用程序(以及开发它们的公司)已经收集了所有访问者和客户的数据,这些数据可能是在网站/应用程序上发生的每次点击的粒度级数据。这些数据包括他们购买/拒绝和喜欢/不喜欢的每本书/歌曲/电影/产品。

基于这些数据,如果一家公司能够确定用户的“口味”,它就可以伪装成他们的朋友,向他们推荐他们可能感兴趣的东西。这不仅是一个很好的交叉销售/追加销售的机制,因此增加了公司的销售额,而且考虑到这些公司的库存范围,为用户增加了巨大的价值(想想 Amazon.com、网飞等)。)并因此增加客户参与度。

在这一章中,我们将看一个端到端的例子,如何从过去的顾客购买、评级等数据中估计个人的“品味”。,以及如何提出建议来改善用户体验。

数据捕捉

在本节中,我们将首先看一下项目/交互的一般概念,以及关于如何捕获这些数据的一些常见变化。然后我们看看本章中用于确定建议的示例数据。

项目和互动

我们使用术语“项目”来表示用户与之进行“交互”的任何事物,例如,交互和项目可以是:

  • 在在线流媒体平台上观看电影;电影是物品。

  • 从电子商务网站购买产品;产品就是项目。

  • 在交友平台上喜欢/约会另一个人;其他用户是项目。

我们的目标是能够根据用户过去与几个项目的交互数据,向用户推荐他们最可能喜欢的项目。在本章的其余部分,我们将关注用户观看电影的例子——但是类似的概念也适用于其他类型的交互/项目。

量化互动

当用户与一个项目交互时,我们如何捕捉交互的本质和质量?概括地说,有两种方式来捕捉用户关于项目的反馈:

  • 隐式反馈:我们确定用户是否隐式地喜欢项目,例如,他们是否一口气看完了整部电影,然后搜索相似的电影,等等。,他们大概喜欢。如果他们中途离开一部电影并且再也没有回来,他们可能不喜欢这部电影。

** 显式反馈:我们明确地向用户征求反馈。要求用户使用星级或拇指向上/向下等对电影进行评级。,就是这样的一个例子。*

*所有这些信息最终都以某种量化的形式被捕获,例如,可以是简单地表示用户是否观看了电影的 0/1,1-5 级的评分,或者是使用这些机制的组合计算的复杂评分。

示例数据

在我们当前的示例中,我们将参考图 9-1 中所示的样本数据。

img/504530_1_En_9_Fig1_HTML.png

图 9-1

由用户分级的电影,每个用户-电影对一行

在我们的数据中,我们表示用户对各种电影的反馈,评分等级为 1-5,作为明确的反馈。较低的分数表示用户不喜欢该电影,而较高的分数表示用户喜欢该电影,例如:

爱丽丝喜欢《泰坦尼克号》,不喜欢《??》《终结者》,而钱德勒两样都不喜欢。

给定这些数据,我们的目标是向用户推荐他们还没有看过的电影。我们的目标是只推荐他们可能喜欢的电影,也就是我们预测他们会评价很高的电影。

数据准备

我们将旋转数据以获得如图 9-2 所示的结构。

img/504530_1_En_9_Fig2_HTML.png

图 9-2

由用户分级的电影,每个用户一行,每个电影一列

这类问题通常需要两种主要的准备步骤:规范化和处理缺失值。

正常化

用户不仅口味/偏好不同,而且提供反馈的方式也不同。用户提供反馈的两种常见方式是

  1. 一些用户通常倾向于给出高或低的评级。例如,如果一个用户通常倾向于给出高等级,那么等级 3 可能意味着他们根本不喜欢这部电影。

  2. 具有相似平均评级的用户可能在评级范围上有所不同。例如,考虑两个给出大约 3 的平均评级的用户。其中,假设一个用户几乎给所有电影都打了 3 分,而另一个用户总是只给电影打 1 分或 5 分。现在,如果第一个用户偶尔给 5 分,它比第二个用户给的 5 分更有意义/更有价值。

为了调整这些固有的个人尺度,重要的是标准化数据。诸如的技术意味着居中 1 (对于点 1)或 Z 分数归一化 2 (对于点 2)修改评级以考虑用户可能用来评分的任何固有的个人尺度。

虽然这种规范化有助于改进推荐,但在某些领域的环境中,它们也可能是误导性的或不适当的。例如,假设用户研究一部电影的许多细节(例如,阅读评论、看导演、演员等等)。)才能查看。该用户可能通常只给出高分,不是因为他们倾向于给出高分,而是因为他们只观看他们可能喜欢的电影。在这种情况下,使用上述技术调整他们的分数可能是不合适的。 3

在我们当前的说明性例子中,我们将不应用任何标准化。

处理缺失值

在实践中,数据可能有许多缺失值,特别是如果大多数用户即使在与他们互动后也只对少量项目进行评分。例如,用户可能经常观看电影,但不会对其进行评级。有办法填补缺失的评分;参考薛等人(2005)的例子。

然而,在我们当前的例子中,我们将认为一个丢失的条目意味着用户没有看过那部电影。比如爱丽丝就没看过黑衣人。我们的目标是找出我们是否应该向用户推荐这部电影。但是,对于我们现阶段的分析,我们将只考虑那些已经被所有用户评级的电影,即我们将排除我最好朋友的婚礼黑衣人

数据可视化

向用户提供推荐的系统通常是端到端自动化的。因此,我们不包括这种推荐系统的数据可视化。

机器学习

我们将采取的高级方法是,给用户一个

  1. 找到与 a“相似”的用户。

  2. 对于 A 还没有看过的电影,根据这些“相似用户”对这些电影的评价,预测 A 会如何评价这些电影

  3. 推荐 A 预测会获得高评分的电影(即 A 可能会喜欢的电影)。

我们将在下一节中查看步骤 1;步骤 2 和 3 包含在推理部分。

基于聚类的方法

我们首先根据用户对电影的评价对他们进行聚类——这将使我们能够找到与给定用户相似的用户(步骤 1)。从概念上讲,这就像我们在第七章看到的一样。因此,我们将重用我们在第七章中看到的聚集聚类??技术,以产生如图 9-3 所示的聚类层次。

img/504530_1_En_9_Fig3_HTML.jpg

图 9-3

基于用户对电影评价的用户群

让我们假设我们决定形成三个集群——第一个集群包含呆伯特和爱因斯坦,第二个集群仅包含钱德勒,第三个集群包含爱丽丝和鲍勃。(在大规模的自动化系统中,集群数量的选择取决于所使用的 ML 技术;如果我们使用凝聚聚类,这种选择可能会根据树状图中垂直线的相对高度自动进行——这方面的细节超出了我们的范围。)

推理

一旦集群形成,我们就可以根据集群中其他用户对电影的评价来预测用户 A 对电影的评价。例如,我们可以计算他们群中的其他用户对一部电影的简单平均评价;或者我们可以根据另一个用户与 a 的相似程度来计算加权平均值。

在我们的简单示例中,我们可以用图 9-4 中红色显示的预测评级来填充表格。

img/504530_1_En_9_Fig4_HTML.png

图 9-4

预测评级用红色表示

具有高预测评级的条目将由系统 6 产生以下推荐:

  • 我最好朋友的婚礼会被推荐给鲍勃。

  • 黑衣人会被推荐给呆伯特。

端到端自动化

随着用户对电影的观看和评分,我们的数据将继续增长。聚类算法可以自动定期运行以形成用户的聚类。当向用户显示推荐时,我们将运行推理步骤。

集群更新的频率取决于域和用例。在我们的例子中,我们可以每隔几天更新一次集群。

ML TECHNIQUES AND CLASSES OF PROBLEMS

在本章中,我们使用了“凝聚聚类” ML 技术来解决一个“推荐”问题。在第七章和第九章中,我们使用了同样的“凝聚聚类” ML 技术来解决一个“聚类”问题。一般来说,一个 ML 技术可以应用于多个类问题

结论

推荐系统现在是一些在线服务——网站和移动应用程序——的重要组成部分。在这一章中,我们介绍了一个端到端的例子,使用我们在第七章中首次看到的聚类技术来构建推荐系统。

构建推荐系统的技术继续快速发展——参见“进一步阅读”部分了解一些新的发展。

进一步阅读

我们在本章中基于聚类的推荐方法是受薛等人(2005)的启发。 7

互联网规模的最早的推荐系统之一是在 Amazon.com 在线推荐产品。关于推荐系统的简史和一些使用深度学习技术的最新发展,请参考 Hardesty (2019)。

如果你想在你的应用程序中加入推荐系统,你可以考虑开始使用云服务,比如 Amazon Personalize。

参考

哈迪斯,拉里。亚马逊推荐算法的历史。22 11 2019.< www.amazon.science/the-history-of-amazons-recommendation-algorithm>

宁、夏、克里斯蒂安·德罗斯尔斯和乔治·卡里皮斯。"基于邻居的推荐方法的综合调查."推荐系统手册。由…编辑弗朗切斯科·里奇,利奥·罗卡赫和布拉查·沙皮拉。纽约:斯普林格,2015。

薛、桂荣和林、陈曦和杨、强和、和曾、华军和于、雍和陈、郑。"使用基于聚类平滑的可扩展协同过滤."第 28 届 ACM SIGIR 国际信息检索研究与发展年会会议录。巴西萨尔瓦多:计算机协会,2005 年。114–121.

*

十、计算机视觉

术语计算机视觉从根本上来说是指软件算法处理图像和视频等视觉信息的能力,类似于人类处理视觉信息的方式。在人工智能的总体领域下,计算机视觉领域是更复杂、更高级别的“智能”之一从 2012 年开始,计算机视觉深度学习方法的巨大成功复兴了神经网络、数据科学和人工智能。

在本节中,我们将讨论属于计算机视觉范畴的各种问题。我们先来看看涉及图像处理的各种问题,然后再来看看涉及视频处理的问题。然后,我们将简要地看一下一些公共数据集和竞赛,这些数据集和竞赛在过去的十年里将这个领域推向了聚光灯下。最后,我们将用一个简单的例子来总结如何使用数据科学方法来解决计算机视觉问题。

处理图像

作为人类,当我们视觉感知一个场景或图像时,我们会得出各种结论:

  • 我们对整个场景进行分类:我们觉得我们在看一个办公室,一个住宅,一个医院,或者一个风景优美的山谷。在这种情况下,我们正在对整个场景(图像)进行分类,而不是专注于单个方面(如人、房间、床、树等。)在场景内。这可以看作是图像分类,即从整体上给每个图像(场景)分配一个目标类。

  • 我们分离在一个场景中看到的多个物体。例如,在一个房间里,我们可能会看到多个人、多件家具等等。在自然环境中,我们可以看到山、树、鸟或动物,以及其他人。这被称为对象检测或对象识别。

当我们试图用软件自动化这些感知时,会出现以下几类问题。

图像分类/回归

将总体目标类别或数值分配给图像的能力有几个应用。例如:

  • 分类:从活检图像中检测癌症等级,从 CT 扫描中确定癌症的存在,自动注释图像,等等。

  • 回归:根据一个人的面部图像来确定其年龄。这是有用的,例如,防止孩子访问某些娱乐途径/网站,或者确定自动售货机的购买者是否未成年。

在本章的后面,我们将看一个从活检图像检测癌症等级的端到端例子。

目标检测

当我们观察任何一个场景时,我们不仅仅检测到诸如人、车辆等物体。还有它们的位置——在我们人类的感知中,我们通常会同时探测到物体的类型和它们的位置。

图 10-1 显示了在图像中检测诸如人和飞机的物体的例子。

img/504530_1_En_10_Fig1_HTML.jpg

图 10-1

物体检测示例 2

请注意,对象的位置可以用几种不同的方式表示:作为对象周围的边界框或多边形边界,或者作为整个对象的精确像素。不同的技术和框架在不同程度上支持这些机制。

自 2012 年以来,目标检测是研究最广泛、发展最快的领域之一。诸如 Mask-RCNN、YOLO 等各种框架在准确性和性能延迟之间提供了不同的折衷。

对象检测具有许多应用,例如,在入侵检测系统中定位意外对象(人)的存在,作为自动交通灯控制系统的一部分通过检测车辆及其类型来监控交通密度,在医学图像中检测肿瘤,等等。

数据集、竞争和架构

2012 年卷积神经网络(CNN)的成功应用赢得了一年一度的 ImageNet 大规模视觉识别挑战赛(ILSVRC),开启了人工智能的新时代,并彻底改变了深度学习的格局。

除了 ILSVRC 所基于的 ImageNet 数据集之外,Pascal VOC(视觉对象类)、MS COCO(上下文中的公共对象)和 Open Images 是在推进计算机视觉领域中至关重要的几个数据集。在对象检测中,各种挑战来自对象的位置、它们的方向、变化的大小等等。MS COCO 和 Open Images 在更真实的设置中包含更丰富的图像集,是评估图像分类和对象检测模型性能的最新标准。

深度学习方法, 3 尤其是基于 CNN 的方法,已经在基于这些数据集的竞争中脱颖而出,成为最成功的方法。我们将在第十六章中讲述神经网络;现在,提到神经网络被组织成多个层和层之间的连接就足够了。神经网络中层和层间连接的这种设计选择被称为其架构。流行的神经网络架构,尤其是那些在之前的数据集上表现最佳的架构,在几乎任何领域的各种计算机视觉问题中找到了广泛的用途。通常,当您着手解决涉及图像处理的计算机视觉问题时,您会首先查找最新的文献,以确定针对这些标准数据集报告的最先进的图像分类架构或对象检测框架。

在撰写本文时,EfficientNet 体系结构系列是性能较好的图像分类体系结构之一。YOLO 是流行的对象检测框架之一。

我们将在第十六章中探讨 CNN,它是所有这些现代图像处理技术的基础。

处理视频

作为人类,当我们随着时间的推移在视觉上感知一个场景时,或者当我们观看录制的视频时,我们会得出各种结论:

  • 我们对整体活动进行分类,例如,一个人是否在跳舞,或者一个视频片段是否是体育活动,等等。这被称为视频分类。

  • 我们随着时间的推移跟踪各种对象,例如,团队运动中的各种运动员,电影剪辑中的汽车追逐赛中的汽车,等等。这被称为目标跟踪。

我们将看看业内处理录制视频的一些常见应用程序,以获得这样的见解。

视频分类

这里的问题是对整个视频进行分类,例如,确定视频中发生的活动的种类或确定视频的类型。例如,这些可以用于

  • 娱乐或教育目的,因为用活动类型或流派自动标记视频可以更快、更准确地搜索和检索相关内容。

  • 例如,用于检测人群恐慌或类似异常情况的监视系统

这些都是具有挑战性的问题,技术是一个活跃的研究领域。

目标跟踪

这是视频分析中最常遇到的问题,在各种领域都有应用。例子包括

  • 跟踪行人、车辆、物体等的运动。在监视系统或人群/交通监控系统中。这可能是更大的智能城市生态系统的一部分,包括交通控制系统。

  • 跟踪车间设备,例如,作为装配线和车间的一部分。

这也是一个活跃的研究领域——虽然最初的采用是在监控系统和智能城市用例中,但我们预计很快也会在制造业的车间中增加采用。

计算机视觉的数据科学过程

在本节中,我们将介绍数据科学过程中的步骤,例如从活检图像中检测癌症等级。

世界和数据采集

这些数据由前列腺组织活检图像和专家确定的 ISUP 分级组成。为了理解专家是如何得出 ISUP 等级的,图 10-2 显示了一个样本图像和分级过程的图解。

img/504530_1_En_10_Fig2_HTML.jpg

图 10-2

ISUP 分级方法论 4

正如我们所见,根据良性腺体和各种癌细胞的外观,有某些局部模式表明癌症的存在。单个图像可能包含几个这样的癌症局部“标记”,它们需要在 ISUP 分级的最终评估中组合在一起。如果没有癌症,我们认为这种情况下为 ISUP 0 级。与我们在本节的报道相关的是,每张图片都被赋予一个 ISUP 等级,这个等级最终是基于特定的局部模式。更多详情可参见“进一步阅读”部分。

数据准备

我们从活检图像中看到的挑战之一是,有大量的背景空白,不包含任何有用的信息。此外,图像通常在一个方向比另一个方向更长——大多数图像分类技术最适用于正方形图像,并且可以容忍纵横比的一些变化,但可能不适用于我们图像中的各种变化。

因为在我们的情况下,我们更感兴趣的是指示癌细胞的局部图案,而不是整个图像中的图案,所以一种技术是将图像分割成更小的瓦片,并将瓦片重新组装成正方形图像。在这样做的时候,我们选择具有最少背景空白的图像块,也就是说,最多的组织,从而覆盖大部分的组织区域。通过采用这种方法,我们解决了这两个挑战。图 10-3 显示了一个这样的例子。 5

img/504530_1_En_10_Fig3_HTML.jpg

图 10-3

数据准备:平铺示例。" A "是原始图像。“B”表示创建的瓷砖。“C”是通过将来自“B”的 36 个瓦片重新组合成具有最大组织的正方形图像而形成的变换图像

但是如何将图像分割成图块,也就是图块的大小应该是多少?非常小的瓦片将确保几乎没有背景空白,并且大部分组织区域被保留。但是这可能导致将局部化的图案分解成多个小块,使得难以检测图案。另一方面,大的图块会保留大部分相关的模式,但是可能会导致合并大量的背景空白。这些变化最初是使用视觉分析目测的,如上图所示。

在某些情况下,图像可能包含其他标记,例如病理学家绘制的钢笔标记。最好去除图像 6 中的这种噪声——这也属于数据准备——并可视化(一些)清理后的图像以验证清理过程。

数据可视化

准备好数据后,您可能通常希望设计可视化效果,以获得更多信息,例如基于所选切片的大小和数量的组织覆盖变化等。但是为了简明起见,我们将直接跳到机器学习步骤。

机器学习

我们准备的数据现在具有带有最大组织区域和 ISUP 等级的变换的正方形图像。我们将使用这些准备好的数据训练一个神经网络,直接从一个转换的正方形图像预测 ISUP 品位。 7 从文献中,我们看到,谭和乐(2019)描述的 EfficientNet 系列模型显然是最先进的。EfficientNet 系列模型具有称为 B0、B1 …直到的架构。EfficientNet-B0 是复杂性最低的最简单架构,通常用于创建第一个基线模型。因此,让我们使用一个高效的 Net-B0 模型来解决我们的问题。我们将在第十六章中更详细地了解 CNN,它是 EfficientNet 的基础。

如果模型表现不佳,我们可能需要重新改进数据准备方法,例如,使用具有不同分块大小的分块方法来确定哪种数据准备会产生最佳模型。但是如何确定一个模型是否表现良好呢?换句话说,在这种情况下,我们如何评估模型的性能?

模型性能评估

在许多情况下,例如第四章中的示例,模型在预测类别时的性能取决于模型正确分类的观察值数量——换句话说,预测被视为正确或错误;两者之间没有灰色地带。

在像癌症等级检测这样的问题的情况下,如果癌症等级 4 的图像被预测为 5,这是不正确的,但是仍然比 1 或 2 的预测更接近事实。在这种情况下,等级并不是真正不同的类别,而是根据癌症的严重程度排序的。因此,我们感兴趣的是模型的预测与事实有多接近,而不仅仅是对错。在这种情况下,更合适的指标是类似于加权 kappa 的指标——我们将在第十六章中更详细地了解模型性能评估。与此同时,这份简短的说明旨在强调,当我们使用“模型性能”这样的术语时,它不一定简单地暗示预测是对还是错——度量标准的精确选择取决于手头的问题。

虽然一开始就选择了合适的指标,但该指标通常也是在数据科学流程的多次迭代中精心制作或提炼的。

一旦我们有了一个表现相当好的模型,我们就可以用它来预测活检图像的 ISUP 分级。

ADVANCED NOTE: ENSEMBLES

在多次迭代和实验中,我们可能有几个已经训练好的模型。在实践中,与其使用这些模型中最好的,不如使用模型的集合

一个集合模型基本上从它的所有组成基础模型中提取预测,并将它们聚合起来以给出最终结果。作为一个粗略的例子,集合可能简单地返回多数结果,例如,如果大多数模型预测 ISUP 等级为 3,则最终结果为 3。

聚合多个模型的结果有多种方法,从简单的多数投票到高级的 ML 聚合技术。细节不在我们的讨论范围之内——关键的一点是,多次实验和迭代在计算机视觉问题中特别有用,在实践中,集成已经显示出很高的预测能力和推广能力。

推理

在推断过程中,我们将需要运行我们在训练中使用的精确的数据准备步骤。例如,在机器学习步骤中创建我们的最终模型之前,我们将使用所选瓷砖的大小和数量的特定值,并将图像转换为方形图像,如数据准备部分所述。在推断过程中,对于所选图块的大小和数量具有相同值的那些精确变换也应该应用于新图像。

ADVANCED NOTE: TEST-TIME AUGMENTATION

在计算机视觉问题的推理过程中,一种常用的技术是测试时间增加(TTA)。TTA 旨在增强对图像方向或位置变化的鲁棒性。

要理解 TTA,有必要了解模型推理如何工作的细节。当我们使用准备好的数据(转换后的正方形图像)和作为 ISUP 等级的目标特征来训练 EfficientNet-B0 模型时,该模型实际上学习预测,给定一个新图像,属于每个 ISUP 等级的图像的概率。然后,我们推断概率最高的 ISUP 等级是预测等级。

现在,对于 TTA,我们可以创建一个增强图像,例如,将原始图像稍微向右移动。然后,该模型用于从原始图像和增强图像推断 ISUP 等级的概率。通过平均原始图像和增强图像中每个 ISUP 等级的概率,我们获得了 ISUP 等级的最终概率。然后,我们预测概率最高的 ISUP 等级作为我们的最终结果。

数据工程

在我们的数据集中,每个单独的图像可能非常大,整个数据集的大小可能在数百千兆字节的数量级。通常,如果您有一个数据科学家团队在大型数据集上协同工作,共享文件系统将会非常有用。这样,当数据科学家执行我们前面看到的各种数据准备步骤时,整个团队也可以访问修改后的图像。

此外,对于训练模型,如基于 CNN 的模型,您需要使用强大的 GPU,因为计算相当密集和复杂。虽然有可能建立这种内部基础设施,但使用 AWS 10 等云服务进行这种深度学习实验越来越常见,也越来越划算。例如,AWS 弹性文件系统(EFS)可以用作共享文件系统,不同大小的 GPU 机器可以用于训练模型。

结论

在这一章中,我们讨论了属于计算机视觉范畴的各种问题的子类。我们还查看了从活检图像检测前列腺癌等级的端到端示例。

进一步阅读

参考刘、欧阳和王(2020)对基于深度学习的对象检测技术的综述。

Chollet (2018)有一章非常精彩,介绍了用于计算机视觉的深度学习的技术细节。

陆等(2019)涵盖了医学影像领域的广泛课题。

有关前列腺癌分级过程的更多详细信息,请参考前列腺癌分级评估(PANDA)挑战。

参考

弗朗索瓦·乔莱。用 Python 进行深度学习。美国纽约:曼宁,2018。

刘,刘,欧阳伟,王。"用于一般对象检测的深度学习:综述."国际计算机视觉杂志 128(2020):261–318。

陆,乐,等用于医学影像和临床信息学的深度学习和卷积神经网络。瑞士查姆:施普林格,2019。

前列腺癌分级评估(Pandas)挑战。 www.kaggle.com/c/prostate-cancer-grade-assessment/overview/additional-resources 。未注明出版日期(nodate)

谭、闵行、郭诉乐。"效率网:重新思考卷积神经网络的模型缩放."第 36 届机器学习国际会议论文集。2019 年,加利福尼亚州长滩。

十一、顺序决策

“智慧”的一个更高级的表现是自愿做出决定的能力,这些决定有意接受短期损失,以期在长期获得预期结果。“预期结果”可以有多种形式——利润/回报最大化(例如,在投资策略中),实现目标的机会最大化(例如,在国际象棋比赛中获胜),或者拯救危及生命的疾病患者。

它们的共同点是能够做出一系列的决定——买/卖,或采取行动,或推荐测试/治疗。这些决策是在环境中动态做出的,而环境本身也在不断变化,并受决策的影响。

强化学习(RL)是 ML 的一个分支,处理自动化连续决策的这一方面,以最大化长期回报,通常以短期损失的看似的代价。虽然顺序决策是一类问题,但 RL 目前是事实上的框架,在这个框架内,这些类型的问题被公式化和解决。在本章的剩余部分,我们将会讨论强化学习。

RL 背后的直觉非常类似于儿童如何根据他们从父母那里获得的奖励或惩罚来学习良好行为——父母的赞赏加强了对良好行为的坚持,而父母的惩罚加强了对不良行为的避免。

RL 最近通过在国际象棋和围棋等游戏中创建最强的人工智能引擎,扩展了人工智能的视野 1 。让我们考虑一下国际象棋的例子:早在 2017 年基于 RL 的 AlphaZero 国际象棋引擎出现之前,我们在 2000 年代就拥有强大的国际象棋引擎,这些引擎已经被认为比最优秀的人类国际象棋选手更强。这些象棋引擎通常能够牺牲棋子,如果它导致快速胜利,例如,通过快速攻击对手的国王;在象棋术语中,就像在现实生活中一样,这些被称为“战术”决定或牺牲。因此,国际象棋引擎被广泛认为是战术怪物,尽管如此,它们仍然很难找到或欣赏人类大师为了长期收益而做出的某些“战略”牺牲——直到 2017 年底,AlphaZero 出现。AlphaZero 似乎不仅欣赏并认可了人类大师会做出的许多战略牺牲,还通过做出让许多人类大师也感到惊讶的更加微妙和大胆的战略牺牲,扩大了创造性的视野。

然而,在体育/游戏竞赛之外的现实生活中,例如在投资或医疗保健领域,这种连续决策本质上是高风险的活动;我们仍然宁愿相信投资银行家或医生的资质,而不是复杂的算法来为我们做决定。因此,RL 是一个活跃的研究领域,特别是关注降低风险的机制。在这一点上,我们认为 RL 远不能取代公司的决策者,因此,在本书中,我们将只提供 RL 基本概念的简要介绍,足以让您确定是否有 RL 可能非常适合的用例。关于 RL 更详细的内容,我们将参考“进一步阅读”一节中的参考资料。

RL 设置

作为本章的一个说明性例子,让我们考虑一位诊断专家 House 博士,他的唯一目标是通过在病人屈服于疾病之前及时诊断和治疗病人的神秘疾病来挽救病人的生命。不幸的是,这种一边倒的专注导致他在必要时违反法律、伦理或职业规则和惯例,如果这能让他提高挽救病人生命的机会的话。这通常会导致激烈的措施,如让患者暂时承受极度的疼痛和痛苦,或违反医院政策/法律术语,如果它比没有足够时间的传统测试更快地诊断患者的可能性略有提高。

豪斯处理的每一个病例都是从一个表现出有趣症状的病人开始的。在 House 作出几个连续决定之后,每个决定都建议进行进一步的测试以获得新的观察结果,当患者症状的根本原因被及时确定或当患者死亡时,病例就结束了。豪斯是专家,后一种结果很少见。

让我们看看一个人工智能引擎,内斯特博士, 2 如何被训练成像豪斯一样进行诊断。虽然我们希望内斯特学习豪斯的诊断技能,但我们也希望用一些对非法行为的厌恶来缓和它。在研究如何训练内斯特来实现这一点的过程中,我们将涵盖 RL 的基本变化和一些挑战。

基本知识和规则

首先,内斯特被告知所有基本的医学知识,如已知的疾病、症状和可以采取的行动,如推荐药物和测试。然后,我们准备训练代理在使用这些知识的环境中做出适当的决策。

训练内斯特

根据数据和域的种类,可以用几种不同的方式训练代理。在我们当前的例子中,我们将把培训分成多个阶段。请注意,根据所解决问题的具体情况,所使用的相位种类可能有很多变化——我们所涉及的相位都是针对 Nestor 的示例。

在这一节中,我们将首先理解 Nestor 在试图解决一个案件时是如何与其环境相互作用的;这种与环境的互动在接下来的所有训练阶段都很常见。

插曲

我们根据图 11-1 提供了一个什么是一集的直观概念,图中显示了每一集中发生的事情——这形成了 RL 的基本框架。

img/504530_1_En_11_Fig1_HTML.jpg

图 11-1

RL 中的一集

在我们的示例中,每一集对应于一个患者的病例:

  • 代理(Nestor)从其环境状态 S 0 接收到一个初始观察值 O 0 。观察可以是一组症状、病史等。病人的。

  • 在获得观察结果 O t 后,代理人(内斯特)采取行动At——这可能是推荐将获得进一步信息的测试或药物。

  • 基于所采取的行动,环境(患者的状态)发生变化;新的症状被发现导致下一次观察 O t+1 。并给予代理人(Nestor)奖励 R t+1 。我们稍后会看到奖励的例子。

如你所见,一集由一系列组成。一个序列构成一个“情节”有多长取决于正在解决的问题,因为的序列会持续到环境达到最终状态。在我们的例子中,当患者被诊断/治愈或者患者死亡时,达到最终状态。至此,内斯特获得最后一次观察 3 并获得奖励,本集结束。

一集如何展开,有几个要点需要注意。首先,每个事件(处理单个患者病例)独立于前一个事件。

其次,奖励对于内斯特如何“学习”什么是好的决定/行动至关重要。假设我们指定了一个奖励函数,它分配奖励

  • -任何非法临时行动为 0.2,即此类行动受到轻微处罚。

  • 0 表示所有其他临时措施,也就是说,由于某项措施导致的环境立即变化(例如,发现的新症状或患者病情的任何变化)被视为无关紧要。

  • 如果患者得到诊断/治愈,则+1;如果患者死亡,则-1,即事件的最终结果是最重要的因素。

在每一集的结尾,内斯特根据它为所有行为获得的总奖励来“学习”。例如,它知道导致总回报为 1 的决策序列优于导致总回报为 0.6 的决策序列,等等。

**了解了内斯特如何与环境互动,现在让我们看看训练的阶段。

培训阶段

在这一节中,我们将看看训练内斯特的一种可能方式的各个阶段。

过去的案例

在我们当前的例子中,我们将首先使用 House 在发作期间的过去病例文件,因为我们希望 Nestor 像 House 一样进行诊断。

为了对豪斯的过去的案例文件执行先前的框架,设置可以是代理模仿专家(豪斯)的动作,并且环境/观察被更新以反映作为动作的结果在案例中实际发生了什么。给每个动作分配奖励的机制,以及在一集结束时基于总奖励的学习,都和上一节提到的一样。这样,前面解释的基本框架展开了,代理从过去的案例文件和专家对它们的处理中学习。

不断有新病例出现,有模仿的

在根据过去的案例文件进行培训的初始阶段之后,我们可以允许代理也使用正在进行的案例进行培训。在这里,代理可以模仿专家 House 的动作,并得到结果状态/观察和奖励。基于情节的结果和累积的总奖励,代理学习模仿专家。

监督勘探

现在,我们允许代理独立做出决定,而不是模仿专家。在这种情况下,我们将继续监督代理人,也就是说,代理人建议的行动不会在现实世界中执行,除非得到监督诊断专家的批准。可以稍微修改该框架,使得如果建议了完全无意义的 4 动作,代理立即得到严厉的斥责(例如,奖励-1)并且该情节(对于代理)被终止。此外,如果对于某个特定的情节,代理推荐的行为完全没有意义,我们可以让代理模仿该情节的专家(如前一节所述)。除了这些小的修改,框架的其余部分以同样的方式继续,即奖励分配相似,代理在每集结束时学习相似。

一旦内斯特经过训练,并被发现做出合理的决定,它就可以利用对新案件做出决定。(我们的 kid AI engine 现在是少年了。)

监督开采

当被利用时,图 11-1 所示的环境-代理交互和上一节中的管理设置仍然适用,但有一个重要的区别。在早期的监督探索阶段,内斯特试图尽可能多地了解哪些决策更好——因此它经常可以做出新的随机决策,看看它得到了什么回报。在开发阶段,内斯特只会做出它认为会给整集带来最大回报的决定。代理现在可以被认为是通过建议专家仔细评估的新方法来帮助专家——内斯特现在实际上是专家医生“团队”的一部分。

已经看到了训练和使用代理的例子,现在让我们看一些变化,特别是关于用于训练的数据。

RL 设置中的数据

我们将讨论一些变化,特别是关于如何获得数据以及相应地如何训练一个代理。还有几个与如何指定奖励、采取行动或如何模拟环境相关的变化,这些可以在参考资料中找到。

正如我们一再看到的,数据科学始于数据。在前面的例子中,我们需要关于真实病例、诊断过程中采取的措施以及结果的数据。我们从过去的案件档案和正在进行的案件中获得。

根据具体的用例/领域,您可能需要由人类活动生成的真实数据,或者模拟数据可能是合适的。在某些情况下,我们也可以将这两种方法结合起来。我们将简要地看一下这些变化。

专家决策数据

在许多情况下,会使用包括专家决策在内的现有数据。在前一节训练内斯特的前两个阶段,我们使用了豪斯过去和现在的案例文件。这是一个使用专家决策数据训练 RL 代理的例子。

以类似的方式,AlphaGo 的初始版本是在过去由专家进行的围棋比赛中训练的。如果我们有过去的数据,不使用它的唯一原因是我们希望代理完全不受任何人为偏见/限制的影响。

模拟数据

除了从人类的游戏中学习,AlphaGo 的初始版本还从自对弈模拟的数据中学习,即与自己对弈。这个版本的 AlphaGo 强大到足以击败围棋世界冠军李·塞多尔(Lee Sedol)。

AlphaGo 的下一个版本——名为 alpha go Zero——完全由自玩训练,即引擎在不使用任何人类数据的情况下,从随机玩法开始与自己对弈。这样,引擎就不会被人类对游戏的理解所限制。AlphaGo Zero 以 100 局比 0 战胜 AlphaGo。

在这些成功的激励下,最新的 AlphaZero 系统被创建,该系统将 AlphaGo Zero 方法归纳为一个学习国际象棋、围棋和日本象棋等游戏的单一算法。详见 Silver 等人(2018 年)。我们在本章开始时提到的就是这个版本。

同样,在自动驾驶汽车等领域的模拟中, 6 智能体可以尝试汽车的任意随机轨迹,这些轨迹可能会导致撞车,直到它学会正确驾驶。这是开发人员学习 RL 最受欢迎的环境之一。

RL 面临的挑战

在介绍了 RL 的一些基本概念之后,在本节中,我们来看看 RL 中一些常见的实际挑战。

数据的可用性

强化学习需要一批的数据。对于像国际象棋和围棋这样的游戏,除了特级大师游戏的历史档案之外,模拟还可以用来生成任意数量的数据,这也是这些游戏成为第一批“解决”领域的原因之一。对于使用模拟的风险非常高并且因此依赖于专家模仿和/或监督的实际应用,足够数据的可用性是主要挑战。

**### 观察中的信息

即使我们设法获得大量数据,现实情况中的另一个挑战是确保每个观察都有足够的信息。如图 11-1 所示,一个观测只是环境的整体状态的一个子集。换句话说,观察可能无法从环境中获取足够的信息。通常,人类“观察”的数据不能以自动方式获得,例如,对于自动诊断/治疗,专家医生在评估患者时看到的许多方面可能不能作为患者记录中的“读数”被捕获。在某些情况下,人类也往往有一种直觉,引导他们收集更多的信息(即扩大观察的范围)。例如,众所周知,豪斯会闯入病人家中获取更多信息,或将勇敢或利他主义等明显的人格特征视为症状。何时扩大所需观察范围的概念是决策的关键之一,也是自动化的一个挑战。

探索与开发

最后,最基本的挑战之一是勘探与开发的权衡。对于一个继续“学习”的人工智能引擎来说,它需要偶尔做出稍微随机的决定来看看会发生什么——也许一个新的随机决定可能比它之前的“学习”更好我们把代理人学习的这些尝试称为探索;另一方面,当一个代理人做出旨在实现最优结果的决策时,我们称之为剥削。

在我们的示例中,我们已经查看了监督的勘探和开采——一般来说,勘探和开采都可以是监督的或无监督的。终极愿景是一个无监督的代理,它可以自行决定何时可以进行勘探,何时可以继续开发。

越来越多的人开始研究探索与开发之间的权衡——一种常见的直观方法是指数级增加开发的频率(并降低探索的频率)。像这样的机制,加上适当调整的指数衰减,很可能在不久的将来成为 RL 在实际用例中采用的方式。

RL 的数据科学流程

如前所述,根据问题的具体情况,培训 RL 代理的阶段可以有很大的不同;然而,我们通常可以尝试将 RL 代理生命周期中的各个步骤映射到我们的数据科学过程的各个步骤。

在“RL 设置”一节介绍的示例中

  • 收集 House 过去的案例文件的数据并将其提供给代理可以被视为数据捕获。同样,当正在进行的案例和专家的行动被用于训练代理时,收集这些数据也可以被视为数据捕获。

  • 将数据从医疗记录和设备读数格式转换为代理可以理解的状态/观察格式可能需要的各种转换,这可以被视为数据准备。

  • 在训练(探索)期间监视代理如何进展可以被视为数据可视化迭代。

  • 基于过去或正在进行的案例的训练阶段可以被视为机器学习迭代。

  • (监督的)开发阶段可以被视为推理。

在完全无监督的智能体的极端愿景中,环境-智能体交互的所有方面,以及智能体如何从奖励中学习的细节,都是作为端到端自动化软件系统的一部分来实现的,也就是说,我们可以认为数据科学过程的所有步骤都是完全自动化的。这在很大程度上已经在国际象棋和围棋等游戏中实现,但在其他现实世界领域,这是最复杂、最具挑战性和最雄心勃勃的愿景之一——不仅是数据科学,也是一般的人工智能。

结论

在这一章中,我们只涉及了现代深度强化学习的一些基础知识,并涵盖了强化学习的基本设置。关于确定奖励的方式,如何根据观察结果采取行动等等,有许多不同的说法。我们将在下一节指出一些相关的文献。

读者可能已经意识到,我们示例中的豪斯医生是根据同名电视连续剧改编的。这一章中半虚构的叙述表明了一个概念,即经典科幻小说(有点让人想起阿西莫夫的几部作品)正日益成为现实,特别是当机器可以像人类一样做出看似“直觉”的决定时。

我们的观点是,除了游戏系统之外,我们还远远没有让人工智能代理人在这个领域里为最大化整体回报而做出连续的决策。最初的采用可能会沿着增加人类专家的路线,以改进基于代理建议的新的、替代的决策路径的决策。这方面的研究越来越多,甚至在医疗保健等领域。

进一步阅读

关于 RL 的详细介绍,包括直观和一些数学细节,请参考萨顿和巴尔托(2018)。

有关 AlphaZero 的里程碑式出版物,请参考 Silver 等人(2018 年)及其补充材料。

Amazon DeepRacer 是最受欢迎的网络服务之一,它开始以动手的方式学习 RL 原则。

对于医疗保健中强化学习的一般调查,没有比医疗保健更真实的了!——参考于、刘、内马蒂(2020)。它对 RL 领域的现有术语和变体提供了一个很好的总体概述,随后是医疗保健中的应用,包括诊断和动态治疗方案,以及重大挑战。在动态治疗推荐领域的真实世界应用的例子是王等人(2018)。

参考

一种通用的强化学习算法,精通国际象棋、日本象棋和自我游戏。科学 3622018 年 12 月 7 日:1140–1144。

理查德·萨顿和安德鲁·巴尔托。强化学习-导论,第二版。马萨诸塞州剑桥:麻省理工学院出版社,2018 年。

王,陆,等,“基于递归神经网络的监督强化学习在动态治疗方案推荐中的应用”美国计算机学会会议记录(17 年会议)。美国纽约州纽约市:ACM,2018 年。

余、晁、和沙米姆·内玛蒂。医疗保健中的强化学习:一项调查。 https://arxiv.org/abs/1908.08796 。2020.

****

十二、技巧和技术:概述

在这一章中,我们提供了用于数据科学的各种技巧和技术的高度概述。该简要概述旨在为第 13–19 章中涉及的细节建立框架。

图 12-1 和图 12-2 分别展示了在数据科学过程的每个步骤中使用的一些技巧和技术。

img/504530_1_En_12_Fig2_HTML.png

图 12-2

数据科学过程中每一步用到的一些技术 1

img/504530_1_En_12_Fig1_HTML.png

图 12-1

数据科学过程的每个步骤中使用的一些技术

我们将从第十三章到第十七章更详细地介绍其中的一些技巧和技术,数据科学过程的每一步都有一章。在这样做的同时,我们还将在相应的章节中介绍每个步骤的数据工程方面。

有几种工具和服务跨越了数据科学过程的多个步骤。其中一些如图 12-3 所示,在第十八章中有更详细的介绍。

img/504530_1_En_12_Fig3_HTML.png

图 12-3

一些跨越数据科学流程多个步骤的工具和服务

因此,在第十八章结束时,我们将已经涵盖了用于数据科学的各种技术。然后在第十九章中,我们将了解这些技术如何在参考架构中融合在一起,以支持数据科学团队的运营。

请注意,本章中的三幅图旨在捕捉撰写本文时数据科学领域中一些关键的代表性术语和概念。我们发现它们作为对整个领域进行分类的框架也是有用的,也就是说,每当遇到新的技术或工艺时,我们发现将它们放在这些图之一的适当类别中是有用的。这有助于获取技术/工艺的主要能力,并使与其他团队成员和利益相关者的交流成为可能。将一项技术或工艺归入适当的类别也有助于确定、比较和评估备选方案。

十三、数据捕捉

在本章中,我们将介绍数据科学过程的数据采集步骤中使用的典型技巧和技术。

对于数据捕获,第一个活动是识别哪些数据是相关的,哪些是相关数据的来源。一旦确定了这些,数据采集步骤中的进一步活动以及相关组件如图 13-1 所示。

img/504530_1_En_13_Fig1_HTML.png

图 13-1

数据捕获中的活动和组件

如图所示,我们将数据捕获中涉及的组件大致分为三组:数据源、摄取、数据存储。需要注意的是,您要解决的特定数据科学问题可能只需要一个数据源,而相关数据可能已经存在,比如说,CSV、excel 文件或数据库。 1 在这种情况下,数据科学家可以直接使用这些数据。但更常见的是,在一个成熟的组织中,会有多个与您计划解决的数据科学问题相关的数据源,前面的图表描述了这个更广泛的场景。

在本章的前几节中,我们将涵盖图 13-1 ,从底部开始,按照方框/箭头中指示的数字顺序向上移动。在这样做的同时,我们将讨论每个领域中涉及的技巧和技术。然后,我们将讨论在选择开源和付费数据捕获工具时需要考虑的几个因素。最后,我们将提到数据捕获中涉及的数据工程方面。

数据来源(1)

在一个组织中,数据通常分布在多个来源中。如果您的组织有多个生成数据的应用程序或工具,那么这些内部系统通常会将数据存储到数据库中。如果您的组织从设备收集数据,例如从物联网系统收集数据,这些也是数据的来源。这些通常是数据科学的主要数据源,并且是您的企业所独有的。

在某些情况下,您可以从外部 API获取数据。外部 API 的例子有

  • 公开 API 的社交媒体网站,如 Twitter。

  • Web 服务提供一些关于常见环境因素的信息,如天气、地理位置等。

  • 您部署的公开 API 的第三方工具,例如,如果您在自己的场所安装了本地气象站,它可以公开用于查询数据的 API。

在极少数情况下,您可能希望直接从网站中提取一些信息。这被称为网页抓取,需要对源网页的布局有所了解。这不是一个推荐的方法,因为每当网站的结构改变时,你就需要修改你提取信息的方式——因此,维护和可靠性往往是这种方法的一个问题。但是这种方法在极少数情况下会被采用——例如,如果您正在基于来自多个网站的公开信息构建一个信息系统,而这些网站没有公开 API。

理论上,数据科学家可以查询这些不同的来源,以获得他们分析所需的数据。但更有效的方法是将这些数据整理到一个单一的集中式沙盒中,即数据存储,数据科学团队可以从中执行分析。这需要从这些多个数据源获取数据,我们接下来将会看到这一点。

摄入(2)

各种 ETL 2 和工作流库/工具可用于将来自多个数据源的数据合并、转换和摄取到中央数据存储中——我们将此统称为摄取。火花、气流和卡夫卡是常用的工具,通常一起使用,代表三种常见的工具类别:

  • ETL 脚本:Spark 是合并多个数据源、清理和转换数据所需的大数据 ETL 脚本和批处理作业的代表。

  • 工作流编排:Airflow 是编排跨多个脚本/作业的复杂工作流的工具代表。

  • 事件流处理:Kafka 是事件流处理的代表。当实时数据从数据源到达 Kafka 时,监听器被触发,进而触发 ETL 脚本或工作流。

如果您的公司有传统的企业数据集成工具,如 Informatica,它们也可以适当地用于这些目的。

摄取的目标是在集中式数据存储中以合理组织的形式提供数据。

数据存储

数据存储包含所有获取的数据,供数据科学团队的其他成员用于数据科学流程中的其他步骤,从数据准备开始。

数据存储可以由以下一个或多个组成:数据湖(3)、数据仓库(4)和共享文件系统(5)。我们将在接下来的小节中逐一介绍。

数据湖(3)

数据湖通常是收集所有数据资产的地方。除了从数据源获取的数据之外,数据还经常从数据湖移动到其他形式的存储,下面的小节将介绍这些数据。

低存储成本是数据湖的主要特征之一。在过去几年中,亚马逊 S3(或其在 Azure 和其他云提供商上的同类产品)一直是数据湖的首选技术。 3

数据湖可用于存储图像、视频、音频等数据。它还可以用来存储 CSV、JSON、Parquet 或 ORC 等格式的表格数据。

对于表格数据,数据湖传统上有一些限制:

  1. 数据湖不支持单个记录的有效更新。这经常导致数据处理流水线中的问题 4

  2. SQL 是查询复杂分析的表格数据和更新记录的常用机制。但是数据湖本身并不支持 SQL。

Delta Lake 等最新技术支持数据湖之上的 SQL 层,这也允许高效地更新记录。这大大简化了数据处理流水线。

因为 Delta Lake 是建立在数据湖技术之上的,所以我们也将其归类为数据湖。

数据仓库(4)

数据仓库的主要目的是使用 SQL 快速执行复杂的分析查询。这使得数据科学家和数据分析师能够使用可视化工具/库或 SQL 来执行快速的探索性数据分析。虽然数据仓库自 20 世纪 80 年代就已经出现,但过去十年中最重要的发展是存储半结构化和非结构化数据的能力,如 JSON,以及传统的表格形式。

通常,在开始一系列新的实验时,数据科学家/工程师会将相关数据从数据湖加载到数据仓库中进行分析。

高级 BI 工具通常用于数据可视化步骤(参见第十五章)。这些 BI 工具通常需要一个数据仓库来同时高效地执行多个 SQL 查询。

现代云数据仓库还支持使用 SQL 查询存储在数据湖中的表格数据。例如,如果您在亚马逊 S3 有以 Parquet 格式存储的表格数据,可以从亚马逊红移中查询。 5

数据仓库还支持使用 SQL 高效更新单个记录。与存储在数据湖中的表格数据相比,这是数据仓库的额外好处之一。

雪花、亚马逊红移和 Azure Synapse 都是现代数据仓库的例子。

ADVANCED NOTE: DECOUPLED COMPUTE AND STORAGE

大约在 2015 年,云数据仓库开始被设计为提供分离的存储和计算,以根据数据科学团队的需求实现扩展。例如,数据科学家或数据工程师可以快速启动适当规模的计算集群来执行分析,并在不需要时将其关闭。另一方面,在传统数据仓库的情况下,由于存储和计算在同一个集群上,您通常必须始终保持集群运行。

我们提到的所有三个数据仓库示例都支持解耦存储和计算扩展。

TERMINOLOGY CHAOS: LAKEHOUSE

最近备受关注的一个术语是 lakehouse 。lakehouse 的愿景是将数据湖(低成本)和数据仓库(高性能 SQL,具有更新记录的能力)这两个世界的精华与解耦的存储和计算结合起来。

我们认为“lakehouse”这个术语有助于描述愿景,而不是对工具进行分类。例如,我们归类为数据湖的三角洲湖也可以被描述为湖屋。我们引用的现代云数据仓库都具有使它们也能够被描述为湖边小屋的功能。

在任何情况下,我们都建议您为您的团队和组织选择正确的技术,即数据湖和/或数据仓库——,而不要被湖屋的概念分散注意力。

共享文件系统(5)

如果您的团队正在处理图像、视频、音频等。,以及需要 GPU 的深度学习框架,那么可以考虑使用共享文件系统,如亚马逊 EFS,以便从多台机器或集群中高效访问机器学习的数据。

由于数据准备步骤中会发生各种转换,因此数据准备的输出——如转换后的图像等。–也可以写回 EFS。这使得您团队中的数据科学家和数据工程师能够无缝协作,例如,如果一名数据科学家开发了一种新的数据准备机制,则转换后的数据可以存储在 EFS,其他团队成员可以立即使用这些数据进行进一步分析。

读取数据(6)

数据存储中的数据由数据科学团队访问,以进行数据科学流程的后续步骤,从数据准备等开始。在这一节中,我们将介绍数据通常是如何被访问的。

如果您只使用数据仓库,那么您的团队将使用 SQL 来读取数据进行分析。

如果您使用数据湖,那么存储的数据通常由数据科学团队使用编程 API 或 SQL 读取。在本节的剩余部分,我们将讨论从数据湖中读取数据的这两种变化。

程序化访问

以 CSV、JSON 或 Parquet 等格式存储在数据湖中的表格数据可以使用 Python、R、Scala 等语言中的编程 API 来读取。例子包括

  • Python 库Pandas

  • Scala 中的 Spark 库或 Python 中的 PySpark

除了表格数据,其他类型的数据,如图像等。可以使用数据湖提供的编程 API 来访问。例如,AWS 提供 Python 等编程语言的库来访问存储在 S3 的数据。

SQL 查询引擎

说到大数据,组织在没有数据仓库的情况下将表格数据存储在数据湖(例如,在 AWS S3)中是很常见的。为了支持使用 SQL 查询数据湖中的表格数据,一种常见的方法是使用 SQL 查询引擎。

Presto、Spark SQL 和 AWS Athena 都是 SQL 查询引擎的例子。这些通常用于分析师、数据工程师或数据科学家的即席查询。

开源与付费

对于摄取,我们提到的库和框架都是开源的。有一些付费服务使管理和扩展基础设施变得更容易,例如,AWS 为 Spark、Airflow 和 Kafka 提供托管服务。 6

对于数据湖和数据仓库,云上的付费工具和服务目前通常是首选,因为它们提供了灵活的定价模型和弹性伸缩。 7 它们通常比部署一个开源仓库(比如 PostgreSQL)并在自己的基础设施中进行管理更具成本效益。

数据工程

在数据捕获步骤中,领域专家或首席数据科学家通常会决定要捕获哪些数据以及合适的数据源。

本章中提到的进一步活动——将数据接收到数据存储中并实现对数据的有效访问——主要属于数据工程的范畴。本章提到的各种工具通常也是数据工程所拥有的。

结论

在本章中,我们介绍了数据科学流程的数据捕获步骤中涉及的各种组件和活动,包括使用的一些技术。我们还谈到了选择开源还是付费工具的一些方面。

十四、数据准备

本章专门介绍数据科学流程的数据准备步骤。为了更好地理解捕获的数据,通常会对其进行研究。这些数据在用于建立模型之前必须经过大量的准备工作。在其他一些情况下,数据似乎可以直接提供给 ML 算法,但是以各种方式准备数据可能会产生更有效的模型。我们在第一章讨论的一个例子中看到了这样的情况,其中捕获的数据包含商店收银台交易的时间戳和销售额。在这种情况下,我们认为销售额可能会根据星期几、月份等有一些趋势。因此,我们转换了数据,使其包含小时、日、月等。,以及相应的总销售额,希望这将使 ML 算法能够找到这样的趋势。因此,以这种方式准备数据可能会产生更好的模型。

在这一章中,我们将重温一些我们在第二部分与问题类别相关的章节中执行的数据准备任务。在那些章节中,我们使用了一些技术来完成这些任务;现在,我们将讨论一些可用于这些任务的其他技术。这种想法是要理解每项数据准备任务都有许多可用的技术,对这些技术的良好理解可以帮助您决定哪种技术最适合您的问题。

处理缺失值

我们在前面章节中讨论过的一项任务,也是您很可能在数据准备步骤中完成的任务,就是处理数据中的缺失值。有几种方法可以做到这一点,比如简单地删除有任何缺失值的观测值,或者以智能方式填充缺失值。假设您的数据有每日销售额,但是有些天的销售额是未知的,因此数据中缺少。如果您选择简单地用 0 来填充这些缺失的金额,将会导致 ML 算法错误地认为这些天没有销售,从而可能扰乱数据中出现的任何销售趋势。例如,如果周日数据中的销售额总是很高,用 0 填充特定周日的缺失销售额将扰乱周日的高销售额趋势。因此,您可以用所有其他周日的平均销售额来填充这个周日缺少的销售额,因为您认为这个周日的销售额可能与其他周日的销售额相似。这样做将用一个高值(其他星期日的平均值)来填充这个星期日缺少的销售额,从而使销售趋势保持不变。你甚至可以建立机器学习模型来预测丢失的值。

特征缩放

我们之前讨论过的另一项任务,也是您可能会在数据准备步骤中执行的任务,是转换您的要素,使其具有相同的比例。 2 为此,您可以执行最小-最大缩放,转换特征值,使其范围从 0 到 1——最小的特征值转换为 0,最大的特征值转换为 1。实现这一点的另一种常见方法是一种叫做标准化的技术。这种方法通过减去平均值并将差值除以标准偏差来转换每个特征值。您可以看到,这种方法没有将转换后的值限制在特定的范围内。

文本预处理

让我们回顾一下第六章中 NLP 问题的文本预处理任务,其目标是建立一个模型,可以根据电子邮件中的文本推断/预测电子邮件的类别。为了实现这一目标,个人助理从数据中的每个电子邮件正文中剥离问候语和结束语,并通过删除标点符号、将其转换为小写、提取单个单词以及删除它认为对推断电子邮件的类别无用的停用词来预处理剩余的电子邮件正文。下一步,该助手对所有电子邮件中的单词使用了一种称为词汇化的技术,将单词的屈折形式转换为其基本形式,因为它认为屈折形式可能不会提供关于电子邮件类别的任何额外线索。词汇化也减少了助手必须处理的词汇。然后,助手使用单词袋技术从所有电子邮件的基本单词列表中提取特征。

在本节中,我们将讨论另一种技术,您可以使用它将单词简化为它们的基本形式,这就是所谓的词干。我们还将看到一种称为 TF-IDF 的不同技术,它可以用于从基本单词列表中提取特征。

堵塞物

词汇化对每个单词进行复杂的分析,考虑其词性,并相应地将单词映射到其正确的基本形式。另一方面,词干处理采用了一种更为粗糙的方法,即应用简单地切掉部分单词以获得其基本形式的规则。例如,如果对单词"work执行词干化 3 ,后缀" ing" 将被砍掉,您将获得" work" 作为基本单词。词干提取所采用的这种粗糙的方法显然比进行详细分析的词汇化更快。

然而,词干有时会给你一个不是有效单词的结果。例如,对单词“ dries ”执行词干处理可以简单地删除后缀“ es ”,并返回“dri”作为不是有效单词的基本单词。再来看另一个词,“”如果你把这个词“更坏”连同它的词性“形容词”一起进行词条化操作,它就能通过对它的详细分析,算出基本词是“坏的”另一方面,词干提取所采用的切掉部分单词的方法不可能从原始单词“更坏”中产生“坏”的结果总而言之,词干化和词汇化各有优缺点,您需要根据自己的需求决定哪一种适合您。

TF-以色列国防军

我们使用第六章中的单词袋技术从所有电子邮件的基本单词列表中提取特征。这种技术确定了词汇表(所有电子邮件中唯一基本单词的总集合),然后为词汇表中的每个基本单词创建一个特征。然后,它通过计算相应的基本词在电子邮件中出现的次数来计算电子邮件的特征值。图 14-1 显示了使用词袋技术从所有电子邮件的基本词列表中提取的部分特征——该图还显示了目标变量类别。注意,每个唯一的基本单词都有一个特征。您可以看到第三封电子邮件的特征可视化的值是 2,因为基本词可视化在该电子邮件的基本词列表中出现了两次。

img/504530_1_En_14_Fig1_HTML.png

图 14-1

电子邮件的功能和目标变量

因此,您可以看到,单词袋技术使用一种非常基本的方法来计算一个基本单词的出现次数,从而计算一个特性的值。您可以对这种计算特征的方法进行一些改进,从而获得更有效的特征。更有效的特性可以产生更有效的模型,这对数据科学的成功至关重要。让我们来看几个这样的增强。

假设我们的数据中有一封很长的电子邮件,多次包含单词 visualization单词袋技术将简单地统计出现的次数,并给这封邮件的特征可视化一个很高的值。与上图中的第三封电子邮件相比,ML 算法会认为该电子邮件的特征可视化具有更高的价值。但这可能只是因为这封邮件比第三封邮件长得多。因此,在计算特征值时对电子邮件大小进行调整将是一个好主意。您可以简单地将电子邮件的原始特征值除以该电子邮件的基本单词列表的大小。特征的修改值是基本单词在电子邮件中出现频率的更有效表示。我们将这个修改后的特征值称为项频率(TF)

然而,这种修改的特征计算过程仍然具有局限性。如果一个基本单词通常是一个非常常见的单词,因此在其他电子邮件中也经常出现,则该单词在电子邮件中的频繁出现可能没有特别的意义。但是我们改进的特征计算过程没有考虑这一方面,所以如果一个基本词在电子邮件中频繁出现,即使它是一个非常常见的词,它也会给出很高的特征值。因此,如果相应的基本单词是非常常见的单词,我们可以通过显著缩小特征值来进一步修改我们的特征值计算过程。为此,我们可以将之前计算的特征值乘以称为逆文档频率(IDF) 的值。IDF 等于电子邮件数量除以包含相应基词的电子邮件数量所得商的对数。所以如果一个基本词是在大多数邮件中出现的非常常见的词,那么它的商将接近 1,它的对数将接近 0。换句话说,如果对应的基词极其常见,IDF 接近于 0。因此,由于与 IDF 值相乘,对应于一个非常常见的基本词的特征值得到了相当大的缩减,正如我们所希望的那样。 4 这种修改后的计算特征值的方法称为 TF-IDF,最终计算出的特征值称为 TF-IDF 值。然后,这些最终特征值可以用于机器学习。

将分类变量转换为数值变量

将分类变量转换成数字变量是另一项数据准备任务,我们在前面已经看到过(第五章),也很常见。在第五章中,我们想要转换的每个分类变量只有两个可能的值,我们简单地将一个值编码为 0 ,另一个值编码为 1 。例如,您可能记得每个观察的性别变量的值是男性或女性。为了将这个变量转换成数字变量,我们简单地将男性编码为 1 ,将女性编码为 0 。但是,根据情况的需要,您可能需要采用其他方法/技术。

假设您的数据中的观察值对应于患者,其中一个变量表示患者的疲劳程度。对于每个患者,该变量可以取以下五个可能值之一:非常低、低、中等、高和非常高。表示比值非常低更高的疲劳水平,值中等表示比值更高的疲劳水平,以此类推因此,这些可能的值有一个自然的顺序。其可能值具有自然顺序的分类变量称为顺序变量。在将这样的变量转换成数值变量时,最好保持这种顺序。例如,由于值比值非常低表示更高的疲劳水平,你应该使用比你用来编码非常低的数字更高的数字来编码,以此类推。因此,您可以简单地将非常低编码为 0,编码为 1,中等编码为 2,编码为 3,非常高编码为 4。因此,对于所有疲劳水平最初为非常低的患者,变量的编码值将为 0 。类似地,对于疲劳程度为的患者,编码值将为 1、等等。

现在让我们看看另一种分类变量。图 14-2 显示了数据的局部视图,其中每个观察值对应一部电影。变量 Length 表示电影时长,以分钟为单位,变量Rating 表示用户给出的平均评分, Genre 表示是什么类型的电影。对于每部电影,分类变量流派可以取三个可能值中的一个:动作片喜剧片恐怖片。这些可能的值只是电影类型的名称,没有自然的顺序。这种分类变量的可能值只是没有自然顺序的名称,称为名义变量。要将这个变量转换成数字变量,显然可以将动作编码为 0 ,将喜剧编码为 1、,将恐怖编码为 2 ,如图 14-3 所示。但这种方法在某些情况下可能会产生误导。假设您试图根据电影之间的欧几里德距离来识别电影的聚类(我们在第七章中讨论了聚类)。如果图 14-3 中的编码数据用于聚类并且基于这三个变量计算距离,则表中看到的第三部电影将看起来比第一部电影更接近第二部电影。这是因为第三部电影的长度和分级等于其他两部电影的长度和分级,但是第三部电影的编码类型更接近于第二部电影的编码类型,而不是第一部电影的编码类型。然而,这种解释是不正确的,因为你可以在原始数据中看到(图 14-2 ),第三部电影的风格与其他两部电影的风格完全不同——它不是更接近其中一部,而是更远离另一部。所以我们将讨论一种不同的技术来将分类变量类型转换成数字形式。

img/504530_1_En_14_Fig3_HTML.png

图 14-3

具有编码类型的电影数据

img/504530_1_En_14_Fig2_HTML.png

图 14-2

电影数据

我们将用三个新变量替换图 14-2 中的变量流派,这三个新变量对应于流派变量的三个可能值。图 14-4 显示了这三个新变量的电影数据。你可以看到每个流派都有一个变量。如果一部电影属于某个特定的流派,那么这个流派对应的变量的值为 1,另外两个变量的值为 0。比如这个图中看到的第一部电影属于流派动作,所以变量动作的值为 1,变量喜剧的值为 0,变量恐怖的值为 0。这是被称为一键编码的流行技术背后的一般思想。因此,我们可以看到数据和所解决问题的性质如何影响我们选择将分类变量转换为数值变量的技术。

img/504530_1_En_14_Fig4_HTML.png

图 14-4

具有类型的一键编码的电影数据

转换图像

正如我们在本章开始时所讨论的,以各种方式准备数据可以产生更有效的模型。对于计算机视觉问题,在数据准备中执行的一个常见任务是转换原始图像以产生新图像,目的是建立有效的模型。用于转换图像的确切技术取决于您希望转换产生的效果,以便创建更好的模型。我们在第十章中讨论了图像变换,我们在有大量背景空白的图像中寻找本地化的模式。因此,我们采用的技术/方法是将图像分割成小块,选择具有最多组织的小块,并重新组合它们以创建具有大组织区域的正方形图像。

在许多其他常见的问题中,比如我们在第十章中看到的物体检测,以任何方式通过切片来变换图像都是不合适的。但是,在需要转换图像的情况下,可能还有其他要求。一个这样的要求是,该模型应该对图像方向(例如,旋转)、被识别对象的大小(缩放因子)等的变化有弹性。例如,如果模型需要检测图像中的特定类型的对象,它应该能够这样做,而不管图像中对象的方向等。这种弹性可以通过以多种方式(例如,通过旋转等)变换每个原始图像来实现。)并将变换后的图像与原始图像一起提供给模型用于学习。这项技术因此扩大了我们数据的规模,被称为图像增强。它帮助模型学习检测图像中具有任意方向、缩放因子等的模式。

由于这种增强有助于从您的图像中创建更大的数据语料库,因此它对于训练深度学习模型特别有用,如 CNN(见第十六章),这些模型需要大量数据。

您的问题的细节通常会决定哪些转换是合适的;以下是一些更常见的扩充/转换:

  • 旋转各种角度

  • 水平/垂直翻转

  • 放大/缩小

  • 水平/垂直移动

  • 添加一些噪声

库和工具

在这一节中,我们来看看可用于数据准备的各种库和工具。

图书馆

数据操作和分析库通常包括数据聚集和转换的功能。例如,Pandas 是用 Python 处理数据的一个流行库——它有聚集和转换数据的功能,包括日期/时间转换。

例如,如果您正在 Spark 集群上处理大数据,您可能会使用 Spark 库函数进行数据准备。此外,相对较新的考拉库提供了一个 Pandas 兼容的 API 来执行 Spark 操作——这使得熟悉 Pandas 的数据科学家能够在没有学习曲线的情况下使用 Spark。

ML 库通常也包含用于公共数据准备技术的函数。 Scikit-learn 例如,提供了填充缺失值、标准化、一键编码等功能。

也存在面向特定问题类别的库,例如,自然语言工具包(NLTK) 是用于 NLP 的流行库,它也包括词干分析、词汇化等功能。同样,对于计算机视觉,像 scikit - imageKeras 这样的库提供 API 来简化图像转换的任务。

工具

在过去的几年里,像 Paxata、Trifacta 等工具。,因为它们能够使用直观友好的用户界面进行数据准备,所以受到了欢迎。这种易用性不仅允许数据科学家,还允许分析师和业务利益相关者使用这些工具,从而在数据准备阶段实现他们之间的有效协作。这些工具还可以跟踪沿袭,即在数据准备步骤中执行的所有转换。这简化了再现性和审计。

数据工程

支持数据准备的数据工程活动有两大领域:

  1. 基础设施和数据源:如果团队在 Spark 集群等上处理大数据。和/或使用任何工具,那么建立和维护必要的基础设施就属于数据工程的范畴。此外,一些工具可能需要配置数据源——这些初始化活动也属于数据工程。

  2. 自动化数据准备:如果/当数据科学家对某些数据集的某些数据准备活动进行标准化时,数据工程可以为对应于这些数据集的新数据自动化和维护这些步骤。这有助于提高数据科学家的工作效率,让他们专注于数据科学流程的其他步骤。

结论

在这一章中,我们回顾了几个数据准备任务,并看到多种技术可用于每项任务。我们还看到,对这些技术的深入理解对于决定哪种技术最适合我们的问题非常重要。

十五、数据可视化

我们在上一章中讨论了数据准备;现在,让我们更深入地研究一下数据可视化的技巧和技术,这是我们数据科学流程的下一步。

在讨论不同类别的问题时,我们强调了用具体例子设计有效可视化的重要性和好处。我们还提到了数据可视化本身是一个庞大的主题,涵盖了许多不同类型的图表、图例、布局等。其中的每一个都为用户提供了各种简单和高级的选项,以实现更好的控制。此外,还有一些机制可以将交互式特性添加到您的可视化中,或者合并现有的可视化来创建您自己的自定义可视化。我们将着眼于其中的一些一般方面,然后更深入地研究一些可视化技术,以及它们如何提供在数据科学中构建有效模型所需的洞察力。我们将通过讨论数据可视化类别中一些流行的库和工具来结束本章。

图表/曲线图

虽然有些人会不严格地、可互换地使用这些术语,但其他一些人可能会给出一些启发性的论述,说明它们都意味着不同的东西。在不深入讨论的情况下,我们想强调的是,这些是你可以用来设计可视化的基本构件。你可能已经使用过或遇到过其中的一些,如条形图、散点图、饼图等。,但我们认为这是一项有益的投资,可以超越这些,扩大你对其他高效工具的认识。

其中许多像条形图、散点图等。使用水平轴和垂直轴,并显示代表数据的可视元素。使用数据中的值导出每个可视元素沿每个轴的位置或大小。假设您有生活在某个地区的学生的人口统计数据。散点图可以将数据集中的每个学生显示为一个圆形标记,其水平轴上的位置基于学生的身高,垂直轴上的位置基于学生的体重。

还有其他不使用轴的图表,如饼图、树形图等。树形图将层次结构中的类别显示为嵌套的矩形块,矩形块的面积表示类别的某些属性。例如,图 15-1 显示了不同制造商的不同型号手机在商店的销售情况。 1 您可以看到每个制造商都有一个图块,其面积代表该制造商的总销售额。并且来自该制造商的不同型号的区块被嵌套在该制造商的区块内,使得每个嵌套区块的面积代表其相应型号的销售。例如,有一个大的红色瓷砖,其面积代表制造商小米的总销售额,它包含小米三种型号的三个嵌套的红色瓷砖。每个嵌套的红色瓷砖的面积代表小米相应型号的销售。

img/504530_1_En_15_Fig1_HTML.jpg

图 15-1

手机销售树形图

基本构建模块中的另一个类别是节点链接图。这些工具利用节点和链接来显示实体及其连接,对于可视化网络数据非常有用。

传说

通过利用颜色、大小等可视化属性,您可以在现有图表中可视化更多变量。我们之前讨论了一个散点图,它将每个学生显示为一个标记,其 x 坐标和 y 坐标分别基于身高和体重。您还可以将性别(包含离散类别男性女性)添加到该可视化中,用蓝色显示男生的标记,用绿色显示女生的标记。一个离散的图例将被添加到图中,显示每种颜色所代表的含义。图 15-2 显示了散点图和离散图例,使性别、身高和体重可视化。

img/504530_1_En_15_Fig2_HTML.jpg

图 15-2

体重与身高的散点图。性别由标记的颜色描绘 2

您还可以使用颜色来可视化包含连续值的变量。显示身高和体重的散点图示例可以通过将他们的年龄映射到一系列颜色中的一种颜色来为每个学生的标记着色。将添加一个连续的图例,显示图中颜色代表的年龄值。图 15-3 显示了散点图和连续图例,使包含连续值的附加变量年龄可视化。例如,注意高亮标记的颜色;你可以在连续的图例中看到,这种颜色代表 30 岁左右的年龄。

img/504530_1_En_15_Fig3_HTML.jpg

图 15-3

体重与身高的散点图,年龄用颜色表示

您还可以使用 size 属性来可视化具有连续值的变量。例如,显示每个学生气泡的气泡图(其 x 坐标和 y 坐标基于身高和体重)可以通过改变气泡大小来额外显示年龄。添加了一个尺寸图例,显示不同气泡尺寸代表的年龄值。图 15-4 显示了气泡图和尺寸图例,除了身高和体重之外,还可以显示年龄。请注意,与之前的散点图相比,为了视觉清晰,我们减少了该图中标记的数量。

img/504530_1_En_15_Fig4_HTML.jpg

图 15-4

体重与身高的气泡图。气泡的大小表明了那个学生的年龄

布局

通常,您需要将多个相关图表添加到可视化中,以便可以跨图表比较数据。布局允许您将多个图表添加到您的可视化中,并以不同的方式组织它们。根据您的需要,您可以选择适当的布局,使您的可视化更有效,并传达对趋势的更多见解。最简单的布局之一是叠加布局,即将一个基于轴的图表叠加在另一个之上。假设您有一个堆积条形图,将每年来自电子产品的收入堆积在来自软件的收入之上。因此,每个条形的总高度表示相应年份的总收入。在这个条形图上,您可以叠加一个散点图,显示每年的收入目标。图 15-5 显示了覆盖在条形图上的散点图。请注意,条形图低于 1990 年的散点标记,这意味着该年未达到收入目标,因为总收入低于收入目标。另一方面,在 1995 年,总收入超过了收入目标,因为该年的条形图高于散点图。

img/504530_1_En_15_Fig5_HTML.jpg

图 15-5

散点图显示覆盖在堆叠条形图上的收入目标,显示电子产品和软件的实际收入

有些布局允许您在行和列的网格中组织多个图表。此类别中的一些布局要求您手动指定哪个图表进入网格的哪个单元格,而其他一些布局则根据一些规则自动用图表填充网格。假设您想要可视化一家汽车公司生产的不同车型的销售情况,您可以使用一个简单的条形图。但是,您可能希望比较不同国家和年份的不同型号的销售情况。因此,您可以使用数据点阵 3 布局,并对其进行配置,以自动为每个国家创建一行,为每年创建一列,从而为每对国家和年份显示一个单元格,而不是使用简单的条形图。您可以指定每个单元格应该自动显示相应国家和年份的条形图(显示型号的销售情况)。图 15-6 显示了显示每对国家和年份的条形图的数据点阵布局。显示不同型号的销售的简单条形图将允许两个变量(型号和销售)的可视化;数据网格布局允许您可视化另外两个变量:国家和年份。

img/504530_1_En_15_Fig6_HTML.jpg

图 15-6

每对鞋的销售数据格。格子中的每个单元格显示每个型号 4 的销售额

这些布局通常在后台执行许多计算,以实现所需的功能,如实现一行中各单元格的垂直轴范围的一致性,或实现一列中各单元格的水平轴范围的一致性。

选择

所有图表、图例和布局都以属性的形式向用户展示选项,这些属性可以设置为不同的值,以利用更多的功能或更好地控制输出。例如,您可以在散点图中使用适当的选项将符号更改为方形而不是圆形,或者您可以使用适当的选项将基于轴的图表的轴更改为对数刻度。选项的范围各不相同,从基本选项到高级选项,基本选项只带来表面上的变化,高级选项涉及复杂的计算,对可视化有重大影响。我们不会深入讨论细节,但鼓励您提高对不同可用选项的认识,因为通过使用正确的选项可以极大地增强从可视化中获得的洞察力。

交互式可视化

有些工具可以让您设计交互式可视化,从而更深入地探索数据或提供简单可视化无法实现的动态视图。让我们再次考虑我们之前讨论的显示汽车型号销售的简单条形图——每个汽车型号都表示为一个高度代表该型号销售的条形。您可以将动画添加到该可视化中,以显示模型的销售如何按月变化。在引擎盖下,可视化为每个月创建一个条形图(显示模型的销售),并按时间顺序快速连续显示它们。通过观察柱线如何随时间增加或减少,您可以清楚地计算出每个型号的销售额如何随时间变化。

另一个重要的交互特性是向下钻取特性。当您查看可视化时,您可能希望更深入地了解细节。假设您正在查看一个显示美国某零售连锁店区域销售额的条形图。 5 你可能想进一步分析某个特定地区的趋势,并查看该地区不同州的销售情况。您可能会决定更深入一个州,查看该州不同城市的销售情况。您可以通过向可视化添加一个向下钻取特性来实现这一点。当可视化被呈现时,它以显示区域销售的条形图开始。图 15-7 (A)显示了该条形图。然后,您可以选择某个区域的条形图,并选择深入查看该条形图;这导致可视化转到层次结构中的下一个级别,即,并显示该地区各州的销售额。因此,如果您选择向下钻取与图 15-7 (A)中突出显示的区域相对应的条形图,您将会看到图 15-7 (B)中的条形图。您可以进一步选择一个州的条形图,并深入查看下一个级别,该级别显示该州不同城市的销售额。图 15-7 (C)显示了如果您选择向下钻取纽约州纽约州时将显示的条形图。

img/504530_1_En_15_Fig7_HTML.jpg

图 15-7

零售连锁店销售的交互式深入分析。(A)区域销售,选择深入东部地区。(B) Statewise sales,选择深入到纽约州。(C)纽约州的城市销售

从可视化中获得洞察力

到目前为止,这些小节讨论了一些与数据可视化相关的一般方面。在本节中,我们将更详细地了解数据科学中经常使用的一些可视化技术,以及如何利用它们来获得有助于构建有效模型的见解。当我们讨论问题的类别时,我们已经看到了这种洞察力的一些例子。例如,在讨论第五章中的回归类问题时,我们看了一个散点图,揭示了目标和特征变量之间的线性关系。基于这种认识,我们决定创建一个线性回归模型来捕捉这种线性关系。类似地,我们也在第八章的异常检测中看到了箱线图。让我们再看一些例子。

柱状图

您可以使用直方图来查看数值变量的值的分布。直方图将整个数值范围划分为更小的区间,称为“仓”,并为每个仓显示一个条形,条形的高度表示落入该仓的数值数量。通过查看直方图,你可以得出几个结论。例如,如果所有条形的高度相似,则意味着每个条柱中的值的数量相似。换句话说,这些值或多或少均匀地分布在间隔或区间上。另一方面,如果你看一下图 15-8 ,它显示了一个班级中学生的体重直方图,你可以看到区间 30-35、35-40 和 40-45 的柱状图很高,而区间低于 30 或高于 45 的柱状图很小。这意味着许多学生的体重在 30-35、35-40 和 40-45 之间,很少有学生的体重在 30 以下或 45 以上。换句话说,绝大多数学生的体重在 30 到 45 之间。

img/504530_1_En_15_Fig8_HTML.jpg

图 15-8

班级学生权重直方图。大多数学生的体重在 30 到 45 之间

现在让我们看看如何使用直方图来获得构建 ML 模型的有用见解。比方说,您正在努力创建一个模型,该模型将部署在一个可穿戴设备上,并将根据一些健康参数(如体温、血压等)预测一个人是否患有心脏病。,它测量。为了构建这个模型,假设您已经获取了大约一千名正常人和一千名心脏病患者的健康参数值。您可以在数据准备步骤中以这样一种方式准备您的数据,即您为每个人准备一行,其中包含他们的参数值和一个标签,如果此人有心脏病,则标签值为有病,如果此人健康,则标签值为健康参数对应的变量是你的特征,包含标签健康/患病的变量是你的目标。现在,您想要评估与特定参数相对应的特征对于预测心脏状况是否有用。为此,您可以绘制健康人的这一特征的直方图,并将其覆盖在患有心脏病的人的这一特征的直方图之上。图 15-9 显示了健康患病类别的重叠直方图。x 轴显示特征值的间隔,y 轴显示人数。

img/504530_1_En_15_Fig9_HTML.jpg

图 15-9

“健康”类和“患病”类的重叠直方图

您可以看到,健康类的直方图具有从特征值 10 到 70 的条形,而患病类的直方图具有从值 50 到 130 的条形。因此,两个类别的直方图之间有很好的分离——健康类别的直方图相对于患病类别的直方图向左移动。注意,对于小于 50 的特征值,存在健康类别的高条,但是对于小于 50 的特征值,不存在疾病类别的条。因此,我们的数据表明,健康人的特征值通常低于 50,但心脏病患者的特征值似乎从未低于 50。因此,如果你遇到一个特征值低于 50 的病例,你可以推断这个人可能是健康的。同样,我们的数据表明,患有心脏病的人的值通常高于 70,但健康人的值似乎从未高于 70。因此,如果你遇到一个特征值高于 70 的病例,你可以推断这个人可能有心脏病。因此,我们可以看到,该特征的值可以给出关于一个人心脏状况存在的一些指示。因此,ML 模型可以学习使用该特征的值来尝试预测一个人是否患有心脏病。因此,在构建预测心脏状况的模型时,使用这一功能将是一个好主意。因此,您可以看到查看直方图是如何提示您哪些特征可以有效地构建您的预测模型的。

核密度估计图

另一种常用于分类问题的图是核密度估计图或 KDE 图。KDE 图估计并绘制变量的概率密度曲线。KDE 图中的 x 轴代表变量值,y 轴代表概率密度。不去深究数学细节,让我们专注于如何解读 KDE 图。图 15-10 显示了我们之前看到的变量的 KDE 图,该图包含一个班级学生的权重——x 轴代表权重,y 轴代表概率密度。KDE 曲线下两个体重值之间的面积代表学生体重落在这两个值之间的概率。

img/504530_1_En_15_Fig10_HTML.jpg

图 15-10

班级学生权重的核密度估计(KDE)图

从图中可以看出,重量 30 和 45 之间的曲线下面积比重量 30 以下的曲线下面积大得多。这意味着学生体重落在 30 到 45 之间的概率比体重落在 30 以下的概率大得多。这是因为我们在图 15-8 的直方图中看到,绝大多数学生的体重在 30 到 45 之间。因此,你可以看到 KDE 图就像一个平滑版的直方图。

当绘制多个分布图时,使用 KDE 图而不是直方图的好处变得很明显。让我们再来看一下这个特性,其健康人群和心脏病患者的分布是使用直方图绘制的,如图 15-9 所示。现在让我们将这 1000 名健康人的 KDE 图叠加到这 1000 名心脏病患者的 KDE 图上,而不是直方图,如图 15-11 所示。该图中的 x 轴表示特征值,y 轴表示概率密度。你可以看到图中叠加的 KDE 图看起来像图 15-9 中叠加直方图的平滑版本,但是你从 KDE 图中得到的好处是 KDE 图看起来不那么杂乱,比直方图更易读。如果将四个重叠直方图与相应的四个重叠 KDE 图进行比较,杂乱回波的减少会更加明显。

img/504530_1_En_15_Fig11_HTML.jpg

图 15-11

“健康”类和“患病”类的叠加核密度估计(KDE)图

现在让我们看看如何从 KDE 图中获得建筑模型的洞察力。我们可以在图中看到,两个类别的 KDE 图之间有很好的分离——健康类别的 KDE 图相对于患病类别的 KDE 图左移。注意,特征值 50 以下的健康曲线下的面积较大,而特征值 50 以下的患病曲线下的面积接近于 0。这意味着健康人的特征值小于 50 的概率很高,而患有心脏病的人的特征值小于 50 的概率几乎为零。因此,我们的图表明,健康人的特征值通常低于 50,而患有心脏病的人的特征值很少低于 50。因此,如果你遇到一个特征值为 40 的人,你可以推断这个人可能是健康的。类似地,特征值 75 以上的患病曲线下的面积较大,而特征值 75 以上的健康曲线下的面积接近于 0。因此,我们的曲线图表明,患有心脏病的人的特征值通常会高于 75,而健康人的特征值很少会高于 75。因此,如果你遇到一个特征值为 90 的人,你可以断定他们可能有心脏病。由于该特性的值为您提供了一些关于心脏状况存在与否的提示,因此您可以使用该特性来构建预测心脏状况的模型。因此,您可以通过查看 KDE 图来评估此功能对于构建模型的适用性。

库和工具

到目前为止,我们的讨论主要集中在数据可视化技术上。在这一节中,我们将讨论一些实现各种可视化技术的库和工具。

图书馆

有几个面向数据科学的可视化库。例如,在 Python 生态系统中,Matplotlib 是最古老的库之一,并且仍然非常流行。Seaborn 6 是数据科学家使用的另一个流行的 Python 库。在本章中,我们使用了这两个库来创建散点图、直方图和 KDE 图。

工具

数据可视化工具领域,也包括商业智能或可视化分析工具,是分析领域中最古老的领域之一。像 Tableau 这样的工具有着悠久的历史,可以追溯到世纪之交。在过去几年中,数据科学的发展见证了几个 BI 工具扩展了它们的功能,增加了对数据科学家所需的数据准备和数据可视化的支持,包括与 Python 的集成等。

根据我们的经验,Tableau 和 SAS Visual Analytics 是两种工具,代表了为数据可视化提供的广泛功能,在学术界和工业界的数据科学家中很受欢迎。其他流行的工具包括 PowerBI、Looker 等。–这是一个非常拥挤的空间,有许多流行的工具。 7

了解这一类工具将使您能够确定您的组织是否已经拥有可供数据科学家利用的工具(如 BI 工具)。这可以显著改善数据科学家和其他利益相关者之间的协作。这些工具还允许非常容易地将视图和仪表板嵌入到现有的 web 应用程序中,这对于将数据科学家创建的可视化整合到任何现有的内部运营门户中非常有用。 8

数据工程

如果数据科学团队正在处理可以在单台机器上运行的数据大小,并使用 Matplotlib、Seaborn 等可视化库。,那么数据可视化步骤不需要很多数据工程活动。

但是,当数据规模很大并且使用 Spark 等集群时,数据工程将确保支持高效的即席查询来实现数据可视化。

除了确保高效查询之外,当 BI 或可视化分析工具用于数据可视化时,通常还需要以下数据工程活动:

  • 为这些工具设置必要的服务器基础设施

  • 在这些工具中配置适当的数据源

  • 所需的任何定制,例如,任何用户定义的函数、定制 SQL 等。

最后,如果仪表板或应用程序要基于数据科学团队创建的可视化来实现,数据工程可以帮助快速启动原型应用程序,这些应用程序将数据科学家创建的可视化作为交互式仪表板的一部分来重用。这也可以使用像 Plotly Dash 或 Bokeh 这样的框架来完成——更多细节见第十八章。

结论

在本章中,我们试图强调数据可视化不仅仅是条形图和散点图。我们讨论了与数据可视化领域相关的一些一般方面,还讨论了我们如何从可视化中获得洞察力。这些见解可以帮助我们建立有效的 ML 模型,这是我们下一章的重点。

十六、机器学习

正如我们所见,机器学习是数据科学过程的核心,因为正是在这一步中构建了实际的模型。本章致力于 ML 算法/技术,你可以用它来构建模型和实现这些算法的库。了解不同的 ML 算法并直观理解底层概念对于整个数据科学过程的成功至关重要。我们将从 ML 算法的一般分类开始,然后看几个流行的算法。然后,我们将讨论模型性能评估,它可以帮助您评估模型的有效性。这种评估可以帮助您从您可能已经构建的多个候选模型中选择最佳模型,并且还可以让您了解所选择的模型在部署到产品中时可能会有多好的性能。

机器学习算法的类别

最大似然算法可以大致分为三种类型:监督学习、非监督学习和强化学习。让我们试着理解每种类型的含义,并看看每种类型中常见的例子。

监督学习

正如你可能从名字中猜到的,监督学习算法需要人的监督。作为这种监督的一部分,你需要告诉算法对于现有的观察值来说什么是正确的标签。该算法学习这些观察和它们的标签之间的关系,然后能够预测新观察的标签。例如,如果您正在使用监督算法来构建一个模型,该模型可以预测新的数字支付交易是否是欺诈性的,您将不仅提供现有交易的详细信息(如交易地点、支付金额和方式等。)但是还需要向算法提供这些交易的标签欺诈/非欺诈。该算法建立的模型将能够根据交易的细节预测哪个新交易是欺诈性的。我们前面已经看到,与这些细节相对应的变量(如支付金额等。)被称为特征,对应于标签的变量被称为目标。让我们再来看看第四章的例子,我们试图根据一个感兴趣的客户的性别、年龄、职业和年收入来预测他最终是否会购买这辆车。图 16-1 显示了我们传递给机器学习算法的数据。请注意,我们不仅传递了过去客户的详细信息(如性别、年龄等。)传递给算法,但我们也传递了那些客户的标签(购买/未购买)。因此,我们在那个例子中使用的算法(决策树算法)是一个监督学习算法。该图还指出了这种情况的特征、目标变量和标签。

img/504530_1_En_16_Fig1_HTML.png

图 16-1

功能、目标和标签

线性回归、逻辑回归、决策树、k-最近邻、朴素贝叶斯、支持向量机和神经网络是监督学习算法的一些例子。监督学习算法可以进一步分为分类算法和回归算法。分类算法预测作为类别的标签(例如,欺诈/非欺诈),回归算法预测作为连续值的标签(例如,薪水)。朴素贝叶斯是一种流行的分类算法,线性回归是一种流行的回归算法。

无监督学习

无监督学习算法在没有人监督的情况下工作,也就是说,您不需要为观察值提供任何标签。该算法试图从未标记的数据中自己学习模式。聚类算法,比如我们在第七章看到的凝聚聚类,就是无监督学习算法的例子。聚类算法试图将未标记的观察值集合分成组或聚类,使得属于同一聚类的观察值比属于不同聚类的观察值更相似。例如,我们在第七章中看到,对客户数据运行聚类算法可以将具有相似特征的客户分组。另一个流行的聚类算法是 k 均值

一些异常检测算法,如我们在第八章看到的局部异常因子,也是无监督算法,因为它们旨在检测无任何标签的数据中的异常观察。流行的无监督异常检测算法的其他示例有隔离森林和单类 SVM。

值得注意的是,无监督学习算法对于 KDD/数据挖掘项目尤为重要——我们将在第二十三章重新讨论这个问题。

强化学习

我们已经在第十一章中看到了强化学习。这些旨在做出决策以优化长期结果的算法在本质上与监督和非监督算法有很大不同,因为它们与环境互动,并根据为其决策提供的奖励进行学习。

流行的机器学习算法

不要查看所有可用的 ML 算法,让我们只关注一些流行的算法,并尝试理解它们如何学习,如何预测,以及它们给出了什么样的见解。在第二十章中,了解 ML 算法的这些细节对于理解为什么数据科学家基于他们所属的文化(修道院与狂野西部)更喜欢某些算法也很重要。如果你不想在这一点上讨论所有这些最大似然算法的细节,你可以在后面的章节中提到这些算法的时候再回到这里。

线性回归

线性回归算法是最流行的回归机器学习算法之一。如前所述,该算法基于准备好的数据构建了一个线性回归模型,该模型是一个线性方程,解释了如何从特征值计算目标变量值。这是许多数据科学家的最爱,他们经常用线性回归模型开始回归问题的初步实验。线性回归算法创建的方程用于计算新观察值的目标值。该等式还提供了对目标变量如何与特征相关的洞察。

让我们通过重温回归问题类 1 中的示例,来尝试理解线性回归算法是如何工作的,其中的目标是基于特征值性别、年龄和吸烟状况来预测目标索赔金额。图 16-2 显示了该示例的准备数据。回想一下,在性别特征中男性被表示为 1 ,女性被表示为 0 ,在吸烟状态特征中吸烟者被表示为 1 ,而非吸烟者被表示为 0

img/504530_1_En_16_Fig2_HTML.png

图 16-2

准备好的数据传递给线性回归算法

还记得当我们可视化这些数据时,我们注意到线性关系,因此决定使用线性回归算法。当线性回归算法接收到这个准备好的数据时, 2 它试图建立一个线性方程,将目标变量值表示为特征值加上常数项的加权和。那就是:

索赔金额= b 0 + b 1 ×性别+ b 2 ×年龄+ b 3 ×吸烟状况

其中 b 1 、b 2 和 b 3 分别是特征性别、年龄和吸烟状况的权重,b 0 是常数项(也称为截距项)。根据这个等式,该算法将性别= 0、年龄= 40、吸烟状态= 0 的客户的索赔金额预测为

b0+b1×0+b2×40+b3×0

图 16-3 中的预测索赔金额栏显示了算法使用该等式为现有客户预测的索赔金额。现有客户的预测误差是预测索赔金额与该客户实际索赔金额之间的差异。该图中的预测误差栏显示了现有客户的预测误差。请注意,该列中的值只是列中的预测索赔金额减去列中的索赔金额的值。

img/504530_1_En_16_Fig3_HTML.png

图 16-3

现有客户的预测索赔金额和预测误差

对单个客户的预测误差求平方,然后将它们相加,得到跨客户的总体预测误差。因此,总预测误差由下面的表达式表示,该表达式是列预测误差 中表达式的平方和:

…+(b0+b1×0+b2×40+b3×0–9.2)2+(b0+b1×1+b2×50+b3×0–14.9)【t

该算法试图估计总体预测误差最小的 b 0 、b 1 、b 2 和 b 3 。换句话说,它试图通过使用类似梯度下降的技术来计算 b 0 、b 1 、b 2 和 b 3 的值,对于这些值,先前的表达式具有最小值。在这种情况下,发现当 b 0 = -6.9,b 1 = 2.1,b 2 = 0.4,b 3 = 2.9 时,表达式会有最小值。一旦算法因此聚焦于权重和截距项的正确值,它就使用这些值来具体化原始方程

索赔金额= b 0 + b 1 ×性别+ b 2 ×年龄+ b 3 ×吸烟状况

到…里面

理赔金额= -6.9 + 2.1 ×性别+ 0.4 ×年龄+ 2.9 ×吸烟状况

重新排列几项后,等式为

理赔金额= 0.4 ×年龄+ 2.1 ×性别+ 2.9 ×吸烟状况- 6.9

这就是我们在第 5 (图 5-4 中看到的等式,我们已经提到过它是由线性回归算法产生的。我们刚刚看到算法是如何得出这个等式的。该等式将用于根据新客户的年龄、性别和吸烟状况来预测其索赔金额。正如我们之前所讨论的,由线性回归算法产生的线性方程也让我们了解目标变量和特征之间的关系。我们在前面看到,根据这个等式,我们可以知道索赔额随着年龄的增长而增加 0.4K。我们还可以看出,男性(性别= 1)的索赔金额比女性高 2.1K。吸烟者(吸烟状态=1)倾向于比不吸烟者多索赔 2.9K。

逻辑回归

就像许多数据科学家用线性回归开始回归问题的实验一样,逻辑回归 3 是分类问题初始实验的最爱。让我们用一个类似于上一节中保险例子的例子来理解逻辑回归。然而,这一次,我们的目标是只预测新客户是否会提出索赔,而不是预测索赔金额。假设我们有来自不同保险公司的数据,其中包含每个现有客户的性别、年龄和吸烟状况,就像上一节中的数据一样。但是,数据包含的不是索赔金额,而是一个名为索赔状态的变量,根据客户是否提出索赔,该变量的客户值是索赔未索赔。现在,我们将尝试使用逻辑回归算法来构建一个模型,该模型可以根据特征性别、年龄和吸烟状态的值来学习预测目标变量索赔状态的值。* 4 图 16-4 显示了来自这家新保险公司的数据。*

img/504530_1_En_16_Fig4_HTML.png

图 16-4

逻辑回归的特征和目标变量

逻辑回归算法不是直接预测客户是否会提出索赔,而是学习预测指示客户基于性别、年龄等的值提出索赔的可能性的概率。为此,该算法创建了一个线性方程(就像线性回归算法一样),解释了如何根据客户性别、年龄等的加权和来计算客户提出索赔的概率。然而,简单的加权和可能大于 1 或小于 0。该算法使用一个名为的逻辑函数将加权和转换为 0 到 1 之间的值,使其成为有效概率。

图 16-5 显示了逻辑函数是如何定义的,图中的蓝色曲线绘制了该函数在不同输入 x 值下的值。正如图中所示,x = 0 时该函数的值为 0.5。这是因为函数定义中的 e -x 项在 x = 0 时变为 1,导致函数的整体值为 1/(1+1)或 0.5。随着 x 向大的正值增加,e -x 项开始变得接近 0,导致总函数值变得接近 1。随着 x 向大负值减小,e -x 项开始变得非常大,导致总函数值变得接近 0。所以函数值保证在 0 到 1 之间。

img/504530_1_En_16_Fig5_HTML.jpg

图 16-5

物流功能

如前所述,逻辑回归算法使用此逻辑函数将特征值的加权和转换为 0 到 1 之间的值,该值表示客户提出索赔的概率。这可以表示为一个等式:

p 索赔 = f(b 0 + b 1 ×性别+ b 2 ×年龄+ b 3 ×吸烟状况)

其中 p 索赔 是客户提出索赔的概率,

f 是逻辑函数,

b0是截距项,

b 1b 2b 3 为特征的权重。

使用此等式,算法将预测性别= 1、年龄= 50、吸烟状态= 0 的客户提出索赔的概率为

f(b0+b1×1+b2×50+b3×0)

该算法还可以通过从 1 中减去提出索赔的概率来预测不提出索赔的概率。这可以表示为

pno _ claim= 1–pclaim= 1-f(b0+b1×性别+ b 2 ×年龄+ b 3 ×吸烟状况)

其中pno _ claim是客户不索赔的概率。

使用此等式,算法将预测性别= 0、年龄= 30、吸烟状态= 0 的客户不提出索赔的概率为

1-f(b0+b1×0+b2×30+b3×0)

该算法必须预测实际提出索赔的现有客户提出索赔的高概率(p claim ),并预测没有提出索赔的现有客户不提出索赔的高概率(p no_claim )。图 16-6 中的 P 列显示了已经提出索赔的现有客户的预计索赔概率(p 索赔)和没有提出索赔的现有客户的预计不索赔概率(p no_claim )。正如我们刚才提到的,所有这些值(列在 P 栏中)都必须高。所以算法会尝试查找 b 0 、b 1 、b 2 、b 3P 列值高的值。 5 算法将使用前面提到的技术来实现这一点。

img/504530_1_En_16_Fig6_HTML.png

图 16-6

列 P 包含现有客户的 p 索赔或 p 无索赔

假设算法发现 b 0 = -80,b 1 = 10,b 2 = 2,b 3 = 10 是权重和截距项的最优值。它将使用这些值来具体化等式

p 索赔 = f(b 0 + b 1 ×性别+ b 2 ×年龄+ b 3 ×吸烟状况)

到…里面

p 索赔 = f(-80 + 10 ×性别+ 2 ×年龄+ 10 ×吸烟状况)

现在,这个等式表示逻辑回归模型,可用于预测为新客户提出索赔的概率。例如,37 岁的男性吸烟者(性别= 1,年龄= 37,吸烟状态= 1)提出索赔的概率由下式给出

p 索赔 = f(-80 + 10 ×性别+ 2 ×年龄+ 10 ×吸烟状况)

= f(-80 + 10 × 1 + 2 × 37 + 10 × 1)

= f(14)

所以这个客户提出索赔的概率等于 f(14)。我们可以在前面的逻辑函数 f(x)的图中看到,输入值为 14 的逻辑函数的值(即 f(14) )接近于 1。所以这个客户提出索赔的概率接近 1。一旦我们有了为一个新客户提出索赔的概率,我们就可以通过比较这个概率和一个截止值来预测他是否会提出索赔。如果提出索赔的概率高于截止值,我们预测客户会提出索赔。如果概率低于截止值,我们预测客户不会提出索赔。例如,如果我们为我们的逻辑回归模型选择 0.5 的临界值,我们将预测前面讨论的 37 岁男性吸烟者将提出索赔,因为他提出索赔的概率被预测为接近 1,高于 0.5 的临界值。另一方面,如果我们有一个模型预测概率为 0.3 的客户,我们会预测该客户不会提出索赔,因为他的预测概率低于选择的截止值 0.5。

就像线性回归一样,如果您希望不仅仅是预测目标变量的值,而是希望深入了解数据和生成这些数据的底层流程,那么逻辑回归模型非常有用。让我们看看我们之前讨论的逻辑回归模型给了我们什么启示。让我们再来看看这个模型的等式:

p 索赔 = f(-80 + 10 ×性别+ 2 ×年龄+ 10 ×吸烟状况)

我们可以看到,对于更大的年龄值,内部表达式的值(它是该等式中逻辑函数的输入)也将更大。前面讨论的逻辑函数图告诉我们,随着输入值变大,逻辑函数值也会变大。因此,年龄越大,索赔的概率就越大。这意味着老年人更有可能提出索赔。类似地,对于吸烟者(吸烟状态= 1),内在表达增加 10。随着内在表达价值的增加,逻辑函数的价值也增加了。因此,吸烟者提出索赔的概率更高。换句话说,吸烟者更有可能做出声明。你同样可以分析性别对做出声明的可能性的影响。

让我们进一步分析模型的方程,以找到更多的见解。在此讨论中,我们将假设模型概率截止值为 0.5。现在,假设我们对分析女性不吸烟者(性别= 0,吸烟状况= 0)组感兴趣。将性别和吸烟状况的值代入模型的等式中,我们得到

p 索赔 = f(-80 + 10 × 0 + 2 ×年龄+ 10 × 0)

这相当于

p 索赔 = f(2 ×年龄- 80)

这个简化的方程给了我们为女性非吸烟者群体提出索赔的可能性。对于该组中的任何客户,我们将预测只有当她提出索赔 p 索赔的概率大于临界值 0.5 时,她才有可能提出索赔。当该简化方程右侧的逻辑函数值大于 0.5 时,这将是正确的。从逻辑函数图中,我们可以看出,当输入值(本例中为“2 ×年龄–80”)大于 0 时,逻辑值大于 0.5。这种情况发生在我们这个年龄大于 40 岁的人身上。简而言之,对于任何不吸烟的女性(也就是这个群体中的任何顾客),我们最终预测,如果她的年龄超过 40 岁,她很可能会提出索赔。因此,这有效地传达了一个信息,即女性不吸烟者如果超过 40 岁,很可能会宣称吸烟。我们可以从男性吸烟者、女性吸烟者等其他群体中获得类似的见解。

支持向量机

支持向量机(或 SVM)是另一种机器学习算法,数据科学家经常用于分类问题,尽管它也可以用于回归问题。我们将使用一个非常简单的分类示例来尝试和理解该算法。

假设我们的数据包含两个特征 f1f2 以及一个目标变量 t ,其值为 N (代表类)或 P (代表类)。该数据如图 16-7T16 所示。

img/504530_1_En_16_Fig7_HTML.png

图 16-7

具有两个特征和目标的简单数据

如图 16-8 所示,让我们在散点图上将阳性观察值(其目标值为 P)绘制为红色方形标记,将阴性观察值(其目标值为 N)绘制为绿色圆形标记。每个标记的 x 坐标基于相应观测的 f1 值,y 坐标基于 f2 值。你可以在视觉上想象一条线,似乎把积极和消极的观察分开。这条假想线在图上显示为虚线。现在你可以自己用这条想象的线很容易地对一个新的观察结果进行分类。您将首先根据 f1 和 f2 的值在散点图上绘制新的观察值。然后,您将检查新的观察结果属于虚线的哪一侧。如果它落在包含红色标记的一边,您将预测新的观察值一定是正的(即,您将预测目标值为 P)。如果它落在绿色标记的一侧,您将预测新的观察值一定是负的(即,您将预测目标值为 N)。这是 SVM 算法的基本思想。

img/504530_1_En_16_Fig8_HTML.jpg

图 16-8

简单数据和假想分隔线的散点图

SVM 算法通常试图在 n 维空间(对应于 n 个特征)中找到一个超平面,该超平面将一个类别的现有观测值与另一个类别的观测值分开。让我们称一个类为正,另一个类为负 。因此,SVM 试图找到一个超平面,将积极的观察和消极的观察分开。如果新的观察值落在包含正观察值的超平面的那一侧,则新的观察值将被预测为。而如果新的观察结果落在另一边,SVM 会预测它属于类。当数据只有两个特征时,超平面只是一条直线,就像上图中假想的分隔线一样。如果数据有三个特征(即数据是三维的),超平面就是一个平面,以此类推。

上图中显示的数据(有两个要素)是线性可分的,这意味着可以找到一条直线来分隔这两个类。一般来说,当你在处理具有 n 个特征的数据时,如果有可能在 n 维特征空间中找到一个将两个类分开的超平面,你会说数据是线性可分的。您可以使用一个线性 SVM 来为线性可分数据找到这个超平面,然后可以使用它来预测新观察的类别。

然而,数据并不总是线性可分的。让我们看一个流行的玩具例子来理解这一点。图 16-9 显示了这个玩具数据,只有一个特征 f1 和目标 t ,其值可以是 P (正)或 N (负)。图 16-10 显示了该数据的曲线图,其中您可以看到数据不是线性可分的,因为您找不到一个分离正负观察值的超平面。对于数据不能线性分离的情况,您可以使用一个非线性 SVM 来分离类。

img/504530_1_En_16_Fig10_HTML.jpg

图 16-10

玩具示例数据的绘图

img/504530_1_En_16_Fig9_HTML.png

图 16-9

玩具示例数据

我们自然希望了解非线性 SVM 如何能够在数据不是线性可分的情况下分离类别。让我们以前面讨论的不可线性分离的单一特征数据为例。假设您将一个派生特征 f2 添加到该数据集,其值只是 f1 值的平方(即 f2 = f1 2 )。图 16-11 显示了添加了衍生特征的玩具数据,图 16-12 显示了其散点图。你可以看到,现在有可能在二维空间中找到一个超平面(散点图上以虚线表示),它将类别分开。要预测新观测值的类别,您可以使用 f1 值导出其 f2 值,并使用这两个值在二维空间中绘制新观测值,以便检查它落在超平面的哪一侧。因此,我们可以看到如何将特征(如我们刚刚看到的衍生特征)添加到不可线性分离的数据中,从而有可能找到分离超平面。一个非线性 SVM 可以通过使用一种叫做内核技巧的技术来实现添加这些特性的效果(实际上并不需要添加它们)。由于这种技术给出了添加那些特征的效果,非线性 SVM 可以分离数据中的类,否则这些类是不能线性分离的,因此可以相应地对新的观察结果进行分类。不用说,还有很多关于 SVM 的变化和细节我们没有涉及到。但是前面的讨论试图解释支持向量机工作背后的一般原理。

img/504530_1_En_16_Fig12_HTML.jpg

图 16-12

具有衍生特征玩具数据的散点图

img/504530_1_En_16_Fig11_HTML.png

图 16-11

具有衍生特征 f2 = f1 2 的玩具数据

决策图表

决策树算法是另一种流行的监督机器学习算法,用于分类和回归问题。在讨论分类问题时,我们已经看到了决策树的一个例子。让我们用另一个例子来更详细地理解决策树算法。比方说,你正在为你组织的员工开发一个应用程序,它可以监控他们的健康状况,并在各种疾病发作时及时发出警告。这个应用程序的一个功能是指示用户是否有患心脏病的风险。在幕后,该应用程序将使用机器学习模型来预测用户是否有可能患有心脏病。你的工作是利用现有的数据来建立这个模型,这些数据包含了大致相同数量的健康人和心脏病患者。图 16-13 显示了我们将用于构建该预测模型的成人数据快照。表中性别吸烟状况直截了当。体重类别列可以有三个值之一:正常(表示该人处于其身高和性别的正常体重范围内)体重不足(表示该人低于正常体重范围)超重(表示该人高于正常体重范围)。锻炼栏显示该人是否定期锻炼。健康状况栏显示该人是否健康或有心脏病。我们将尝试构建一个简单的模型,该模型基于其他四列的值来预测目标变量健康状态的值,这四列是我们在本例中的特性。实际上,您可能希望使用更复杂的功能来构建一个非常精确的模型。

img/504530_1_En_16_Fig13_HTML.png

图 16-13

预测心脏病的数据快照

如果我们把这些特征和目标变量赋予决策树算法,它将建立一个决策树模型。决策树模型只是一棵树 6 ,其中非叶节点检查特征值,叶节点预测目标值。图 16-14 显示了决策树算法为之前的数据建立的决策树模型的局部视图。可以看到,模型检查第一个非叶节点中的行使特征的值,如果值为则向右 7 前进,如果值为则向左前进,如果值为则检查另一个非叶节点中的特征吸烟状态的值。如果吸烟状态的值是吸烟者,向右,如果值是不吸烟者,向左到一个叶节点。该叶节点预测目标值为健康。其他非叶节点和叶节点可以被类似地解释。

img/504530_1_En_16_Fig14_HTML.jpg

图 16-14

预测心脏病的决策树模型的局部视图

为了对新的观察结果进行预测,模型将简单地从根节点开始,沿着树向下遍历。在每个非叶节点,它将检查新观察的特征值,并采取相应的分支。它将继续这样做,直到它到达一个叶节点,并将最终预测对应于该叶节点的值。假设我们想要对一个不锻炼也不吸烟的超重男性员工进行预测(性别=男性,体重类别=超重,锻炼=否,吸烟状态=不吸烟)。图 16-15 中的红色箭头显示了该员工如何遍历树进行预测。模型将从根节点练习开始,走左侧8分支对应号。它将再次从节点吸烟状态中取出对应于非吸烟者的左分支,并从节点体重类别中取出对应于超重的最右分支。因此到达叶节点心脏病(在图中被红色矩形包围)并因此为雇员预测心脏病

img/504530_1_En_16_Fig15_HTML.jpg

图 16-15

遍历决策树以预测雇员的心脏病

让我们后退一步,理解为什么当一个人到达红色矩形内的这个叶节点时,模型会预测到心脏病。该模型从树结构中知道,如果一个人到达这个叶节点,那么他一定属于不锻炼、不吸烟的超重人群。该模型观察到,在提供的数据中,这一组中的所有人都患有心脏病。 9 所以模型很有信心地预测这个人有心脏病。类似地,如果一个人到达绿色矩形内的叶节点,模型知道他们一定属于锻炼的不吸烟人群,并且数据中该人群中的所有人都是健康的。因此模型自信地预测这个人是健康的。此处需要注意的重要一点是,在第一种情况下,模型自信地预测目标值为心脏病,因为他到达的叶节点对应于一个组(不运动、不吸烟的超重人群),该组在提供的数据中心脏病患者占非常高的优势。在第二种情况下,模型自信地预测目标值为健康,因为他到达的叶节点对应于一个组(锻炼的不吸烟的人),该组在提供的数据中健康的人占非常高的优势。因此,我们可以看到,为了能够自信地预测目标值,重要的是叶节点应该对应于一个类别(健康或心脏病)具有非常高优势的组。或者我们可以简单地说,叶节点需要有一个类的非常高的优势。

该算法使用像熵这样的度量来评估一个节点是否在一个类别中具有非常高的优势。正如前面提到的,红色和绿色矩形内的叶节点对应于特定的组,树中的每个节点对应于特定的组。例如,根节点右侧的节点对应于一组锻炼者。如果一个节点对应于一个组,在该组中,数据中 PH部分人是健康的,PHD部分人患有心脏病,则该节点的熵被定义为

熵=-PH×log2PH-PHD×log2PHD

如果一个节点具有非常高的健康人群优势,P H 将接近 1,P HD 将接近 0。由于 P H 接近 1,log 2 P H 接近 0,因此“-PH×log2PH接近 0。同样由于 P HD 接近 0,“-PHD×log2PHD”也接近 0。因此,熵接近于 0。如果一个节点具有非常高的心脏病患者优势,P HD 将接近 1,P H 将接近 0。使用熵方程很容易看出,在这种情况下,熵也将接近于 0。这意味着,当某一类占很大优势时,熵接近于 0。我们来看看没有一个类是占优的时候熵值是多少,也就是说,对于节点对应的组,数据中健康人的数量大致等于心脏病人的数量。因此,对于这种情况,P H 和 P HD 都接近 0.5,因此,我们可以使用熵方程计算熵:

熵=-0.5×log20.5-0.5×log20.5

= - 0.5 × -1 - 0.5 × -1

= 1

所以当没有阶级占优势时,熵接近于 1。因此,我们可以得出这样的结论:当一个类别占优势非常高时,熵非常低(接近 0),而当没有一个类别占优势时,熵非常高(接近 1)。因为我们希望叶节点具有非常高的一类优势,所以我们希望叶节点的熵非常低。

现在我们终于可以看看算法是如何创建树的了。该算法从对应于“所有”人的组的根节点开始,在我们的数据中,健康人和心脏病患者的数量大致相等。所以在根节点中没有一个类是主要的。然后,它将该特征上的根节点从特征集合中分离出来,对于该特征集合,子节点具有一个类别的高优势。因此它将挑选子节点具有最低熵的特征。然后对每个子节点重复这一过程,也就是说,它使用导致一个类别的高优势(或最低熵)的子节点的特征来进一步分割每个子节点。它继续这样做来建造这棵树。因此,该算法不断分裂,以创建一类具有高优势的节点。因此,当它到达叶节点时,将会有一个类的非常高的优势。这就是为什么先前红色矩形中的叶节点具有非常高的等级优势心脏病(如我们先前看到的,对应于该叶节点的人群只有心脏病患者,没有健康人),并且先前绿色矩形中的叶节点具有非常高的等级优势健康(如我们先前看到的,对应于该叶节点的人群只有健康人,没有心脏病患者)。正如我们前面看到的,一个类别在一个叶节点中非常高的优势使模型有信心预测该类别作为在预测期间到达该叶节点的人的目标值。

决策树模型还提供了对数据趋势和底层流程的洞察。例如,您可以通过查看决策树来判断,如果一个人锻炼并且不吸烟,决策树将预测此人是健康的,而不管此人的性别和体重类别。更具体地说,我们得到的重要认识是,如果一个超重的人锻炼并且不吸烟,他也可能是健康的。

决策树算法也很受欢迎,因为它适用于人们可能遇到的许多不同的场景。我们之前看到的示例没有任何数字特征,但是决策树算法也可以使用数字特征进行预测。我们在第四章看到了一个这样的例子,算法创建了一棵树,使用数字特征年龄来预测哪些感兴趣的客户可能会购买汽车还有,本节我们刚刚看到的例子是分类问题,但是决策树算法也可以用于回归问题。

随机森林

决策树算法的近亲是随机森林算法。随机森林算法也可以用于分类以及回归问题。我们看到由决策树算法创建的模型仅仅是一棵决策树。另一方面,由随机森林算法创建的模型是决策树的森林。因此,随机森林算法不是相信单个决策树的预测,而是形成一个由多个决策树组成的团队,每个决策树都对新的观察结果做出预测。来自所有树的预测被认为达到了新观察的最终预测。

对于分类问题,森林中的每棵决策树预测它认为新观察值可能属于的类别。换句话说,每棵树为新的观察推荐一个类。由最大数量的树推荐的类别被选为最终预测的类别。假设我们将上一节中健康人和心脏病患者的数据提供给随机森林算法,该算法构建了一个森林树。图 16-16 显示了这些树是如何合作预测一名新员工是否患有心脏病的。你可以看到 80 棵树认为这位新员工健康,20 棵树认为这位员工有心脏病。由于大量的树认为雇员是健康的,所以模型预测雇员是健康的。

img/504530_1_En_16_Fig16_HTML.jpg

图 16-16

新员工的随机森林预测

对于回归问题,森林中的每棵树都为新观察值预测一个数值。该模型对所有树的预测值进行平均,并将平均值作为新观测值的最终目标值返回。

如果您深入了解决策树算法从数据中学习并构建树的方式,您就可以理解为什么决策树经常过度拟合它所学习的数据。这意味着决策树通常能够很好地预测它用于学习的那些观察值的目标值,但是对于新的看不见的观察值可能不能很好地执行。随机森林算法解决了这个问题,并通过参考多个决策树来提高新数据的性能。

要查询多个决策树,随机森林算法需要首先从提供给它的单个观察和特征数据集创建多个决策树。该算法通过在构建每棵树时改变观察值和特征来做到这一点。对于每棵树,该算法从原始数据集中随机选择具有替换的观察值,直到创建与原始数据集具有相同数量的观察值的新数据集。由于算法是用代替,原始数据集中的一些观察值可能会被选择多次,而原始数据集中的一些观察值可能根本不会被选择。因此,新数据集将具有相同的大小,但包含不同于原始数据集的一组观察值。该算法重复这一过程来创建许多不同的数据集,每个数据集用于构建一棵树——这种技术被称为引导聚合打包。在类似的线路上,该算法还试图在构建每棵树时改变特征。当算法为任何树中的分割决定最佳特征时,它只查看特征的随机子集,并从该子集中挑选最佳特征,而不是查看所有特征。这进一步导致每棵树在其分裂中使用不同的特征。这个故事的关键是,每棵树都是以不同的方式构建的,因为每棵树都从不同的数据集学习,并为其分裂使用不同的特征。并且多个这样的不同树协作来提高性能。

梯度增强树

梯度提升树是另一种利用多决策树的流行算法。让我们在此讨论中仅关注回归问题,以了解该算法如何工作以及它与随机森林算法有何不同。随机森林算法构建多个相互独立的树,其中每个树学习预测数字目标值本身。对于新的观察,每棵树都试图预测目标值,并且对所有树的预测进行平均,以得到该观察应该预测的最终目标值。梯度提升树算法则按顺序创建树,其中第一棵树学习预测数字目标值,每个后续树学习预测前一棵树产生的误差。在预测新的观察值时,第一棵树预测一个数字目标值,随后的每棵树预测前一棵树产生的误差。这个想法是,如果您可以预测数字目标值,并且如果您事先知道预测中的错误,您可以针对这些错误进行调整以改进您的预测。

让我们看一个具体的回归例子来更详细地理解这一点。假设我们示例中的数据包含三个特征 f1、f2 和 f3 以及一个连续值目标变量 t ,如图 16-17 左上表所示。注意,存在 f1 为 5、f2 为 7、f3 为 2 并且对应的目标值 t 为 10 的观察值。我们的目标当然是建立一个模型,使用这三个特性的值来精确预测 target t 的值。如果我们将这些数据传递给梯度提升树算法,它将像前面提到的那样依次构建树。图 16-17 显示了一个简单的场景,其中梯度提升树算法使用该数据构建了两棵树。该算法采用准备好的带有特征和目标的数据(图中左上角的表格),并在左侧构建第一棵树,该树学习使用特征值预测目标值该算法现在使用第一棵树来预测现有观测值的目标值,这些值显示在左下表格预测 _t* 列中。*您可以在此表中看到,第一个树预测现有观察的目标值为 8,其 f1 为 5,f2 为 7,f3 为 2,而实际目标值为 10。所以第一棵树在这次观察中产生了 2 (= 10 减 8)的误差。

img/504530_1_En_16_Fig17_HTML.jpg

图 16-17

两棵树的梯度增强树

该算法现在构建第二个决策树,该决策树可以预测第一个树在预测目标值时将产生的误差。为此,该算法计算第一树对于每个现有观察值产生的误差,该误差是实际目标值和第一树预测的目标值之间的差(即,左下表格中的 t 减去预测 _t )。右上方的表格显示了第一棵树(在列error _ 1ST_ tree10)产生的误差,以及传递给第二棵树的现有观测值的特征值。该数据中的一行告诉第二棵树,当 f1 为 5,f2 为 7,f3 为 2 时,第一棵树产生的误差为 2。第二棵树使用这些数据来学习预测第一棵树将会犯的错误。一旦第二棵树学会了,就可以用它来预测第一棵树犯的错误。右下表格中的附加栏预测 _ 误差 _ 1ST_ tree显示了第二棵树预测的第一棵树对现有观测值产生的误差。例如,对于 f1 为 5、f2 为 7、f3 为 2 的观测值,第二棵树预测第一棵树将产生 1.7 的误差,而第一棵树产生的实际误差为 2。

现在树已经构建好了,预测新观测值的目标值就很简单了。假设我们有一个新的观察结果,它与原始数据中的现有观察结果非常相似(显示在上图的左上角表格中)。对于这个新的观察结果,f1 是 5,f2 是 7,f3 是 2。让我们看看梯度增强树如何使用这个新观测值的特征值来预测目标值,注意接下来解释的这个预测方法如何试图使预测的目标值接近这个新观测值的实际目标值(我们将假设新观测值的实际目标值也是 10,就像现有观测值一样,因为新观测值与现有观测值非常相似,但是这个实际目标值在实际场景中显然是未知的)。现在,对于这些特征值,第一棵树将预测目标值为 8(我们可以从上图的左下角表格中看出这一点)。现在用第二棵树来改进这个预测,使它更接近实际目标值。对于这些特征值,第二棵树将预测第一棵树的误差为 1.7(我们可以从上图右下角的表格中看出这一点)。现在将使用由第二树预测的第一树的误差来校正来自第一树的预测目标值,以获得将为该观察预测的最终目标值。因此,由第二树(1.7)给出的预测误差被添加到来自第一树(8)的预测目标值,以获得最终针对该观察预测的校正目标值(9.7)。因此,最终的预测目标值接近实际目标值(如前所述,我们假设其为 10)。

让我们看看如何进一步改进预测。我们在右下角的表格中看到,当 f1 为 5,f2 为 7,f3 为 2 时,第一棵树产生的实际误差为 2,但第二棵树预测的误差为 1.7。这意味着第二棵树本身对于这些特征值具有 0.3 的误差。因此,您可以配置算法来构建第三棵树,它可以预测第二棵树的错误。如图 16-18 所示。在图中可以看到,第三棵树从传递给它的数据中得知,当 f1 为 5,f2 为 7,f3 为 2 时,第二棵树产生的误差为 0.3。当第三棵树依次被要求预测第二棵树对这些特征值产生的误差时,它预测 0.25,如图所示。一旦建立了三棵树,当我们对新的观察值(其 f1 为 5,f2 为 7,f3 为 2)进行预测时,第一棵树将预测目标值为 8,第二棵树将预测第一棵树将产生 1.7 的误差,第三棵树将预测第二棵树将产生 0.25 的误差。因此最终预测目标值将等于来自第一树的预测目标值(8)加上第二树预测的第一树的误差(1.7)加上第三树预测的第二树的误差(0.25),等于 9.95。因此,第三棵树进一步帮助我们使最终的预测目标值更接近实际目标值(我们假设为 10)。

img/504530_1_En_16_Fig18_HTML.jpg

图 16-18

三棵树的梯度增强树

您可以配置算法,以类似的方式按顺序使用越来越多的树。甚至当你有许多树时,当预测一个新的观察值时,所有树的预测值相加,得到的和被预测为最终的目标值。这可以表示为一个简单的等式:

最终预测目标值=第 1 棵预测+第 2 棵预测+第 3 棵预测+第 4 棵预测+第 5 棵预测+ …

人工神经网络

人工神经网络(ANNs),或简称为神经网络,是最受谈论和赞美的机器学习算法之一,它基于大脑中生物神经元的功能方式。它们被用来解决最复杂的问题,也是全球广泛研究的目标。深度学习,正如我们在第一章看到的,是基于神经网络的。建立有效的数据科学实践的旅程可能会经历评估对人工神经网络的需求和建立专业知识的阶段。还存在特殊种类的人工神经网络,如卷积神经网络(CNN)、递归神经网络(RNN)等。,每一种都有一些独特的特征,使其特别适合于特定类型的问题。我们不讨论所有种类的人工神经网络,而是在这一节中着重于理解人工神经网络背后的一般原理,这将有助于我们理解它们与其他最大似然算法相比的优势和局限性。

我们的大脑由数十亿被称为神经元的相互连接的神经细胞组成。每个神经元从其他神经元接收信号,处理它们,并产生自己的信号,该信号进一步传递给其他神经元。类似地,人工神经网络由几个相互连接的人工神经元组成。每个这样的人工神经元从其他神经元接收输入,并进行一些计算以产生输出,该输出被传递给其他人工神经元。让我们重温一下我们在第六章中讨论的问题,我们的目标是根据邮件正文推断/预测邮件的类别。图 16-19 显示了我们在那一章中准备的数据的局部视图,其中包含每封电子邮件的一行。您可能记得,这些准备好的数据包含词汇表中每个基本单词的一个特征,还包含目标变量类别。电子邮件的特征值等于相应的基本词在该电子邮件中出现的次数。并且电子邮件的目标变量的值明显地指示了该电子邮件的类别。

img/504530_1_En_16_Fig19_HTML.png

图 16-19

电子邮件数据的功能和目标

我们将把单个目标变量类别转换成三个目标变量,分别对应于三个可能的类别:产品开发、研究工作和培训。图 16-20 显示了准备好的数据 11 已经被转换 12 为三个目标变量,可以在最后三列中看到。如果电子邮件属于某个类别,则该电子邮件对应的目标变量的值为 1,其他两个目标变量的值为 0。例如,图中第一封邮件属于类别产品开发,因此目标变量产品开发的值为 1,目标变量研究工作的值为 0,目标变量培训的值也为 0。现在让我们构建一个人工神经网络,它可以使用特征值来预测三个目标变量的值。

img/504530_1_En_16_Fig20_HTML.png

图 16-20

功能和新的目标变量

我们将建立一个具有简单和通用架构的神经网络,它由多层组成,每层包含一些人工神经元。一层中的神经元通常接收来自前一层神经元的输入,对其进行一些计算,并将结果传递给下一层中的神经元。图 16-21 显示了我们设计的神经网络,用于根据特征值预测三个目标变量。你可以在图中看到我们的神经网络有四层。输入层中的神经元将获取电子邮件的特征值,输出层中的神经元将预测该电子邮件的三个目标变量的值。通过使用更高级的功能/技术,可以在许多方面改进这个神经网络,但是如前所述,我们将主要关注基本原理,并省略这些细节。让我们通过这个神经网络来更深入地理解它。

img/504530_1_En_16_Fig21_HTML.png

图 16-21

我们预测电子邮件类别的神经网络

该图中的第一列是输入层,包含每个特征的神经元。注意有一个神经元用于特征上下文,一个神经元用于特征安全、等等。这一层中的每个神经元简单地接收电子邮件的相应特征值,并输出相同的值而不改变它。输入层中每个神经元的输出(正如我们刚刚看到的,它只是一个特征值)被馈送到隐藏层 1 中的所有神经元。因此,第一隐藏层中的每个神经元接收所有特征值作为输入。

隐层 1、隐层 2、输出层中的神经元与输入层中的神经元不同。这三层中的每一个神经元所做的事情与我们在逻辑回归中看到的类似。它计算其输入的加权和,加上偏差,并使用 sigmoid 函数将结果值转换为 0 到 1 之间的值。这可以表示为一个等式:

输出= f(b0+b1×IP1+b2×IP2+b3×IP3+…)

其中输出是神经元的输出,

f 是 sigmoid 函数,其定义与逻辑函数相同,

b0是偏置,

ip 1ip 2IP3…是对神经元的输入,

b 1b 2b3…是输入的权重。

因此,我们可以说,这三层中的每个神经元使用其权重列表(包括偏差)对其输入进行一些计算,以产生输出。并且将第一隐藏层中每个神经元的输出传递给第二隐藏层中的所有神经元。第二隐含层中每个神经元的输出传递给输出层中的所有神经元。注意,输出层有三个神经元,对应于三个目标变量。所以输出层的每个神经元输出邮件对应目标变量的预测值。

简而言之,我们可以说,神经网络在输入层获取电子邮件的特征值,并使用神经元的权重对这些特征值执行多次计算,以便在输出层预测三个目标变量的值。但是神经网络如何知道神经元中的什么权重值将从特征值中产生正确的目标值呢?神经网络从我们提供的数据中学习这一点,这些数据包含现有电子邮件的特征和三个目标变量。

让我们更详细地理解这一点。神经网络首先将所有神经元的权重初始化为某个值。 13 然后它会查看所提供数据中的第一封邮件,并将其特征值传递给输入层。将使用神经元的权重对不同层中的这些特征值进行计算,以产生三个预测的目标值。图 16-22 左侧显示第一封邮件的特征值,右侧显示网络的预测目标值。然后,神经网络通过将这些预测的目标值与从所提供的数据中已知的该电子邮件的实际目标值进行比较,来测量该电子邮件的预测误差。然后,它调整网络中神经元的权重,以减少这封电子邮件的错误。该图还描述了测量误差和调整权重的这些步骤。让我们仔细看看调整权重的过程。此邮件的预测误差取决于实际目标值和预测目标值。预测的目标值本身取决于该电子邮件的特征值和神经元的权重。因此,我们可以说,误差取决于特征值、神经元的权重以及电子邮件的实际目标值。由于该电子邮件的特征值和实际目标值在数据中是固定的,因此该电子邮件的误差最终是神经元权重的函数。 14 因此,神经网络可以使用类似于梯度下降的技术将权重从其当前值改变为新值,从而减小误差。

img/504530_1_En_16_Fig22_HTML.png

图 16-22

调整第一封电子邮件的权重

然后,神经网络执行这些调整权重的步骤,以减少所有其他电子邮件的错误(它对第一封电子邮件执行了该步骤)。有了新的权重,神经网络在预测现有电子邮件的目标值时应该会犯更少的错误。然后,神经网络再次重复调整所有电子邮件权重的整个过程,以进一步减少误差。它继续重复整个过程很多次,直到现有电子邮件的错误已经最小化。在这个阶段,对于现有的电子邮件,神经网络能够预测接近实际目标值的目标值。图 16-23 显示,如果你输入第一封邮件的特征值,神经网络现在预测的目标值接近实际目标值。因此,对于第一个现有电子邮件,网络预测目标变量产品开发的值接近151,研究工作的值接近 0,的值接近 0,培训的值接近 0。然而,真正的好处来自这样一个事实,即神经网络现在能够相当好地预测甚至是以前没有看到的新邮件的类别。 16 例如,如果新收到的电子邮件具有与第一封现有电子邮件相似的文本(因此具有相似的特征值),神经网络仍将预测目标变量产品开发的值接近 1,研究工作的值接近 0,培训的值接近 0。换句话说,神经网络将能够正确预测新收到的电子邮件属于类别产品开发。**

img/504530_1_En_16_Fig23_HTML.png

图 16-23

神经网络学习后对第一封电子邮件的预测

就像我们刚刚看到的,神经网络可能会在正确预测新收到的电子邮件类别方面做得很好。然而,与我们之前讨论的其他一些模型不同,网络并没有给我们一个简单的描述它是如何进行预测的。如果您还记得我们关于线性回归的讨论,您可能还记得线性回归模型为您提供了一个简单的等式,它解释了如何使用特征值计算目标变量的值。这个等式给出了许多关于潜在过程的见解。然而,对于神经网络,我们所知道的是许多神经元正在进行大量的计算,以达到预测的目标值。我们没有一个简单的图片来解释目标值与特征值之间的关系。

最后,让我们谈一谈神经网络的设计。对于这个问题,我们选择在我们的网络中有两个隐藏层。如果您决定使用神经网络来解决您的问题,您将需要决定您的网络应该有多少个隐藏层以及每个隐藏层应该有多少个神经元。我们不会在这方面做更多的讨论,但是建议研究一下用来决定合适的隐藏层和神经元数量的方法。

卷积神经网络

我们讨论了人工神经网络,并且在前面的章节中提到了几种特殊的人工神经网络。在本节中,我们将谈论一种特殊的网络,即卷积神经网络(CNN)。由于 CNN 的设计方式它们对与图像相关的问题非常有效(如图像分类),但最近发现它们对图像以外的问题也很有用。CNN 与我们之前看到的常规神经网络的主要区别在于它在常规神经网络的通常层之前放置了额外的层。

假设您的公司生产监控摄像机,现在您想要构建一个模型来判断摄像机近距离拍摄的照片属于人、动物还是车辆。这是一个图像分类问题,因为这里的目标是预测摄像机拍摄的图像属于三类(人、动物、车辆)中的哪一类。这个问题类似于上一节中的问题,我们希望预测电子邮件属于三个类别(产品开发、研究工作、培训)中的哪一个类别。因此,您可以构建一个常规的神经网络(类似于我们在上一节中看到的网络)来预测图像的类别。当您将输入层中图像的特征值传递给这个神经网络时,它也会在输出层中输出预测。但是如何获得图像的特征值呢?显然,您需要一些机制来从图像中提取特征值,以便您可以将它们传递给常规神经网络,让它进行预测。

或者你可以使用一个卷积神经网络(CNN) ,它不需要你明确地从图像中提取特征值。CNN 本身有额外的层,从图像中提取特征值,然后传递给常规的神经网络进行预测。图 16-24 显示了我们为预测监控摄像机拍摄的图像类别而设计的 CNN 的高级视图。CNN 将图像作为输入,通过卷积层和池层传递,如图所示。卷积层将包含权重的过滤器应用于图像——每个过滤器使用其权重来计算图像的一部分的像素值的加权和,从而产生该部分的计算值;该滤波器对图像的所有部分都这样做,从而产生一个计算值矩阵(如所解释的,包含图像每个部分的计算值),该矩阵被称为特征图。池化图层可缩小要素地图的大小-这通常是通过仅保留要素地图每个小块的最大值或平均值来实现的。图中的下一步是展平,将生成的特征图展平/转换成特征值的一维向量。如图所示,该特征值向量被传递到常规神经网络,后者在其最终(最右侧)层输出预测。

img/504530_1_En_16_Fig24_HTML.jpg

图 16-24

用于预测由监控摄像机拍摄的图像的类别的 CNN

这个 CNN 使用一个类似于我们之前讨论的常规神经网络的学习过程来学习正确预测图像的类别。CNN 将需要一组现有的图像和一个标签,以表明图像所属的类别。然后,它将计算这些值并将其分配给滤波器权重和神经元权重,从而为现有图像产生正确的预测。有了这些适当的滤波器权重和神经元权重值,CNN 也可以正确地预测新的看不见的图像的类别。这是跳过许多细节的学习过程的 10000 英尺视图。

由于除了常规神经网络的通常层之外,CNN 还有几层,因此在设计 CNN 时,您需要考虑一些额外的设计方面。参考 Chollet (2018)对这些方面的报道。你也可以探索现有的标准架构 17 ,看看是否有适合你的问题的。

评估和调整模型

我们之前讨论的 ML 算法从数据中学习来建立模型。现在让我们把注意力转向科学方法中的一个关键步骤:评估模型的性能。这也被称为模型测试。

实际上,模型评估和调优通常是齐头并进的。在这一节中,我们来看看如何评估和调整模型。

评估模型

为了客观地确定一个模型是否表现良好,我们需要检查它在不可见的数据上的表现,也就是说,不用于创建模型的数据。为了实现这一点,我们从原始数据集中留出一些数据用于测试;留出的数据称为测试数据,通常表示为总数据集的百分比。除了测试数据之外的所有数据都被 ML 算法用于训练模型,并被称为训练数据。因此,如果你听到类似“70-30 分割”或“我们留出 30%用于测试”,这意味着

数据集= >训练数据(70%) +测试数据(30%)

这样在训练数据上训练的模型被用于预测测试数据中观察值的目标值。通过检查这些预测目标值与实际目标值的接近程度来评估模型在测试集上的性能。例如,对于分类问题,我们可以检查测试集中有多少部分观察值具有与实际目标值相同的预测目标值。这被称为模型的精度。对于分类问题,还有许多其他度量来评估模型的性能,如精度、召回率、F1 分数、AUC、等。类似地,也有回归问题的度量标准,如均方误差、平均绝对误差、R 平方等。

这种训练-测试分裂是如何发生的,是确保数据科学过程(即科学方法)被正确和成功应用的最重要因素之一。我们已经看到了几个案例,声称已经创建了一个好的模型,但是该模型在生产中表现不佳——主要原因之一是在训练测试分割中忽略了一些东西。

根据数据的具体情况和要解决的问题,在如何进行训练测试分割时,可能需要仔细考虑几个方面。以下是一些常见的注意事项和细微差别:

  • 数据的分布:当训练测试分割完成时,确保测试集中数据的分布与原始数据集相似是很重要的。例如,考虑基于性别、吸烟状况等预测健康状况的例子。,我们在本章前面已经看到了。现在假设这个数据集中健康人的百分比是 80%,那么测试集中也有 80%的健康人是很重要的。然后,您可以依赖测试集作为真实世界数据分布的代表。

  • 数据分组:假设作为调查的一部分,你与不同的人进行了互动,其中你与每个人进行了一对一的临床会话。在每个会话中,您已经捕获了该人的多个语音记录,以及一个指示该人整体情绪(积极与消极)的标签。某个会话的标签适用于该会话中该人的所有录音,因此您的数据实际上包含录音及其标签。你现在的目标是根据一段录音来预测情绪,也就是它的调性。现在,如果你简单地做一个训练-测试分离,有可能给定一个人,这个人的一些记录将进入训练集,其他的进入测试集。当一个模型用这个训练集进行训练,并在这个测试集上进行评估时,你实际上是在测试那些用于训练的人。在这个测试集上的高性能并不保证在生产中的高性能,在生产中它会遇到不在我们的数据集中的新人。在这种情况下,重要的是一个人的所有记录完全在训练集中或完全在测试集中,也就是说,记录根据个人被分组,而被分配给训练和测试集。

在当今这个拥有高级 ML 库的时代,构建初始模型是相当快速和容易的。而是对数据的深刻理解,数据是如何收集的,等等。必须确保模型性能测试——科学方法的基石——得以正确进行。我们想重申的是,这些观点不仅仅与业余数据科学家有关;在需要实现业务成果的业务环境中,即使是大型团队中经验丰富的数据科学家也可能会忽略其中的一些内容。

调整模型

ML 算法通常提供各种“旋钮”来调整它们如何构建模型。例如,随机森林算法允许您指定树的数量、树的最大深度等。

用于指定训练应该如何进行的算法的“旋钮”或参数被称为超参数。并且确定导致最佳模型性能的超参数值的正确组合被称为超参数调整。例如,您可能会发现,在您的场景中,对于超参数值的组合(其中树的数量为 30,树的最大深度为 8,等等),随机森林具有最佳性能。

执行超参数调整的最简单方法是使用训练集训练具有各种超参数值组合的模型,并确定其模型在测试集上表现最佳的组合。并且选择对应于最佳组合的模型作为最终模型。然而,使用这种方法,我们最终通过看到测试集来选择最终模型——这严重违反了要求测试集是“看不到的”的科学方法。

为了解决这个问题,训练集通常被进一步分割以创建一个“验证集”,如图 16-25 所示。

img/504530_1_En_16_Fig25_HTML.jpg

图 16-25

训练-验证-测试分割

通过这种训练-验证-测试分离,我们将使用训练集和验证集(而不是测试集)来确定如前所述的超参数值的最佳组合。并且使用如此确定的最佳组合训练的模型最终在测试集上被评估性能。这确保了测试集上的最终模型性能实际上是基于看不见的数据。

请注意,在训练-测试分割过程中需要注意的许多方面也适用于训练-验证分割:例如,验证集中数据的分布是否适当等。

交叉验证

创建训练验证分割的概念可以进一步推广。例如,在创建了训练测试分割之后,让我们将训练数据分割成多个部分,称为“折叠”图 16-26 显示了这种产生三个折叠的分割。

img/504530_1_En_16_Fig26_HTML.jpg

图 16-26

将列车组拆分为三个折叠

然后,我们训练模型,依次将每个折叠视为验证集。也就是说,我们首先使用来自折叠 1 和折叠 2 的数据以及超参数值的各种组合来训练模型,并确定这些组合相对于折叠 3 作为验证集的表现如何。对于第二次和第一次折叠,我们重复这一步骤两次以上,每次使用选定的折叠进行验证,剩余的两次折叠用于训练。

然后,我们将知道哪种超参数值组合在所有三种情况下表现一致,并可以选择这种超参数值组合作为最佳组合。这种技术被称为交叉验证,并在更大程度上确保最佳超参数值的选择是通用的(即,不限于单个验证集)。

在交叉验证的情况下,重要的是确保折叠被适当地创建,因为每个折叠也将用于验证(即评估),例如,数据在所有折叠中的分布是适当的,一组的所有观察是单个折叠的一部分,等等。

在实践中,交叉验证这个主题有几种变体。如果在前面的过程中只使用了超参数值的一个组合,就会出现最简单的变化——在这种情况下,交叉验证只用于模型测试。更复杂的嵌套交叉验证策略对验证和测试数据使用多重折叠。

库和工具

有许多 ML 库;我们将只列举 Python 社区中几个流行的例子。注意,R 社区对各种 ML 算法也有类似的支持。

Python 中的 ML 库:

  • Scikit-learn 是 Python 中最广泛采用的 ML 库之一——它通常用于除深度学习之外的所有 ML 算法。

  • XGBoost 是最流行的梯度增强树库之一。

  • Keras(使用 TensorFlow 2.0)和 PyTorch 是两个广泛使用的深度学习库。

深度学习库通常需要 GPU 或 GPU 集群进行模型训练。像亚马逊、Azure 和谷歌这样的云服务可以用来按需加速 GPU。像 Horovod 这样的框架对于简化分布式深度学习很有用。

像 Hyperopt 和 Ray Tune 这样的库在高效的超参数调整方面很受欢迎。

在第十八章中,我们将会看到一些其他的高级视觉工具——多模态 PAML 工具——可以用于 ML。

数据工程

当处理训练模型的大量数据时,主要需要数据工程。

某些最大似然算法可以在一群机器上运行,以便更快地进行训练;在这种情况下,通过高效访问数据来调整和维护这些集群属于数据工程的范畴。

在深度学习的情况下,经常使用 GPU 集群。在这种情况下,需要建立基础结构,以确保数据访问的延迟不会成为训练模型的瓶颈。这项活动也属于数据工程。

结论

我们在这一章讨论了最大似然算法的种类,并且详细地看了一些最大似然算法。我们讨论了这些算法如何工作,它们如何进行预测,以及它们提供了什么样的见解。我们还讨论了模型评估和调优,并提到了一些流行的 ML 技术。下一章关注在生产系统中部署和使用 ML 模型进行推理。

进一步阅读

关于 ML 技术的覆盖范围,请参考 James 等人(2013)。关于 Python 中 ML 的动手示例,请参考 Géron (2019)。具体到深度学习,推荐 Chollet (2018)。

参考

弗朗索瓦·乔莱。用 Python 进行深度学习。美国纽约:曼宁,2018。

盖伦,奥雷连恩。用 Scikit-Learn 进行机器学习,Keras & Tensorflow,第二版。加利福尼亚州塞瓦斯托波尔:2019 年,奥赖利。

詹姆斯、加雷斯等人统计学习导论。纽约:施普林格,2013 年。

十七、推理

一旦在机器学习步骤中创建了模型,就需要将它们部署为现实世界流程和生产系统的一部分。这是在数据科学流程的推理步骤中完成的。

在推理步骤中,我们执行将模型推送到生产系统所需的任务,以便其他应用程序可以使用它们,并监控这些模型的性能。

图 17-1 展示了进入数据科学最后一英里的各种活动、技巧和技术。本章将详细介绍图 17-1 。我们首先介绍模型发布过程,在这个过程中,在内部实验中创建的模型被准备好推向生产系统。然后,我们介绍生产系统本身,包括模型是如何部署的,如何被应用程序用于预测/推理,以及如何被监控。我们将按照方框/箭头所示的数字顺序,从底部开始并向上移动,覆盖图表。在这样做的同时,我们将讨论每个活动中使用的各种组件、技巧和技术。然后我们将触及一些在选择开源和付费推理工具时要考虑的因素。最后,我们将提到推理中涉及的数据工程方面。

img/504530_1_En_17_Fig1_HTML.png

图 17-1

推论:步骤和组件;方框内的括号中提到了技术实例

模型发布流程(1)

当数据科学团队创建了一个模型并准备将其部署到生产环境中时,就会触发模型发布流程。这是推理步骤的起点。

模型发布过程将模型打包,以便它可以部署到生产系统中。让我们看一下模型发布过程中的每个组件和活动。

模型注册表

数据科学团队在机器学习步骤中创建的模型存储在模型注册表中。模型注册中心中的模型通常是版本化的。模型也有生命周期,例如,测试中的、生产中的等等。

MLFlow 是实现模型注册中心的一个流行的开源选择。它还允许将模型链接回创建模型的原始实验——这使得实验具有可追溯性和可再现性。

一些开发环境(参见第十八章)也提供了内置的模型注册中心。例如,Databricks 将 MLFlow 集成到其开发环境中。

模型转换器

数据科学团队创建的模型通常最初在他们使用的技术堆栈中表示,例如,如果数据科学团队使用 Python 和 ML 库,如 scikit-learn ,那么 Python pickle 文件将表示 ML 模型。pickle 文件将捕获,比如说,决策树的结构或者线性回归模型的方程。这个 ML 模型通常需要被转换成适合部署到目标生产系统的形式。

Model converter 涉及将 ML 模型转换成 interexchange 格式或目标系统,如移动/web 应用程序。让我们简要地看一下这两个选项以及何时使用它们。

交换格式

在各种编程语言中存在几个 ML 库和平台——我们在第十六章中看到了其中的一些。为了实现这些之间的互操作性,机器学习社区开发了 interexchange 格式。交换格式

  • 指定一种对编程语言和 ML 库不可知的 ML 模型表示

  • 用 Java、Python 等各种流行的生产系统语言提供推理运行时库。,来调用模型

  • 激励 ML 库开发人员提供能够以 interexchange 格式保存模型的 API

使用 interexchange 格式的优点是,尽管数据科学家可以使用任何 ML 库用一种语言(比如 Python 或 R)构建模型,但转换后的模型可以使用适当的推理运行时库在各种生产技术栈(比如 Java、Python、JavaScript 或 Swift)中轻松调用。

经典的 PMML 2 和最近的 ONNX 3 是流行的交换格式的两个例子。根据我们的经验,ONNX 是目前的首选,因为它支持广泛的 ML 模型,并与多种语言(Python、R 等)的大量流行 ML 库 4 集成。).

目标系统

在某些情况下,一个模型可以被直接转换为针对一个特定的生产系统, 5 而不需要使用 interexchange 格式。如果 ML 库技术栈在数据科学和软件工程团队中是标准化的,这是可能的。例如,如果 TensorFlow 作为跨团队的标准,那么 TensorFlow 模型可以使用 TensorFlow Lite、Tensorflow.js、等进行转换。针对移动/web 应用等系统,其中模型必须直接在用户的设备/浏览器上执行。 6

模型包装

模型 打包包括从转换后的模型中创建一个可部署的工件。工件的类型取决于模型是部署到服务器还是最终用户的系统(例如,移动应用程序/web 浏览器)。

  • 当一个模型被部署到推理服务器(1.1)时,那么工件的类型可以是 AWS Lambda 函数、Docker 容器等。

  • 当一个模型要被部署到一个移动或 web 应用程序(1.2)上,以便它在用户的移动设备或浏览器上运行时,那么工件将是一个可以在移动或 web 应用程序中使用的 Android/iOS/JavaScript 模块或库。

在这两种情况下,转换后的模型(例如,ONNX 模型)作为工件的一部分被包括。 7 这个工件然后被部署到生产系统(1.1,1.2)——模型然后可以被应用程序调用,我们接下来将会看到。

生产

数据科学团队创建的模型由生产系统中的应用程序使用。我们现在来看看这些应用程序通常如何调用已经部署的模型。

推理服务器(2)

最常见的场景是将模型公开为 REST APIs,这样任何应用程序都可以调用它们(2.1)。您还需要监视模型在生产中的表现,以确定模型的性能是可接受的还是随着时间的推移而恶化。我们将封装这些职责的组件称为推理服务器

让我们简要介绍一下推理服务器的这两项职责。

推理/预测服务

这指的是公开模型的服务(最常见的是 REST APIs)。通常,数据工程师或软件工程师可以很容易地在打包的模型上实现 REST API 层。

但是如果有大量的模型,或者如果您需要快速扩展到几千个并发请求的能力,等等。,你可能会考虑使用亚马逊 Sagemaker 推论、Seldon、Algorithmia 等服务。根据我们的经验,我们也发现无服务器技术相当合适。例如,Amazon API Gateway 与 AWS Lambda 的结合是一种经济高效的方式来部署可以轻松扩展的模型。

模型监控

要了解模型的有效性,您需要知道模型给出的预测何时证明是正确的或不正确的。让我们参考第四章中关于分类的例子——根据预期销售是否实现,我们可以确定模型给出的预测是否正确。通常生产中的模型会随着时间的推移开始漂移,也就是说,越来越多地开始给出不正确的预测。尽早发现这一点并修复/升级模型至关重要。

为此,需要存储模型生成的所有预测,以供数据科学团队将来分析。此外,每当我们知道真实的结果时,我们也应该存储它,以便可以检测到模型漂移。该数据还将有助于确定新的候选模型与旧模型相比如何。

模型监控通常与某种形式的 AB 测试相结合,也就是说,同时部署两个或更多的模型变体,并且将一定百分比的推理请求路由到每个变体。通过分析每个变体在生产中的表现,我们可以确定哪个变体是最好的,并将其用作主要模型,也就是说,将大多数推理请求路由到它。

图 17-1 中提到了一些专注于监控模型的云服务。

从模型监控中获得的数据也用于数据科学过程的进一步迭代中——我们将在“数据工程”一节中再次讨论这一点。

移动和网络应用(3)

这广义上是指由您的公司构建的应用程序以及希望使用您的模型的第三方应用程序。应用程序调用模型有两种典型的方式:

  1. 应用程序将调用推理服务器公开的 API,使用模型获得预测(2.1)。

  2. 这些模型被集成到您的移动或 web 应用程序(1.2)中,这样这些模型就可以直接在用户的移动设备/web 浏览器上运行。这些通常是需要低延迟和/或移动应用需要能够在没有互联网连接的情况下离线运行的情况。示例包括在在线会议期间实时抑制音频噪声 8 或者从用户移动设备上捕获的语音中检测用户的健康状况。

ML 操作

在生产中发布和维护模型的规程被称为 ML Ops。这在过去的几年中已经发展成为一门学科,并且广泛覆盖了模型发布过程推理服务器的模块。

相应地,专门的 ML Ops 角色也越来越多地出现在数据科学团队中——我们将在第二十一章中更详细地了解这一角色。

开源与付费

一些组织开始采用数据科学,并在将模型部署到生产系统时面临困难。因此,在这个快速扩张的空间中有大量的工具和云服务。

对于推理步骤,我们建议尽可能使用开源框架,或者使用具有开源策略的工具。

例如,您可以从使用 MLFlow 进行模型注册、使用 ONNX 进行模型转换、使用 Docker 进行模型打包以及使用简单的定制部署进行推理服务开始。

在早期阶段,您可以简单地将模型预测直接存储到数据湖或数据仓库中。在某个时候,你会开始有几个模型投入生产,并且大规模地部署和监控这些模型变得越来越重要。

一旦你到达一个阶段,一个更高级的工具似乎对所有这些活动更有效,你就可以考虑使用一个付费的工具,可能是一个开源策略。您可能希望从以增量方式为某些组件采用新工具开始。例如,你可以开始使用开源的谢顿 10 用于模型发布过程推理/预测服务,然后在适当的时机采用他们的企业解决方案 11 ,该解决方案也覆盖了整个推理服务器

数据工程

推理步骤中的所有活动都可以被认为是数据工程的一部分。当生产中的型号数量增加,团队壮大时,如果需要,可以分离出一个小型的专业 MLOps 组。详见第二十一章和第二十二章。

此外,从数据工程的角度来看,从模型监控中捕获的数据与其他数据是同等的,也就是说,模型监控系统是另一个数据源。在这里,我们回到数据科学过程的数据捕获步骤——关于模型给出的预测及其性能(根据真实结果评估)的数据用于数据科学过程的进一步迭代,以调整和升级模型。

结论

在这一章中,我们讨论了数据科学过程中推理步骤所涉及的各种活动。我们还涉及了一些工具和库,它们通常用于各种特定目的的活动中,并涵盖了一些与在开源和付费工具之间进行选择相关的要点。

生产中模型的预测和性能实际上是数据科学过程的数据捕获步骤的新数据源。这个循环形成了我们在第一章中首次看到的数据科学过程的最大迭代——从数据捕获到推理,再回到数据捕获。

十八、其他工具和服务

在这一章中,我们将会看到各种各样的工具、库和服务。这些通常会贯穿我们在前面章节中看到的所有层,所以我们在本章中会单独讨论它们。

并非所有的工具总是必不可少的;我们在下面的列表中包括了基本的和有用的工具。重要的是从小处着手,通过添加更复杂、更先进的工具来提高生产力,从而逐步发展——在这一发展过程中,了解本章中各种类别的工具、库和服务将会很有帮助。

发展环境

数据科学家和数据工程师使用 dev 环境来编写数据科学过程中从数据捕获到机器学习的所有步骤的代码。如果你只是从一两个数据科学家开始,并且你能够以 CSV 文件的形式向他们提供数据,他们可以简单地在他们各自的机器上使用他们选择的 IDE 1 进行分析,例如 Spyder 或 RStudio。但是,数据科学团队通常在高度协作的环境中工作,在像笔记本这样的环境中编码,这些笔记本位于一个共享位置,以便与团队的其他成员进行讨论。理想情况下,笔记本还应该支持多名数据科学家同时进行协作编辑。

Jupyter 笔记本是数据科学家最常见的环境。其他流行的环境有 Databricks、Sagemaker Studio、JupyterHub 和 Zeppelin。其中一些允许在单个笔记本中混合使用 R/Python/SQL,如果您的数据科学团队混合使用这些技能,这将非常有用。

开发环境还应该允许数据科学团队注册通用的标准库,以确保整个团队使用不同库的相同版本。

在第十九章中,我们将会看到一个开发环境是如何与所有其他组件结合使用的。

实验注册

实验注册表是存储数据科学团队执行的所有实验的地方。实验注册中心需要支持以下内容:

  • 存储参数、图表、指标等。,其中包含一个实验的细节。

  • 使用标签/关键字等搜索实验。

  • 根据参数和结果比较多个实验。

  • 维护用于执行实验的笔记本/源代码版本的链接。这对于追踪血统和能够复制实验是至关重要的。

  • 将模型存储在模型注册表中2;模型注册表中的每个条目都将链接到原始实验,以允许将模型追溯到实验以及相应的源代码和数据。

MLFlow 是一个流行的开源实验注册表,它提供了上述功能。一些开发环境捆绑了一个实验注册表作为其产品的一部分。 3

实验注册中心充当组织中数据科学团队所有活动的中央长期存储库。因此,保持数据科学团队的业务连续性至关重要。通过存储所有实验和谱系的历史,它还通过允许实验的回顾和再现来帮助确保必要的科学严谨性。

计算基础设施

在数据科学团队的运营中,计算资源有三大用途:

  • 提供服务器来托管开发环境。例如,这包括一个 JupyterHub 服务器,它可以根据团队的需求和规模进行扩展。在云托管的环境中,如 Databricks,这可能由服务提供商负责。

  • 为执行数据科学团队编写的笔记本/脚本提供计算资源。这包括任何可扩展的集群(如 Spark 集群)、GPU 机器等。,用于数据科学过程中的数据准备和机器学习步骤。

  • 为托管可视化工具 4 (例如 Tableau)和 SQL 查询引擎 5 (例如 Presto)提供服务器。

计算资源可以属于以下任何类别:

  • 单独的机器(本地的物理机器,或者像 AWS Ec2 这样的云服务)。通常用于

    • 数据科学指数据可以放在一台机器上

    • 托管服务器或第三方工具

  • Spark 等计算集群(内部部署,或 Databricks 或 Amazon EMR 等服务)

  • GPU 机器(单个或多个 GPU)

  • 使用 Horovod 等框架的 GPU 集群

  • Amazon ECS 等容器托管服务。 6 通常用于打包为 Docker 容器或可使用 Docker 部署的工具/库的复杂 ML 作业

AutoML

人工智能的动机之一是自动化大量由人类完成的重复性工作。如果我们的目标是让数据科学家的工作自动化,会怎么样?这是 AutoML 的愿景。

从原始意义上来说,数据科学家是做什么的?他们仅仅尝试各种数据准备操作,并尝试具有不同参数设置的各种模型,以达到最佳模型。如果一个算法只是简单地强行尝试所有流行的模型,如 XGBoost、LinearRegression、NeuralNetworks、 7 等等,会怎么样?我们已经开始看到 AutoML 的基础了。

当然,运行各种模型和神经网络架构并不是一件容易的事情。AutoML 解决方案采用几种先进的技术和启发式方法来优化搜索,以获得一个好的模型。

AutoML 的目的

AutoML 有两个主要用途:

  • 民主化数据科学:AutoML 服务允许,比如说,软件工程师在不了解数据科学的情况下使用数据科学的力量。在某种程度上,AutoML 对于现在的数据科学,就像 SQL 对于 20 世纪 80 年代以来的数据处理一样。就像 SQL 允许编程技能较低的人以声明方式查询数据一样,AutoML 开始允许工程师通过自动化数据科学过程中的许多具有挑战性的步骤来将科学方法应用于数据。

  • 自动化数据科学家的重复任务:数据科学家需要做大量的手动调优和微小变化的重复实验。他们还经常执行模型扫描,即使用各种候选建模方法进行实验,以缩小有前途的继续研究的范围。在所有这些领域,AutoML 可以通过自动化这些重复的任务来帮助数据科学家。从这个意义上说,AutoML 对于数据科学家就像 SQL 对于软件工程师一样——软件工程师不需要声明性语言;他们可以编写查询数据所需的复杂程序。但是尽管如此,SQL 通过自动化高效查询多个表中的数据等重复性编程任务,使他们的工作变得更加容易。

小心翼翼

在使用 AutoML 时小心谨慎是很重要的。如果团队中有人正在使用 AutoML,那么他们知道如何评估模型性能是很重要的,这样他们就可以确定结果模型是否足够好。他们还需要完全理解输入 AutoML 的数据和问题本身的表述(哪些是目标变量,哪些是特征,等等。).拥有这些技能的人现在被称为 ML 工程师——更多细节请参考第二十一章。

AutoML 并没有减少对领域理解的需求——特别是在识别正确的特性和一些特定领域的数据准备步骤时。例如,您的目标可能是预测某个地区各个加油站的燃料库存何时需要补充,这样您就可以优化从主码头到加油站的燃料配送。在这种情况下,乍一看,我们似乎需要预测一个加油站的库存。但库存通常不会有一个明确的模式——更有可能有一个模式的是加油站的销售。销售可能取决于一周中的某一天、某一天是否是假日、天气等等。一旦我们有了一个可以预测销售的模型,我们就可以根据当前的库存和未来的销售来推断未来的库存。从未来的库存,我们可以确定什么时候库存会低,需要补货。即使一个人正在使用 AutoML,这种问题公式化仍然需要由数据科学家或 ML 工程师来完成。

虽然 AutoML 可以完成一些数据准备方面的工作,如标准化或缺失值处理,但 AutoML 的主要重点是自动化机器学习步骤。人类仍然需要执行数据科学过程的其他步骤。

工具和服务

AutoML 工具和服务有多种风格。我们在这里提到一个分类:

  • 开源库,如

    • Auto-sklearn,它构建在 scikit-learn 之上,提供 AutoML 功能

    • 亚马逊开源的自动增长

  • 亚马逊 Sagemaker Autopilot、谷歌云 AutoML、Azure 机器学习等云服务都支持 AutoML。除了机器学习步骤,它们还可以在不同程度上支持数据准备步骤,例如,文本、图像等的特征化。

一些工具可能以自动化的方式支持超参数调优,并将其称为 AutoML。由于术语 AutoML 在市场上没有明确的定义,因此检查声称提供 AutoML 的工具或服务的详细功能非常重要。

多模态预测分析和机器学习

多模态预测分析和机器学习(PAML) 8 工具提供高级功能,以支持大数据规模的端到端数据科学流程。这包括

  • 能够在可视化的无代码 UI 中定义数据准备和机器学习工作流。

  • 数据科学家和数据工程师将自定义代码插入可视化工作流的挂钩。

  • 为喜欢编码的数据科学家集成笔记本。

  • 能够与其他团队成员分享实验及其结果。这可能还包括各种角色,如编辑、审阅者等。

  • 跨实验跟踪数据谱系,以支持审核、实验的可重复性和可追溯性。

  • 无缝地将模型部署到生产环境中,而无需编写额外的代码。

  • 监控生产中的模型,AB 测试等。

一方面,多模式 PAML 工具在开箱即用方面有很大不同,另一方面,在多大程度上允许定制方面也有很大不同。

SAS 可视化数据挖掘和机器学习(VDMML)结合 SAS Viya 产品套件是目前市场上最全面的 PAML 工具之一,支持前面提到的所有功能。

KNIME Analytics Platform 是一个开源工具,支持为整个数据科学流程可视化地定义数据科学工作流。KNIME Server 是一个付费的企业工具,支持工作流的协作和交互执行。

如果有市民数据科学家 9 和数据分析师与数据科学团队一起工作,多模态 PAML 工具会特别有用。

根据我们的经验,虽然多模式 PAML 工具可以提高大多数常见实验流程的效率,但当涉及到实验设计中高度复杂的变化时,它们往往会成为一个障碍。采用多模态 PAML 工具的决定不容轻率——需要考虑各种因素,以确保它们提高生产力和协作,而不是减慢数据科学家的速度。这个决定通常是针对您的团队组成和业务需求的。如果您的团队确实需要低代码/无代码的数据科学工具,那么从像 KNIME Analytics Platform 这样的开源选项开始通常是一种谨慎的方法——基于其采用和有用性,可以考虑更昂贵和更高级的选项。

数据科学应用/工作流

人们通常认为数据科学团队是在孤岛中运作的。这种感觉通常是因为数据科学团队公开的主要成果是在数据科学团队之外无法轻松使用的模型,例如,当软件工程师甚至需要在模型之上构建原型应用程序来展示模型的功能时。

这种情况的主要原因是技术堆栈的不匹配——虽然数据科学家使用 R 和 Python 等语言,但创建原型应用程序来展示模型需要 JavaScript、web 服务器、REST APIs 等经典 web 应用程序技能。为了解决这个问题,我们在当今的行业中看到了几种方法 10 :

  • 使数据科学家或数据工程师能够使用他们熟悉的技术快速创建能够调用其模型/脚本的原型应用。Plotly Dash 和 Bokeh 就是这样的例子——它们允许只使用 Python 代码快速构建 web 应用程序的原型。 11 因此,数据科学家/工程师创建的任何模型/可视化都可以直接插入,以快速创建交互式 web 应用。

  • 对于使用可视化工作流工具的数据科学团队,可以使用引导式分析工作流来公开模型。数据科学家/工程师创建的这些工作流可以使用用户在 web 应用程序上的输入来交互执行。KNIME 服务器就是一个例子。

这些方法使数据科学团队能够将其他利益相关者、数据分析师和公民数据科学家纳入数据科学流程。

现成的人工智能服务和图书馆

有几个人工智能服务和库面向特定类别的问题:

  • 在某些情况下,比如时间序列预测或推荐系统,模型取决于你的特定数据——所以这些服务使用你的数据训练模型,然后提供用于推理的 API。

  • 在其他情况下,例如与处理图像、文本、语音等相关的问题。,这些服务直接提供了用于推断的 API,因为它们已经使用自己的数据训练了模型。这是因为,例如,文本的情感或人脸的情感普遍适用于任何数据集。这些库/服务通常也允许使用您的训练数据来定制模型。

表 18-1 中提到了一些流行的人工智能服务和库。

表 18-1

人工智能服务/库的例子

|

问题类别

|

服务/图书馆示例

|
| --- | --- |
| 时间数列预测法 | 先知,亚马逊预测 |
| 推荐系统 | 亚马逊个性化,谷歌推荐 |
| 自然语言处理 | 亚马逊理解,Azure 文本分析,谷歌自然语言 |
| 计算机视觉 | Amazon Rekognition、Azure 计算机视觉、Azure 媒体视频分析器 |
| 语音处理 | 亚马逊转录/Polly、Azure 认知语音服务、谷歌语音转文本 |

除此之外,还可以找到许多特定领域的库,如医学成像等。通常情况下,您会希望了解您的领域中是否存在这样的库/服务——最好是开源的——供您利用。

有效使用这些 AI 服务和库所需的技能与使用 AutoML 所需的技能类似。因此,ML 工程师——我们在前面的 AutoML 部分遇到过——通常也是利用 AI 服务/库的理想人选。

何时使用

如果你正在构建一个涉及到表 18-1 中所包含的一类问题的应用程序,谨慎的做法可能是从使用一个相应的服务开始。与您自己从头开始构建模型相比,这可能需要更少的投资。它还可以加快您的上市时间,让您专注于将应用程序的基本功能提供给用户。如果您希望使用前面提到的一些功能来自动化您组织中的一些流程,这同样适用。

虽然我们可以在很大程度上依赖这些服务,因为它们被几个组织使用,但不能保证它在您的特定业务和领域中的表现如何。因此,在任何情况下批判性地评估模型的性能都是很重要的。

如果您的产品或应用程序旨在通过利用您自己的领域专业知识和数据在市场中脱颖而出,那么创建您自己的模型是有意义的。在这种情况下,使用前面提到的服务作为基线基准仍然是有用的。

对于云服务来说,最后一个需要考虑的方面是安全性。阅读细则很重要——一些云服务可能会使用您的数据来不断改进他们的服务,您可能需要明确选择退出。

开源与付费

正如我们在前面章节中看到的,数据科学领域很大程度上基于开源库和框架。

虽然付费工具可以提供各种好处,但不要被某个工具或供应商所束缚,这对数据科学来说尤其重要。这样做会降低运营的灵活性,还可能限制你招聘的人才库。

选择一个构建在开源技术之上的工具通常是一个很好的折中方案。这使您能够限制供应商锁定的程度,同时使用付费工具的功能来提高生产率。Databricks 平台就是一个做得非常好的工具。

  • Databricks 笔记本可以轻松地从开源 Jupyter 笔记本导出/导入。

  • Databricks 计算集群基于开源的 Spark。

    • Databricks 查询引擎使用开源的 SparkSQL。
  • Databricks 集群预装了流行的开源 ML 库。

  • Databricks Delta 基于开源存储层 Delta Lake。

  • Databricks 中的实验和模型注册基于开源的 MLFlow。

各种其他工具在不同程度上遵循类似的开源策略。如果您决定选择没有开源战略的付费工具,那么这是一个重大的战略决策,需要强有力的支持,具体到您的业务和数据科学团队。

结论

在本章中,我们看到了在数据科学流程的多个步骤中使用的各类工具。

在这一章中,我们总结了技巧、工具和技术。在下一章中,我们将看到一个参考架构,它说明了到目前为止,第三部分中讨论的各种技术是如何在执行整个数据科学过程中结合在一起的。

十九、参考架构

到目前为止,我们已经介绍了数据科学团队用来执行数据科学流程各个步骤的各种工具和技术。在本章中,我们现在将了解一个参考体系结构,该体系结构可以定制并用于您的数据科学团队的运营。该参考体系结构汇集了我们迄今为止看到的各种工具和技术,使数据科学流程能够进行快速试验和部署。

图 19-1 显示了参考架构。我们已经在第三部分的前几章中介绍了各个组件——本章将介绍它们是如何组合在一起的。

需要注意的是,并非所有的块都是必要的,这取决于数据科学项目的种类和数据科学文化,不同的块会随着时间的推移而发展。但是最终一旦你的团队达到一个成熟的水平,几乎所有这些模块都是需要的。

在高层次上,数据科学有两个方面,如图 19-1 所示:支持数据科学实验活动的系统和使用数据科学团队创建的模型的生产系统。

在本章中,我们将详细浏览图 19-1 。我们将首先看实验方面,然后是从实验到生产的过渡。一般来说,我们将按照方框/箭头所示的数字顺序浏览各个模块。

img/504530_1_En_19_Fig1_HTML.png

图 19-1

支持数据科学运营的参考架构

实验

在本节中,我们将介绍与数据科学团队的实验活动相关的各种组件。

开发环境(1)

我们在第十八章中简要介绍了开发环境。在这里,我们将了解更多关于开发环境如何与参考体系结构中的所有其他组件一起使用的细节。

(1.1)开发环境应允许无缝访问核心基础架构:

  • 数据湖/数据仓库中的所有数据都应该可以使用 SQL、pandas、Spark 等常见机制进行访问(通过访问控制)。

  • 数据科学家应该能够根据需要扩展计算能力。这包括扩大/缩小单台机器,也可能包括一个机器集群,具体取决于数据大小和分析类型。

  • 数据科学家应该能够轻松地在实验注册表中注册他们的实验,以及数据的候选模型和谱系。

(1.2)如果您有一个使用 SparkSQL 或 Presto 等查询引擎的大数据设置,那么数据科学团队应该能够使用该查询引擎运行 SQL。

(1.3)如果数据科学团队使用简单的应用程序或工作流向其他内部利益相关方公开一些模型,那么最好能够在开发环境和这些应用程序/工作流之间实现集成。例如,KNIME Server 可以像我们在第十八章中看到的那样用于此目的,它允许使用 REST APIs 调用工作流——这样的 API 可以从开发环境中调用来执行工作流。

(1.4)数据科学团队可能需要在云上访问 AutoML 服务,如亚马逊 Sagemaker Autopilot、谷歌云 AutoML 等。

数据来源(2)

可能有几个相关的内部和外部数据源。我们已经在第十三章中讨论过这些。

来自这些多个数据源的数据被摄取(3)到中央数据湖/数据仓库(如 4 所示)中,供数据科学团队进行分析。

摄入(3)

我们已经在第十三章中探讨了与摄入相关的方面。摄取的目标是让数据在数据湖或数据仓库中以合理组织的形式可用(在 4 中)。

核心基础设施(4)

这是实验沙盒基础设施的核心,所有其他系统都基于它。概括地说,这包括数据存储、计算和实验注册组件。

我们已经在第十三章中介绍了数据存储,即数据湖、数据仓库和共享文件系统。

我们已经在第十八章中介绍了计算基础设施和实验注册。

分析(5)

数据科学家的大量数据分析可能会在使用核心基础架构(4)的开发环境(1)中进行。但是,在处理大数据的规模稍大的团队中,开始感受到以下需求:

  • 如果团队中有一名数据分析师或公民数据科学家 1 可能没有很好的编程技能,使用可视化分析工具可以提高生产率。使用这些工具创建的可视化可以使用查询引擎或直接从数据湖/数据仓库(4.1)获取数据。我们在第十五章中讨论了数据可视化和 BI 工具。

  • 数据工程师或数据科学家可能会编写批处理作业,自动执行从数据准备到机器学习的步骤。这些可以产生转换的数据或分析结果,这些数据或分析结果被写回到数据湖/数据仓库(4.1)。批处理作业也可以执行 ML 实验,在这种情况下,实验细节被写入实验注册表(也是 4.1)。

  • 如果您的基础架构不包括数据仓库,而您的数据科学家/分析师更喜欢使用 SQL,那么可能需要一个查询引擎来提供 SQL 支持。查询引擎能够从数据湖和数据仓库(4.1)中的多个数据集过滤/聚集数据。我们已经在第十三章中看到了查询引擎。

数据科学应用/工作流(6)

我们在第十八章中介绍了数据科学应用/工作流。注意到

  • 这些应用程序/工作流中使用的模型通常从模型注册中心(6.1)获取。

  • 通常使用分析查询引擎(5.1)访问应用程序/工作流所需的任何数据。

  • 可视化分析也可以嵌入到数据科学应用程序/工作流中(5.1)。

自动语言(7)

AutoML 服务包含在第十八章中。所使用的 AutoML 服务需要访问用于训练 AutoML 模型的数据。

如果您计划使用 AutoML 服务,但拥有本地核心基础架构设置(4),您的 IT 团队可能需要帮助您的数据科学团队从他们的开发环境中使用 AutoML(1.4)。

讨论了实验方面之后,现在让我们看看需要哪些步骤/组件来确保数据科学家创建的模型能够作为生产系统的一部分出现。

从实验到生产

当数据科学团队创建的模型将被部署到生产系统时,模型发布过程(8)被触发。在第十七章中,我们已经介绍了这个模型发布过程以及随后的推理服务器(9)和移动/网络应用程序(10)。

模型生成的预测将被存储回我们的数据湖(9.1)中,用于监控和未来分析——这也在第十七章中有所涉及。

人工智能服务

人工智能服务(11),如语音处理、计算机视觉、时间序列预测等。,都包含在第十八章中。这些服务通常以 API 和 SDK 的形式公开,可以直接从移动或 web 应用程序中调用(10.1)。

通常,数据科学团队 2 会进行一些实验,以评估人工智能服务在用于生产之前是否适合您的特定用例——这就是为什么我们将人工智能服务组件描述为跨越实验和生产系统。

结论

在本章中,我们介绍了一个可以根据您的特定需求进行定制的参考体系结构。我们还讲述了如何使用该参考体系结构中的各种组件来支持数据科学流程。

我们将在第二十三章中再次讨论参考架构——在那里,我们将了解数据科学项目的类型如何影响对参考架构各个模块的需求。

二十、僧侣与牛仔:实践

在第三章中,我们首先看了数据科学的两种文化,以及如何确定哪种文化可能与手头的问题和您的总体业务更相关。现在,我们已经介绍了数据科学过程的各个步骤中使用的各种技术,我们准备好了解两种文化在实践数据科学的方式上有什么不同。这是本章的重点。

理解实践中的这些文化差异在三个方面是有用的:首先,这可以使您确定您的数据科学团队将会并且应该使用哪些技术来符合期望的文化-这将在本章稍后的图 20-1 中说明。

第二,当你建立团队时,你可以试着加入数据科学家,他们倾向于你的企业所期望的文化;本章总结的文化差异将有助于确定候选数据科学家主要属于的文化。在组建数据科学团队的背景下,我们将在第二十二章中再次讨论这个方面。

第三,在可解释性的背景下,对本章所涵盖的目标和技术的更深入的理解对于法规遵从性也是有用的。我们将在第二十三章中讨论这一点。

因此,在这一章中,我们将详细阐述这两种文化如何在实践中进行建模——这主要与数据科学过程的机器学习步骤有关,在某种程度上,也与数据准备步骤有关。在实践中,主要的区别就在于这两个步骤。

我们将从创建数据科学模型的目标的简要、稍微正式的概述开始。然后,我们将总结各种 ML 技术如何实现这些目标,以及每种文化认为相关的目标。这有效地提供了一个框架来确定两种文化通常偏好的技术。最后,我们将对表 3-1 进行扩展,以包括两种文化在实践中看到的差异。

请注意,在本章的其余部分,我们会提到第十六章中涉及的各种 ML 技术。您可能会发现,在需要时回顾该章会有助于加深您对某项技术或其某些细节的理解。

建模的目标

回想一下第三章,模型的主要目的是

  • 通过估计潜在的真相来解释观察结果:这可以进一步分解为两个粒度目标,简单表示归因。

  • 预测未来观测值:这可以进一步分解为两个粒度目标,预测的可解释性预测的准确性。

在这一节中,我们将通过几个例子来描述这四个目标,这些例子展示了各种技术是如何帮助实现每一个目标的。

估计真相:简单的表现

真理总是在简单中被发现,而不是在事物的多样性和混乱中。

——艾萨克·牛顿爵士

我们倾向于更喜欢——并且相信——更简单的想法和表述,因为它们更接近事实。对物理学中的“统一场论”或“大统一理论”的追求是这种永恒的人类渴望简化的旗舰例子——对自然界中不同种类的物理力有不同的理论表明了“多样性”和“混乱”,并乞求、要求简化。

E = mc 2F = ma 这样的单个方程是最简单的表示,它的优雅给我们留下深刻印象。线性/逻辑回归等技术旨在实现这种简单性——为了实现这种简单性,数据科学家通常甚至愿意牺牲预测的准确性。类似地,多项式方程,以及更一般地,任何表示曲线(或 n 维中的曲面)的方程,都是优雅、简单的表示。

让我们来看看其他一些表现:

  • 线性 SVM 也相当简单,就简单性而言,非常接近线性回归,其中真实值由分隔观察值的单线 2 表示。另一方面,非线性 SVM 是一种更复杂的表示。

  • 决策树是一种简单但有点混乱的表示;当我们查看需要遍历的各种节点时,会有一种“多样性”的感觉。–我们不会像看一个等式那样获得优雅简洁的效果。

  • 随机森林等。,是相当复杂的——我们在表现中感觉到多重性和混乱,这是由树的随机性和大量造成的。

  • 深度神经网络是最复杂的表现形式——数百个神经元和数千个权重向试图理解这一切的人类大脑传达了一种强烈的多样性和混乱感。虽然可以说,从数学上来说,神经网络只是一组方程, 3 它的层数越多,看起来就越复杂。当我们添加具有更复杂表示的层时,如 CNN、RNN 等,这种复杂性进一步增加。

估计真相:归因

当观察值由几个属性/特征的值组成时,“真实”的一个基本方面是理解那些属性中哪些是最重要的,也就是说,哪些属性在确定目标变量的值时是最重要的。我们将这一目标称为归因。 4 回想一下,我们在表 3-2 中看到过病因学;归因是确定病因的技术基础。

让我们回顾一下我们在第十六章中看到的几个归因示例:

  • 线性回归:如果一个特性的系数/权重在线性方程中为零,这显然意味着目标值不受该特性值的影响。换句话说,这个特性的值对于确定目标变量的值没有用。我们还可以从等式中看到,如果所有特征具有相同的值范围(例如,使用最小-最大缩放),则具有较高权重 6 的特征可以被认为对目标变量的值具有较大的影响,因此更重要。

  • 决策树:回想一下,使用子节点在一个类别中具有较高优势的可用特征集合中的那个特征来分割每个节点,也就是说,从子节点具有最低熵的集合中挑选那个特征。这意味着决策树能够比较特征,并确定哪个特征更好或更重要。这种能力可以提供一种机制,根据特性的重要性对其进行排序。

  • 随机森林:我们刚刚讨论了一种机制,它可以帮助我们确定决策树中特征的重要性。我们可以考虑随机森林的所有决策树中每个特征的重要性,以得出随机森林中特征的整体重要性。

  • 深度学习:对于如何衡量功能的相对重要性,没有直观的概念。最近的发展,特别是在名为“可解释的人工智能”的领域,可以帮助确定重要的特征——但这些方法本身可能相当复杂,而且不太直观。如果它变得极其复杂和不直观,那么它通常就不像是“真理”

请注意,在所有这些情况下,基于用于创建模型的 ML 算法,数据科学家采用一些概念来确定特性的重要性。然后他们得出归因的结论,也就是说,宣布一些特征是“重要的”正如我们所看到的,这只是一个相对的重要性概念——它可能因此感觉像是一个有点武断的归因基础,除非归因机制既直观又严谨。实现这种直觉和严谨可能是一项艰巨的任务,但幸运的是,正如我们在第三章中看到的,许多现实世界的业务问题并不需要病因和归因。

预测:可解释性

这个目标指的是我们人类需要能够理解和解释模型是如何为一个新的观察产生一个特定的预测。换句话说,作为人类,我们需要能够解释一个模型从输入观察值达到目标预测所采取的每一步。让我们看几个例子:

  • 方程的解释,如线性回归模型的解释,是非常简单的。

  • 在决策树的情况下,我们可以查看该树,并基于某个特征的值来理解新的观察结果在每个节点处将遵循哪个分支,以便进行预测。因此,这种模型给出的预测具有高度的可解释性。

  • 在随机森林的情况下,要详细查看大量的树木以了解它们如何做出预测并相应地解释最终预测是极其困难的。因此,即使随机森林可以给出哪些特征是重要的一些概念(即,支持属性),它们也不是可解释的。

  • 我们在第十六章中看到,神经网络并没有给我们一个简单的描述它是如何进行预测的画面——这样的模型是最难解释的模型之一。

预测:准确性

这仅仅是指我们希望我们的模型能够准确预测未来未知观测的目标变量的值。请注意,这个目标不包括我们作为人类是否能够理解(解释)为什么模型预测某事的任何概念——它只谈到正确预测的目标。在写这篇文章的时候,就准确预测的能力而言

  • 深度学习技术似乎优于其他技术,尤其是对于与感知相关的问题,如 NLP、计算机视觉等。

  • 随机森林和梯度提升树 7 一般来说似乎是所有其他类型问题的首选技术。我们在第十六章中看到了这些算法如何改进他们的预测。

看了四个目标和一些技术如何实现这些目标的例子,我们可以看一个更正式的“分级”矩阵来捕捉所有技术的这些概念——这个矩阵也有助于确定每个文化通常更喜欢哪些技术。

分级 ML 技术

在上一节中,我们讨论了如何将建模的每个目的分成两个目标,从而得到建模的四个目标。我们还讨论了一些例子,说明各种技术如何与这些目标相冲突。我们在图 20-1 中给出的等级 8 概括了这一点——该图还显示了两种文化在实现这些目标的方式上有何不同,以及这如何决定了他们通常更喜欢的技术。我们在第三章中已经看到,修道士文化关注这两个目的,所以所有四个目标都与修道士同等相关,如表中所示。西部文化只关注于预测价值的目的,所以表格底部的目标与牛仔更相关。因此,由于向左的 ML 技术在所有四个目标上都有很高的分数,这些技术在修道文化中更受欢迎。类似地,向右的技术对底层目标有很高的分数,因此在西部文化中更受欢迎。

img/504530_1_En_20_Fig1_HTML.png

图 20-1

一些 ML 技术为建模的每个目标分级,以及这些等级如何影响两种文化的首选技术

以下是几个案例背后的(有些主观的)推理示例:

  • 随机森林在预测的准确性方面获得了较高的等级(A+),但在属性方面获得了稍低的等级(A)。这是因为虽然算法确实识别了重要的特征,但可能存在这些特征不可靠的情况——参见 Efron (2020)中的一个例子。

  • 深度学习在预测的准确性上得了高分(A+),在归因上得了低分(C)。对于预测的可解释性,它得到了一个有点模糊的 B/C 等级,因为

    • 可解释性因神经网络的复杂性而异。

    • 在解释/解释深度学习预测的这一领域正在取得进展,例如,CNN 的类激活图等。这些解释可能不够清晰明了,不足以获得 A,但它们足够有用,偶尔可以获得 b。

虽然我们在本书中只提到了一些技术,但是图 20-1 的结构和框架可以用来对任何 ML 技术进行分级,并确定它在多大程度上适合特定的目标,从而适合特定的文化(并因此适合手头的业务问题)。

ADVANCED NOTE: OTHER TECHNIQUES

以下是一些我们在书中其他地方没有涉及到的经典修道技巧:

  • 统计检验:t 检验、卡方检验等统计检验。僧侣们在寻找潜在真理的旅途中经常使用。例如,可以使用统计测试来确定哪些特征是重要的。

  • 赤池信息准则和贝叶斯信息准则:通常被称为 AIC 和 BIC,用于在一组候选模型中选择最佳模型。为此,他们考虑了模型对训练数据的性能和模型的复杂性。具有更多参数的复杂模型会受到惩罚。

我们将在下一节中引用这些技术。

文化差异

表 20-1 总结了两种文化之间的所有差异——它详细阐述了表 3-1 中的几个要点,并根据我们在本章前面的报道增加了几个新的要点。

表 20-1

修道院与狂野西部:最终版

|

因素

|

修道文化

|

西部文化

|
| --- | --- | --- |
| 心态 | 找到导致观察的潜在的、永恒的真理(自然) | 现在就找到有效的方法。可以经常更新。经验主义是唯一永恒的真理 |
| 目的 | 对观察结果背后的真相进行评估,从而实现预测和更深入、准确的因果洞察 | 预测准确性是首要目标因果往往是一种损失。因果洞察力要么是不相关的,不太准确的,要么只是有好处的 |
| 估价 | 我的估计有多接近事实? | 我得到的预测是否如我所愿的那样准确? |
| 评估——评估什么 | 估计的“真相”包括归因以及模型的可解释的和准确的预测。此外,具有更简单表示的模型是优选的 | 主要关注模型预测的准确性。预测和归因的可解释性有时是好的 |
| 领域专业知识 | 对领域的理解极大地影响了特性的制作;这是因为属性是一个主要目标,所以被很好理解的特性是首选 | 当使用自动化特征提取的技术时,较少的领域专业知识通常就足够了;例如,使用 CNN,从图像中自动提取相关特征 |
| 有多少特征用于建模 | 尽量避免“维数灾难”找到包含大部分信息的几个要素-这降低了模型的复杂性并有助于归因 | 任何附加信息都有助于提高预测的准确性,因此非常有用。深度学习、梯度提升树等技术。,甚至可以与数百个功能一起使用 |
| ML 技术 | 优先选择图 20-1 中所有目标的高分 | 首选图 20-1 中“预测准确度”为 A+的 |
| 属性 | 统计测试,ML 模型确定的重要特征 | ML 模型确定的重要特征 |
| 模型性能评估 | 统计测试,AIC/BIC,交叉验证9 | 交叉验证 |
| 型号升级频率 | 创建模型可能需要更长时间。但是一旦创建,因为它代表了一个长期的真理,升级就不那么频繁了 | 随着新数据的获得,模型通常被快速创建并通过快速迭代进行升级 |

UNSUPERVISED LEARNING AND THE TWO CULTURES

我们的报道主要集中在文化差异相当显著的监督学习技术上。但是这种差异偶尔可以在一些无监督的技术中看到,例如异常检测技术。

结论

在本章中,我们详细阐述了在第三章中首次介绍的两种数据科学文化之间的差异。

当谈到从数据中创建模型时,Leo Breiman 首先强调了两种文化的存在。他的原始论文、D.R. Cox 和 Brad Efron 的评论以及 Breiman 的回应都在 Breiman (2001)中。用我们的术语来说,我们会说 Breiman 显然是第一个离开修道院,冒险进入西部荒野的僧侣。在那里从事数据科学多年后,包括对 random forest 等技术的贡献,他不仅带着一套新技术,还带着一个新的视角回到了修道院——前面提到的文章详细描述了 Breiman 的旅程以及他回到修道院时受到几名僧侣的欢迎。

我们对这两种文化的描述很大程度上是基于我们的个人经历。这两种文化在过去被赋予了不同的名称——根据记录,我们的“修道士”文化有点类似于 Breiman 的“数据建模”文化,我们的“狂野西部”文化有点类似于 Breiman 的“算法建模”文化。然而,值得注意的是,自 Breiman 的原始论文以来,这两种文化如何实践数据科学的含义和细节已经发生了变化,特别是在大数据时代(大约从 2006 年至 2010 年开始)和深度学习革命(大约从 2013 年开始)。

Efron (2020)对这两种文化进行了更近期的调查。这篇论文,以及前面提到的 Breiman 的讨论,帮助我们对这两种文化的观察有了一些结构。Efron (2020)也提供了我们所采用的非常有用的术语“归因”。

在第二十二章中,我们将看到本章中涵盖的各种因素在构建数据科学团队时是如何有用的。

在第二十三章中,我们将看到文化的选择如何受到数据科学项目类型的影响。我们还将在可解释性的背景下重新审视建模和数字 20-1 的目标。

第三部分摘要

在第 12 到 18 章中,我们介绍了数据科学过程中使用的各种技巧和技术。在第十九章中,我们看到了它们如何在一个参考架构中融合在一起,以支持数据科学团队的运营。最后,在这一章中,我们讨论了两种数据科学文化在实践数据科学的方式上如何不同的更多细节,特别是关于他们对 ML 技术的选择。

到目前为止,我们已经讨论了在构建数据科学实践中需要考虑的业务和技术方面。在接下来的最后一部分,我们将着眼于建立数据科学团队和执行数据科学项目的实践方面。

参考

布雷曼,利奥。"统计建模:两种文化."统计科学 2001:199–231。

埃夫隆,布拉德利。"预测、估计和归因."美国统计协会杂志2020:636–655。

二十一、技能框架

回想一下第一章中的概念,即使用软件将科学方法应用于数据被称为数据科学。因此,数据科学从根本上说是处于数据分析和软件工程尖端的跨学科活动。作为团队领导,您需要定期确定您的团队所必需的角色,并确保拥有数据分析和软件工程技能的合适团队成员能够胜任该角色。

图 21-1 显示了数据科学团队中常见的各种角色,以及这些角色所需的各类技能的程度。

img/504530_1_En_21_Fig1_HTML.png

图 21-1

技能框架。角色被描述为三个方面所需技能的组合:数据分析、软件工程和领域专业知识

如图所示,除了数据分析和软件工程这两个维度,还有第三个维度——领域专业知识,由气泡的大小表示。不同的角色在不同程度上需要这些技能的组合。在本章的其余部分,我们将涵盖技能的三个方面,然后是各种角色及其职责。

技能的三个维度

数据科学项目所需的三种技能是数据分析、软件工程、领域专业知识。让我们看一看每一个问题,以理解它们所包含的内容。

数据分析技能

数据分析简单来说就是从数据中获取洞察的能力。这可以从简单的报告(例如,销售趋势)到统计技术(例如,相关性分析以找出哪些产品通常一起销售)和机器学习算法。

从概念上讲,进入数据分析的思维过程并不一定需要软件技能——事实上,今天数据科学家使用的许多技术在 20 世纪上半叶就已经很好地建立起来了,而且早于计算机。虽然软件工具有助于更快、更准确地进行数据分析,使用这些工具并不一定需要软件工程技能——例如,几十年来,Microsoft Excel 等工具一直是数据分析的默认选择,甚至是金融领域的 quants 所做的高级分析。

软件工程技能

软件工程本身当然是一门庞大的学科。在数据科学的特定上下文中,需要软件工程技能来对数据科学过程的各个步骤进行编码。一些相关方面包括

  • 分析算法的设计和有效实现:有几个用于数据科学的开源库。但是偶尔需要实现一个适合您需求的算法或者修改一个开源算法。

  • 数据准备:整理、清理和准备大规模数据集,包括数据管道。

  • GPU 和深度学习:最先进的深度学习算法和神经网络需要 GPU 集群和微调的数据流范式来进行高效的模型训练。这种设置中的几个性能调整方面需要软件工程技能。

  • 生产 ML 模型:将模型部署到生产中需要软件工程技能来将模型大规模集成到生产技术栈中。

对于有效的端到端数据科学解决方案,这些软件工程技能是不可或缺的。

领域专业知识

深入了解领域以及数据与领域的关系,对于制定正确的问题陈述、确定解决问题的数据科学方法以及最终评估解决方案的正确性至关重要。几个数据科学问题都是面向自动完成由金融、零售、医疗保健等领域的专家执行的日常工作。–在这些情况下,这些人的领域专业知识对数据科学团队的成功至关重要。

有关领域专业知识需求如何依赖于数据科学文化的讨论,请参考第二十章。

因此,一个有效的数据科学团队需要这三种技能:数据分析、软件工程和领域专业知识。现在,我们将了解数据科学团队中的典型角色,以及这些角色如何需要结合这三个方面的技能。

数据科学团队中的角色

参考图 21-1 ,图中显示了各种角色以及每个角色通常需要的三个方面的技能水平。我们现在将介绍数据科学团队中的每个角色及其职责。

需要注意的是,这些是“角色”而不是个人——一个人可能会扮演其中的几个角色,尤其是在团队的孵化阶段。我们将在下一章中围绕团队的建立和结构化来讨论这些方面。

公民数据科学家

公民数据科学家是公司中最重要的领域专家。他们知道业务流程以及数据如何映射到现实世界。

鉴于他们的领域知识,公民数据科学家通常会确定数据科学项目的范围,并影响公司的数据战略 1 。它们还使首席数据科学家和其他人能够更加深入地理解该领域。

他们与首席数据科学家密切合作,制定问题陈述,并积极参与数据科学流程迭代,特别是从领域角度设计实验和评估模型性能。

虽然拥有该领域的专业知识,但他们通常不具备高度的数据分析或软件工程技能。因此,他们依赖于先进的工具 2 ,这使得像他们这样的人更容易使用他们的领域知识创建初始基线模型。然后,数据科学家在数据科学流程的进一步迭代中以此基线为基础进行构建。

数据分析师

这是大多数组织中的传统角色,您可能对此很熟悉。数据分析师是该领域的专家。他们通常使用 BI 工具和 SQL 等查询语言,但他们的编程技能可能有限。他们可以使用各种可视化和统计技术从数据中提取见解。

如果你的公司已经有一个数据分析师,让他们参与到咨询中来会很好。鉴于他们在产品和业务流程领域的专业知识,他们通常最适合评估生产系统中的模型性能,以及将数据科学模型纳入组织运营的业务影响。

数据科学技术员

这个术语是我们为那些中等编程水平并且了解 scikit-learn、Keras、Matplotlib 等库的人创造的。,用于数据科学过程。因此,他们可以快速执行实验并评估模型性能。另一方面,他们还没有获得独立设计新实验的科学专业知识——从这个意义上说,他们可以被视为见习数据科学家。

在大型数据科学团队中,数据科学技术人员对于快速准确地执行实验至关重要;这使得数据科学家能够专注于实验设计和创新新技术。

ML 操作

ML Ops 既需要了解数据科学团队创建的模型,也需要了解工程/IT 团队创建和维护的生产系统。这是一个利基角色,主要面向数据科学过程的推理步骤。

ML Ops 负责生产系统中模型的部署、维护和监控。

通常,ML Ops 成员需要熟悉第十七章中提到的技术和工具。

数据工程师

数据工程师执行数据科学过程的数据工程步骤。因此,他们负责存储、跟踪、转换、评估和维护供整个数据科学团队使用的数据资产。数据工程师通常履行以下职责:

  • 执行数据科学流程的数据捕获步骤中的大部分活动。这包括从领域专家和数据科学家确定的数据源中获取数据,并方便对数据的访问。

  • 自动化可重复的数据准备和数据可视化步骤,这些步骤通过数据科学流程的多次迭代而具体化。

  • 确保机器学习步骤的数据无缝可用,可能包括使用大数据的分布式学习。

  • 在小团队中扮演 ML Ops 的角色。

  • 维护任何 BI 或 PAML 3 工具以及其余的数据基础设施。

数据架构师

数据架构师负责决定符合预算限制的整个数据和计算基础架构。这包括选择最适合数据科学团队的工具。对于跨学科团队,数据架构师需要确保架构能够在数据科学流程的各个步骤中实现所有角色之间的顺畅协作。

我们在第十九章中看到了数据科学团队的参考架构。数据架构师负责根据您组织的特定需求和约束来定制该参考体系结构。

ML 工程师

在过去的几年里,人工智能服务在云和 AutoML 上出现了巨大的增长。我们在第十八章中讨论了这些。正如我们在那一章中看到的,工程师可以使用这样的服务或库来创建模型,例如,预测商店的库存需求。为此,他们需要了解领域和数据,但不需要知道数据科学过程的细节,ML 技术等。在模型的创建过程中。

这就产生了一个相对较新的 ML 工程师角色——一个对领域有很好理解的工程师,他可以使用这些服务和库,并评估生成的模型以确保它们满足预期的目标。

与数据科学技术人员角色相比,ML 工程师需要的数据分析技能较少,因为他们不需要完全了解数据科学流程。但是 ML 工程师需要有更强的工程技能来有效地使用 AutoML 库和云服务。

软件工程师可以很容易地升级为 ML 工程师,只需接受最少的 ML 基础培训,如模型性能评估,并结合 AI/AutoML 服务和库的知识。

如果您正在遵循狂野西部的方法,或者需要在大量投资雇佣数据科学家之前对现有云服务进行快速 POC,那么用 ML 工程师来引导团队可能是个好主意。

数据科学家

正如我们从图 21-1 中看到的,数据科学家在所有三个方面都有很好的技能组合。通常,数据科学家擅长应用适合其工作领域的科学方法。相应地,他们与领域专家密切合作,以获得对业务和领域的深刻理解。

在一个小团队中,他们可能与首席数据科学家合作,帮助设计实验并执行它们。在大型团队中,数据科学家可能会专注于与首席数据科学家一起设计实验,并将执行任务委托给数据科学技术人员和 ML 工程师。他们还与数据工程师合作,定义数据管道的要求。随着数据准备和数据可视化步骤变得越来越可重复,数据科学家与数据工程师一起自动执行这些步骤,以实现快速迭代。

数据科学家通常对算法有深刻的理解——因此他们可以在必要时修改现有的开源实现。一些数据科学家也可以根据需要创建新的算法和技术。

首席数据科学家

首席数据科学家最终负责整个数据科学团队。他们在所有三个方面都有混合技能,这使得他们能够顺利地在数据分析、软件工程和领域/业务方面移动。

他们是制定要解决的问题、设置所需的数据和实验策略、定义路线图以及在其他角色的支持下执行路线图的主要负责人。我们将在下一章更详细地讨论首席数据科学家的角色。

技能上的偏差

图 21-1 中对一些角色的描述代表了我们的理想主义观点,在实际场景中偏离这些观点并不少见;特别是,这里描述的理想数据科学家和首席数据科学家通常被认为是独角兽。在许多团队中,其他角色通常会补充和填补这些主要角色技能中的任何不足,例如,如果(首席)数据科学家的软件工程技能较少,那么其他工程师(如数据架构师、数据工程师或 ML 工程师)会填补这一不足。

文化的选择(修道士或狂野西部)也可能会影响数据科学家的主要技能(数据分析或软件工程)。例如,一个僧侣的软件工程技能可能不如这里描述的理想。

结论

在这一章中,我们讨论了一个技能框架,以解释组成跨学科数据科学团队的各种角色。团队中需要哪些角色取决于数据科学文化和业务的具体情况,我们在每个角色的描述中涵盖了一些方面。

在下一章,我们将着眼于建立和组织由这些角色组成的数据科学团队。

二十二、建立和构建团队

在前一章中,我们看到了组成跨学科数据科学团队的各种角色和技能。在本章中,我们将了解实践中常见的一些典型团队结构,然后讨论一些关于聘用数据科学家的要点,特别关注首席数据科学家。

典型的团队结构

在本节中,我们将首先了解开始数据科学活动所需的最小团队组成。然后,我们将看到一个成熟的、可操作的大型团队的典型组成,也就是说,一个团队创建了几个模型,这些模型被部署到生产系统中,并为业务产生价值。在介绍了数据科学之旅中的这两个极端点之后,我们将看看关于团队如何从孵化结构向成熟的运营结构发展的一些因素。

小型孵化团队

一旦你确定你已经准备好踏上数据科学之旅,你通常会从首席数据科学家开始。根据问题的复杂程度,您可能会雇用一名额外的数据科学家。或者如果你打算依赖 AutoML 和 AI 服务, 1 你可以雇佣一个 ML 工程师来代替。

正如在第二章中所讨论的,向数据科学家提供数据至关重要。随着数据科学家继续分析数据,他们可能会要求更多数据或强调数据中的问题。为了满足数据科学家的这些要求,您可能还需要一名数据工程师。

有了这样的团队组成,数据工程师将拥有数据科学过程的数据捕获步骤。随着数据科学家在数据科学过程的迭代中不断进步,数据工程师也可以自动化数据准备和数据可视化步骤的某些部分。这将允许数据科学家越来越多地关注数据科学过程的机器学习步骤。

数据科学家或数据工程师也会执行推理步骤;通常,初始模型将被打包成一个简单的脚本,供 IT/工程团队调用。在这个早期阶段,投资先进的 ML Ops 流程可能没有意义。 2

成熟的运营团队

图 22-1 显示了一个已经发展成熟并完全可操作的团队的典型结构。

img/504530_1_En_22_Fig1_HTML.png

图 22-1

成熟的运营数据科学团队的典型结构

这样的团队通常会同时执行多个项目。几个当前和过去的项目已经产生了部署到生产系统中的模型。

在这种情况下,每个项目通常都有一组数据科学家、数据科学技术人员和 ML 工程师参与其中。数据科学家通常定义实验策略,并指定要执行的实验。数据科学技术人员和 ML 工程师执行实验。每个项目中团队的组成取决于项目的类型——这将在下一章详细介绍。

数据工程活动由数据工程师团队执行,通常由数据架构师领导。这个团队支持所有的数据科学项目。

专门的 ML Ops 团队确保以自动化方式部署、升级和监控模型。如果使用先进的 ML Ops 工具,那么这个团队通常会很小,只有一两个成员。

所有这些角色都有效地向首席数据科学家报告,首席数据科学家负责协调整体执行。首席数据科学家还从多个项目中汲取见解和提炼通用技术。

数据分析师和市民数据科学家角色(如果有)根据需要与团队的其他成员就各种项目进行协作。

团队进化

一旦孵化团队成功执行了几个项目,通常会有更多应用数据科学的机会出现。随着您的团队朝着上一节所述的成熟结构发展,您通常会努力沿着以下路线保持适当的平衡:

  • 数据科学家与数据科学技术人员/ML 工程师的比例:为了以经济高效的方式扩展团队,允许数据科学家越来越多地关注实验设计而不是编码和执行可能是有用的。

  • 将数据准备工作交给数据工程师:一旦数据科学家确定了典型的数据准备活动,如数据清理和数据转换,您就可以让数据科学家将这些步骤交给数据工程师。理想情况下,数据科学家应该花最少的时间准备数据。

  • 卸载推理活动:虽然数据科学家需要了解生产需求(例如,推理过程中可接受的延迟),但让他们为生产部署打包模型并不是很有成效。最好尽早将推断步骤交给数据工程师或 ML Ops。

  • 采用先进工具与雇佣:鼓励数据科学团队成员采用工具可以减少对数据工程师和 ML Ops 的需求。此类工具的示例包括增强协作和简化计算集群供应的高级 ide、实验和模型注册、ML Ops 工具等。 3

  • 快速执行与最佳实践:为了确保所有实验的业务连续性和可重复性,灌输最佳实践是至关重要的,例如使用实验注册、跟踪数据集的谱系等等。当引入这些工具时,团队可能会觉得这是一种开销——但一旦反复灌输,日常运营开销往往会变得微不足道,特别是如果使用正确的工具 4 的话。

关键雇员:首席数据科学家

对于首席数据科学家的角色,要评估的最重要的因素之一是:他们创建的模型中有多少已经部署到生产系统或用于战略决策。模型生产经验的可靠记录对于确保首席数据科学家具有基于结果的思维模式以及过去与其他团队(如工程团队和管理利益相关方)合作创建端到端解决方案至关重要。

接下来,除了通常的技术资格,当你试图寻找适合你的业务的首席数据科学家时,有两个主要方面需要考虑:首先,你认为哪种文化适合你的业务——修道士或狂野西部——其次,你是想聘请全职首席数据科学家还是聘请顾问。我们将简要介绍其中的每一个。

评估文化

回想一下第三章,通常,根据您的业务需求,您可以确定两种数据科学文化中哪一种更适合。如果您已经确定了哪种文化更适合您的业务,那么您将需要评估首席数据科学家,以确定他们可能主要属于哪种文化。

如果首席数据科学家拥有“正确的”文化,那么团队的其他成员通常会向首席数据科学家灌输相同的文化-他们会向团队成员灌输必要的文化,也会聘用属于类似文化的新数据科学家。

我们已经在第三章和第二十章中看到了两种文化之间的一些差异因素。相应地,以下是识别候选数据科学家可能主要属于哪种文化的一些要点:

  1. 看看他们过去处理过的问题。这些问题需要修道士或狂野西部的方法吗?参见第三章了解这一点。

  2. 看看他们用来解决这些问题的技巧,并将它们映射到第二十章。他们的背景是否表明他们倾向于修道士或狂野西部的技巧?

  3. 候选人的学术背景如何?根据我们的经验,如果候选人有

    • 作为统计学硕士或博士,他们可能更接近文化光谱的僧侣端。(数据科学文化谱参见第三章。)

    • 计算机科学背景,他们可能更接近文化光谱的牛仔端。

    • 一些其他的科学背景,例如,自然科学,那么他们很可能处于文化光谱的中间。

请注意,这些要点适用于招聘任何数据科学家。具体到首席数据科学家的角色,工作主体(第 1 点和第 2 点)将是文化的主要指标。基于学术背景的因素(第 3 点)是基于我们与跨文化领域的数据科学家合作的经验的观察。

雇佣顾问与获得顾问

在最初阶段,当您考虑启动数据科学团队时,寻求首席数据科学家的帮助可能是明智的

  • 阐明问题

  • 确保必要的数据可用

  • 确保数据科学实际上是解决问题的正确方法 5

  • 定义数据和实验策略

顾问还可以建议使用人工智能服务或 AutoML 是否可以满足您的需求。如果最初的实验可以使用 AI 服务或 AutoML 来完成,那么你可以指派一名 ML 工程师在顾问的指导下工作。如果你没有一个 ML 工程师,你可以在你现有的 IT/软件开发团队中提升一个聪明的软件工程师来快速成为一个 ML 工程师。 6

如果顾问建议现有的人工智能服务或 AutoML 可能不是很合适,那么你可以考虑雇用一名高级或首席数据科学家,这取决于问题的复杂性和你从试点数据科学项目中看到的潜在投资回报。

数据工程:需求和人员配备

让我们看看决定您团队的数据工程需求的几个因素,以及如何满足它们。

如果你正在培养一种修道士文化,那么不太可能需要大量的基础设施,比如 GPU 集群等等。通常,在这些情况下,数据科学家更喜欢在一台有可用数据的专用机器上工作。在这种情况下,数据工程活动可能是间歇的,而不是持续的。

如果你正在孕育一种狂野的西部文化,那么你的数据科学家可能会处理大数据,也需要机器集群,可能包括 GPU。在这种情况下,通常要执行更多的数据工程活动。

无论如何,在早期孵化阶段,你可能不需要全职数据工程师;如果是这样,有几个选择:

  • 如果数据科学家熟悉您组织中的数据源,他们可以执行数据工程活动。

  • 从你的 IT/工程团队中从事数据库工作的软件工程师那里抽出一些时间。如果做到了这一点,那么您的数据科学家的生产力将是最佳的。

技能提升笔记

你可能听说过数据工程师可以晋升为数据科学家。虽然在某些情况下这可能是真的,但我们经常发现数据工程师缺乏必要的数据分析背景和有效应用科学方法所需的思维过程。

如果提升技能是你的主要人员配置策略,那么数据工程师,就像软件工程师一样,通常可以提升为 ML 工程师。一旦他们显示出作为 ML 工程师的潜力,你就可以考虑将他们提升为数据科学家。

结论

我们讲述了典型的团队结构和演变,以及一些关于雇佣数据科学家,尤其是首席数据科学家的建议。

在下一章,我们将在各种数据科学项目的背景下重新审视团队结构。

二十三、数据科学项目

本书开始时,我们在第一部分介绍了数据科学过程。然后在第二部分中,我们看到了可能与您的业务相关的各种问题,以及数据科学过程如何应用于每种情况。在第三部分中,我们研究了执行数据科学流程的每一步所涉及的各种技巧和技术,最终形成了一个可以根据您的特定团队量身定制的参考架构。在过去的几章中,我们已经看到了在组建一个执行端到端数据科学流程的跨学科团队时所扮演的各种角色。

数据科学团队(前两章)将技巧和技术(第三部分)应用于各类问题(第二部分),使用数据科学流程实现业务成果(第一部分)。数据科学项目是包含产生预期业务成果的所有这些方面的总体活动。在这最后一章,我们将着眼于数据科学项目的各个实际方面。

我们首先介绍四种常见类型的数据科学项目以及它们产生的典型业务成果;我们还涵盖了项目类型如何影响数据科学过程、参考架构、数据科学文化等。

在以下部分中,我们将介绍与管理数据科学项目和团队相关的各个方面。我们首先介绍在数据科学之旅中经常被认为太迟的一个关键方面——使用 KPI 评估团队的绩效。然后,我们将讨论数据质量和数据保护/隐私的各个方面——这些通常是人们在日常运营中往往会回避的秘密。然后,我们看一下数据科学项目特有的法律和法规考虑事项。最后,我们总结了认知偏差以及如何/何时在数据科学项目中防范认知偏差。

数据科学项目的类型

表 23-1 显示了数据科学项目的四种常见类型以及每种类型项目的典型预期业务成果。

表 23-1

数据科学项目的类型和典型的业务成果

|

项目类型

|

典型的业务成果

|
| --- | --- |
| 从数据中发现知识(KDD) | 源自现有数据的新颖、可行的见解 |
| 流程中的数据科学融合(DSI-Proc) | 现有业务流程的改进。也能带来新的商业模式 |
| 产品中的数据科学融合(DSI 产品) | 增加客户对现有产品的参与度,提高产品的采用率 |
| 基于数据科学的产品(DSBP) | 基于数据科学模型的新型“智能”产品 |

使用表 23-1 ,您可以确定哪种类型的项目最适合您的业务需求。这也有助于团队和其他利益相关者设定相应的预期结果。

在以下小节中,我们将介绍每种数据科学项目的一些示例,并总结每种数据科学项目的一些典型特征。

从数据/数据挖掘中发现知识

从现有数据中提取新颖的、可操作的见解被称为从数据中发现知识(KDD)或数据挖掘(??)。以下是一些例子:

  • 典型的例子是识别用户交易模式,以实现有效的销售和营销策略。例如,假设您的组织经营一家零售商店/连锁店,并捕获了几个用户和交易的数据。使用这些数据,您希望对具有相似购买模式的用户进行分类,或者确定经常一起销售的产品。 1 这些种类的洞察可以随后启用交叉销售活动。

  • 假设您的组织制造一些重型设备,如运土机器。您已经创建了一个工业物联网解决方案,该解决方案正在收集有关机器运行的各种数据,如遥测数据。您组织中的其他内部或代理商应用程序捕获数据,如您的设备的销售或租赁、其操作条件(如土壤类型)等。鉴于这些数据都是在过去几年中获得的,您渴望从中获得进一步的见解。在这一阶段,您不确定需要什么样的见解,但是任何关于操作条件或设备用户如何影响设备性能的有用信息都是有用的。KDD 的一个项目可以探索这些数据来提取这样的见解。一个具体的结果可能是洞察,例如,土壤条件、运行时间和设备操作者如何影响设备的燃料消耗或维护需求。

TERMINOLOGY CHAOS: DATA MINING AND KDD

术语数据挖掘KDD 有几种不同的用法。例如,一些人认为数据挖掘是 KDD 的一个步骤。然而,在本书中,我们会互换使用数据挖掘和 KDD 这两个术语。

此外,KDD 的一个常见扩展是数据库中的知识发现。我们更喜欢更通用的术语“从数据中发现知识,因为数据可以来自网站、API、流等。,此外还有数据库。

最后,如本节所述,我们将 KDD/数据挖掘视为数据科学项目的一种*类型,现在归入数据科学。

流程中的数据科学融合

数据科学可以在改善组织内的现有流程 2 或组织参与的流程方面发挥关键作用。

以下是这类项目的几个例子:

  • 在将液体储存在大罐中的公司中,终端的操作通常涉及诸如监测罐、将液体保持在一定温度范围内、以及将液体从卡车或轨道车泵入/泵出罐以进行运输的活动。各种活动涉及电机,如泵、加热器等。,并导致公用事业费用。给定过去操作的数据、储罐中的当前液体体积以及卡车/轨道车的估计到达时间,数据科学模型可用于预测特定活动(例如,加热)需要在各种储罐中发生的最晚时间。这些预测可以输入到一个调度算法中,该算法按照预测的时间限制来安排活动,从而最大限度地减少终端的用电高峰。这将导致成本节约。

  • 考虑一家制造家用医疗产品的公司,例如,用于监测癌症患者的尿条。在这种情况下,该过程通常包括将试条发送给临床医生/医生,他们对颜色读数进行解码以获得病理学指标。利用现代计算机视觉技术,这可以被数字化,使得可以分析条带的照片(由患者使用他们的移动设备拍摄的)以提取颜色读数,转换成病理学度量,并且以自动化的方式与临床医生/医生共享。这改善了整个过程和患者的体验。

  • 在某些情况下,使用数据科学模型自动化一些内部流程也可以带来新的业务模式。例如,假设一家公司生产化学增强剂,以提高某个炼油厂某些化学过程的产量。为了给特定炼油厂推荐合适的增强剂组合,该公司会让专家分析炼油厂的输入原料和其他环境因素。如果您已经从过去的几个这样的分析中收集了数据,那么现在可以使用数据科学模型来自动化它。该模型将从专家过去的决策中学习,从而提高产量,并相应地为任何新的客户/化学工艺提供增强剂混合物的建议。一旦流程的这一关键部分实现自动化,就有机会为客户提供自助服务平台,让他们可以输入有关原材料、环境等的所有参数。,并获得可以提高产量的增强剂混合物的建议。

产品中的数据科学融合

不同领域的技术产品往往会受益于通过注入数据科学模型获得的“智能”。例如:

  • 假设您的公司为协作和生产力开发软件产品。一种这样的产品,虚拟集成工作空间,允许用户使用各种通信模式,例如聊天、音频/视频会议、电子邮件和其他工具,如日历、笔记等。,从单个集成界面中。可以注入这种产品的数据科学驱动的功能包括

    • 自动理解电子邮件、聊天或音频通话的意图,并执行所请求的操作。例如,根据电子邮件中的请求创建日历事件或预订会议室等。

    • 为会议自动生成抄本和行动事项记录,包括自动行动,如安排后续讨论等。

  • 假设您的公司生产物联网设备,并提供软件平台来监控设备及其使用情况,并远程控制设备,包括制定政策等。在这种情况下,可以将基于数据科学的模型添加到产品中,帮助检测任何异常读数(即异常检测),并实现预测性维护的用例。

  • 假设您的公司销售检测异常网络流量或资源使用的 IT 安全产品。您可能已经使用规则引擎嵌入了 AI,但是客户现在报告说在某些情况下错误警报相当高。添加基于数据科学的异常检测技术可以提高产品性能,从而改善客户体验。

  • 假设你的公司生产 CT 扫描仪。虽然高辐射剂量可以获得高质量的扫描,但与低辐射剂量相比,高辐射剂量对患者来说可能不太安全。但是使用低辐射剂量获得的对病人安全的扫描会有更多的噪音,看起来模糊等等。,这会使解释/诊断不清楚。通过分析过去从低辐射剂量和高辐射剂量获得的扫描,深度学习技术可以学习将有噪声的扫描(从降低的辐射剂量获得)转换为高质量的扫描。给 CT 扫描机注入这种技术可以实现使用低辐射剂量的高质量 CT 扫描。

  • 推荐系统、语音增强界面等。,是将数据科学融入现有产品的其他常见示例。

  • 如果您的公司提供在线视频会议解决方案,那么可以使用数据科学模型来实时消除与会者音频的噪声。在这种情况下,基于干净音频和嘈杂音频的数据(例如,交通的背景声音、狗叫声、儿童哭声等)来训练模型。)来去除噪声。这种系统中的一个挑战是音频去噪必须实时发生,以便参与者在会议期间不会经历延迟。提供这样的功能可以成为市场中的一个差异化因素,从而提高客户的采用率。

基于数据科学的产品

由于各种易于使用的数据科学库和工具的快速增加,各种公司现在都在构建完全基于数据科学模型的产品。请注意,此类 DSBP 项目与我们之前看到的 DSI-Prod 项目之间的主要区别是,在 DSBP 的情况下,没有数据科学模型,产品就无法存在;另一方面,在 DSI-Prod 的情况下,数据科学为现有的功能性产品添加了一些有用的功能。以下是 DSBP 项目的几个例子:

  • 如果你正在开发一个可以使用用户音频样本检测健康状况的健康移动应用,你将完全依赖数据科学模型来完成这一任务。作为商业策略的一部分,你可以从一两种健康状况开始,如呼吸困难等。并且,随着时间的推移,增加你能够检测到的健康状况的数量和种类。

    • 作为业务策略的一部分,您可能还希望提供能够使用音频样本检测健康状况的 API。这种 API 可以由例如创建远程医疗应用等的外部公司使用。

    • 如今,更常见的是先构建一个 API 平台,然后在这个 API 平台上构建您的移动应用程序。通过这种方式,您可以将移动应用货币化,并将其作为 API 平台功能的原型。

    • 如果你提供 API,那么从你的 API 的客户的角度来看,你是在提供 AI 服务。

  • 在监控、医学成像等领域,有几种产品是使用计算机视觉技术制造的。

数据科学项目的典型特征

表 23-2 捕捉了各种类型的数据科学项目的一些典型特征。虽然这些特征很大程度上是基于我们的经验,但它们也可以从我们在本书中的早期内容中逻辑地推导出来。此表旨在作为启动新项目或组建团队时的指示性参考3——它可以帮助确定前进方向,设定利益相关者和团队成员的期望,并作为估算预算和分配领域的起点。

表 23-2

数据科学项目的特点

| ![img/504530_1_En_23_Figa_HTML.gif](https://gitee.com/OpenDocCN/vkdoc-ds-zh/raw/master/docs/build-effec-ds-prac/img/504530_1_En_23_Figa_HTML.gif) |

KPI

关键绩效指标(KPI)用于量化团队的绩效和实现目标的总体进度。在本节中,我们将提到一些可用于数据科学项目或整个团队的 KPI 和指标。请注意,我们没有涵盖 RoI 等业务 KPI。,决定数据科学团队对业务的贡献;相反,我们涵盖了运营 KPI,这些 KPI 用于跟踪数据科学团队针对其自身目标的绩效。假设数据科学团队的目标已经映射到期望的业务成果(参见第二章)。如果您对多个项目有一个成熟的实践,那么您可能想要捕获项目级别的 KPI,并聚集它们以跟踪整个团队的绩效。

模型性能

这是决定给定模型表现如何的 KPI。实现期望的模型性能通常是数据科学项目的直接目标。

需要确定模型性能的适当指标——参见第十六章中的模型性能评估和指标。

项目的每一次迭代或冲刺都应该捕捉到模型性能的提高,这表明了核心数据科学的进步。

模型绩效 KPI 确保团队朝着正确的方向前进,并记录所取得的进展;下面提到的其他度量标准只跟踪如何高效地团队朝着那个方向努力。

实验周期时间

实验周期时间 KPI 是获取完成实验所需总时间的综合指标。这反映了数据科学团队迭代实验的速度。

WHAT IS AN EXPERIMENT?

请注意,“实验”的概念是相当主观的,具体到手头的问题和使用的技术。它也可以基于项目所处的阶段而发展。例如,在项目的早期阶段,评估每种类型的 ML 算法或各种可能的数据集都可以是一个实验。一旦确定了某个 ML 方法和数据集,那么模型训练和调整的一个特定迭代可以被认为是一个实验。

因此,构成“实验”的是数据科学家将会识别的东西。

为了持续改进实验周期时间,几个辅助指标可能是有用的,其中一些如表 23-3 所示。解决特定于任何指标的改进领域将会缩短整个实验周期时间。

表 23-3

与实验周期时间相关的辅助指标

|

公制的

|

描述

|

数据科学过程的相关步骤

|
| --- | --- | --- |
| 数据集管理工作 | 管理感兴趣的数据集的工作。这包括获取相关数据、探索性分析和为 ML 准备数据 | 数据捕获、数据准备、数据可视化 |
| 模型培训工作 | 为训练模型和分析结果模型及其性能所做的努力。数据大小、基础设施等。,在这里发挥作用。如果由于基础设施不理想而导致模型训练时间过长,数据科学家可能会花时间等待,这一时间也应包括在内 | 机器学习 |
| 模型测试工作 | 给定一个模型,在新数据集上“测试”该模型所需的工作。这包括将测试数据集转换成适当的格式、在测试集上使用模型,以及在测试集上评估模型性能所需的任何工作数据大小、基础设施等。,在这里也扮演一个角色 | 机器学习 |
| 模型部署工作 | 一旦一个模型被批准,它在目标生产系统上“运行”需要多长时间?这衡量了整个 ML Ops 渠道的有效性 | 推理 |
| 模型监控工作 | 数据科学团队分析生产模型性能所需的工作。这包括获得所有相关数据的清晰图像以及模型给出的预测/见解的能力 | 推理 |

努力-成本权衡

请注意,在上表中,我们通常将工作作为衡量标准。减少工作量的一个常见方法是采购工具,例如,我们在第三部分中看到的用于数据科学过程各个步骤的工具。与任何其他项目一样,数据科学项目也涉及以下因素之间的适当权衡:

  • 如果人工努力没有减少,机会成本是多少?

  • 使用一个工具会节省数据科学团队多少手动工作?这种努力的等价成本是多少?

  • 一个工具要花多少钱?

数据质量

数据质量通常是公司内部讨论的两极分化话题,尤其是在数据科学团队内部。当您拥有来自多个来源的数据,并且已经建立了数据管道来捕获数据科学家在数据科学过程中使用的数据时,数据科学家的期望是数据是“高质量的”但是,数据科学家所指的“高质量”往往与软件或数据工程师所理解的“高质量”不同——这导致在数据科学过程的后期才发现问题。由于数据质量问题发现得太晚而浪费了几个人工月的努力,这种情况并不少见。

在本节中,我们将首先介绍数据质量的重要性,以及数据质量问题造成的影响的严重性如何因数据科学项目的类型而异。然后,我们看看数据质量的几个维度,这将有助于为您的团队适当地“定义”数据质量。然后,我们将涉及测量和确保数据质量的一些方面。最后,我们将看看为什么数据质量经常处于次要地位的典型原因,以及如何解决这些原因。在这些部分中,我们的重点是在数据科学家开始在数据科学过程中处理数据之前,确保数据具有预期的质量。 4

数据质量的重要性

为了理解数据质量的重要性,让我们考虑一下将低质量数据用于数据科学时可能出现的各种问题,以及这些问题造成的影响的潜在严重性。

低质量数据引起的问题

一个常见的预期问题是,数据科学家无法创建一个性能足够好的模型。这是一个相对不太严重的问题——一旦发生这种情况,您可以回头更严格地检查数据质量。损失的时间较少,因此在这种情况下是可以忍受的。

更严重的问题,也是一个经常被忽视的问题是,数据科学家可能实际上得出一个看起来性能良好的模型(使用质量差的数据)——当基础测试数据质量也很差,并给人以良好性能的误导时,就会发生这种情况。这可能会令人惊讶地经常发生,尤其是在西部文化中,例如,在深度学习技术中,你只关注预测准确性,而不是获得和验证模型提供的洞察力。当这样的模型——使用有质量问题的数据构建——被部署到生产中时,它将表现不佳或不稳定。然后,通常一开始就认为这是模型的问题,例如,可能模型没有在足够多的测试数据上进行测试,所以它不能很好地概括生产场景。只是在那之后,很晚,注意力才转移到验证数据质量上。通过这种方式,潜在的数据质量问题很晚才被发现,数据科学团队的大量工作可能已经被浪费了。

影响的严重性

这些问题影响的严重性和性质取决于您的业务和正在解决的问题。然而,数据科学项目的类型通常有助于获得影响严重性/性质的一些初步近似值。如表 23-4 所示。

表 23-4

基于项目类型的数据质量的影响,有助于获得严重性/性质的一些初步近似值

|

项目类型

|

影响的严重性

|

影响的性质

|
| --- | --- | --- |
| 知识发现 | 批评的 | 来自 KDD 项目的结果/见解通常用于定义新的战略或启动新产品开发。由于这些通常是高成本投资,如果发现 KDD 项目的结果不正确,影响可能会相应地更大 |
| 数字信号处理器 | 中等–高 | 如果注入到流程中的模型在生产中表现不佳,流程中的改进可能不会达到预想/期望的程度。因此,投资回报率将低于预期。如果对监督最少的模型的依赖导致流程效率恶化,影响可能会更大 |
| DSI-产品 | 低-中等 | 由于产品已经支持了业务,如果引入的新功能没有按预期执行,影响相对较低。如果许多用户使用新功能,预期会产生中等程度的影响,而糟糕的体验会导致客户流失 |
| 压 | 高的 | 由于整个业务都依赖于数据和生成的模型,因此影响会很大。但是在这种情况下,由于模型是面向客户的产品的主要焦点,问题和影响往往会更快地被强调(和解决)。因此,我们将影响归类为高,而不是关键 |

确定低质量数据影响的严重性与通过确保数据质量来降低风险的工作量之间的适当权衡——这种风险-工作量权衡是数据质量计划的基石之一。在下面的章节中,我们将涉及到评估这种权衡的各个方面。

数据质量的维度

确保数据质量的第一大障碍在于定义数据质量。对于数据科学实践,定义最好由首席数据科学家与数据架构师或数据工程师合作完成。 5 这确保了每个人都符合定义和由此产生的数据质量需求,以及任何时间点的数据质量状态。

数据质量的定义通常采取确定各种维度的形式,可以沿着这些维度确定可量化的度量。维度的选择可能因组织而异。随着数据科学实践的成熟,维度的选择通常也会发生变化——可能会添加更多的维度,或者进一步细化现有的维度。在任何情况下,都有一些重复出现的典型尺寸——表 23-5 记录了其中一些尺寸。

表 23-5

数据质量的维度

|

数据质量维度

|

解决质量问题

|
| --- | --- |
| 一致性 | 数据管道中多个步骤的数据是否存在意外差异? |
| 有效期 | 数据是否具有预期的数值范围、数据类型和格式? |
| 完全 | 每个观察的所有属性都可用吗? |
| 可用性 | 数据科学团队可以使用这些观察结果吗?这由数据科学家根据所进行的数据分析的具体情况来决定。例如,在某些情况下,无效或不完整的观察结果可能仍然有用 |
| 准确 | 数据在多大程度上反映了现实世界? |

有关数据质量各个维度的更全面、更严格和更详细的覆盖范围,请参考 DAMA (2017)第十三章“数据质量”。 6

一旦您确定了相关维度,就该考虑如何沿着这些维度实际测量数据质量了。

测量数据质量

当谈到沿着确定的维度测量数据质量时,最初遇到的几个问题是“我们测量哪些数据?”以及“对于不同的维度,什么样的质量水平是可接受的?”。

解决这些问题的常见方法是将各种数据集“标记”为青铜、白银或黄金,如表 23-6 所示。

表 23-6

基于预期目的和数据的预期性质对数据集进行分级

|

级别

|

目的

|

数据的预期性质

|
| --- | --- | --- |
| 青铜 | 了解可用数据的早期探索;数据科学项目的可行性分析 | 未经任何处理的原始数据 |
| 银 | 数据科学过程的早期迭代,更加面向数据准备和数据可视化步骤 | 转换为标准格式的数据,已清理的数据,以及任何基本错误,如无效值、表间不一致等。,已被识别和标记 |
| 金色的 | 创建数据科学模型 | 从多个银表中提炼出具有必要质量的有趣观察结果 |

相应地,目标是黄金数据应该是高质量的(在所有质量维度上得分高),白银数据的质量可以稍低,所有其他数据都可以被视为青铜数据-青铜数据质量可能根本无法衡量或质量很差。

考虑到数据资产的这种分类,现在有必要首先投入所有必要的努力来确保您当前直接项目中使用的黄金数据集的质量。一旦确保您当前项目的黄金级数据的整个质量可以接受,您就可以根据您的战略需求和可用资源投入更多精力来衡量其他白银级和青铜级数据的质量。

确保数据质量

一旦确定了维度并对数据集进行了分级,通常会编写脚本来自动执行以下操作:

  • 衡量相关数据集的数据质量

  • 随着新数据的到来更新数据质量指标

  • 如果检测到任何严重的数据质量问题,则触发警报(例如,电子邮件通知)

这些脚本通常由数据工程团队编写和维护。

ML 技术也可用于帮助提高数据质量。有关该领域的概述,请参考使用机器学习提高数据质量(2021)。

对数据质量工作的抵制

当一个人事后意识到科学工作是浪费的,因为数据质量差,除了业务影响之外,这往往还会对数据科学家的士气和动力产生重大的负面影响。让一个科学家处理未经质量验证的数据从根本上违背了这一学科的精神。在任何其他科学领域,人们都不会期望科学家处理这样的数据,但在数据科学中,我们经常看到领导者和管理者没有充分关注数据质量,直到为时已晚。

一个潜在的根本原因是,一旦数据科学家加入进来,尝试创建模型会被认为更有成效(更有利可图)——典型的期望往往是“模型将于何时交付…?”甚至“第一季度计划交付多少款?”–只有在以后实际遇到任何问题时,才重新考虑数据质量。

在这种情况下,产生的感觉通常是没有足够的时间或带宽来正确定义“数据质量”,衡量数据质量指标,并确保必要的数据质量——这是数据质量工作的主要阻力。

知情的权衡分析通常有助于评估这种抵制是否合理。在权衡分析过程中,重要的是要充分认识到如果数据质量未经验证可能会出现的问题的性质和严重性。对不良数据质量影响的严重性(本节前面已介绍过)和可用带宽/资源之间的权衡进行客观分析,将有助于客观地确定在数据质量方面可以付出多少努力。

数据保护和隐私

数据保护/隐私是一个庞大的话题,影响着组织中数据存储和使用的方方面面。这是如此重要,以至于在许多公司,专门的首席信息安全官(CISO)负责确保数据保护和隐私。现有各种数据保护法规,例如

  • 通用法规,例如 GDPR

  • 特定于行业的法规,如针对健康信息的 HIPAA 等。

组织运营所在的地区/国家及其所属的垂直行业决定了适用的数据保护和隐私法规(例如这里提到的法规)。组织相应地采用它需要遵守的标准和法规遵从性要求。虽然在遵守这些法规时需要考虑几个因素,但对于用于数据科学的数据,有几个共同的重要方面。我们将在这一节谈到这些。

加密

通常,数据收集、存储和处理会使用适当的机制进行加密,以符合您的组织中针对安全性和法规遵从性设置的标准。

确保数据科学团队在数据科学流程的各个步骤中也遵循这些机制非常重要。以下是此类组织标准的几个示例,以及它们如何应用于数据科学团队:

  • 数据科学团队使用的数据湖或数据仓库应该加密。同样,如果您的流程允许数据科学家将这些数据下载到他们的机器上,那么他们的机器也需要加密。

  • 任何数据处理都应通过安全通道进行,如 HTTPS/TLS。这可能包括数据科学家下载数据的方式,或者集群(如 Spark 集群或 GPU 机器集群)中的机器之间如何进行数据传输。

访问控制

确保数据访问仅限于正确的团队成员非常重要。例如,如果一个数据科学家正在从事一个特定的项目,那么他们应该只被授予分析所需的表和行的访问权限。为此,各种数据湖和数据仓库支持访问控制机制。

有时,出于探索目的,数据科学家可能需要访问更多数据,甚至整个数据湖,在这种情况下,可以在有限的时间内提供扩展的访问权限。

限制对某些数据的写访问也是有用的;例如,您可以定义一个策略,以确保黄金数据仅由某些授权的数据工程师或数据科学家写入/更新。

最后,如果数据科学团队中的一些成员有权访问受保护的或可识别的信息,则需要审核所有此类访问。

可识别/受保护/敏感的信息

个人身份信息(PII)是指姓名、电话号码、地址等属性。,可用于识别特定的个人。甚至语音记录也可能是 PII,因为个人可能通过他们的声音被识别。

受保护信息扩展了 PII 的范围,包括使用您的服务收集的任何其他个人信息,这些信息可用于识别个人身份。例如,根据美国健康保险便携性和责任法案(HIPAA),受保护的健康信息(PHI)包括诸如病历号、健康保险详细信息等信息。,此外还有前面提到的 PII 信息。

最后,某些法规可能涵盖与“敏感”数据处理相关的方面。例如,根据 GDPR(第 9 条),敏感数据包括

透露种族或民族血统、政治观点、宗教或哲学信仰或工会成员身份的个人数据,以及对遗传数据、用于唯一识别自然人的生物特征数据、健康数据或自然人性生活或性取向数据的处理…

—gdpr(第 9 条)

数据科学团队必须意识到这些概念是组织的合规性目标所要求的,并且他们必须主动尝试而不是访问或使用 PII、受保护或敏感信息,除非绝对必要。即使在必要的时候,也需要以受控的方式提供访问权限。

例如,假设您正在构建一个基于数据科学的产品,该产品分析语音样本以检测健康状况。一旦您确定数据科学家确实需要访问包含声音样本的音频文件,那么在启用访问时,您应该考虑以下几个问题:

  • 我们能否将访问音频文件的权限限制在某些数据工程师或数据科学家,他们将执行数据准备以从音频样本中提取数字特征?这样,PII 访问受到高度限制,而团队的其他成员可以使用数字特征(不是 PII)进行建模等。

  • 音频文件是从多个国家收集的吗?如果是,PII 每个国家的水处理法规是什么?例如,很可能这些国家要求 PII 不能离开这个国家——任何对 PII 的加工都需要在这个国家进行。如果是这样,我们如何构建系统并定义流程,以便数据科学家能够在遵守这些约束的同时使用音频文件来创建模型?

这些通常是不小的挑战;这些解决方案将取决于您组织的数据架构、基础设施和法规遵从性要求。这通常需要首席架构师、数据架构师、首席数据科学家和首席信息安全官共同合作,定义一个整体战略,使数据科学符合法规。

最后,如果您正在使用(或计划使用)任何云服务,检查这些服务是否符合您组织的法规要求是很重要的。例如,如果您使用 AWS 来存储和处理美国的医疗保健信息,您需要检查您使用的 AWS 服务是否符合 HIPAA(它们通常都是符合的)。

联合学习

通常,组织希望合作创建新的模型。但是考虑到数据的敏感性和不可共享性,这样的合作是一个挑战。这尤其适用于医疗保健和金融等行业。

为了克服这一挑战,联合学习的概念最近开始在这些行业中获得牵引力。以下是联合学习的主要概念:

  • 组织可以安全地与其合作伙伴共享代码,例如模型训练代码。

  • 代码在合作伙伴基础设施中对合作伙伴数据安全地执行。

  • 执行代码的结果(例如,模型)被返回给请求/发起执行的组织。

确保模型和数据的安全性(一直到硬件级别)所需的关键能力之一是可信执行环境(TEE ),如英特尔 SGX。参考通过革命性技术的联合学习(2020)的例子,其中包括进一步的技术细节。

法律和监管方面

在上一节关于数据保护和隐私的内容中,我们讨论了一些关于数据存储、访问和处理的主要法规。假设所有这些方面都考虑到了,并且根据需要获得了个人的同意,那么在将数据用于数据科学时,还需要考虑其他几点。在本节中,我们将简要介绍从数据中创建 ML 模型的道德/法律和监管方面的具体内容

这些什么时候相关?

在很大程度上,本节涵盖的方面往往适用于消费品,包括网站/移动应用程序等。,由消费者使用。如果您的公司处理消费者数据,那么您需要付出努力来确保您的数据科学项目和模型满足以下概述的必要法规遵从性。

如果您的项目纯粹处理非个人数据,如传感器读数或收集的内部操作数据等。,那么这些法律因素可能不太相关。

我们建议,如果您正在进行 DSI-Prod 或 DSBP 项目, 7 主动检查所有合规性要求通常更安全,即使乍一看您似乎没有在处理消费者数据。

不歧视

正如我们在本书中所看到的,数据科学依赖于数据,从数据中学习模式,并根据过去的数据进行预测。各种 ML 算法可能以不同的方式“学习”,8 并且产生的模型将以不同的方式进行预测——但是它们最终基于在训练期间提供给它们的数据。如果数据本身在某些方面有偏差,那么得到的模型也可能有偏差。在过去几年中,在工作表现、金融贷款、教育、个人偏好等不同领域都有几个这样的例子——参见 O'Neil (2017)。GDPR 也在“貌相”下概述了这些方面,例如,见叙文 71 和第 22 条。

如果数据科学模型明确使用敏感数据,如种族、宗教等。,那么创建/准备数据的人类固有的任何偏差也将被 ML 算法“学习”。如果数据科学模型使用地理区域等其他相关信息,也会出现类似的偏差——这是因为一些地区可能有更多的低收入或少数民族居民。将使用这些数据训练的模型视为“客观的”可能是一个严重的错误。

可解释性和问责制

GDPR 第 12/13 条和美国 2019 年算法问责法案等法规涵盖了使用机器学习算法处理数据和决策的问责方面。例如,如果申请人的贷款请求基于一个模型被拒绝,组织要对拒绝负责(即,不能仅仅指出一个“模型”负有责任),还需要能够解释决策背后的原因。

即使一个组织是善意的,问责制的主要障碍之一是缺乏可解释性。 9 而解释的首要障碍在于一个 ML 模型的技术细节。

在第二十章中,我们看到了各种技术在涉及到归因预测的可解释性等因素时的显著差异。从纯技术的角度来看,这是构成模型可解释性的两个主要因素——哪些数据(属性)影响了决策/预测,以及算法(ML 模型)如何基于这些属性的值得出最终的决策/预测。

在第二十章中,在这两个因素上得分较低的技术——比如深度学习——在谈到模型的可解释性时最为臭名昭著。这类模型解释能力差,通常被称为黑箱模型。近年来,在黑盒模型的可解释性方面的研究越来越多。但是这些技术通常是近似或估计的,这导致了不能被信任的解释忠实于原始模型是如何得到预测的。有关更多详细信息,请参见 Rudin (2019)。

我们预计围绕这些方面的辩论将持续数年。同时,我们建议,如果您正在处理消费者信息和个人数据,尽可能使用可解释的技术,即在第二十章中对归因预测的可解释性具有高等级的技术。

可解释的人工智能:什么是“解释”?

一个人想要达到的理想目标是提供一个解释…

…以简明、透明、可理解和易于获取的形式,使用清晰明了的语言向数据主体披露…

—gdpr(第 12 条)

这涉及到的不仅仅是模型的可解释性——实现这一理想目标可能很棘手,即使对于在第二十章中归因预测的可解释性上获得 A/A+的技术来说也是如此。这是因为这些模型本质上基本上是数学模型,并且用“清晰明了的语言”来解释它们的行为。在某些情况下,对数据主体进行。不用说,使用黑盒模型更难达到这个理想目标(尽管在这种模型的可解释性方面正在进行研究)。

认知偏差

我们从第一章开始看爱丁顿和爱因斯坦——现在让我们重复回到他们身上。

爱丁顿的观察……非常不精确,其中一些与其他的相矛盾。当他选择哪些观察结果算作数据,哪些算作“噪音”,也就是说,当他选择保留哪些,丢弃哪些时,爱丁顿非常清楚爱因斯坦的预测。因此,爱丁顿只能声称已经证实了爱因斯坦,因为他用爱因斯坦的推导来决定他的观测实际上是什么,而爱因斯坦的推导之所以被接受,只是因为爱丁顿的观测似乎证实了它们。观察和预测是在一个相互证实的循环中联系在一起的,而不是像我们根据实验测试的传统想法所期望的那样相互独立。因此,正确的描述是存在“一致同意”,而不是存在一个理论,然后是一个测试,然后是一个确认。

—柯林斯和平奇(1998 年)

积极寻找并关注支持一个人已有信念的数据和证据的倾向被称为确认偏差

回想一下第三章,修道士文化的目标是寻找永恒的真理,而西部蛮荒文化对短期的、看似偶然的真理很满意。

偶然的真理通常不值得“相信”——因此,牛仔通常较少受到确认偏差的影响。例如,如果他们在新数据上检测到模型性能下降,表明该模型不适用于这些观察,他们将不会试图维护该模型。他们将简单地重新训练使用新的观察来建立代表新的短期事实的模型——这没什么大不了的。

另一方面,永恒的真理是经过深思熟虑后得出的,并且要求“信仰”——僧侣们投入大量精力提炼“真理”,一旦提炼出来就相信。僧侣们可能会选择忽略偶尔出现的与永恒真理相矛盾的微不足道的证据(观察),或者为了证明其误导性/不正确而对其进行检查。

不幸的是,“确认偏差”这个术语似乎有负面的含义——毕竟,所有科学的发展都依赖于一个健康的确认偏差。但有时,数据科学家可能会受到不健康的确认偏差的影响,这可能会因业务现实和迫在眉睫的截止日期而加剧,从而损害科学,并可能导致错误的结论/决策。例如,一个数据科学家可能会拒绝证明他们的真理/模型不成立的好的观察结果,从而导致错误的结论。

确认偏差是认知偏差、的主要例子,也就是说,人类推理通常会受到偏差的影响。除了确认偏差之外,还有许多其他认知偏差也在科学中扮演着重要的角色,尤其是在数据科学中。

虽然我们已经看到了一些偏见在起作用,但很高兴看到数据科学和机器学习的这一方面在过去几年的文献中受到关注。例如,参见 Kliegr、Bahník 和 Fürnkranz (2020 年)和 Miller (2018 年)。

认知偏差和数据科学项目

在我们看来,KDD 和 DSI-Proc 项目通常有受到认知偏差(如确认偏差)显著影响的风险。这是因为各种各样的原因,比如此类项目的目标、通常采用的数据科学文化等。至少对于这些类型的项目,谨慎的做法是对分析和结果进行同行审查,同行审查可以由其他数据科学家和数据/业务分析师酌情进行。

结论和进一步阅读

在最后一章中,我们讨论了执行数据科学项目的各个实际方面。我们首先看到了数据科学项目的四种常见类型,以及每种类型在数据科学流程、团队结构、参考架构等方面的一些典型特征。然后,我们讲述了用于评估数据科学团队绩效的 KPI。

然后,我们讨论了数据质量和数据保护/隐私的各个方面。关于这些和相关方面的更多细节,请参考 DAMA (2017)。

围绕数据科学的法律和监管方面正在快速发展,我们讨论了一些关键点,包括可解释性的概念。有关算法决策和解释权相关的 GDPR 的报道,请参考 Goodman 和 Flaxman (2017)。奥尼尔(2017)调查了数据科学和大数据对人类造成的所有负面影响。当前围绕数据和可解释的人工智能的一系列法规是由本书中提到的事件类型推动的。

然后我们研究了认知偏差,尤其是确认偏差。最近,在数据科学和机器学习的背景下,认知偏差的影响越来越受到关注。米勒(2018)很好地涵盖了什么构成了“解释”和相应的挑战,包括认知偏差。

参考

柯林斯,哈利和特雷弗·平奇。假人:每个人都应该知道的科学知识,第二版。英国剑桥:剑桥大学出版社,1998 年。

达马。 DAMA DMBOK,第二版。美国新泽西州:工艺出版物,2017 年。

通过革命性技术实现联合学习。2020 年 11 月 6 日。<https://consilient.com/white-paper/federated-learning-through-revolutionary-technology/

古德曼,布莱斯和塞斯·弗莱克斯曼。"欧盟关于算法决策和“解释权”的规定." AI 杂志【2017 年 10 月:50–57。<https://arxiv.org/pdf/1606.08813.pdf

Kliegr、Tomá、tápán Bahník 和 Johannes Fürnkranz。“认知偏差对基于规则的机器学习模型的解释的可能影响的综述。”2020 年 12 月。< https://arxiv.org/abs/1804.02969 >

米勒蒂姆。2018 年 8 月。人工智能中的解释:来自社会科学的见解。< https://arxiv.org/abs/1706.07269 >。

奥尼尔,凯西。破坏数学的武器。企鹅兰登书屋,2017。

鲁丁辛西娅。"停止解释高风险决策的黑盒机器学习模型,转而使用可解释的模型."2019.< https://arxiv.org/abs/1811.10154 >

利用机器学习提高数据质量。日期:2021 年 5 月。<www.cc-cdq.ch/Machine-Learning-for-Improving-Data-Quality

*

第一部分:基础知识

Fundamentals

这一部分讨论了数据科学以及它如何为您的业务带来益处。这一部分的三章为本书的其余部分奠定了基础。

在第一章中,我们将涵盖我们对什么是数据科学的观点,并介绍本书其余部分所基于的数据科学过程。

在第二章中,我们将讨论数据科学的业务方面。我们探讨了数据科学的各种优势,以帮助理解其对您的业务的重要性,同时涵盖了评估您的业务对数据科学的准备情况的各个方面。本章还提出了业务需求如何推动数据科学的概念。

在第三章中,我们介绍了数据科学的两种文化,以及它们对您的业务的重要性。文化渗透到从技术生态系统到过程的每一个方面,我们将在本书的其余部分看到。

第二部分:问题分类

Classes of Problems

在第一部分中,您了解了什么是数据科学,以及它将如何在总体上对企业有用。现在,您很自然地会想了解更多关于数据科学可以解决的具体问题,并了解这些问题与您的业务/组织中的问题之间的关系。

了解数据科学问题的一个好方法是首先了解问题的类别。许多单独的问题可以映射到这些类别中的一个,并需要类似的处理,尽管每个问题都有其自己独特的一组需要解决的挑战。本书的这一部分讲述了使用数据科学解决的问题类别,并为每个类别包含了一章,介绍了该类别中的一个具体问题——该章首先建立了一个业务动机,然后将该动机转化为一个具体的数据科学问题,并展示了如何通过为数据科学流程的每个步骤选择适当的技术来解决该问题。我们为每个问题选择的技巧只是一些例子,只是为了给出解决这样一个问题的思维过程的概述。基于您可能想要解决的问题的确切性质,您必须自己设计数据科学过程的步骤,方法是从第三部分后面更详细介绍的大量技术中进行选择。我们还将在第三部分讨论帮助您应用这些技术的库/工具。

您可能会在您的业务环境中涉及到这些章节中涉及的一些业务问题,这可能会为您提供一些关于您可以针对哪些业务问题的提示。这些章节还应该让你具备将这些业务问题转化为数据科学问题的技能。

TERMINOLOGY CHAOS: CLASSIFICATION AND REGRESSION

分类回归这样的术语的含义取决于上下文——它们可以指问题的类别,也可以指机器学习算法的类别。

本部分前两章的标题(“分类”和“回归”)指的是问题的类别, 而非 指的是机器学习算法的类别。因此,这两章讨论分类和回归问题。(这同样适用于本部分的其他章节标题,包括“集群”等。)

请注意,机器学习算法及其类别(包括分类和回归算法)将在第三部分(第十六章中详细讨论。

第三部分:技巧和技术

Techniques and Technologies

在第二部分中,我们研究了一些数据科学问题,以及如何通过在数据科学过程的不同步骤中选择适当的技术来解决这些问题。选择正确技术的技能取决于对数据科学过程中每一步可用的大量技术的良好概念性理解。在这一部分中,我们涵盖了数据科学过程的不同步骤中使用的各种技术和技术(库、工具、服务等)。)来应用这些技术。这一部分构成了这本书的技术核心。

在第十二章中,我们首先概述了数据科学流程所有步骤中涉及的技巧和技术。在第 13–17 章中,我们将更详细地了解数据科学流程的每个步骤——数据科学流程的每个步骤都有一章涵盖了该步骤的技巧/技术。然后,在第十八章中,我们将介绍贯穿数据科学流程多个步骤的其他重要工具和服务。

在第十九章中,我们将探讨一种参考架构,它将这些技术结合在一起,以支持运营数据科学团队。

掌握了技术背后的概念后,在第二十章,我们总结了在第三章开始的关于僧侣和牛仔的讨论。我们填补了他们实践中的差异,特别是关于文化如何决定技术和工艺的首选。

第四部分:建立团队和执行项目

Building Teams and Executing Projects

在前面的部分中,我们讨论了数据科学的业务和技术方面。在这最后一部分,我们将关注一些重要的(但经常被忽视的)实践方面,这些方面对于有效地进行数据科学至关重要。我们将涉及构建和组织数据科学团队以及管理数据科学项目的实践方面。

我们首先在第二十一章中介绍技能框架——这详细阐述了数据科学团队中常见角色所需的各种技能。在第二十二章中,我们将着眼于围绕有效执行的技能框架构建的典型团队结构。最后,在第二十三章中,我们涵盖了管理数据科学项目的几个重要方面,如数据科学项目的类型、确保这些项目中的数据质量、在从事这些项目时必须牢记的监管方面等。

posted @   绝不原创的飞龙  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示