DataRobot-敏捷机器学习-全-

DataRobot 敏捷机器学习(全)

原文:annas-archive.org/md5/8aa4ac5f12c22ddd6b021468c51f10f7

译者:飞龙

协议:CC BY-NC-SA 4.0

前言

DataRobot 使数据科学团队能够更加高效和富有生产力。本书帮助您利用 DataRobot 的企业平台解决机器学习ML)挑战,让您能够从数据中提取商业价值,并为您的组织快速产生商业影响。

您将从学习如何使用 DataRobot 的功能来自动执行数据准备和清洗任务开始。本书涵盖了构建和部署机器学习模型的最佳实践,以及将它们扩展以处理复杂业务问题时所面临的挑战。接下来,您将执行探索性数据分析EDA)任务,为构建机器学习模型做准备,并了解如何解释结果。您还将发现如何分析模型的预测,并将它们转化为面向业务用户的可操作见解。之后,您将为内部和合规目的创建模型文档,并学习模型如何作为 API 部署。此外,您还将了解如何使模型运行并监控其性能。最后,您将使用 DataRobot 的高级功能处理时间序列预测、自然语言处理、图像处理、MLOps 等示例。

在本书结束时,您将学会如何使用 DataRobot 提供的某些 AutoML 和 MLOps 功能,通过避免重复性任务和常见错误来扩展机器学习模型构建。

本书面向对象

本书面向寻找使用 DataRobot 构建和部署稳健机器学习模型实用指南的数据科学家、数据分析师和数据爱好者。经验丰富的数据科学家也会发现本书对快速探索、构建和部署更广泛的模型有所帮助。本书假设您对机器学习有基本了解。

本书涵盖内容

第一章什么是 DataRobot 以及为什么您需要它,描述了构建和部署机器学习模型的当前实践和流程,以及这种方法在扩展时的一些挑战。然后,本章将描述 DataRobot 是什么,以及它是如何解决许多这些挑战的,从而让分析师和数据科学家能够快速为他们的组织增加价值。这也有助于高管了解他们如何使用 DataRobot 来高效地扩展他们的数据科学实践,而无需雇佣一支拥有难以找到的技能的大规模团队。本章还描述了 DataRobot 的各种组件,其架构方式,如何与其他工具集成,以及在不同地点或云中设置的不同选项。它还从高层次上描述了各种用户界面组件及其含义。

第二章机器学习基础,涵盖了本书中将使用和引用的一些机器学习基本概念。这是您使用 DataRobot 有效所需的最基本知识。本章的意图不是让您全面了解机器学习,而是对一些关键思想进行复习。

第三章理解和定义商业问题,将向您展示如何找到问题的根源并将其设定为一个机器学习项目。一个商业问题需要被仔细定义并转化为机器学习问题,以便使用 DataRobot 解决。这是一个经常被忽视的关键步骤,可能导致下游的问题和失败。请仔细阅读本章,以防止大量辛勤工作的浪费。本章不涉及工具和机器学习方法。

第四章为 DataRobot 准备数据,涵盖了如何从多个不同的来源在高级别上拼接数据。根据数据,DataRobot 可能会自动执行数据准备和清洗任务,或者您可能需要自己执行其中的一些任务。本章涵盖了概念和示例,说明如何清洗和准备您的数据以及 DataRobot 提供的帮助这些任务的特性。

第五章使用 DataRobot 进行数据探索性分析,将向您展示如何使用 DataRobot 进行各种数据分析,并将数据准备好以开始构建模型。我们提供了详细的示例,说明应该进行哪些分析以及需要注意哪些事项,以防止下游出现问题。如果做得正确,这种分析可以帮助发现数据问题,并产生有用的业务洞察。

第六章使用 DataRobot 构建模型,展示了使用 DataRobot 构建不同类型模型的逐步示例。我们涵盖了在不同情况下应使用哪些设置、如何选择特定的模型类型、设置交叉验证、构建集成模型以及跟踪排行榜上表现最好的模型等细节。

第七章模型理解和可解释性,将向您展示 DataRobot 提供的各种函数和输出示例,以帮助您理解模型并选择最佳解决商业问题的模型。在本章中,我们将通过示例介绍您需要注意的方面以及在模型选择中必须做出的权衡。

第八章模型评分和部署,涵盖了如何使用模型对输入数据集进行评分、创建用于预期应用的预测、在生产中部署模型以及监控模型。

第九章, 预测和时间序列建模,介绍了如何构建时间序列模型。这类模型通常用于预测应用。本章展示了如何使用 DataRobot 处理不同的时间序列问题。我们涵盖了单序列和多序列问题。

第十章, 推荐系统,涵盖了如何使用 DataRobot 构建推荐系统的示例。这类模型通常用于向用户推荐产品或服务。本章涵盖了使用 DataRobot 处理推荐问题的策略和功能差异。我们讨论了构建不同推荐模型相关的权衡。

第十一章, 处理地理空间数据、NLP 和图像处理,涵盖了与 DataRobot 相关的各种可视化和分析地理空间、文本和图像特征的功能,以及构建包含这些特征的人工智能模型。本章描述了 DataRobot 自动将文本和图像数据纳入人工智能模型的能力,从而提高这些模型的表现。

第十二章, DataRobot Python API,描述了何时以及如何使用 DataRobot Python API。虽然 DataRobot 自动化了许多模型构建的方面,但在许多场景中,您需要使用 Python 等编程语言来高效和可扩展地执行人工智能任务。DataRobot 提供了一个方便的 API,允许经验丰富的数据科学家以编程方式执行 DataRobot 功能。

第十三章, 模型治理和 MLOps,涵盖了开始受到广泛关注的一些最新话题。一旦模型被开发和部署,就需要在一段时间内对其进行治理和维护。虽然这在许多方面与 IT 系统相似,但也有一些关键差异需要理解和实施。本章涵盖了 DataRobot 提供的几个特性和功能,以协助治理和维护人工智能模型。

第十四章, 结论,涵盖了获取额外信息和本书范围之外的其他主题的地方。我们还描述了我们对自动化人工智能和 DataRobot 未来发展的看法。

为了充分利用这本书

为了充分利用本书,您将需要访问 DataRobot 软件。商业版本具有所有功能。如果您没有访问商业版本,您可以获取一个有限时间内有效且不具备所有讨论功能的评估版本。对于一些高级功能和 API 的正常工作,您需要了解一些 Python,并有权访问开源 Python 环境(例如 Anaconda 或 Jupyter Notebooks)。

图片

尽管本书中描述的大部分内容可以在不知道 Python 的情况下完成,但我们强烈建议您学习 Python 作为下一步。了解像 Python 这样的编程语言将为您打开更多可能性,并使您能够更好地利用 DataRobot 等工具。

代码在行动

本书的相关“代码在行动”视频可以在bit.ly/3cj2qp1查看。

下载彩色图像

我们还提供了一份包含本书中使用的截图和图表彩色图像的 PDF 文件。您可以从这里下载:static.packt-cdn.com/downloads/9781801076807_ColorImages.pdf(_ColorImages.pdf)。

使用的约定

本书中使用了多种文本约定。

文本中的代码: 表示文本中的代码单词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 昵称。以下是一个例子:“为了我们的目的,我们简单地复制了我们的imports-85-data.xlsx数据集文件,并将其命名为imports-85-data-score.xlsx。”

代码块设置如下:

deployment = dr.Deployment.create_from_learning_model(
    MODEL_ID, label='DEPLOYMENT_LABEL',
    description='DEPLOYMENT_DESCRIPTION',
    default_prediction_server_id=PREDICTION_SERVER_ID)
deployment

粗体: 表示新术语、重要单词或屏幕上显示的单词。例如,菜单或对话框中的单词会以粗体显示。以下是一个例子:“在选择选项后,我们可以点击计算并下载预测按钮。”

提示或重要注意事项

看起来像这样。

取得联系

我们始终欢迎读者的反馈。

一般反馈: 如果您对本书的任何方面有疑问,请通过 customercare@packtpub.com 给我们发邮件,并在邮件主题中提及书名。

勘误表: 尽管我们已经尽一切努力确保内容的准确性,但错误仍然可能发生。如果您在这本书中发现了错误,我们将不胜感激,如果您能向我们报告这一点。请访问www.packtpub.com/support/errata并填写表格。

盗版: 如果你在互联网上以任何形式遇到我们作品的非法副本,如果你能提供位置地址或网站名称,我们将不胜感激。请通过版权@packt.com 与我们联系,并提供材料的链接。

如果您有兴趣成为作者:如果您在某个领域有专业知识,并且您有兴趣撰写或为书籍做出贡献,请访问authors.packtpub.com

分享您的想法

一旦您阅读了《使用 DataRobot 的敏捷机器学习》,我们非常期待听到您的想法!请点击此处直接访问亚马逊评论页面并分享您的反馈。

您的评论对我们和科技社区都非常重要,它将帮助我们确保我们提供高质量的内容。

第一部分:基础

本节将涵盖一些对于机器学习项目成功至关重要的基础但关键事项。无论你是刚开始还是经验丰富的数据科学家,你都会发现一些你可能不熟悉或过去曾跳过的主题。

本节包括以下章节:

  • 第一章什么是 DataRobot 以及为什么你需要它

  • 第二章机器学习基础

  • 第三章理解和定义业务问题

第一章:什么是 DataRobot 以及为什么你需要它?

机器学习ML)和人工智能现在是热门话题,很明显,这些技术将在大多数组织的成功和竞争力中发挥关键作用。这将产生对具有数据科学技能的人的巨大需求。

本章描述了构建和部署机器学习模型当前的做法和流程,以及将这些方法扩展以满足预期需求的一些挑战。然后,本章描述了DataRobot是什么以及DataRobot如何解决许多这些挑战,从而使得分析师和数据科学家能够快速为他们的组织增加价值。本章还帮助高管了解他们如何使用 DataRobot 高效地扩展他们的数据科学实践,而无需雇佣大量难以找到技能的员工,以及如何利用 DataRobot 提高现有数据科学团队的有效性。本章涵盖了 DataRobot 的各个组成部分、其架构、如何与其他工具集成以及不同选项在本地或云中设置。它还从高层次上描述了各种用户界面组件及其含义。

到本章结束时,您将了解 DataRobot 的核心功能和架构,以及为什么它是数据分析师以及经验丰富的数据科学家解决组织在从数据中提取价值时面临的最关键挑战的强大推动者。

在本章中,我们将涵盖以下主题:

  • 数据科学实践和流程

  • 与数据科学相关联的挑战

  • DataRobot 架构

  • DataRobot 功能和如何使用它们

  • DataRobot 如何解决数据科学挑战

技术要求

本书要求您能够访问 DataRobot。DataRobot 是一款商业软件,您需要为其购买许可证。很可能是您的组织已经购买了 DataRobot 许可证,您的管理员可以在 DataRobot 实例上为您设置账户,并提供访问 DataRobot 的适当 URL。

在本书编写时,DataRobot 网站上提供了一个试用版,您可以从www.datarobot.com/trial/访问。请注意,试用版并不提供商业版的所有功能,并且它提供的内容可能会随时间变化。

生成商业价值的数据科学流程

数据科学是一种新兴实践,已经引起了大量的炒作。其中很多含义仍在争论中,实践也在快速发展。尽管存在这些争论,但毫无疑问,如果使用得当,数据科学方法可以为企业带来好处。遵循流程并不能保证成功,但它确实可以提高成功的几率,并允许进行改进。数据科学流程本质上是迭代的,因此不要在一个特定步骤上停留太久是很重要的。寻找可预测和预定时间表和结果的人注定会失望。无论如何,制定一个计划,但也要准备好在前进过程中保持灵活和敏捷。数据科学项目也是一个发现项目:你永远不知道你会发现什么。你的期望或假设可能最终是错误的,你也可能从意想不到的来源发现有趣的见解。

数据科学有许多已知的应用,每天都有新的应用被发现。以下是一些示例应用:

  • 预测哪位客户最有可能购买产品

  • 预测哪位客户会回来

  • 预测客户接下来会想要什么

  • 预测哪位客户可能会违约

  • 预测哪位客户可能发生事故

  • 预测机器的哪个部件可能会故障

  • 预测商店将卖出多少商品

  • 预测呼叫中心明天将接收多少个电话

  • 预测下个月将消耗多少能源

图 1.1 展示了一个高层次的过程,描述了数据科学项目可能从概念到价值生成的过程:

![图 1.1 – 每个步骤的典型流程及其详细信息img/b17159_01_01_new_2.jpg

图 1.1 – 每个步骤的典型流程及其详细信息

遵循这些步骤对于成功进行机器学习项目至关重要。有时,由于截止日期或开发调试过程中不可避免地出现的问题,这些步骤会被跳过。我们将展示如何使用 DataRobot 帮助您避免一些问题,并确保您的团队能够遵循最佳实践。这些步骤将在本书的其他章节中详细阐述,并附有示例,但让我们先从高层次上熟悉它们。

问题理解

这可能是最重要的步骤,同时也是最不受重视的步骤。大多数数据科学项目失败是因为这一步骤被仓促完成。这也是数据科学学科中可用的方法和工具最少的任务。这一步骤包括以下内容:

  • 从系统角度理解业务问题

  • 理解最终用户或模型结果消费者期望的是什么

  • 理解利益相关者将如何使用这些结果

  • 理解潜在的数据来源以及数据在到达你之前是如何被捕获和修改的

  • 评估使用数据和数据源是否存在任何法律问题

  • 深入理解数据集的各种特征含义

数据准备

在数据科学社区中,此步骤广为人知,因为数据科学团队通常将大部分时间花在这一步骤上。这是一个 DataRobot 能力开始发挥作用但并非完全发挥的任务。数据科学或数据工程团队仍需使用 SQL、Python 或 R 完成大量工作。此步骤中也有许多任务需要数据科学家的技能和经验(例如,特征工程),尽管 DataRobot 开始在这一领域提供能力。例如,DataRobot 提供了大量有用的数据可视化和关于数据质量的通知,但分析师需要从中理解并采取适当的行动。

此步骤还涉及定义模型的预期结果(例如预测下周将售出多少商品或确定贷款违约的概率)以及如何在模型开发、验证和测试阶段衡量结果的质量。

模型开发

此步骤涉及使用不同的算法开发多个模型,并优化或调整算法的超参数。然后评估模型产生的结果,以缩小模型列表,可能删除一些特征,并微调超参数。

通常还会查看特征效应、特征重要性和部分依赖图来构建额外的特征。一旦对结果满意,您就开始思考如何将预测和解释转化为可用和可操作的信息。

模型部署

模型开发完成后,与用户和利益相关者审查模型结果。这是您应该仔细评估结果将如何转化为行动的时候。这些行动的后果是什么,是否存在可能出现的意外后果?这也是评估模型产生的任何公平性或偏差问题的时机。务必与用户和业务领导者讨论任何担忧。

DataRobot 提供几种机制,可以快速将模型作为 REST API 或可执行的 Java 对象部署到组织的任何基础设施或云中。一旦模型作为 API 运行,变更管理的困难部分就开始了。您必须确保组织为与新的业务方式相关的变化做好准备。这对习惯于以某种方式做事的人来说通常很困难。沟通为什么这是必要的,为什么它更好,以及如何执行新功能是经常被忽视的重要方面。

模型维护

一旦模型成功部署并运行,重点就转向管理模型的操作和维护。这包括确定数据差距和其他建议,以随着时间的推移改进模型,以及根据需要改进和重新训练模型。监控包括评估传入的数据以查看数据是否发生了漂移以及漂移是否需要采取行动,监控预测服务的健康状况,以及监控模型输出的结果和准确性。定期与用户会面,了解模型做得好的地方以及可以改进的地方也很重要。有时也常见到使用冠军模型和挑战者模型来查看是否有一个不同的模型能够在生产环境中表现更好。

如我们之前概述的,尽管这些步骤以线性方式呈现,但在实践中,这些步骤并不按照这种精确的顺序发生,通常在得到最终结果之前会有大量的迭代。机器学习模型开发是一个具有挑战性的过程,我们现在将讨论一些挑战以及如何应对它们。

与数据科学相关的挑战

从数据科学项目中获得价值并不容易,许多项目以失败告终。虽然一些原因与任何类型的项目都普遍存在,但数据科学项目有一些独特的挑战。数据科学仍然是一个相对年轻和不成熟的学科,因此会遭遇任何新兴学科都会遇到的问题。数据科学从业者可以从其他成熟的学科中学习,以避免一些别人已经学会避免的错误。让我们回顾一下使数据科学项目具有挑战性的关键问题:

  • 缺乏高质量的数据:这是一个常见的说法,但这个问题不太可能在不久的将来消失。关键原因在于,大多数组织习惯于收集数据用于报告。这通常是汇总的、以成功为导向的信息。而用于构建模型所需的数据则需要详细,并且应该捕捉到所有结果。许多组织为了满足数据需求,在数据和数据仓库上投入了大量资金;他们犯的错误是从报告的角度而不是从模型的角度收集数据。因此,尽管花费了大量的时间和成本,他们最终发现自己处于一个可用数据不足的地方。这导致高层领导对为什么他们的团队能够利用这些花费巨大的大型数据仓库感到沮丧。花一些时间在发展对业务的系统性理解上可以帮助缓解这个问题,正如以下章节所讨论的。

  • 数据爆炸:数据正在以指数级规模生成和收集。随着收集到的数据越来越多,数据的规模使得通过传统的报告方法进行分析和理解变得更加困难。新的数据也催生了之前不可能实现的新用例。数据的扩展也增加了噪声。这使得使用传统方法提取有意义的见解变得越来越困难。

  • 经验丰富的数据科学家短缺:这也是一个受到很多关注的主题。短缺的原因是这是一个相对较新的领域,技术和方法仍在迅速发展。另一个因素是数据科学是一个多学科领域,需要多个领域的专业知识,如统计学、计算机科学和商业,以及对其应用领域的了解。今天的大多数人才库相对缺乏经验,因此大多数数据科学家还没有机会使用广泛的方法和数据类型在各种用例上工作。最佳实践仍在不断发展,并未得到广泛应用。随着越来越多的工作变得数据驱动,对于广泛的员工来说,具备数据意识也将变得重要。

  • 工具和环境不成熟:目前使用的工具和环境相对不成熟,这使得高效构建和部署模型变得困难。数据科学家的大部分时间都花在与数据和基础设施问题作斗争上,这限制了他们理解业务问题和评估模型商业和伦理影响的时间。这反过来又增加了无法产生持久商业价值的风险。

  • 黑盒模型:随着模型复杂性的增加,我们理解它们所做事情的能力下降。这种缺乏透明度造成了许多问题,可能导致模型产生无意义的或最糟糕的情况下的危险结果。更糟糕的是,这些模型在训练和验证数据集上往往具有更好的准确性。黑盒模型往往难以向利益相关者解释,因此不太可能被用户采用。

  • 偏差和公平性:机器学习模型存在偏差和不公平的问题最近被提出,并且对于任何希望开发和部署机器学习模型的人来说,这是一个关键的关注点。偏差可以通过有偏差的数据、有偏差的过程,甚至使用模型结果进行有偏差的决策而渗透到模型中。使用黑盒模型使得这个问题更加难以追踪和管理。偏差和公平性难以检测,但将越来越重要,不仅对组织的声誉至关重要,而且与它们可能引发的监管或法律问题也密切相关。

在我们讨论如何解决这些挑战之前,我们需要向您介绍 DataRobot,因为正如您可能已经猜到的,DataRobot 有助于解决许多这些挑战。

DataRobot 架构

DataRobot 是自动化机器学习AutoML)最知名的商业工具之一。似乎只有让旨在自动化的技术本身也受益于自动化才是合适的。随着您通过数据科学过程,您将意识到有许多任务在性质上是重复的,并且标准化到足以值得自动化的程度。DataRobot 在捕捉此类任务以增加构建和部署机器学习模型的速度、规模和效率方面做得非常出色。我们将在本书中详细讨论这些方面。话虽如此,仍有许多任务和此过程中的方面仍需要数据科学家和数据分析师做出决策、采取行动和权衡。我们也将突出这些内容。以下图显示了 DataRobot 架构的高级视图:

图 1.2 – DataRobot 架构的关键组件

图 1.2 – DataRobot 架构的关键组件

该图显示了架构的五个关键层及其相应的组件。在接下来的章节中,我们将描述每一层以及它是如何使数据科学项目得以实现的。

托管平台

数据机器人环境可以通过网页浏览器访问。该环境本身可以托管在组织的服务器上,或者托管在云平台(如 AWS 或 DataRobot 的云)上的组织服务器实例中。每种托管选项都有其优缺点,您应该选择的选项取决于您组织的需要。其中一些在表 1.1中进行了高层次讨论:

图 1.3 – 各种托管选项的优缺点

图 1.3 – 各种托管选项的优缺点

如您从这张表中可以看出,DataRobot 为您提供了很多选择,您可以选择最适合您环境的选项。重要的是让您的 IT、信息安全和法律团队参与这次对话。现在让我们看看数据是如何进入 DataRobot 的。

数据来源

数据集可以通过本地文件(csvxlsx等)、连接到关系数据库、从 URL 或从Hadoop 分布式文件系统HDFS)(如果为您的环境设置了)导入到 DataRobot 中。数据集可以直接导入到项目中,也可以放入 AI 目录中。目录中的数据集可以在多个项目中共享。DataRobot 与多个数据管理系统提供商建立了集成和技术联盟。

核心功能

DataRobot 提供了一套相当全面的特性来支持整个机器学习过程,无论是通过核心产品还是通过附加组件,如 Paxata,它提供了易于使用的数据准备和探索性数据分析(EDA)功能。关于 Paxata 的讨论超出了本书的范围,因此我们将提供核心产品功能的详细信息。DataRobot 自动执行几个 EDA 分析,并将这些分析展示给用户,以帮助他们深入了解数据集并捕捉任何可能需要修复的数据质量问题。

自动建模功能是 DataRobot 提供的关键功能。这包括确定要在选定的问题上尝试的算法、执行基本特征工程、自动构建模型、调整超参数、构建集成模型,以及展示结果。必须注意的是,DataRobot 主要支持监督机器学习算法和时间序列算法。尽管有执行自然语言处理(NLP)和图像处理的功能,但这些功能并不全面。DataRobot 最近还通过提供快速将模型作为 REST API 部署、监控数据漂移和服务健康以及跟踪模型性能的功能,增加了 MLOps 功能。DataRobot 还在继续增加功能,例如支持地理空间数据和偏差检测。

这些任务通常需要使用 R 和 Python 等编程语言来完成,可能会相当耗时。用于编写数据分析、模型构建、输出分析和部署的代码所花费的时间可能非常可观。通常,大量的时间也会用于调试和修复错误,以及使代码更加健壮。根据模型的大小和复杂性,这个过程可能需要从几周到几个月不等。DataRobot 可以将这个时间缩短到几天。这些时间可以反过来用于更快地交付项目、构建更健壮的模型,以及更好地理解要解决的问题。

外部交互

DataRobot 的功能可以通过一个全面的用户界面(我们将在下一节中描述)访问,也可以通过一个客户端库在 Python 或 R 框架中使用,以编程方式通过 API 访问 DataRobot 的功能,以及一个用于外部应用程序的 REST API。DataRobot 还提供了创建应用程序的能力,这些应用程序可供商业用户使用,使他们能够做出数据驱动的决策。

用户

虽然大多数人认为数据机器人是为不喜欢编码的数据分析师和数据科学家而设计的,但它为能够编码的数据科学家提供了显著的能力,并且可以显著提高任何数据科学团队的效率。对于某些特定用例,它也提供了一些对商业用户的支持。其他系统可以通过 API 与数据机器人模型集成,这可以用于向外部系统添加智能或在外部数据库中存储预测。他们通过合作伙伴计划存在几个工具集成。

导航和使用数据机器人功能

现在您已经对核心功能有所了解,让我们快速浏览一下数据机器人看起来如何以及如何导航各种功能。本节将从高层次介绍数据机器人,但请放心:我们将在随后的章节中深入细节。本节仅旨在让您熟悉数据机器人的功能。

您的数据机器人管理员将为您提供适当的 URL 以及用于访问您的数据机器人实例的用户名和密码。根据我的经验,谷歌 Chrome 似乎与数据机器人配合得最好,但您当然可以根据需要尝试其他浏览器。

注意

请注意,您看到的屏幕和选项取决于您拥有的产品许可证以及管理员授予您的权限。在大多数情况下,这不会影响本书的流程。由于我们将专注于数据机器人的 ML 开发核心,您应该能够跟上。

因此,让我们启动浏览器并访问您的数据机器人 URL。您将看到一个登录界面,如图下所示:

![图 1.4 – 数据机器人登录界面图片

图 1.4 – 数据机器人登录界面

使用您的凭证登录。登录后,您将看到一个欢迎界面(图 1.4),提示您选择下一步要做什么。根据您的设置,您也可能直接进入数据输入界面(图 1.5):

![图 1.5 – 欢迎界面图片

图 1.5 – 欢迎界面

在此阶段,我们将选择ML 开发选项并点击继续按钮。这将提示您提供您希望用于构建模型的数据库(图 1.5):

![图 1.6 – 新项目/拖拽数据集界面图片

图 1.6 – 新项目/拖拽数据集界面

在此阶段,您可以从您的本地机器将数据集文件拖拽到屏幕上(或选择其他选项之一),数据机器人将开始分析您的数据。您可以通过点击查看数据集要求链接来查看可用的文件格式选项(图 1.6)。您的实例的文件大小要求可能与这里看到的不同:

![图 1.7 – 数据集要求图片

图 1.7 – 数据集要求

在这一点上,您可以从您的本地驱动器上传任何测试数据集。DataRobot 将立即开始评估您的数据(图 1.7):

图 1.8 – EDA

图 1.8 – EDA

我们将在后面的章节中介绍构建项目和关联模型的过程;现在,让我们来看看我们还有哪些其他选项。如果您点击右上角的图标,您将看到文档下拉菜单(图 1.8):

图 1.9 – 文档下拉菜单

图 1.9 – 文档下拉菜单

在这里,您可以看到各种选项,了解更多关于不同功能的信息,联系客户支持,或与 DataRobot 社区互动。我强烈建议加入社区,与其他社区成员互动和学习。您可以通过community.datarobot.com访问社区。如果您从下拉菜单中选择平台文档,您将看到关于 DataRobot 函数的详尽文档(图 1.9):

图 1.10 – DataRobot 平台文档

图 1.10 – DataRobot 平台文档

您可以随意查看各种主题,或者根据您正在处理的任务需要,回到特定的主题。让我们再次点击右上角的图标,这次从下拉菜单中选择API 文档。现在,您将看到 DataRobot API 的文档(图 1.10):

图 1.11 – DataRobot API 文档

图 1.11 – DataRobot API 文档

我们将在后面的章节中介绍 API。如果您不熟悉编程或相对较新手,您可以现在忽略这部分内容。如果您是一位在 Python 或 R 方面有专长的经验丰富的数据科学家,您可以从现在开始审查您可用的各种函数,以进一步自动化您的模型构建任务。

让我们回到主 DataRobot 页面,这次选择页面右上角的文件夹图标(图 1.11):

图 1.12 – 项目下拉菜单

图 1.12 – 项目下拉菜单

如果您看不到文件夹图标,这仅仅意味着您还没有定义任何项目。我们将在稍后更详细地描述创建项目。现在,只需熟悉不同的选项及其外观。在这里,您将看到创建新项目或管理现有项目的选项。在这里,您还可以看到有关当前活动项目的详细信息以及最近项目的列表。

创建新项目选项将带您回到之前在图 1.5中看到的新的项目页面。如果您选择管理项目菜单,它将按创建日期列出您所有的项目(图 1.12)。在这里,您可以选择一个项目以查看更多详细信息,克隆项目,与其他用户共享项目,或根据需要删除项目,如图所示:

![图 1.13 – 管理项目页面图片

图 1.13 – 管理项目页面

如果您点击页面右上角看起来像一个人的最后一个菜单项,您将看到一个下拉菜单(图 1.13):

![图 1.14 – 用户账户管理下拉菜单图片

图 1.14 – 用户账户管理下拉菜单

从这里您可以管理您的个人资料并调整您的账户设置。如果您有管理员权限,您可以查看和管理其他用户和组。如果需要,您还可以从 DataRobot 注销。

如果您选择个人资料菜单,您将看到您的账户详细信息(图 1.14):

![图 1.15 – 用户资料页面图片

图 1.15 – 用户资料页面

在这里,您可以更新一些您的信息。您还会在顶部的第二行菜单中看到一些新的菜单选项。这允许您更改设置或访问一些开发者选项等。如果您选择设置菜单,您将看到以下内容(图 1.15):

![图 1.16 – 用户设置图片

图 1.16 – 用户设置

在此页面,您可以更改密码,设置双因素认证,更改主题,并设置通知(您将看到基于管理员如何设置您的账户的不同选项)。

如果您选择开发者工具,您将看到以下内容(图 1.16):

![图 1.17 – 开发者工具屏幕图片

图 1.17 – 开发者工具屏幕

在这里,您可以创建与您的账户关联的 API 密钥。如果您将使用 DataRobot API,此密钥非常有用。您还可以下载 API 包以在组织的基础设施内部署模型设置可携带的预测服务器。

如果您点击顶部的人工智能目录菜单,您将看到 DataRobot 内可共享的数据集目录(图 1.17):

![图 1.18 – 人工智能目录图片

图 1.18 – 人工智能目录

此页面显示可用的数据集列表。如果您看不到任何数据集,您可以点击添加新数据按钮(图 1.18)上传测试数据集。您还可以点击数据集来探索可用的数据。您可以按来源、用户定义的标签或所有者/创建者进行搜索和排序:

![图 1.19 – 数据集信息页面图片

图 1.19 – 数据集信息页面

通常,数据集仅限于项目内部使用。如果你想在不同项目或项目的迭代中共享数据集,你可以在本目录中创建数据集。这允许你在项目和用户之间共享这些数据集。数据集可以是静态的,也可以根据需要动态创建 SQL 查询。如果你需要从多个表或来源为项目获取数据,也可以通过 Spark SQL 修改或混合数据集。

如果你点击配置文件按钮,你将看到数据集的配置文件级别信息(图 1.19)。这些信息会自动为你编译。我们将在稍后更详细地描述这些功能及其使用方法:

图 1.20 – 数据集信息页面

图 1.20 – 数据集信息页面

此页面显示了当时活动项目中数据集的详细信息。此页面是 DataRobot 能力的关键组成部分之一。页面显示了摘要信息以及 DataRobot 检测到的任何数据质量问题。下面,它显示了数据特征的摘要以及相对于目标特征的特征重要性。我们将在后续章节中更详细地介绍这些功能。

现在点击页面左上角的数据菜单。此页面(图 1.20)显示了当前活动项目的数据集的详细分析:

图 1.21 – 项目数据页面

图 1.21 – 项目数据页面

此页面显示了你的数据集分析结果,提供了任何警告,特征的相关重要性,以及用于项目的特征列表。我们将在后续章节中详细审查此页面的功能。

现在点击页面顶部的模型菜单项。这显示了活动项目的模型排行榜(图 1.21):

图 1.22 – 模型排行榜

图 1.22 – 模型排行榜

这是建模过程中你将花费大量时间的另一个关键页面。在这里,你可以看到 DataRobot 构建的顶级模型及其验证、交叉验证和保留样本的性能指标。你可以深入了解任何选定的模型的详细信息。需要注意的是,DataRobot 主要处理监督学习问题;目前,它不支持无监督学习(除了某些异常检测)或强化学习。此外,对 NLP 和图像处理问题的支持有限。同样,在某些情况下,由于数据限制或极端规模,你会发现自动化增加了一层开销,使得使用 DataRobot 变得不切实际。如果你的项目需要这些领域的先进功能,你将需要直接在 Python 或 R 中工作。后续章节将有更多介绍。

现在我们转到下一个菜单项,MLOps。当你点击MLOps时,你会看到图 1.22所示的屏幕:

图 1.23 – MLOps 页面

图 1.23 – MLOps 页面

MLOps页面显示了你的活动部署及其健康状况。你可以根据你的用例设置有关数据漂移或模型准确性的警报。

下一个菜单项是模型注册。现在,模型注册是你将外部开发模型引入 DataRobot 的机制。这种功能是一个可选的附加组件,你的组织可能已经购买或尚未购买。这个方面是一个超出本书范围的高级主题。

让我们点击下一个菜单项,应用程序。你现在将看到图 1.23中显示的内容:

图 1.24 – 应用程序页面

图 1.24 – 应用程序页面

应用程序是 DataRobot 中相对较新的功能,旨在允许业务用户轻松访问模型结果,而无需获取 DataRobot 用户许可证。

这就结束了我们对 DataRobot 是什么以及它看起来像什么的快速浏览。我们将详细回顾许多这些组件,并看到这些组件是如何从项目开始到结束被使用的例子。

使用 DataRobot 解决数据科学挑战

现在你已经了解了 DataRobot 提供的内容,让我们重新审视数据科学流程和挑战,看看 DataRobot 是如何帮助解决这些挑战的,以及为什么它是你工具箱中一个有价值的工具。

缺乏高质量的数据

虽然 DataRobot 无法在很大程度上解决这个挑战,但它确实提供了一些处理质量问题的数据的能力:

  • 自动突出显示数据质量问题。

  • 自动化的 EDA 和数据可视化揭示了可能被忽视的问题。

  • 处理和填补缺失值。

  • 数据漂移检测。

数据爆炸

虽然数据量和种类的增加不太可能很快放缓,但 DataRobot 提供了几种能力来解决这些挑战:

  • 支持 SparkSQL,能够高效地预处理大数据集。

  • 自动处理分类数据的编码并选择合适的模型蓝图。

  • 自动处理地理空间特征、文本特征和图像特征。

经验丰富的数据科学家短缺

这是对大多数组织和数据科学团队的一个关键挑战,DataRobot 处于解决这个挑战的有利位置:

  • 提供覆盖大多数数据科学流程步骤的能力。

  • 通过提供预构建的、编码了最佳实践的蓝图,显著自动化了多个常规任务。

  • 经验丰富的数据科学家可以更快地构建和部署模型。

  • 对于不太擅长编码的数据分析师或数据科学家,可以利用 DataRobot 的能力,而无需编写大量代码。

  • 对于习惯于编码的经验丰富的数据科学家来说,可以利用 API 自动构建和部署比其他数据工程或 IT 人员支持情况下更大量的模型。

  • 即使是经验丰富的数据科学家也不知道所有可能的算法,通常也没有时间尝试许多组合,并为所有模型构建分析可视化解释。DataRobot 为他们处理了许多这些任务,使他们能够有更多时间专注于理解问题和分析结果。

不成熟的工具和环境

这是对任何数据科学组织生产力和有效性的一个关键障碍。DataRobot 通过提供以下解决方案明确地解决了这一关键挑战:

  • 将任何模型作为 REST API 部署的简便性。

  • 在开发多个竞争模型并选择最佳模型时,使用简便,无需担心底层基础设施、兼容版本安装,以及无需编码和调试。这些任务可能会占用大量时间,而这些时间本可以更好地用于理解和解决业务问题。

  • DataRobot 将许多最佳实践编码到其开发过程中,以防止错误。DataRobot 自动处理许多即使是经验丰富的数据科学家也可能忽略的小细节,从而避免出现有缺陷的模型或返工。

  • DataRobot 为模型和建模步骤提供自动化文档,否则可能会被忽略或遗忘。在数据科学家需要回顾他们或他人构建的旧模型时,这变得非常有价值。

黑盒模型

这是一项 DataRobot 已进行了大量工作以提供帮助模型更具可解释性的关键挑战,以下是一些方法:

  • 自动生成模型的特征重要性(使用 Shapley 值和其他方法)和部分依赖图

  • 自动生成特定预测的解释

  • 自动生成可用于解释复杂模型的简单模型

  • 能够创建本质上更具可解释性的模型,例如广义加性模型GAMs

偏差和公平

最近,DataRobot 增加了帮助检测模型中偏差和公平性问题的新功能。这并不能保证完全没有偏差,但它是确保向积极方向迈出良好一步的好起点。以下列出了一些新增的功能:

  • 指定需要检查偏差的受保护特征。

  • 指定您想要用于检查公平性的偏差指标。

  • 使用受保护特征的指标来评估您的模型。

  • 使用模型解释来调查是否存在不公平的潜在可能性。

虽然许多人认为有了这些自动化工具,您就不再需要数据科学家,但这与事实相去甚远。然而,很明显,这样的工具将通过更快地释放更多价值并使这些组织更具竞争力,使数据科学团队对其组织更有价值。因此,工具如 DataRobot 可能会越来越普遍,并得到广泛的应用。

摘要

大多数数据科学家今天都陷入了实现细节的泥潭,或者正在实施次优算法。这让他们在理解问题和搜索最优算法或其超参数方面的时间更少。这本书将向您展示如何将您的游戏提升到下一个层次,并让软件完成重复性工作。

在本章中,我们介绍了典型数据科学流程是什么以及 DataRobot 如何支持这一流程。我们讨论了在流程中 DataRobot 提供了很多能力的步骤,我们还强调了数据科学家专业知识和对领域理解至关重要的领域(如问题理解和分析部署模型对整体系统的影响)。这突出了一个重要观点,即成功来自于熟练的数据科学家和分析师以及适当的工具(如 DataRobot)的结合。仅凭他们本身,并不能像结合那样有效。DataRobot 使相对较新的数据科学家能够快速开发和部署稳健的模型。同时,经验丰富的数据科学家可以使用 DataRobot 快速探索和构建比他们自己能够构建的更广泛的模型。

我们介绍了一些关键的数据科学挑战以及 DataRobot 如何帮助您克服一些具体挑战。这应该有助于指导领导者如何制定合适的数据科学家、工具和所需基础设施的组合。我们还介绍了 DataRobot 架构、其组件以及 DataRobot 的外观。您已经尝到了开始使用它时将看到的内容,以及如何找到特定的功能和帮助。

希望这一章已经向您展示了为什么无论您的经验如何或您对编码的舒适度如何,DataRobot 都可能是您工具箱中的重要工具。在接下来的章节中,我们将通过实际案例来展示如何详细使用 DataRobot,以及如何将您的项目提升到更高的水平。但在我们这样做之前,我们需要在下一章中介绍一些机器学习的基础知识。

第二章:机器学习基础

本章介绍了本书中将使用和引用的一些机器学习基本概念。这是使用 DataRobot 有效所需的最基本知识。经验丰富的数据科学家可以安全地跳过本章。本章的目的不是让你对统计学或机器学习有一个全面的理解,而是对一些关键思想和概念进行复习。此外,重点是了解你需要了解的实践方面,以便理解核心思想,而不深入细节。你可能想跳进去,让 DataRobot 自动构建模型,但如果没有基本理解,这样做可能会适得其反。如果你是数据科学团队的领导者,请确保你的团队中有经验丰富的数据科学家,他们正在指导他人,并且已经建立了其他治理流程。

一些这些概念将在实际操作示例中再次出现,但我们在这里涵盖了可能不会在特定示例中出现,但可能在某个时候与你的项目相关的许多概念。这里列出的主题可以用作指南,以确定你开始使用像 DataRobot 这样的强大工具所需的一些基本知识。

到本章结束时,你将学习到一些使用 DataRobot 有效所需的核心概念。在本章中,我们将涵盖以下主要主题:

  • 数据准备

  • 数据可视化

  • 机器学习算法

  • 性能指标

  • 理解结果

数据准备

在算法可以应用于数据集之前,数据集需要符合一定的模式。数据集还需要没有错误。某些方法和技术被用来确保数据集为算法做好准备,这将是本节的重点。

监督学习数据集

由于 DataRobot 主要处理监督学习问题,因此我们只会关注监督机器学习的数据集(其他类型将在后面的章节中介绍)。在监督机器学习问题中,我们将所有答案作为数据集的一部分提供。想象一下一张数据表,其中每一行代表一组线索及其相应的答案(图 2.1):

图 2.1 – 监督学习数据集

图 2.1 – 监督学习数据集

该数据集由包含线索的列(这些被称为特征)和一个包含答案的列(这被称为目标)组成。给定一个类似这样的数据集,算法学习如何根据一组线索产生正确的答案。无论您的数据以何种形式存在,您的任务首先是将其转换成图 2.1中的表格样子。请注意,您拥有的线索可能分布在多个数据库或 Excel 文件中。您将不得不将这些信息全部汇总到一个表格中。如果您拥有的数据集很复杂,您将需要使用 SQL 等语言,Python PandasExcel等工具,或Paxata等工具。

时间序列数据集

时间序列或预测问题的时间是其数据集的关键组成部分。它们与监督学习数据集类似,略有不同,如图 2.2所示:

![图 2.2 – 时间序列数据集图 2.2 – 时间序列数据集

图 2.2 – 时间序列数据集

您需要确保您的时间序列数据集看起来与前面的图表一样。它应该有一个基于日期或时间的列,一个包含您试图预测的序列值的列,以及所需的一组线索。如果您需要预测多个时间序列,您还可以添加帮助分类不同序列的列。例如,您可能对预测第 5 天和第 6 天的销量感兴趣。如果您的数据以其他形式存在,它需要被转换成前面图表的样子。

数据清理

您收到的数据通常会有错误。例如,您可能会在应该包含数字的字段中看到文本。您可能会看到价格列中的值有时包含美元符号,但有时没有符号。DataRobot 可以捕捉到其中的一些错误,但有时自动化工具无法捕捉到这些错误,因此您需要仔细查看和分析数据集。有时将您的数据上传到 DataRobot 以查看它发现了什么,然后使用其分析结果来确定下一步操作是有用的。一些清理工作需要在 DataRobot 之外完成,因此请准备好多次迭代以正确设置数据集。需要注意的常见问题包括以下内容:

  • 列中的数据类型错误

  • 列中的混合数据类型

  • 在数值列中的空格或其他字符使它们看起来像文本

  • 同义词或拼写错误的单词

  • 日期以字符串形式编码

  • 日期格式不同

数据归一化和标准化

当不同的数据特征具有不同的尺度和范围时,比较它们对目标值的影响变得更加困难。此外,许多算法在处理不同尺度的值时存在困难,有时会导致稳定性问题。避免这些问题的方法之一是对值进行归一化(不要与数据库范式混淆)或标准化。

在归一化(也称为缩放)中,您将值缩放,使它们在 0 到 1 之间:

Xnormalized = (X – Xmin) / (Xmax – Xmin)

另一方面,标准化会将数据中心化,使得平均值变为零,并按比例缩放,使得标准差变为 1。这也被称为 z 分数 数据:

Xstandardized = (X – Xmean) / XSD

在这里,Xmean 是所有 X 值的平均值,XSD 是 X 值的标准差。

通常,您不需要担心这个问题,因为 DataRobot 会根据需要自动对数据集进行此操作。

异常值

异常值是相对于数据集的其他部分似乎不合适的数据。这些值可能非常大或非常小。一般来说,与平均值相差超过三个标准差的数据被认为是异常值,但这仅适用于预期值呈正态分布的特征。异常值通常来自数据质量问题或一些不寻常的情况,这些情况被认为不足以作为训练数据。被认为异常的数据点通常从数据集中移除,以防止它们对您的模型产生过度影响。这些经验法则仅用于突出候选者。您将必须运用您的判断力来确定任何值是否为异常值以及是否需要删除它们。再次强调,DataRobot 将突出潜在的异常值,但您必须审查这些数据点并确定是否删除它们或保留。

缺失值

这是在数据集中非常常见的问题。您的数据集可能包含许多缺失值,标记为 NULLNaN。在某些情况下,您可能会看到一个 ?,或者您可能会看到一个不寻常的值,例如 -999,这可能是一个组织用来表示缺失或未知值的值。您如何处理这些值在很大程度上取决于您试图解决的问题以及数据集代表的内容。很多时候,您可能会选择删除包含缺失值的行数据。有时,这可能不可行,因为您可能没有足够的数据,删除这些行可能会导致您数据集的重要部分被移除。有时,您可能会看到一个特征(或列)中的大量值可能缺失。在这些情况下,您可能希望从数据集中删除该特征。

另一种处理这种情况的可能方法是使用合理的猜测来填充缺失值。这可能采取零值的形式,或者该特征的均值,或者该特征的中间值。对于分类数据,缺失值通常被视为一个单独的类别。

更复杂的方法使用 k 最近邻算法根据其他相似数据点计算缺失值。没有一种答案在每次都适用,所以你需要使用你的判断和对问题的理解来做出决定。最后一个选项是保持原样,让 DataRobot 找出如何处理这种情况。DataRobot 也有许多填充策略以及处理缺失值的算法。但你要小心,因为这可能并不总是导致最佳解决方案。与经验丰富的数据科学家交谈,并使用你对业务问题的理解来规划行动方案。

类别编码

在许多问题中,你必须将你的特征转换为数值。这是因为许多算法无法处理分类数据。有许多方法可以编码分类值,DataRobot 内置了许多这些方法。其中一些技术包括独热编码、留一法编码和目标编码。我们不会深入细节,因为通常你会让 DataRobot 为你处理这些,但可能会有一些情况,由于你对业务问题的理解,你将想要以特定的方式自行编码。DataRobot 的这个特性可以节省大量时间,并且通常对大多数问题都工作得很好。

合并类别

有时,你会有包含大量类别的分类数据。尽管有处理大量类别计数的方法(如前文所述),但很多时候,合并类别是明智的选择。例如,你可能有很多包含非常少数据点但彼此非常相似的类别。在这种情况下,你可以将它们合并成一个单独的类别。在其他情况下,可能只是有人使用了不同的拼写、同义词或缩写。在这种情况下,最好也将它们合并成一个单独的类别。有时,你可能想要将数值特征分割成对用户或利益相关者有业务意义的区间。这是你需要根据对问题的理解自行进行的数据准备的一个例子。你应该在将数据上传到 DataRobot 之前完成这项工作。

目标泄露

有时,数据集包含从目标本身派生的特征。这些特征在事先未知或在预测时未知。无意中使用这些特征来构建模型会导致下游问题。这个问题被称为目标泄露。应该仔细检查数据集,并将这些特征从训练特征中移除。DataRobot 也会自动分析特征,并尝试标记可能导致目标泄露的任何特征。

项-文档矩阵

您的数据集中可能包含包含文本或注释的特征。这些注释通常包含对做出决策有用的重要信息。然而,许多算法却无法直接利用这些文本。这些文本必须被解析成数值,以便对建模算法变得有用。为此有几种方法,其中最常见的是术语-文档矩阵。这里的文档指的是单个文本或注释条目。每个文档都可以被解析以分割成术语。现在您可以计算一个术语在文档中出现的次数。这个结果可以存储在一个称为词频(TF)矩阵中。一些信息也可以在词云中进行可视化。DataRobot 会自动为您构建这些词云。虽然 TF 很有用,但它可能有限制,因为某些术语可能在所有文档中都非常常见,因此它们在区分它们之间不是非常有用。这导致另一个想法,即我们可能应该寻找仅对某些文档独特的术语。这种给仅在某些文档中出现的术语赋予更多权重的概念被称为逆文档频率(IDF)。一个术语在文档中多次出现(TF)并且相对罕见(IDF)的组合被称为TFIDF。TFIDF 是 DataRobot 会自动为您计算并应用于包含文本的特征。

数据转换

虽然 DataRobot 会为您执行许多数据转换(并且它一直在添加更多),但有许多转换会影响您的模型,但 DataRobot 将无法捕捉到。您将不得不自己执行这些操作。这些操作的例子包括数学转换,如对数、平方、平方根、绝对值和差值。其中一些简单的可以在 DataRobot 内部设置,但对于更复杂的转换,您必须在 DataRobot 之外或使用 Paxata 等工具执行操作。有时,您会进行转换以线性化问题或处理具有长尾数据的特征。DataRobot 自动执行的一些转换如下:

  • 计算聚合数据,如计数、最小值、最大值、平均值、中位数、最频繁值和熵

  • 一个广泛的时间相关特征列表,例如随时间变化、随时间最大值和随时间平均值

  • 一些文本提取特征,例如词数、提取的标记和术语-文档矩阵

  • 来自地理空间数据的地理空间特征

我们将在第四章中更详细地讨论这个主题,为 DataRobot 准备数据

共线性检查

在任何给定的数据集中,都存在一些与其他特征高度相关的特征。本质上,它们携带与某些其他特征相同的信息。通常,我们希望删除这些与数据集中某些其他特征高度重复的特征。DataRobot 会自动为您执行这些检查,并将这些共线性特征标记出来。这对于线性模型尤其关键,但一些较新的方法可以更好地处理这个问题。使用的阈值取决于建模算法和您的业务问题。在 DataRobot 中删除这些特征以用于建模是非常容易的。

DataRobot 还会生成一个相关矩阵,显示不同特征之间是如何相互关联的。这有助于识别共线性特征以及模型中要使用的候选关键特征。通过分析相关矩阵,您可以深入了解您的数据和问题。在第五章《使用 DataRobot 进行探索性数据分析》中,我们将讨论如何进行这种分析的例子。

数据分区

在开始构建模型之前,您需要将数据集分为三个部分。这些部分被称为训练集、验证集和保留集。在模型构建过程中,这三个部分用于不同的目的。通常将 10-20%的数据集分为保留集。剩余的部分进一步分割,其中 70-80%用于训练集,20-30%用于验证集。这种分割是为了确保模型不会过拟合,并且部署中预期的结果与模型构建期间看到的结果一致。

只有训练集用于训练模型。验证集的设计是为了通过执行多次交叉验证测试来调整算法,以优化结果。最后,在构建模型后,使用保留集来测试模型在之前从未见过的数据上的表现。如果保留集上的结果是可以接受的,那么模型可以考虑部署。

DataRobot 自动化了这一过程的大部分,但它允许用户自定义分割百分比以及分区应该如何进行。它还通过自动分割数据以进行基于时间的回溯测试,为时间序列或预测问题执行类似的功能。

数据可视化

数据分析师或数据科学家需要完成的最重要任务之一是理解数据集。数据可视化是实现这一理解的关键。DataRobot 提供了多种可视化数据集的方法,以帮助您理解数据集。这些可视化是自动为您构建的,这样您就可以花时间分析它们,而不是准备它们。让我们看看这些是什么以及如何使用它们。

当你访问你项目的数据页面(图 1.20)时,你会看到你数据集的高级概要信息。仔细检查这些信息,以全面了解你的数据集。如果你点击左上角的特征关联菜单,你会看到特征之间是如何相互关联的(图 2.3):

![图 2.3 – 使用互信息进行特征关联图片

图 2.3 – 使用互信息进行特征关联

此图使用互信息指标显示了特征之间的相互关系。互信息MI)使用信息理论来确定从另一个特征中获取关于一个特征的信息量。与皮尔逊相关系数相比,使用 MI 的优点是它可以用于任何类型的特征。其值从 0(两个特征是独立的)到 1(它们携带相同的信息)。这在确定哪些特征将是模型的良好候选者以及哪些特征不会提供任何有用的信息或冗余方面非常有用。在模型构建开始之前,理解并使用这种观点非常重要,尽管 DataRobot 会自动使用这些信息来做出建模决策。

另有一个指标也以类似的方式使用。如果你点击前面截图底部的度量下拉菜单,你可以选择另一个称为Cramer's V的指标。一旦选择 Cramer's V,你将看到类似的图形视图(图 2.4):

![图 2.4 – 使用 Cramer's V 进行特征关联图片

图 2.4 – 使用 Cramer's V 进行特征关联

Cramer's V 是 MI 的另一种指标,其使用方式类似。其值范围也从 0(无关系)到 1(特征高度相关)。Cramer's V 通常与分类变量一起使用,作为皮尔逊相关系数的替代。

注意到 DataRobot 自动找到了相互关联的特征簇。每个簇用不同的颜色编码,特征按簇排序在图 2.4中。你可以放大到特定的簇以进一步检查它们。这是 DataRobot 环境的一个重要特性,因为非常少的数据科学家了解这个想法或利用它。这些簇很重要,因为它们突出了相互关联的特征组。这些复杂的相互依赖关系通常对于理解业务问题非常重要。通常,只有拥有大量领域经验的人才知道这些复杂的相互依赖关系。大多数人甚至不会意识到这些复杂性。如果你是某个领域的初学者,那么理解这些将给你相当于多年的经验。仔细研究这些,与你的业务专家讨论,以全面理解他们试图强调的内容,然后使用这些见解来改进你的模型以及你的业务流程。

此外,请注意 DataRobot 提供了一个包含前 10 个最强关联的列表。注意这些关联并花些时间思考它们对你的问题意味着什么。这些是否与你对领域的了解一致,或者有一些惊喜?往往是惊喜导致的关键洞察,这些洞察可能对你的业务具有价值。在以下列表中,你可以看到一个查看特征关联对按钮。如果你点击该按钮,你将看到图 2.5

图 2.5 – 特征关联细节

图 2.5 – 特征关联细节

此图形详细显示了两个选定特征之间的关系。在这个例子中,一个特征是分类的,而另一个是数值的。该图显示了这两个特征之间的关系,并可能为问题提供额外的见解。务必调查这些关系,特别是那些可能具有反直觉性的关系。

现在你可以点击特定的特征来查看它们的分布情况(图 2.6):

图 2.6 – 特征细节

图 2.6 – 特征细节

此视图显示了值的分布情况以及它们与目标值之间的关系。需要关注的关键点是数据不足的区间以及非线性区间。这些可能会给你关于特征工程的想法。这些也是你询问系统为何表现出这种行为的区域?

在完成这项背景工作后,你现在可以开始深入研究建模算法。

机器学习算法

现在已经有数百种机器学习算法可供机器学习项目使用,并且每天都有新的算法被发明。DataRobot 支持广泛的开源机器学习算法,包括几个深度学习算法——Prophet、基于 SparkML 的算法和 H2O 算法。现在让我们看看存在哪些类型的算法以及它们的应用(图 2.7):

图 2.7 – 机器学习算法

图 2.7 – 机器学习算法

我们的重点将主要放在 DataRobot 支持的算法类型上。这些算法类型将在以下子节中描述。

监督学习

当你可以提供作为训练数据集一部分的答案(也称为标签)时,使用监督学习算法。对于监督学习,你必须将你的数据集的一个特征分配为答案,算法通过观察多个示例并从这些示例中学习来尝试预测答案。参见图 2.8以了解不同类型的答案:

图 2.8 – 监督学习算法的目标

图 2.8 – 监督学习算法的目标

DataRobot 的功能主要集中于监督学习算法。该套件包括深度学习算法以及来自 SparkML 和 H2O 的大数据算法。DataRobot 内置了最佳实践来选择最适合您问题和数据集的算法。监督学习问题主要有以下四种类型:

回归

回归问题是指答案(目标)以数值形式出现的情况(参见图 2.8)。回归模型试图拟合一条曲线,使得预测值与实际值之间的误差在整个训练数据集上最小化。有时,甚至可以将分类问题设置为一个数值回归问题。在这种情况下,答案是数字,然后可以通过阈值将其转换为二进制。逻辑回归就是这样一种方法,它产生一个介于零和一之间的值。您可以将低于某个阈值的所有答案标记为零,而高于阈值的答案标记为一。根据问题,可以使用线性回归算法以及非线性回归算法。模型是根据回归线与数据匹配的程度来评估的。常用的指标包括RMSEMAPELogLossRsquared。常用的算法包括XGBoostElastic Net随机森林GA2M

二元分类

二元分类问题的答案只能取两个不同的值(称为类别)。这些可以是 0 或 1、是或否等形式。请参阅图 2.8以了解二元分类的目标特征的示例。您通常遇到的一个典型问题是类别不平衡问题。当大多数数据集偏向于一个类别时,这种情况就会发生。这些通常通过在存在足够训练数据的情况下对过度代表的类别进行下采样来解决。当这不可能时,您可以尝试对代表性不足的类别进行上采样或使用其他方法。这些方法都不是完美的,有时您不得不尝试不同的方法来查看哪种方法最有效。DataRobot 提供了在需要时指定下采样的机制。一些常用的二元分类算法包括逻辑回归k 最近邻基于树的算法SVM朴素贝叶斯。在分类问题的情况下,最好避免使用准确率作为评估结果的指标。结果通常以混淆矩阵的形式显示(本章后面将描述)。在需要时,DataRobot 将自动选择合适的指标来使用。

多类分类

多分类分类问题是你试图预测两个以上类别或类别的那些问题。为了简单说明目标可能的样子,请参阅 图 2.8。多分类能力是最近添加的,许多 DataRobot 功能可能不适用于此类问题。由于没有下采样可用,你可能想在将数据集上传到 DataRobot 之前调整你的采样。此外,请注意,你可以通过将类别合并为两个类别来频繁地将问题简化为二元分类问题。这可能或可能不适用于你的用例,但如果需要,这是一个选项。此外,并非所有算法都适用于多分类问题。DataRobot 将自动选择合适的算法来构建多分类问题的模型。典型的指标包括 AUC、LogLoss 或平衡准确率。结果通常以混淆矩阵的形式显示(本章后面将描述)。典型的算法包括 XGBoost、随机森林和 TensorFlow。

时间序列/预测

在 DataRobot 中,时间序列或预测模型也被称为时间感知模型。在这些问题中,你拥有随时间变化的数据,并且你对预测/预测未来某个目标值感兴趣(图 2.2)。DataRobot 不仅支持时间序列的常用算法,如 ARIMA,还可以将这些问题适应为机器学习回归问题,然后应用 XGBoost 等算法来解决它们。这些问题要求将序列转换为平稳序列,并需要大量的特征工程来创建基于时间的特征。这些问题还要求你考虑过去可能重复发生的重要事件(如假日或大型购物日)。时间序列模型还需要通过一种称为回测的方法来处理验证和测试:

图 2.9 – 时间序列问题的回测

图 2.9 – 时间序列问题的回测

在回测中,模型使用过去的数据构建,然后使用模型从未见过的较新和未知的保留数据进行测试。这种基于时间的保留数据切片也被称为时间外验证。DataRobot 自动为你自动化了许多这些任务,我们将在后面更详细地看到。

算法

让我们回顾一下 DataRobot 中使用的一些主要算法。在这里,我们只提供这些算法的高级概述。这些算法可以通过更改它们的超参数来针对特定问题进行调整。要更详细地了解任何特定算法,你可以参考机器学习书籍或 DataRobot 文档。一些重要的算法如下:

  • 随机森林。随机森林模型是通过创建多个决策树模型,然后使用输出的平均值来构建的。这是通过创建训练数据的自助样本并在这些样本上构建决策树(图 2.10)来实现的:

图 2.10 – 随机森林

图 2.10 – 随机森林

随机森林模型可以处理缺失数据和非线性,并在许多情况下证明效果极佳。随机森林模型既可以用于回归问题,也可以用于分类问题:

  • XGBoost:也称为eXtreme梯度提升树,是基于决策树的算法,因其通常能产生非常有效的预测并可以处理缺失值而变得非常流行。它们可以处理非线性问题和特征之间的交互。XGBoost 通过创建一个随机森林并在先前树的残差上创建树来构建在随机森林模型之上。这样,每一组新的树都能产生更好的结果。XGBoost 可以用于回归问题,也可以用于分类问题。

  • Rulefit:Rulefit 模型是由简单规则组成的集成模型。你可以将这些规则想象成像决策树一样串联在一起。Rulefit 模型更容易理解,因为大多数人都能理解将规则组合起来解决问题。DataRobot 通常会构建这个模型来帮助你理解问题并提供洞察。你可以访问模型标签页的洞察部分,查看从 Rulefit 模型生成的洞察以及给定规则对问题的有效性。它们可以用于分类问题,也可以用于回归问题。

  • ElasticNet岭回归Lasso 回归:这些模型使用正则化来确保模型不会过拟合且不会过于复杂。正则化是通过添加更多特征的惩罚来实现的,这反过来迫使模型要么丢弃一些特征,要么减少它们的相对影响。Lasso 回归(也称为L1 回归)使用的是系数的绝对值作为惩罚权重。使用 Lasso 的效果是尝试将系数减少到零,从而选择重要的特征并移除那些贡献不大的特征。岭回归(也称为L2 回归)使用的是平方系数作为惩罚权重。这种影响是减少系数的幅度。ElasticNet用于指代同时使用 Lasso 和岭正则化的线性模型,以产生既简单又正则化的模型。当你有很多相互关联的特征时,这非常有用。

  • 逻辑回归:逻辑回归是一种用于二元分类的非线性回归模型。输出形式为概率,值在 0 到 1 之间。这通常与一个阈值一起使用,以将值分配为 0 或 1。

  • SVM支持向量机):这是一种试图找到最佳分离类别的分类算法。在二维空间中,这种算法的样子很容易理解(图 2.11),但该算法在高维空间中表现良好。SVM 的另一个优点是它能够通过使用非线性核函数来处理非线性,这可以将问题线性化:

![图 2.11 – 监督学习算法的目标图片

图 2.11 – 监督学习算法的目标

  • GA2M广义加性模型):这是那些罕见算法之一,它提供了可理解性,同时在非线性问题中也能提供高准确度。名字中的数字“2”代表其建模特征之间相互作用的能力。GAM 模型的输出是单个特征效果的输出之和,这些效果已经被分箱。由于 GAM 允许这些效果非线性,它可以捕捉问题的非线性特征。模型的结果可以用一个简单的表格表示,该表格显示了每个特征对整体答案的贡献。这种表格表示方式容易被大多数人理解。对于理解和可解释性非常重要的行业或用例,这可能是一个最佳选择之一。

  • K-Nearest Neighbors:这是一个非常直接的算法,它找到 k 个最近的数据点(基于一种特定的距离计算方式)。现在它为这些 k 个点找到分类答案。然后它确定得票最多的答案,并将其作为答案。默认的距离度量是欧几里得距离,但 DataRobot 会根据数据集选择合适的度量。用户也可以指定要使用的特定距离度量。

  • TensorFlow. TensorFlow 是一种基于深度神经网络的深度学习模型。深度神经网络是指由人工神经元集合构成的深层隐藏层。这些神经元携带高度非线性的激活函数,使它们能够适应高度非线性问题。这些模型在不需要特征工程的情况下,能够产生非常高的准确度,但与其它算法相比,它们需要更多的训练数据。这些模型通常被认为非常不透明,容易过拟合,因此不适合某些应用。它们在特征和特征工程难以提取的应用中特别成功,例如图像处理。这些模型可以用于回归问题,也可以用于分类问题。

  • Keras 神经网络:Keras 是一个基于 TensorFlow 构建的高级深度学习库,它允许将许多类型的深度学习模型集成到 DataRobot 中。作为一个高级库,它使得构建 TensorFlow 模型变得容易得多。前述章节中描述的一切都适用于 Keras。在 DataRobot 中的特定实现非常适合稀疏数据集,并且特别适用于文本处理和分类问题。

无监督学习

无监督学习问题是指那些没有提供答案或标签的问题。这类问题的例子包括聚类或异常检测。DataRobot 对于这些问题没有太多提供,但它确实有一些异常或离群值检测的能力。这些问题是指那些数据点在非常罕见的情况下表现出不寻常的情况。例子包括欺诈检测、网络安全漏洞检测、故障检测和数据离群值检测。DataRobot 允许你设置一个没有目标的项目,然后它会尝试识别异常数据点。对于任何聚类问题,你应该尝试使用 Python 或 R 来创建聚类模型。

强化学习

强化学习问题是你希望学习一系列由代理做出的决策,以便实现某个特定目标。这个目标与一个奖励相关联,这个奖励是给予代理的,以表彰它完全或部分地实现了目标。对于这种训练没有可用的数据集,因此代理必须尝试多次(使用不同的策略)并在每次尝试中学习一些东西。经过多次尝试,代理将学会产生最佳奖励的策略或规则。正如你现在可以猜到的,这些算法在没有数据但可以在现实世界(或合成世界)中反复实验的情况下工作得最好。正如我们之前讨论的,DataRobot 不是这类问题的合适工具。

集成/混合模型

集成是一种创建聚合或混合其他模型预测的模型的技术。不同的算法有时能够更好地利用问题的不同方面或数据集。这意味着很多时候,通过结合几个好的模型,你可以提高预测精度。当然,这伴随着复杂性和成本的提高。DataRobot 提供了许多混合方法,并且在大多数情况下,它会自动为你的项目构建混合模型。然后你可以评估精度提高是否足以证明额外的复杂性是合理的。

蓝图

在 DataRobot 中,每个模型都与一个蓝图相关联。蓝图是 DataRobot 用来训练特定模型的一步步食谱。参见图 2.12以获取示例:

图 2.12 – 模型蓝图

图 2.12 – 模型蓝图

蓝图显示了 DataRobot 构建特定模型所采取的所有步骤,包括 DataRobot 所做的任何数据准备和特征工程。点击任何特定的框将显示采取的行动、使用的参数以及特定算法的文档。这也为您的建模项目提供了出色的文档,这些文档是自动为您创建的。

现在,让我们看看如何确定算法的表现如何。为此,我们需要一些性能指标。

性能指标

DataRobot 为模型提供了一系列性能指标。您必须指定您想要使用的指标来优化您项目的模型。通常,最佳指标是 DataRobot 推荐的指标。一旦构建了模型,DataRobot 也会计算其他指标,因此您可以在多个指标上查看您模型的结果。请记住,没有哪个指标适合所有情况,您在选择评估结果的指标时应谨慎。以下是一些关于常用指标的详细信息:

  • RMSE(均方根误差):RMSE 是一种首先计算误差平方(实际值与预测值之间的差异)的指标。然后,在整个数据集上对这些值进行平均,然后计算这个平均值的平方根。鉴于这个指标依赖于值的规模,其解释依赖于问题。您不能比较两个不同数据集的 RMSE。这个指标在数据不是高度偏斜的回归问题中经常被使用。

  • MAPE(平均绝对百分比误差):MAPE 在某种程度上与 RMSE 相似,因为它首先计算百分比误差的绝对值。然后,这些值在数据集上平均。鉴于这个指标按百分比缩放,比较不同数据集的 MAPE 更容易。然而,您必须注意,非常小的值(或零值)的百分比误差往往会看起来很大。

  • SMAPE(对称绝对百分比误差):SMAPE 与 MAPE 类似,但解决了上述讨论的一些缺点。SMAPE 限制了上限百分比值,这样小的值的误差就不会压倒指标。这使得 SMAPE 成为一个可以轻松跨不同问题比较的好指标。

  • 准确率:准确率是用于分类问题的一种指标。它可以表示如下:

    准确率 = 正确预测的数量/总预测数量

    它本质上是指正确预测的数量与所有预测数量的比率。对于不平衡问题,这个指标可能会误导,因此它从不单独用来确定模型的表现如何。它通常与其他指标结合使用。

  • Balanced Accuracy: 平衡准确率通过在预测的两个类别中归一化准确率来克服准确率的问题。假设两个类别是 A 和 B:

    (a) A 的准确率 = 正确预测 A 的数量/总数 A

    (b) B 的准确率 = 正确预测 B 的数量/总数 B

    (c) 平衡准确率 = A 的准确率 + B 的准确率/2

    平衡准确率实际上是 A 的准确率和 B 的准确率的平均值。

  • AUC(ROC 曲线下的面积): AUC 是 ROC(接收者操作特征)曲线下的面积。这个指标经常用于分类问题,因为它也克服了与准确率指标相关的缺陷。ROC 曲线表示真正例率和假正例率之间的关系。AUC 从 0 到 1,它显示了模型区分两个类别的效果。0.5 表示随机模型,因此您希望模型的 AUC 大于 0.5。

  • Gamma Deviance: 当目标值呈伽马分布时,使用 Gamma 偏差进行回归问题。对于此类目标,gamma 偏差衡量预测值与实际值之间的平均偏差的两倍(使用对数似然函数)。一个拟合完美的模型将具有零偏差。

  • 泊松偏差: 泊松偏差用于回归问题,当目标是计数偏斜数据时。它的工作方式与伽马偏差非常相似。

  • LogLoss: LogLoss(也称为交叉熵损失)是衡量分类问题预测概率不准确性的指标。值为 0 表示模型完美,随着模型变差,logloss 值增加。

  • R-squared: R-squared 是用于回归问题的指标,它说明了拟合线如何代表数据集。其值介于 0 和 1 之间。0 表示模型较差,无法解释任何变化,而 1 表示模型完美,解释了 100%的变化。这是最常用的指标之一,但它可能存在一个问题,即通过添加更多变量可以提高它,而不一定改善模型。它也不适用于非线性问题。

现在我们已经讨论了一些常用的指标,让我们看看如何查看其他结果来评估模型的质量,以及不同特征对模型的影响。

理解结果

在本节中,我们将讨论各种指标和其他信息的可视化,以理解建模练习的结果。这些是重要的可视化,除了检查上一节中讨论的模型指标外,还需要仔细检查。这些可视化是 DataRobot 为它训练的任何模型自动生成的。

升值图

抬升图显示了模型在预测目标值方面的有效性。由于数据点通常非常多,无法在一个图表中显示,因此抬升图对输出进行排序,并将数据聚合到多个桶中。然后,它比较每个桶中预测值和实际值的平均值(图 2.13):

Figure 2.13 – Lift chart

Figure 2.13_B17159.jpg

Figure 2.13 – Lift chart

前面的抬升图显示了预测是如何从低到高排序并分桶的(本例中有 60 个桶)。现在你可以看到每个桶中的平均预测值和平均实际值。这让你对模型在整个范围内的表现有一个感觉。你可以看到模型表现较差的范围。如果模型在对你业务重要的范围内表现不佳,你可以进一步调查以了解如何在该范围内改进模型。你还可以检查不同的模型,看看是否有在更重要的区域内表现更好的模型。抬升图对于回归问题更有意义。

混淆矩阵(二分类和多分类)

对于分类问题,评估模型结果的最佳方法之一是查看混淆矩阵及其相关指标(图 2.14)。此选项卡适用于多分类问题:

Figure 2.14 – Confusion matrix

Figure 2.14_B17159.jpg

Figure 2.14 – Confusion matrix

混淆矩阵映射了每个类别的预测值与实际值的计数(频率)。让我们看看轿车列。大绿色圆圈表示我们正确地将轿车分类为轿车多少次。在该列中,你还会看到红色点,表示模型预测它为轿车,但实际上它是另一种类型。你可以看到所有类别的这些情况。相对尺度应该能给你一个关于你的模型表现如何以及它在哪些方面有困难的印象。

如果你选择一个特定的类别,你可以查看右侧的类别特定混淆矩阵。你可以看到两列(+表示预测为轿车,-表示预测为非轿车)。同样,你看到两行(+表示它是轿车,-表示它不是轿车)。你还可以看到一些关键的定义和指标:

  • 真阳性TP)= 当它是轿车且预测结果显示是轿车时

  • 假阳性FP)= 当它不是轿车但预测结果却显示是轿车时

  • 真阴性TN)= 当它不是轿车且预测结果显示不是轿车时

  • 假阴性FN)= 当它是一辆轿车但预测结果却显示不是轿车时

使用这些,我们现在可以计算这个类别的某些特定指标:

  • 精确度 = 预测正确的比例 = TP/所有正预测 = TP/(TP+FP)

  • 召回率 = 实际正确的比例 = TP/所有正实际值 = TP/(TP+FN)

  • F1 分数 = 精确度和召回率的调和平均。所以,1/F1 = 1/精确度 + 1/召回率

ROC

此标签适用于二元分类问题。ROC接收者操作特征)曲线是真正例率和假正例率之间的关系。此曲线下的面积称为 AUC。它从 0 到 1,显示了模型在两个类别之间的区分能力(图 2.15):

图 2.15 – ROC 曲线和混淆矩阵

图 2.15 – ROC 曲线和混淆矩阵

你还可以看到(之前描述的)混淆矩阵和两个类别的相关指标。你可以移动阈值并评估产生的权衡和累积收益。由于大多数问题在真实正例与真实负例具有不同业务价值的情况下并不对称,你应该选择适合你业务问题的阈值。

随时间变化的准确率

此标签适用于时间序列问题(图 2.16)并比较序列随时间变化的实际值与预测值:

图 2.16 – 模型准确率随时间变化

图 2.16 – 模型准确率随时间变化

你可以查看这些值对于回测或保留数据集。图表将清楚地显示模型表现不佳的地方以及你可能想要关注以改进模型的地方。

特征影响

除了模型性能之外,你首先想要了解的是特征在模型性能方面的影响程度。特征影响标签(图 2.17)可能是理解你的模型最关键的部分:

图 2.17 – 特征影响

图 2.17 – 特征影响

图形显示了一个按重要性排序的最重要特征列表。对于每个特征,你可以看到该特征对模型相对影响的程度。你可以看到哪些特征贡献很小;这可以通过移除一些影响很小的特征来创建新的特征列表。

特征拟合

特征拟合标签(图 2.18)显示了特征的另一种贡献视图。图形显示了按重要性排序的特征:

图 2.18 – 特征拟合

图 2.18 – 特征拟合

对于选定的特征,它显示了预测值与特征值范围的实际情况的比较。回顾这些关键特征的图表可以提供关于特征如何影响结果以及表现较好的值范围和表现最差的值范围的很多见解。这有时可能会突出你可能需要收集更多数据以改进模型的数据区域。

特征效应

特征效应显示的信息与特征拟合图 2.19)非常相似。在此图形中,特征按特征影响排序。此外,特征效应专注于部分依赖性:

图 2.19 – 特征效应和部分依赖性

图 2.19 – 特征效应和局部依赖性

局部依赖性图是您想要仔细研究的最重要图表之一。这些图表告诉您特征值的变化如何影响其他特征值范围内目标平均值的改变。这种洞察力对于理解业务问题、理解模型正在做什么以及更重要的是,模型的哪些方面是可操作的以及哪些值范围会产生最大影响至关重要。

预测解释

预测解释描述了针对特定实例或正在评分的行的特征值来解释特定预测的原因(图 2.20)。请注意,这与特征影响不同,它告诉你特征在全局级别的重要性:

![图 2.20 – 预测解释img/Figure_2.20_B17159.jpg

图 2.20 – 预测解释

预测解释可以为整个数据集或数据子集生成,如前述截图所示。例如,它将提供模型预测特定值的前三个原因。在某些用例中,出于监管原因,这些解释有时是必需的,但生成这些解释是一个好主意,因为它们有助于理解模型为何以某种方式预测,并且在验证或捕捉模型中的错误时非常有用。DataRobot 使用两种算法来计算解释:XEMP基于示例的解释)或Shapley 值。XEMP 支持更广泛的模型,并默认选择。Shapley 值将在下一节中描述。

Shapley 值

Shapley SHAP)是生成预测解释的另一种机制(图 2.21)。如果您想使用 SHAP 进行解释,您必须在按下开始按钮之前的项目设置的高级选项中指定这一点。一旦 DataRobot 开始构建模型,您就不能切换到 SHAP。SHAP 值仅适用于线性或基于树的模型,并且对于集成模型不可用:

![图 2.21 – 基于 SHAP 的解释img/Figure_2.21_B17159.jpg

图 2.21 – 基于 SHAP 的解释

SHAP 值基于合作博弈论,它试图为协作项目中团队成员的贡献分配价值。在机器学习的背景下,它试图在特征团队协作进行预测时分配特定特征的价值贡献。SHAP 值是可加的,您可以轻松地看到最终答案中有多少是由于特定特征值。

摘要

在本章中,我们介绍了一些基本的机器学习概念,这些概念在我们继续阅读剩余章节时将非常有用,并且在你的数据科学之旅中也将非常有用。请注意,我们只对概念进行了高层次概述,根据你的工作角色,你可能需要更深入地探索一些领域。我们还将这些材料与 DataRobot 执行某些功能的方式以及你需要更加关注的地方联系起来。

希望这已经让你对 DataRobot 将显示的内容以及在你项目不同阶段需要关注的地方有了更深的了解。由于 DataRobot 自动化了相当一部分模型构建和预测任务,你可能会有忽略 DataRobot 为你自动生成的大多数输出的诱惑。请抵制这种诱惑。DataRobot 软件在产生这些输出时投入了大量的努力和资源,这是有很好的理由的。它还在为你做大量的基础工作,所以请充分利用这些功能。具体来说,我们涵盖了以下内容:在数据准备过程中需要注意哪些事项?哪些数据可视化对于理解你的数据集很重要?关键机器学习算法有哪些,你何时使用它们?你如何衡量模型结果的好坏?你如何评估模型性能并理解模型对你问题的描述?

现在我们已经了解了基础知识,我们将在下一章开始我们的数据科学之旅,学习如何理解业务问题以及如何将其转化为可以通过机器学习解决的问题的规范。

第三章:理解和定义商业问题

本章涵盖了成功最关键的主题,但在数据科学课程或书籍中并未详细讨论。尽管理解并定义商业问题的主题被简要提及,应该被执行,但讨论很少深入到如何正确执行。在本章中,我们将探讨具体工具和方法,这些工具和方法可以用来理解所考虑的系统,并确定需要解决的问题。

本节与 DataRobot 无关,因为 DataRobot 无法帮助你完成这个过程的一部分。这是数据分析师、业务分析师或数据科学家必须做的事情。正确定义商业问题很难——它无法自动化,而且大多数时候也没有得到妥善处理。如果你掌握了这项技能,你将变得无价。这是一个始终需要经验丰富的数据科学家(或未来他们可能被称作什么)的关键领域。

到本章结束时,你将了解到一些核心概念和方法,这些是确保你解决正确问题的必要条件。本书的其余部分将解释如何以正确的方式解决这些问题。

在本章中,我们将涵盖以下主要主题:

  • 理解系统背景

  • 理解为什么如何

  • 找到商业问题的根源

  • 定义机器学习ML)问题

  • 确定负责任的人工智能AI)的预测、行动和后果

  • 实施和创造价值

理解系统背景

所有问题都出现在系统的背景下。系统可能是一个生物体的单个细胞、全球人口或整个经济。同样,所有解决方案都需要适应系统。技术解决方案(例如,人工智能解决方案)通常需要改变流程、人员、技能、其他 IT 系统,甚至商业模式才能有效。对于一个组织来说,系统可能是其整个供应链、竞争对手和客户。鉴于系统的定义可能非常广泛,通常建议你想象系统比你所考虑的问题更广泛。你希望你的问题所触及的所有组成部分或代理都成为系统背景的一部分。定义系统边界既是艺术又是科学,并且是一个迭代过程。鉴于你将从更广泛的视角审视系统,这也意味着相同的系统背景将适用于多个机器学习项目或用例。在这里获得的理解将在许多项目中带来回报。

在组织或行业中工作过的数据科学家或分析师可能会本能地学习到许多问题的系统性方面。他们可能会觉得他们不需要进一步调查,因为他们已经理解了关键问题。虽然这可能是对的,但人们也会发展出盲点,开始忽视关键缺失的部分或携带隐含的假设,这些假设大多数情况下是正确的,但有时是错误的。使用结构化方法来捕捉系统性理解有助于克服这些问题,并确保每个人都从共同的理解出发。这些问题通常是导致下游项目出现问题或延误的问题。让我们通过创建上下文图来看看我们如何构建这种理解。

上下文图是您系统的概览,显示了关键参与者和他们的互动,如图所示:

![图 3.1 – 上下文图图 3.1 – 上下文图

特定的图表绘制惯例并不那么重要;更重要的是,您需要理解和记录组件,并了解它们如何相互作用。有许多图表绘制惯例,所以请随意使用您喜欢的。确保在图表中捕捉到每个主题的三到五个重要实例。箭头不必是单向的。

当您查看这个简单的图表时,您会同意我们应该了解所有这些信息。当您尝试构建这个图表时,您可能会惊讶地发现找到和捕捉这些信息并不那么简单。组织中的大多数人都会对这些事物有所了解,但可能无法精确地指定最重要的客户或关键绩效指标KPI)等。在大多数组织中,可能需要一些时间和讨论才能将这些内容整理出来。图表中的大多数组件都很容易理解,但有些可能有些令人困惑,因此值得稍作讨论,如下所述:

  • 关键目标:关键目标是可衡量的指标,让您能够及时确定您是否正在实现目标。这些通常以财务表现、市场份额、客户满意度、声誉、质量水平和合规性等形式出现。拥有精确和可衡量的定义以及与组织目标的协调一致非常重要。这些对组织来说具有真正的价值,了解您的项目和模型如何影响这些因素也很重要。

  • 外部驱动因素/风险:这些是影响关键目标但不受您控制的外部因素或驱动因素。请注意,我们不是在讨论具体事件,而是在讨论可能被视为事件的因素的价值观变化——例如,该因素可能是国内生产总值GDP)的变化。这不在我们的控制范围内,-20%的值可能表明金融危机。因此,我们在这个案例中的驱动因素是 GDP 变化,而不是金融危机。

  • 关键决策杠杆:这些也是影响关键目标的因素,但它们在我们可控范围内。例如,员工的数量是我们可控的因素(因为我们可以决定雇佣多少人)并且它将对结果产生影响。其他例子可能包括在新技术或市场营销上投入多少,等等。这些可能是战略决策或选择,例如创建新的分销渠道、捆绑产品等。无论类型如何,重要的是确保想法以精确的方式被捕捉——例如,如果新的分销渠道是一个驱动因素,你应该知道五个实际的选择是什么。

    警告提示

    请不要陷入哲学辩论。快速创建你的图表的第一版,并在需要时进行改进。在分析可能影响并改变当前思考的情况下,可以带着第一稿继续前进。

如你现在可能已经猜到的,强调这三个项目的原因是它们的历史数据对于任何数据科学项目都至关重要。你也会同意,关于这些因素的数据对于运营以及战略决策都至关重要,但你可能会发现这些数据可能不容易获得或可能存在质量问题。此外,特别关注关键知识库。这些将是包含您组织数据的数据库、数据仓库、数据湖或文件系统。我们将在以下章节中再次讨论这些项目。

现在我们已经了解了背景,我们想要了解我们的系统是如何运作的,以及为什么它以某种方式表现。这两个方面对于理解系统至关重要。在下一节中,我们将描述如何创建这种理解。

理解“为什么”和“如何”

理解一个系统的功能和其行为的关键在于以下方面:

  • 流程:对象和信息是如何通过系统的流程流动的?

  • 交互:不同的实体或系统组件之间是如何相互作用的?

  • 状态:一个实体的状态是如何随时间演变的?

  • 因果关系:有哪些因果关系?

每个这些方面都通过图表来表示。对于流程建模、因果建模和交互图,存在许多图表绘制规范。这些规范在不同的领域中应用方式不同。你可以遵循你喜欢的或已经熟悉的任何规范。在这本书中,我们将遵循某些适合计算建模的规范。这意味着这些图表可以与数据结合,转化为可用于分析的模型。这将在我们项目的后期阶段变得很重要。如何创建这些图表并将它们转化为计算模型的具体细节超出了本书的范围,但如果你对此感兴趣,可以寻找其他资源来学习这些技术。即使你不创建计算模型,这些图表也会提供有用的见解,你可以在你的机器学习项目中使用。可能你的组织中有一些人构建过——或者正在构建——这样的图表。你应该找到这些人,并请求他们在构建这些图表时提供帮助。让我们更详细地看看这些方面的每一个。

流程图

在组织的运营中,有几个功能具有定义良好的流程。对象、人员或信息通过这些流程流动,如下面的图表所示:

![图 3.2 – 流程图img/B17159_03_02.jpg

图 3.2 – 流程图

根据系统环境,你已经知道组织中最重要的流程。你可以开始为这些关键流程绘制图表——或者至少,与你的项目相关的那个流程。构建端到端流程流是非常重要的——例如,整个客户旅程,或者一个产品的整个开发流程。同样重要的是要从客户的角度(灰色框)理解流程,而不仅仅是内部流程(白色框)。确保捕捉到故障点或返工路径,或者一个流程可能突然结束而不是正常完成的地方。当实体通过这些流程流动时,会做出决策或进行计算,这些可能是机器学习问题的候选者。无论你从哪个项目开始,识别沿途的其他潜在机会都是一个好主意。结果可能表明,以不同的方式看待流程或构建不同的机器学习模型可能会带来更大的利益,或者可能预防当前项目的需求。无论结果如何,捕捉这些信息都是重要的。顺便说一句,你注意到在先前的流程图中客户没有收到拒绝消息吗?正如你可以想象的那样,这是客户体验中一个重要的部分,却被忽略了。我相信错误会在某个时候被发现,但使流程明确会增加尽早发现并考虑它在构建你的模型时的机会。

除了构建图表外,捕捉关于过程的数据也很重要。你经常会遇到有人已经构建了流程图,但没有捕捉任何数据的情况。如果你正在阅读这本书,那么我不需要告诉你收集这些数据对于准确理解过程有多么重要。需要捕捉的典型信息包括每个步骤中流动的对象的数量和类型、每个步骤所需的时间、每个步骤所需的劳动力和资源、采取特定路径的概率、质量指标等等。如果关键流程没有捕捉到此类信息,那么尽快开始收集这些信息是很重要的。这些信息对于构建项目商业案例、作为模型中的有用功能以及帮助识别可能被隐藏的问题可能至关重要。

重要的是再次指出,你不想陷入术语争论,而是快速创建一个图表,足以帮助你理解过程中的情况,而不是包含每一个细微差别的非常详细视图。如果需要深入了解过程中的某些特定方面,重新审视这是可以的。

实际过程通常比我们在图 3.2中展示的要复杂一些,但并不太多,而且发现许多外部特定部门中这些任务完成的人不知道的事情并不罕见。在我的经验中,发现没有一个人理解整个过程的情况也并不罕见。这个练习本身就有价值,因为它可以突出关键问题,但对于构建模型以自动化此过程一部分的数据科学团队来说,尤其有价值。然而,我惊讶地看到数据科学团队在不了解过程的情况下构建模型如此多次。

交互图

在一个系统中,有许多交互发生,并不遵循固定的流程。这些交互可以按不同的顺序发生,需要保持灵活性,并且最好通过交互图来理解。那些有软件开发背景的人可能熟悉这样的图表,它们显示了软件组件或对象之间的交互。在我们的案例中,我们感兴趣的是理解系统关键参与者之间的交互,如下面的图表所示:

图 3.3 – 交互图

图 3.3 – 交互图

该图显示了一个市场,其中几个竞争对手在销售他们的产品。客户来到这个市场购买产品。竞争对手在各个媒体渠道上花钱做广告,并设定他们的价格。消费者受到广告、定价和其他消费者口碑的影响。在任何给定时间,许多这些互动都在进行中,创造了一个复杂且动态的环境。如果你在构建定价模型,你必须考虑到所有这些因素,否则你的模型将对数据有很好的统计拟合,但在实际操作中却证明是无效的。

注意,关键参与者可以是人、组织、机器人、市场、欺诈者等等。构建这个和其他图背后的想法是将你所知道的内容编码化并使其明确化。这使每个人都能对系统有一个共同的认识,并质疑假设或指出缺失的信息。同样重要的是要确保你将这些图视为需要用数据来检验的假设。你必须不断地问自己,数据是否支持我们在这些图中所说的内容。如果不是,那么可能需要细化你的假设,或者可能缺少数据或其他数据质量问题。也许数据收集是有偏见的。我确信你听说过如何使用有偏见的预测数据导致完全错误的预测的故事。构建一个图并不能保证你将捕捉到有偏见的数据,但它确实提高了你捕捉到它的机会。

状态图

状态图捕捉了系统中某些重要实体或参与者状态的变化。典型的候选者包括客户和产品。与其他图一样,你只为系统中的重要或关键参与者构建这些图。

一个示例状态图可以在这里看到:

![图 3.4 – 状态图状态图示例

图 3.4 – 状态图

状态图在概念上与马尔可夫链非常相似(这个概念表示系统从一个状态转换到另一个状态的概率,这种概率是固定的,并且不依赖于任何先前历史),但在状态图中,你不必假设历史不重要。状态图是为特定代理构建的。图 3.4显示了一个人随时间通过各种状态的状态图。箭头代表从一个状态到另一个状态的转换,并且人在给定状态下停留,直到他们转换到下一个状态。转换通常被认为是瞬时的。你也可以从转换概率的角度来考虑转换(在这种情况下,它开始类似于马尔可夫链)。这些图可以是分层的,因为一个状态可以被分解为子状态,而这些子状态可以通过转换相互连接。

除了构建图之外,你还想了解是什么导致了状态的转变。这是确定性的还是随机的?你还想收集有关这些转变发生频率和时间的资料,因为这些数据对于进一步分析和构建机器学习模型非常有用。一个行为者的转变可能会引起另一个行为者状态的转变,因此状态图也与交互图相关联。每个转变都是机器学习模型的潜在候选者,你可以使用数据来预测何时(以及哪个)转变可能会触发。正如你可以想象的那样,构建这些图将导致识别出可能被忽视的机会。

使用这些图,你现在已经理解了系统是如何运作的。我们现在可以看看是什么决定了系统的行为。

因果图

因果图旨在捕捉系统中存在的因果关系。这种理解可能正确也可能不正确。实际上,你可能永远无法证明因果关系。抛开哲学辩论不谈,你可以通过使用本节中概述的方法,并结合数据,大大提高你的理解。

一个示例因果图如下所示:

![图 3.5 – 因果图图片 B17159_03_05.jpg

图 3.5 – 因果图

上述图示展示了房地产市场中的关系(这只是一个例子——它并没有显示所有因果关系)。它表明,随着利率上升,房屋销售量下降。房屋销售还受到需求和价格的影响。随着价格上涨,价格上涨可以增加需求,因为更多的人想要购买房屋以赚钱,但价格本身是一个阻碍。你可以看到,在这个简单的图中存在相反的效果和反馈循环。难怪动态让我们感到困惑,这通常会导致系统出现混乱。每个人都认为他们理解房地产市场是如何运作的,但在复杂的动态面前,真正的理解很难实现。许多商业情况中也存在类似的动态。建立预测房价的机器学习模型很容易,但理解整体动态则要困难得多。这种缺乏理解可能导致你使用优秀的机器学习模型做出糟糕的决策,因此,构建这样的模型对于理解你试图解决的问题的真实本质至关重要。这样的图对于理解和处理混杂变量以及反事实分析也非常有用 [Pearl]。

系统动力学领域还提供了一种因果模型的表示方法。这种表示方法结合了其他图表的一些思想与因果图,以创建一个可以非常具有洞察力的视图,并且可以轻松地转换为动态模拟模型。系统动力学本身是一个庞大的学科,关于这个主题有许多优秀的书籍和论文[斯特曼]。在这里,我将仅介绍这个概念及其外观,以及它如何有用。以下是一个系统动力学(也称为库存和流量)图的示例:

![图 3.6 – 系统动力学(库存和流量)图图 3.6 – 系统动力学(库存和流量)图

图 3.6 – 系统动力学(库存和流量)图

该图将状态图、过程图和因果图中的思想捕捉到一个复合视图中,这种视图可以非常具有指导意义。想象一下产品的旅程,它随着状态的变化而变化,从原材料变为已发货产品。在这个例子中,每个方框代表特定状态下产品的数量——例如,组装产品方框代表所有已经组装并等待成为成品的产品。这发生在称为完成率的速率下。完成率取决于有多少组装员可以执行工作。你还会注意到,一些组装产品出现了缺陷。这些产品以称为缺陷率的速率流入缺陷产品方框。然后它们必须由维修人员修复。由于缺陷,无法达到发货目标,出现了短缺。这种短缺增加了对员工的压力,从而增加了倦怠。倦怠反过来又减少了组装员的人数(他们辞职或生病)。由于组装员人数减少,这减慢了完成率。这反过来又增加了压力,更多的人被转移到维修人员,因为维修可以更快地完成。这导致没有人担任预防工作,从而导致了恶性循环的持续,过程变得越来越积压。

这种动态在许多组织中都会发生,他们想知道为什么他们总是处于压力之下。一旦图表被布置出来,你就可以看到问题在于他们正在解决症状,而不是缺陷的根本问题。在这个简单的图表中很容易看出,但在更复杂的情况下,你可以对这些图表进行模拟以找到问题点。该图还有助于阐明过程、决策和商业目标之间的关系。这些图表可以模拟以了解决策的商业影响,以及部署机器学习模型的影响。这是以大多数人都能轻松理解的方式展示你努力价值的一种极好方式。

现在,让我们回到机器学习。如果这个分析没有完成,那么很可能是缺陷修复会被标记为问题,你很可能会构建一个模型来预测将产生多少缺陷或预测将发送多少物品。你会构建一个很好的模型,但这不会解决问题。关键问题是要找到导致缺陷的因素以及如何减少缺陷。这需要制造团队与数据科学团队紧密合作以找到解决方案。再次强调,关键点是除非有人进行这种分析,否则数据科学团队很可能会解决错误的问题。你可能认为这种情况不常发生,但我认为这种情况发生的频率比你想象的要高得多,因为真正的问题往往隐藏很长时间。

通常,最好将这些图中绘制的每个因果关系视为一个假设。这样,图就代表了一组假设。有一些统计和模拟方法可以用来验证这些假设。为此,你需要开始收集数据或开始发现数据存储的位置。现在我们已经了解了这些图,让我们看看我们是如何找到问题的根源的。

找到商业问题的根源

有些问题容易解决,而有些问题则证明非常难以解决。其中一个原因是,当问题的症状出现在其他地方并且经过一段时间后,很难知道问题真正在哪里。根据定义,症状是明显可见的——它们是明确的,你可以很容易地收集关于它们的数据。另一方面,潜在的问题可能发生在其他部门或建筑中,并且不可见,因为它不会立即引起疼痛。很可能是没有收集关于根本问题的数据,或者收集这些数据可能过于困难。鉴于机器学习的性质,几乎可以肯定的是,你得到的所有数据都是关于症状的。如果你很幸运,你可能会得到一些关于根本问题的数据(尽管你可能不知道)。

一种开始的方法是使用一种称为“五问法”的旧方法,它基本上涉及问“为什么?”五次以找到根本原因。很多时候,每个级别可能会有多个原因。因此,在实践中,许多人使用另一种称为“鱼骨图”的图来捕捉这些信息,如图所示:

![图 3.7 – 鱼骨图图片 B17159_03_07.jpg

图 3.7 – 鱼骨图

在前面的鱼骨图示例中,我们试图理解为什么会有软件缺陷问题。当你问“为什么”问题时,并捕捉到原因,你开始添加潜在的原因。你继续这个过程,直到你觉得你已经捕捉到了问题的本质。正如你所看到的,这部分是因果图,可以用作构建系统因果模型的开端,同时保持对特定问题的关注。然后可以收集数据来证实或拒绝假设。正如你所看到的,这个鱼骨图将告诉我们图 3.6 中看到的系统动态图。这个练习的关键是要理解根本原因,并着手解决这个问题。我希望你开始看到,准确预测某件事并不总是等同于解决真正的问题,你必须小心设置你的 ML 问题,以确保你的项目成功。此外,请注意,可能存在导致问题的多个原因,你可能必须解决多个问题才能看到问题的显著缓解。另一方面,如果不了解全貌,只解决一个方面(比如员工倦怠),可能会导致你得出倦怠不是问题的结论。在组织中,得出错误的结论,然后将其纳入组织的神话中——"我们已经尝试过了,但不起作用。"并不罕见。

现在我们已经确定了需要解决的商业问题,让我们看看我们如何将其转化为一个 ML 问题。

定义机器学习问题

在我们深入探讨机器学习的细节之前,重要的是要注意,并非所有问题都适合用机器学习来解决。对于一个问题来说,要成为好的候选者,它应该具有以下特征(我们现在将只关注监督学习SL)问题):

  • 如果一个算法能够预测它,那么有一个清晰的目标或标签值将是有用的。在没有算法的情况下,这个值仍然是未知的,需要人的判断,或者需要付出大量努力才能确定。有时,目标可能不是实际感兴趣的实际变量,而是计算中的关键组成部分。这部分并不总是显而易见,但你在本章前面部分所做的问题分析无疑将有助于阐明哪个变量是最佳的目标。

  • 你可以访问一个足够大的历史数据集,其中包含你希望预测的目标或标签值。你需要创建一个包含相关数据的来源列表,并开始理解它们包含的数据。

  • 确定哪种类型的 SL 问题最适合你的问题(回归、分类或时间序列)。有时,你可以将一种类型的问题转化为另一种类型。

  • 通常在准确性、可解释性和可理解性之间存在权衡。对于你的业务问题,考虑什么更重要是很重要的。在许多情况下,我们愿意牺牲准确性以提高可理解性。这反过来又决定了你应该选择哪些算法和解释方法。

你将不得不审查你的数据集和业务问题定义,以确定你是否可以制定一个规范,以满足之前列出的条件。在这个过程中,可能需要进行几种转换,例如这些:

  • 将目标进行转换,使其作为输出更有价值或更适合解决业务问题。以下是一些例子:

    (a) 如果数值目标值在一个非常大的值范围内,或者分布具有高度偏斜,那么你可以尝试将目标对数化作为新的目标。

    (b) 如果实际值不如范围重要,那么你可以创建分箱,并使用分箱值作为目标。

    (c) 有时,值的改变或变化率可以作为一个更好的目标。

  • 根据因果图创建交互特征。以下是一些例子:

    (a) 在因果模型中,那些未直接观察到但可以通过组合其他各种特征来计算的中间变量。

    (b) 如果你的目标是日志形式,那么创建各种特征的日志可能是有意义的。

    (c) 类似地,如果你想要某些特征在业务问题中具有特殊意义,你可能想要对这些特征进行分箱。

    (d) 探索创建变化率特征是否对你的模型很重要。

  • 识别出在因果图中出现但不在你的数据集中存在的缺失数据。根据其重要性和获取的难易程度,你可能希望在构建模型之前收集这些数据。另一个选择是与使用你已有的数据进行模型构建的过程并行启动数据收集。在后一种情况下,当你收集到数据后,你总是可以在下一次迭代中重新审视模型。

此外,你还必须考虑你将如何定义和评估错误。哪个指标最适合这个问题?我们在第二章,“机器学习基础”中介绍了指标,DataRobot 会自动为问题选择一个合适的指标。我发现大多数时候选择都非常好,所以除非你有充分的理由不这样做,否则遵循推荐是一个好主意。除了指标之外,你还需要考虑你是否更关心特定范围内的错误,而不是其他范围的错误——例如,你可能希望在高价值范围的特性上比在低价值范围内更准确。在这种情况下,你可以考虑使用这个数值特征(这必须是一个非目标特征)作为计算错误指标的权重。你可以在“附加”选项卡下的高级选项中找到这个设置,如下面的截图所示:

图 3.8 – 其他选项

图 3.8 – 其他选项

上述截图显示了选择用作预测权重的特征的选项。请注意,这必须在项目开始时设置。一旦模型构建开始,就不能更改此设置。

一旦你定义了机器学习问题,DataRobot 就会开始构建模型。我们将在后面的章节中介绍这一点。现在,我们想要讨论模型构建并能够生成预测时会发生什么。

确定负责任的 AI 的预测、行动和后果

在模型在 DataRobot 中构建和部署之后,可能会觉得我们的工作已经完成——但并非如此。你应该开始分析预测概览的样子,并开始与用户和利益相关者讨论将要采取的行动的细节。你帮助构建的模型可能会在你的系统中引入许多变化,并影响其他人。因此,确保这些影响不是负面的非常重要。确保你的模型不会造成伤害被称为负责任的 AI。这将建立在你在理解阶段通过各种图表所做的工作之上。

正如在之前的章节中我们看到因果图如何帮助你将特征与目标相关联一样,我们也可以看到目标如何影响系统的其他部分。该图应揭示目标如何影响关键目标或结果;它还应揭示将改变系统其余部分行为的关键反馈循环,以及给出其他后果的暗示。这使得理解并计算模型的投资回报率(ROI)相对简单。数据科学团队表达的一个常见挑战是他们发现很难表达模型的影响。正如你现在所看到的,我们从因果角度理解系统所投入的工作也有助于确定模型的企业影响。

很常见的是,大多数系统并不提供免费的午餐——总是有权衡。你的行动可能会改善一个目标,但可能会损害另一个。理解这些权衡并确保你的利益相关者也理解它们非常重要。即使模型会提供正的投资回报率,它也可能在其他领域降低性能,以至于你可能不想继续进行。其中一些后果可能涉及监管或伦理问题。这些领域通常被忽视,直到后来(痛苦地)被发现。进行这种分析的一个关键好处是确保你能够尽早发现问题。

另一种常用的机制是模拟系统动态图。这使你能够理解你系统的动态行为,并可以作为虚拟实验。虚拟实验或模拟让你在发布模型之前,在一个安全的环境中测试不同的策略。这不仅可以帮助你避免代价高昂的错误——它还常常能提出改进或策略,以进一步优化收益。许多数据科学项目未能成功的原因是,数据科学团队很少这样做,通常没有进行这种分析所需的技能,并且历史上并没有非常重视这一部分。让我们来看一个系统中的机器学习模型的一个简单例子:

![图 3.9 – 影响分析

![图片 B17159_03_09.jpg]

图 3.9 – 影响分析

在这个例子中,你有一个使用一些特征生成促销价格的促销模型。该模型监控销售情况并相应地更新价格。由于某种原因(数据库更新、审批等),在电子商务网站上更新这些价格存在延迟。这导致销售数据出现滞后,建模团队并不知道,因为建模团队没有理解整个流程以及更新网站价格所需的时间。如果你对这个简单的图进行分析,你会发现这种带有延迟的反馈循环会产生振荡行为。这意味着定价将始终不准确——有时会更高,有时会更低。这种行为与你在大多数模型结果中看到的行为有些相似,因此这种影响可能会被忽略。即使模型本身没有问题,系统表现也可能不佳。我保持这个例子非常简单,以便说明问题。你可以想象,如果情况更复杂,大多数人可能无法自己发现问题,直到为时已晚。

反过来,您还可以评估与现状相比,您的模型将产生多少销售影响。这是展示投资回报率和您工作的商业价值的好方法。由于基于这些图表的模拟是您业务的视觉表示,大多数人发现它比叙述或电子表格更容易理解。这也帮助获得对您的机器学习模型的接受。

虽然 DataRobot 并不帮助处理这些方面的许多问题,但它确实提供了机制来确定您的模型是否在受保护特征上存在偏差,以及测量模型中存在的偏差量。结合前面的分析,这可以在很大程度上确保您的模型没有偏差,并且结果不会被用于违背您组织价值观的方式。现在我们对于模型的预期结果感到满意,我们可以开始部署过程。

运营和创造价值

在您的基础设施中实施模型可能是一项复杂的任务。DataRobot 简化了部署的一些方面,但还有其他部署部分超出了 DataRobot 的范围,可能相当具有挑战性。让我们讨论以下这一过程中的任务:

  • 将模型作为应用程序编程接口(API)部署:非常早期的任务之一是将您的模型部署为 API,以便它可以根据需要提供预测。您将不得不决定这需要是批量操作还是实时操作。DataRobot 自动化了设置这一过程的大部分任务,您可以在几分钟内拥有一个提供预测的 API。

  • 与业务系统集成和测试:拥有一个 API 只是故事的一部分——您现在需要将此 API 集成到您的业务系统中。有时,您可以通过独立的 Excel 文件或网页向用户提供预测,但对于许多用例,集成是必需的。这有时可能需要时间和精力,并可能减慢事情的发展。许多组织开始使用的另一个潜在途径是机器人流程自动化RPA)。如果您的用例适合 RPA 实现,DataRobot 提供与多个 RPA 工具的集成,可以加快集成过程。

  • 构建最终用户界面:如果您的用例需要完全自动化,则不需要此操作,但大多数用例将需要一定程度的用户参与。在集成完成之后,您仍然需要某种方式让用户与预测交互并做出适当的决策。您需要考虑用户如何适应新的业务方式,以及如何使这一体验尽可能无摩擦。实际上,在许多用例中,预测被特别设置以减少现有流程中的摩擦。

  • 用户培训:确保你正在计划并为受新模型影响的用户提供培训做好准备。创建培训并提供这种培训是提高模型采用率和接受度的绝佳方法。很多时候,这都是在事后才考虑到的,可能会导致延误或降低接受度。

  • 用户接受度和变更管理:这通常是一个持续的过程。通常来说,从一开始就涉及用户和利益相关者是一个好主意。如果用户觉得他们的声音被听到,这将提高接受的可能性。用户还可以帮助避免数据科学团队自己可能无法察觉的潜在问题。频繁地沟通你为什么要进行这个项目,它如何影响用户,以及他们的工作将如何改变(希望是变得更好),这些都是提高成功机会的好策略。与用户一起构建之前列出的图表是开始这种对话的好方法,并且最终为业务增加价值。正如你所看到的,在模型构建前后有许多事情要做,才能实现价值。难怪项目往往在增加价值方面并不总是成功。

  • 模型监控和维护:一旦模型投入运行,你需要建立机制来监控预测服务和性能。随着时间的推移,性能往往会下降,或者你可能希望提高模型的表现。这需要用新数据更新或重新训练模型。幸运的是,DataRobot 使这些任务变得非常简单,因为它提供了设置模型监控和重新训练的机制。

摘要

在本章中,我们介绍了一些工具和方法,帮助你了解你的系统和你要尝试解决的问题的商业问题。其中一些方法即使是经验丰富的数据科学家也可能感到陌生,但花时间内化和在项目上实践这些方法是重要的。考虑到时间压力,其中一些可能感觉是不必要的。这就是为什么像 DataRobot 这样的工具是有益的,因为它们减少了你在重复性任务上花费的时间,让你可以专注于工具无法做到的事情。

希望我已经说服你们,数据科学团队更加专注于理解问题,并使用自动化工具进行一些模型构建和调优任务,这对组织提供了最佳的价值。在这里完成的大部分工作也将在项目后期派上用场,当我们准备将模型投入组织运营时。具体来说,在本章中,我们学习了如何理解更广泛的系统环境,系统是如何运作的,以及为什么它会以某种方式表现。我们还看到了如何找到企业需要解决的根源问题,并将业务问题转化为可以用机器学习解决的问题。然后我们学习了如何确保解决方案解决了正确的问题,并且不会产生意外的副作用。

最后,我们学习了如何确保解决方案被利益相关者接受并得到实施,从而实现商业价值。

我们现在已准备好开始使用一些示例数据集,并开始使用 DataRobot 来帮助我们解决我们发现的业务问题和定义的机器学习问题。

进一步阅读

  • 《因果性:模型、推理与推断,第二版》,作者:Judea Pearl,出版社:剑桥大学出版社。

  • 《商业动态:复杂世界的系统思维与建模》,作者:John D. Sterman,出版社:Irwin/McGraw-Hill。

第二部分:使用 DataRobot 的完整机器学习生命周期:从概念到价值

本节将涵盖使用 DataRobot 构建和部署机器学习模型的整个生命周期。完成本节后,您将了解如何从项目开始到结束。尽管任务按线性列出,但在任何实际项目中,这些任务都会迭代发生,并且在许多环节中,您将返回到之前的步骤重新执行一些任务。

本节包括以下章节:

  • 第四章, 为 DataRobot 准备数据

  • 第五章, 使用 DataRobot 进行探索性数据分析

  • 第六章, 使用 DataRobot 进行模型构建

  • 第七章, 模型理解和可解释性

  • 第八章, 模型评分和部署

第四章:为 DataRobot 准备数据

本章涵盖了与为建模准备数据相关的任务。虽然这些任务本身相对简单,但它们可能需要花费大量时间,有时还可能引起挫败感。只需知道,如果你有这样的感觉,你并不孤单。这是很正常的。这也是你开始注意到事情与你在学术环境中的经验略有不同的时候。数据几乎永远不会以适合建模的形式出现,假设你收到的数据状况良好且质量上乘是错误的。

大多数现实世界的问题并不附带现成的数据集,你可以开始处理并用于构建模型。很可能会需要从多个不同的来源拼接数据。根据数据的不同,DataRobot可能会自动执行数据准备和清洗任务,或者你可能需要自己完成其中的一些。本章涵盖了概念和示例,展示了如何清洗和准备你的数据,以及 DataRobot 提供的帮助完成这些任务的特性。

到本章结束时,你将了解如何设置数据以便将其传递给 DataRobot 并开始建模。在本章中,我们将涵盖以下主要主题:

  • 连接到数据源

  • 为建模聚合数据

  • 清洗数据集

  • 处理不同类型的数据

  • 为建模工程特征

技术要求

本章的一些部分需要访问 DataRobot 软件和一些数据处理工具。大多数示例处理的是小型数据集,因此可以通过 Excel 处理。本书后面将使用的数据集将在以下章节中描述。

汽车数据集

汽车数据集(来源:Dua, D. 和 Graff, C. (2019)。UCI 机器学习库[archive.ics.uci.edu/ml]。加州大学欧文分校,信息与计算机科学学院)可以在 UCI 机器学习库(archive.ics.uci.edu/ml/datasets/Automobile)中访问。该数据集中的每一行代表一辆特定的汽车。特征(列)描述了其特性、风险评级和相关的归一化损失。尽管这是一个小型数据集,但它具有许多既是数值型又是分类型的特征。特征在网页上进行了描述,数据以.csv格式提供。

家用电器能耗预测数据集

此数据集(来源:Luis M. Candanedo, Veronique Feldheim, Dominique Deramaix, Data driven prediction models of energy use of appliances in a low-energy house,Energy and Buildings,Volume 140,2017 年 4 月 1 日,第 81-97 页,ISSN 0378-7788)可在 UCI 机器学习库中访问(archive.ics.uci.edu/ml/datasets/Appliances+energy+prediction#)。此数据集捕捉了房屋中各个房间和外部环境中的温度和湿度数据,以及各种设备随时间推移的能耗。数据每 10 分钟捕获一次。这是一个典型的时间序列数据集示例。数据以.csv格式提供,网站还提供了各种特征的描述。此数据集中的所有特征都是数值特征。数据集还包括两个随机变量以使问题更有趣。

SQL

对于本章的一些部分,了解 SQL 将很有帮助,尽管您不需要了解 SQL 就能通过示例问题。

连接到数据源

到目前为止,您应该有一个数据源列表以及存储在那里的数据的大致了解。根据您的用例,这些源可能是需要挖掘的实时数据流源。以下是一些典型的数据源:

  • 文件系统

  • Excel 文件

  • SQL 数据库

  • Amazon S3 存储桶

  • Hadoop 分布式文件系统HDFS

  • NoSQL 数据库

  • 数据仓库

  • 数据湖

  • 图数据库

  • 数据流

根据数据源的类型,您将使用不同的机制来访问这些数据。这些机制可以是本地或云端的。根据数据的状态,您可以直接将数据带入 DataRobot,或者可能需要在将数据带入 DataRobot 之前进行一些准备工作。DataRobot 最近添加了Paxata功能来帮助这个过程,但您可能无法访问该附加组件。大部分的处理工作是通过SQLPythonpandasExcel完成的。为了本书的目的,我们将只关注 Excel。

如果您还不熟悉 SQL 和 pandas,那么在有机会的时候开始学习它们将很有帮助:

  1. 您可以通过访问创建新项目菜单来连接数据源,如图所示:![Figure 4.1 – 连接到数据源 Figure_4.1_B17159.jpg

    Figure 4.1 – 连接到数据源

  2. 您可以搜索已定义的现有数据源,或者添加一个新的数据连接。如果您选择添加新数据连接选项(如图所示),您将看到以下连接选项:![Figure 4.2 – 数据连接类型 Figure_4.2_B17159.jpg

    Figure 4.2 – 数据连接类型

  3. 您将看到为您的组织提供的连接选项。这里显示的内容可能与前面的图不同。大多数具有 JDBC 驱动的数据库都受支持,但您可能需要与您的管理员确认。例如,让我们选择MySQL选项,如图下所示:

![图 4.3 – 配置数据连接图片

图 4.3 – 配置数据连接

在前面的图中,您将看到配置 MySQL 数据源的配置参数。其他数据源在本质上类似。在这里,您将输入可以从您的数据库管理员那里获得的配置设置。如果您正在连接到数据库以将数据导入 Python 或 Excel,则需要创建类似的连接。

注意

您需要具备一些 SQL 的工作知识或与了解 SQL 的人合作,才能使用这些选项。

为建模聚合数据

从前面的章节中,您可能还记得机器学习算法期望数据集以特定的形式存在,并且它需要在一个表中。然而,为这个表所需的数据可能存在于多个来源。因此,您需要做的第一件事之一就是从多个来源聚合数据。这通常使用 SQL 或 Python 完成。最近,DataRobot 添加了将多个数据集添加到项目中的功能,并在 DataRobot 内部聚合这些数据。请注意,您可能仍需要在 DataRobot 之外执行一些数据清洗操作,因此如果您想使用 DataRobot 的聚合功能,您需要在将数据带入 DataRobot 之前执行清洗操作。我们将在下一节中介绍数据清洗。如果您选择在 DataRobot 内部进行数据聚合,您必须确保在项目的非常开始阶段就进行此操作(如图 4.4):

![图 4.4 – 添加二级数据集图片

图 4.4 – 添加二级数据集

在前面的图中,在开始按钮下方,您可以点击添加数据集。一旦点击,您将看到一个窗口,允许您指定附加的数据集,如图 4.5 所示:

![图 4.5 – 二级数据集图片

图 4.5 – 二级数据集

在这里,您可以添加新的数据集并定义主数据集与二级数据集之间的关系。对于时间序列问题,您还可以使用此功能将数据聚合到正确的时间尺度,并将其与主数据集连接起来。

请注意,这确实需要您对关系表的工作方式以及一些 SQL 概念有一定的了解。如果您不熟悉这些概念,并且不确定要使用哪些索引,请与了解数据库的人合作,以帮助您设置这些选项。

数据集清洗

这一步可以在我们之前章节中提到的数据聚合之前或之后进行。我们在 第二章 的数据清洗部分介绍了一些概念,机器学习基础,所以让我们看看如何在数据集上实际操作。为此,让我们从汽车数据集开始。请参考 技术要求 部分以访问该数据集的 UCI 存储库:

  1. 让我们下载两个文件:imports-85.dataimports-85.names。数据文件是 .csv 格式,所以让我们将文件重命名为带有 .csv 扩展名的文件,并使用 Excel(你也可以使用任何文本编辑器)打开它。现在你会看到数据(图 4.6):图 4.6 – 汽车数据

    图 4.6 – 汽车数据

  2. 你会在前面的截图中发现缺少了标题信息。要检索标题信息,请在任何文本编辑器中打开 .names 文件。你将看到属性名称以及它们的定义。在你的 .csv 文件顶部创建一个空行,然后你必须手动将这些属性的名称作为文件的第一行输入。现在让我们将这个文件保存为 autodata.csv。现在它应该看起来像 图 4.7 所示:

图 4.7 – 带标题的汽车数据

图 4.7 – 带标题的汽车数据

请检查这个数据文件中的所有单元格。你可能会注意到,在前面的图中,许多单元格都有一个 normalized-losses,其中 20%的总值是缺失的。鉴于我们的数据集非常小,我们不希望删除包含缺失数据的行。此外,DataRobot 有机制来处理缺失值,所以我们打算将大部分保留原样。我们唯一想要考虑的是 normalized-losses。如果 normalized-losses 是我们的目标变量,那么我们别无选择,只能删除这些行。如果不是,我们可以先尝试保留原样,让 DataRobot 构建模型。然后我们可以尝试使用每个 Symboling 值的 normalized-losses 平均值作为替代策略,看看这会有什么不同。我将使用 Excel 的交叉表功能来计算这些平均值(图 4.8):

图 4.8 – 交叉表

图 4.8 – 交叉表

使用 Symboling 的原因是它是风险的指标。根据问题和你要达成的目标,你可以选择其他一些特征来完成这个目的。现在,我们将使用 Symboling 来说明如何操作。还有更复杂的插补方法可用,例如基于 K-Nearest Neighbor 的插补方法,如果你愿意可以探索(scikit-learn.org/stable/modules/generated/sklearn.impute.KNNImputer.html))。

在审查家用电器能源预测数据集时,我们发现数据看起来非常干净,不需要进一步清洗。在现实世界的项目中,您几乎找不到没有任何问题的数据集。在时间序列数据集中需要注意的典型问题如下:

  • 数据非常少:为了使 DataRobot 能够对您的数据进行有用的操作,回归问题至少需要 35 个数据点,分类问题需要 100 个数据点。

  • 数据缺失:有时某些时间步的数据可能缺失。在这种情况下,您可以使用之前或之后时间步的值来为缺失的时间步分配值。您也可以让 DataRobot 为您完成这项工作。

  • 相互关联的序列:通常您会尝试预测多个时间序列。如果这些序列相似并且相互关联,那么您可以将它们合并为一个单一模型。这通常可以提高预测精度。在这些情况下,您必须创建一个特征来告诉 DataRobot 这些序列是同一集群的一部分。

我们将根据 DataRobot 发现的情况重新审视数据质量。现在,数据集看起来相当干净(顺便说一句,这在现实中是非常不寻常的),让我们进一步调查这些数据。

处理不同类型的数据

您可能已经注意到,一些特征具有数值,而其他特征具有分类值。例如,您数据集中的standard以及std。在这种情况下,即使它们是相同的,DataRobot 也会将它们视为不同的值。

有些特征可以被视为分类或数值。例如,num-of-cylinders;在这里,值以文本形式表示。鉴于这里存在数值顺序,将其转换为数值变量可能是有益的,如图 4.9所示:

图 4.9 – 分类到数值特征的转换

图 4.9 – 分类到数值特征的转换

在这里,我们创建了(在cylinder-count中,它携带了气缸数量的数值。在这个例子中,我们使用 Excel 进行数据处理,但这也可以通过许多方法实现,例如 SQL、Python 和 Paxata。您也可以进行类似的数据处理,并为num-of-doors创建一个新列。

让我们看一下以下图中的make特征。这似乎有 22 个可能的值,但我们可用的数据非常有限。如果我们为每个制造商计算行数,我们可以看到每个制造商可用的数据量:

图 4.10 – 每个制造商的数据

图 4.10 – 每个制造商的数据

我们注意到某些车型数据非常少,因此将它们组合起来可能很有用。例如,我们可以(使用 Excel)将突出显示的行组合成一个名为other的型号。你划线的依据取决于你对业务问题的理解或与领域专家的讨论。即使有了这些知识,你也可能需要尝试几种不同的选项,看看哪种效果最好。这就是机器学习是一个迭代和探索过程的原因。同时,请记住,你的时间有限,所以不要过度探索。当然,有一个点,额外的调整不会带来很多好处。

DataRobot 还允许对图像和地理空间数据进行特殊处理。我们将在 第十一章 使用地理空间数据、NLP 和图像处理 中介绍它们。现在让我们看看可以对数据进行的其他转换。

为建模工程特征

作为系统理解的一部分,你可能会对问题和数据集有一些洞察,这些洞察可以通过以各种方式组合现有特征来创建新的数据特征。例如,我们可以通过乘以长度、宽度和高度来创建一个名为volume的新特征。同样,我们可以通过将highway-mpg除以city-mpg来创建一个名为mpg-ratio的特征。让我们还通过将engine-size除以cylinder-count来创建一个名为cylinder-size的特征。这些特征的方程如下:

  • volume = length * width * height

  • mpg-ratio = highway-mpg / city-mpg

  • cylinder-size = engine-size / cylinder-count

Figure 4.11 展示了这些特征值的一个示例:

Figure 4.11 – Engineered features for the Automobile Dataset

Figure 4.11_B17159.jpg

图 4.11 – 汽车 Dataset 的工程特征

如你现在所看到的,有许多可能性可以创建新的特征,这些特征可能有助于解决你的问题。许多这些新特征可能并不有用,稍后删除它们是可以的。有时,这些特征对客户或利益相关者可能有意义,你可能想保留它们而不是其他冗余的特征。

让我们看看 Appliances Energy Prediction Dataset 文件。使用这个数据集,我们可以创建以下特征:

  • total-energy = Appliances + lights

  • avg-temp-inside = (T1 + T2 + T3 + T4 + T5 + T7 + T8 + T9 ) / 8

  • avg-rh-inside = (RH_1 + RH_2 + RH_3 + RH_4 + RH_5 + RH_7 + RH_8 + RH_9 ) / 8

  • temp-inout-diff = T6 – avg-temp-inside

  • rh-inout-diff = RH_6 – avg-rh-inside

  • windchill-factor(我正在根据www.weather.gov/media/epz/wxcalc/windChill.pdf创建一个近似的风寒指数)= T_out * (Windspeed⁰.16 )

新的数据特征将如图 Figure 4.12 所示:

图 4.12 – 用于家用电器能源预测数据集的工程化特征

图 4.12 – 用于家用电器能源预测数据集的工程化特征

如您所见,这些特征利用了我们通过与领域专家交谈或在网上进行一些研究而获得的领域知识。您可能通过研究露点、压力和能见度等主题找到更多此类特征。自动化可能很难独立捕捉到所有这些特征,但另一方面,自动化可能能够基于这些特征找到一些额外的有趣特征。最近,DataRobot 也开始添加一些自动进行特征工程的能力,但这些能力相对有限。这些能力非常有用的一个领域是时间序列问题。在这个特定领域,这些能力在尝试大量难以独自匹配的特征时极为有帮助。话虽如此,通过工程化特征将您的领域知识注入模型仍然是您的责任。

摘要

在本章中,我们介绍了帮助您为构建模型准备数据集的方法。尽管 DataRobot 正在开始提供对许多数据准备任务的支持,但许多这些方法必须在 DataRobot 之外应用。正如我们讨论的,许多这些任务目前无法自动化,并且需要领域理解来做出适当的决策。

具体来说,在本章中,我们学习了如何连接到各种数据源以及如何从这些源中聚合数据。我们研究了如何处理缺失数据问题以及其他在建模前应进行的数据处理。我们还介绍了创建新特征的方法,这些特征对于提高模型性能可能非常重要。

我们现在处于一个几乎完全在 DataRobot 环境中分析数据和构建模型的状态。在下一章中,我们将使用 DataRobot 来分析数据集。

第五章:使用 DataRobot 进行探索性数据分析

在本章中,我们将介绍与使用 DataRobot 探索和分析您的数据集相关的任务。DataRobot 执行许多您需要执行此分析的功能,但您仍然需要自己理解这些内容。

到本章结束时,您将学会如何利用 DataRobot 进行探索性数据分析EDA)。在本章中,我们将涵盖以下主要内容:

  • 数据摄入和数据目录

  • 数据质量评估

  • 探索性数据分析(EDA)

  • 设置目标特征和相关性分析

  • 特征选择

数据摄入和数据目录

现在我们已经准备好了数据集,我们有两种选择将它们带入 DataRobot。我们可以访问创建新项目/拖放数据集页面(图 1.5)或AI 目录页面(图 1.17)。如果数据集相对较小,我们可能更喜欢从创建新项目方法开始。经过几次迭代后,当数据集稳定下来,您可以将其移动到AI 目录页面,以便在其他项目中重用。

让我们从上传我们创建的本地文件开始,该文件位于第四章为 DataRobot 准备数据。您可以将项目命名为Automobile Example 1,如下面的截图所示:

![Figure 5.1 – Uploading dataset for a new project

![img/Figure_5.1_B17159.jpg]

Figure 5.1 – Uploading dataset for a new project

您会注意到 DataRobot 自动开始分析数据并执行快速探索性分析。您可以看到它找到了30个特征和205行数据。

备注

如果您使用的是具有多个工作表的 Excel 文件,请确保您想要的数据在第一个工作表中。

数据质量评估

DataRobot 也会进行数据质量评估,并在发现任何数据问题时通知您,如下面的截图所示:

![Figure 5.2 – Data quality issues

![img/Figure_5.2_B17159.jpg]

图 5.2 – 数据质量问题

在这个案例中,它已经在八个特征中发现了异常值。您可以查看详细信息,看看这些是否看起来可以接受,或者您是否需要删除或以其他方式修复这些异常值。我们将在下一节探索和分析这些特征时进行此操作。

注意,它还寻找了任何特征中的任何隐藏的缺失值或过多的零。这些可能难以手动检测,并且可能对您的模型造成问题,因此如果出现这些问题,修复这些问题很重要。例如,您在第四章为 DataRobot 准备数据中看到,我们已经修复了normalized-losses特征中过多零的问题。如果我们之前没有这样做,DataRobot 会提醒我们修复此问题或过滤掉这些行再继续。它还会在选择目标特征后进行额外的分析。

您将对 Appliances Energy 数据集执行相同的流程。

EDA

如您在上一节所见,DataRobot 自动对数据集进行了初步分析。让我们看看我们将如何审查这些数据并从中获得洞察。如果您向下滚动页面,您将看到一个特征表及其特性的概述,如下面的截图所示:

图 5.3 – 数据分析概述

图 5.3 – 数据分析概述

图 5.3 – 数据分析概述

您可以看到,在这个表中,DataRobot 已经计算并列出了关于一个特征的任何数据质量担忧,它是什么类型的变量,数据集中有多少唯一值,以及有多少值是缺失的。这些都是非常重要的特征,您需要审查所有这些以确保您理解它们在告诉您什么。

例如,DataRobot 选择的变量类型是否如您所期望?如果您查看 num_of_doors,您会注意到这是一个分类变量。尽管这是正确的,因为数据是以文本形式存在的,但您知道这实际上是数字。您可能想要修复这个问题(就像我们在第四章为 DataRobot 准备数据中所做的那样)。提前这样做将减少后续的重工作和浪费精力。同样,您会注意到 num_of_doors 有两个缺失值。如果这个数字更高,我们会尝试解决缺失值问题,如第四章为 DataRobot 准备数据中所述。此外,请注意唯一值。对于某些特征,我们期望有许多唯一值,而对于其他特征,我们则不期望。检查 DataRobot 发现的内容是否与您的期望一致。如果不一致,尝试确定原因。当分类变量具有大量唯一值时,请特别注意。我们很快将讨论如何解决这个问题。

对于数值特征,您还将看到诸如平均值中位数标准差(标准差)、最小值最大值之类的汇总统计信息。请为每个特征进行审查,看看它们是否都看起来合理。如果您点击任何特征行,它将展开并显示更多详细信息,如下面的截图所示:

图 5.4 – "symboling"特征详情

图 5.4 – "symboling"特征详情

图 5.4 – "symboling"特征详情

在这里,您可以查看所有值的直方图。现在您可以看到这些数据是如何分布的。需要特别注意的一个方面是您数据较少的区域。例如,您可以看到用于值 -2 的训练数据量非常有限,因此我们应预计在尝试预测这些值时会出现问题。现在,让我们看看以下截图中的 normalized_losses 的详细信息:

图 5.5 – "normalized_losses"特征详情

图 5.5 – "normalized_losses"特征详情

图 5.5 – "normalized_losses"特征详情

在这个视图中,我们可以看到似乎在make特征周围几乎没有损失,我们可以看到它是如何分布的:

图 5.6 – “make”特征的细节

图 5.6 – “make”特征的细节

由于make是一个分类特征,你可以看到每个值出现的频率。记住,我们之前已经将一些数据非常少的车型合并到了other中。如果我们没有这样做,我们会在这里注意到一些类型的数据点非常少,需要解决,否则它们在训练过程中表现不佳。让我们看看fuel_type,看看我们能从这些数据中提取什么,如图下所示:

图 5.7 – “fuel_type”特征的细节

图 5.7 – “fuel_type”特征的细节

在这里,我们注意到diesel汽车没有得到很好的代表,这可能对汽车来说是正常的。每次我们看到这种不平衡,我们都应该尝试看看是否可以解决。现在,当我们查看engine_location特征时,如图下所示,我们发现了一个问题:

图 5.8 – “engine_location”特征的细节

图 5.8 – “engine_location”特征的细节

如您在先前的屏幕截图中所见,rear特征在数据集中几乎没有任何记录。从实际的角度来看,这意味着算法将忽略这个特征。如果你没有仔细查看,你可能会认为engine_location对你的目标没有影响,但正如您可以从这个屏幕截图中看到的,我们的数据集不足以做出这样的判断。现在,让我们在以下屏幕截图中查看engine_type,看看我们在这里发现了什么:

图 5.9 – “engine_type”特征的细节

图 5.9 – “engine_type”特征的细节

在这种情况下,我们发现一种类型占主导地位,而某些类型几乎不被代表。观察这个分布,你可能想创建另一个特征,将这个特征转换为二进制值,对于其他类型则为ohc1。这也会在数据集中创造一些平衡。

请记住,这可能会或可能不会证明是有用的。你必须在你自己的模型中尝试,看看什么有效。现在,让我们在以下屏幕截图中查看num_of_cylinderscylinder_count,这是我们数据准备期间创建的一个特征:

图 5.10 – “num_of_cylinders”和“cylinder_count”特征的细节

图 5.10 – “num_of_cylinders”和“cylinder_count”特征的细节

如您所见,尽管数据相同,但转换值与您首次查看直方图时得到的印象不同。数值是对数据的更准确表示,应该比分类值产生更好的模型。

希望我们已经强调了 DataRobot 自动提供的内容以及通过查看 DataRobot 生成的图表可以获得哪些见解。我们现在可以设置我们的目标特征并进行额外的分析。

设置目标特征和相关性分析

到你达到这个阶段时,你应该已经对你要解决的问题以及应该设置的目标特征有一个相当好的了解。对于不同的用例使用不同的特征作为目标并不罕见。有时,你甚至会设置一个转换后的特征作为目标(例如,特征的日志)。对于汽车数据集,我们想要预测汽车的价格。一旦你选择了目标特征,如以下截图所示,它将分析该特征并提供一些建议:

图 5.11 – 设置目标特征

图 5.11 – 设置目标特征

从前面的截图中你可以看到,它显示了价格是如何分布的。DataRobot 也提醒说,一些目标值是缺失的。理想情况下,我们在上传数据集之前应该过滤掉带有缺失目标值的行。你还会注意到 DataRobot 将其描述为回归问题。另一件需要注意的事情是,它选择了Gamma 偏差作为优化指标。你可以在第二章 机器学习基础中了解更多关于这个指标的信息,或者你可以在 DataRobot 的帮助部分中更详细地探索它。目前看来,考虑到价格值的广泛差异,这似乎是一个不错的选择。

在我们点击开始按钮之前,我们应该探索高级选项。这样做的原因是,一旦点击了开始按钮,就无法更改选项。话虽如此,如果不完全理解数据,往往很难做出所有正确的选择。克服这一问题的方法之一是暂时忽略高级选项,继续进行探索。

一旦我们知道我们想要什么,我们就可以创建一个新的项目并选择适当的选项。你可以看到这是一个迭代的过程,我们通常会尝试一些东西,然后回来重新做一些工作。此外,请注意,图 5.11 中的建模模式设置为快速。这通常是一个好的开始选择。考虑到这一点,我们实际上可以跳过选项,直接点击开始按钮。你会注意到 DataRobot 将开始执行额外的分析,如下面的截图所示:

图 5.12 – 特征分析

图 5.12 – 特征分析

你会注意到,除了进行额外的分析外,DataRobot 实际上已经开始构建模型。这可能令人惊讶,因为我们仍在进行分析,但请放心——这些不是最终模型。让 DataRobot 构建这些模型,因为其中一些将为我们提供关于数据的有用见解。我们很可能会稍后丢弃这些模型,但它们将在我们的旅程中证明是有用的。一旦 DataRobot 完成所有任务,你将看到一条自动驾驶完成的消息,如下面的截图所示:

![图 5.13 – 初始分析完成图片

图 5.13 – 初始分析完成

你现在会注意到 DataRobot 为所有特征填充了一个重要性列。这是相对于目标特征的特征相对重要性。我们还可以检查是否发现了其他数据质量问题。为此,让我们点击数据质量评估框中的查看信息下拉菜单。然后你会看到以下截图中的选项:

![图 5.14 – 数据质量评估图片

图 5.14 – 数据质量评估

我们之前看到了一些问题,但现在我们看到有一些特征可能存在目标泄漏。如果存在目标泄漏,我们将过滤掉这些特征。通过查看与每个特征相关的警告标志,我们发现这些特征是horsepowerengine_size。由于这些是重要特征,并且对价格有明显的影響,我们将保留这些特征。我们还在表头行中看到了另一个警告符号,如下面的截图所示:

![图 5.15 – 缺失的目标值图片

图 5.15 – 缺失的目标值

点击符号,我们看到 DataRobot 已经过滤掉了价格缺失的行。这是好的,这意味着我们不需要重新创建我们的数据集并将其再次上传到 DataRobot。你也会在以下截图中注意到,现在在屏幕的左上角出现了一个新的标签页,称为特征关联。这是我们数据分析任务的关键标签页。让我们点击这个标签页来查看 DataRobot 发现了什么:

![图 5.16 – 特征关联图片

图 5.16 – 特征关联

DataRobot 将这些称为关联而不是相关性,原因在于 DataRobot 使用engine,它包括一组紧密相关的特征,如engine_sizeborecylinder_sizestroke。理解这些关系作为一个整体对于解决商业问题可能非常重要。在这个特定的情况下,它告诉你你不能单独修改这些中的一个。

改变气缸直径将影响许多其他特征,即使您的模型最终没有包含这些特征。忽略这些方面通常会导致下游问题,所以请特别注意这些关系。

您可以通过按重要性对关联进行排序来获得额外的见解,如下面的截图所示:

图 5.17 – 按重要性排序的特征关联

图 5.17 – 按重要性排序的特征关联

前面的截图显示了按其对目标特征的影响排序的特征。这告诉您哪些特征最有可能在您的模型中突出。要寻找的一件事是它与您在问题理解阶段构建的因果模型是否一致。它是否一致?如果不一致,差异和惊喜在哪里?这些通常会导致对您问题的新的见解。查看 MI 值的整体情况也很有用。为此,您可以点击 .csv 文件。然后您可以在 Excel 等工具中分析它们,如下面的截图所示:

图 5.18 – MI 值

图 5.18 – MI 值

这让您对这些值的相对规模有了更好的感觉。在这个视图中,我们可以看到,aspiration 对价格的影响非常小。这似乎有点反直觉,值得进一步调查。为此,我们可以通过点击 priceaspiration 来更详细地查看这个关联,如下面的截图所示:

图 5.19 – 关联对详细信息

图 5.19 – 关联对详细信息

在这里,我们可以看到,对于相同的 aspiration 值,价格可能会有很大的变化。尽管如此,我们仍然可以看到,平均而言,turbo 的价格更高。基于这一点,我们将将其保留在建模中。我们还应该与领域专家讨论,看看为什么它没有与 price 更强地相关。这些讨论可能导致创建其他可能阐明这种关系的特征。另一方面,pricenum_of_doors 之间的关系看起来并不很有趣。

仔细审查关联对以了解可以获得的见解是个好主意。至少,审查那些值非常高或非常低的关联。具体来说,寻找非线性关系。例如,让我们看看 curb_weighthighway_mpg 之间的关联,如下面的截图所示:

图 5.20 – curb_weight 和 highway_mpg 之间的关联

图 5.20 – curb_weight 和 highway_mpg 之间的关联

在这里,您会注意到随着 curb_weight 的增加,每加仑英里数(MPG)值会减少,这是符合直觉的。我们还看到曲线在更高的重量处开始变平。这可能是由许多原因造成的,因为影响 MPG 的其他因素并不随着重量的增加而增加。

注意,虽然这可能会或可能不会影响模型的预测准确性,但理解这些关系是确定基于模型采取的行动的关键。例如,对于大于 curb_weightdrive_wheels 的重量,减重可能不会为 MPG 带来很多好处,如下面的截图所示:

图 5.21 – curb_weight 和 drive_wheels 之间的关联

图 5.21 – curb_weight 和 drive_wheels 之间的关联

在前面的截图中,我们可以看到 curb_weightdrive_wheels 选择的影响。可能的情况是,如果我们在这两个特征中同时使用我们的模型,模型可能会给予 curb_weight 更高的优先级,并且可能发现 drive_wheels 的价值不大。因此,商业用户可能会将 drive_wheels 解释为不太重要。

如您所见,这并不正确,因为 curb_weight 本身受到 drive_wheels 的影响。已经观察到,如果不小心,一个精确的模型有时会给出错误的印象。DataRobot 可以进行这种分析并生成这些图表,但正确理解和解释这些图表的责任在于您。

让我们再次查看之前看过的某些单个特征图。为此,让我们查看 图 5.13 中显示的特征细节并点击 curb_weight。这将显示关于该特征的详细信息,如下面的截图所示:

图 5.22 – curb_weight 特征细节

图 5.22 – curb_weight 特征细节

您会注意到我们现在在这个图表中有更多信息。具体来说,我们现在可以看到价格如何随 curb_weight 变化,以及 curb_weight 值的分布情况。查看这些关系可以为您提供关于您问题的额外见解,尤其是在关系非线性时。例如,让我们查看以下截图中的 highway_mpg 的详细信息:

图 5.23 – highway_mpg 特征细节

图 5.23 – highway_mpg 特征细节

如您所见,价格随着 MPG 值的增加而指数级下降。鉴于这种非线性,这在其他特征中似乎也存在,尝试通过取价格的对数来创建一个新的目标特征可能是有用的。同样,通过查看其他特征,您可以获得有关可能有益的特征转换的想法。有些人可能会想知道为什么我们应该这样做,因为新的算法可以处理非线性。虽然这是真的,但如果从业务理解的角度来看是有意义的,仍然最好将您的非线性问题进行转换。此外,这也允许算法将计算能量集中在其他可能被忽视的领域。

现在我们已经理解了特征并且根据需要进行了转换,我们可以专注于选择一个特征集来开始建模过程。

特征选择

特征选择的背后基本思想是选择对目标具有高重要性的特征。此外,我们还想删除与其他特征高度交叉相关(或具有高 MI 值)的任何特征。所选特征集在 DataRobot 中表示为特征列表。如果您点击页面左上角的 特征列表 菜单,如图下所示,您将看到 DataRobot 为数据集创建的特征列表:

![Figure 5.24 – 特征列表

![Figure_5.24_B17159.jpg]

图 5.24 – 特征列表

在这里,您将看到一个包含所有原始特征、基于单变量分析(即逐个分析特征)的选择以及最重要的特征的列表。DR Reduced Features M8 列表或 Univariate Selections 列表看起来是良好的起点。点击 项目数据 菜单返回数据视图。现在,让我们通过从 特征列表 下拉菜单中选择 Univariate Selections 来检查单变量列表,如图下所示:

![Figure 5.25 – 选择特征列表

![Figure_5.25_B17159.jpg]

图 5.25 – 选择特征列表

您现在可以检查已选定的特征列表。您可以通过删除任何不想包含在此列表中的特征来修改此列表并创建新的特征列表。如您所见,DataRobot 已经为您做了大部分特征选择,以便开始工作。您现在可以删除更多,或者您可以在构建了一组初始模型之后,在下一轮迭代中删除它们。

有趣的是,DataRobot 已经使用其中一些列表构建了一些模型,我们将在下一章中探讨这一点。

摘要

在本章中,我们学习了如何将数据带入 DataRobot。我们学习了如何使用 DataRobot 的功能来评估数据质量并执行 EDA(探索性数据分析)。我们看到了 DataRobot 如何使探索数据、设置目标特征和执行相关性分析(或更准确地说,关联分析)变得非常容易。

我们学习了如何利用 DataRobot 的输出更好地理解我们的问题和数据集,然后如何创建用于模型构建的特征列表。您可以在 Python 或 R 中执行这些任务,它们并不困难,但确实需要一些时间。这段时间最好用于专注于理解问题和数据集。

在下一章中,我们将进入大家可能都在期待的事情:构建模型。

第六章:使用 DataRobot 进行模型构建

在本章中,我们将看到 DataRobot 是如何用于构建模型的。模型构建的大部分过程已经自动化,DataRobot 提供了许多功能来自动探索广泛的算法,同时允许数据科学家微调他们想要构建的内容。这为数据科学团队节省了大量的时间,并导致探索比其他情况下更多的模型。这也导致更好地遵循最佳实践,从而减少了犯错误的机会。

到本章结束时,你将学会如何利用 DataRobot 构建各种模型。在本章中,我们将涵盖以下主要主题:

  • 配置建模项目

  • 构建模型和模型排行榜

  • 理解模型蓝图

  • 构建集成模型

配置建模项目

在上一章中,我们创建了一个项目并执行了数据分析。我们还看到 DataRobot 自动为我们构建了几个模型。为了构建这些模型,我们使用了默认的项目设置。

在本节中,我们将介绍 DataRobot 默认为我们做了什么,并查看我们如何可以微调这种行为。如果你还记得,一旦我们在项目页面上点击 开始 按钮(见 第五章使用 DataRobot 进行探索性数据分析),我们就不能对项目选项进行任何更改。因此,我们将创建一个新的项目来审查和选择我们想要的选项。

为了这个目的,让我们进入 DataRobot 并选择 Automobile Example 2,如图下所示:

图 6.1 – 上传新项目的数据集

图 6.1 – 上传新项目的数据集

你可以选择与我们之前相同的靶特征(价格)。现在,请点击屏幕底部的 显示高级选项,而不是点击 开始 按钮。现在,你将看到 高级选项 屏幕,如图下所示:

图 6.2 – 高级选项

图 6.2 – 高级选项

在这里,你可以看到分区选项。你可以看到默认设置,并且可以根据需要更改它们。由于我们拥有的数据量非常有限,我已经将交叉验证折数减少到 3,将保留百分比设置为 15%。你可以轻松更改这些值,并根据需要使用不同的设置运行。接下来,我们点击 智能降采样 选项卡,如图下所示:

图 6.3 – 智能降采样

图 6.3 – 智能降采样

由于这不是一个分类问题,我们在这里不需要担心降采样。如果你有一个不平衡的分类数据集,你可以使用此选项进行降采样。现在,让我们看看 特征约束 选项卡,如图下所示:

图 6.4 – 特征约束

图 6.4 – 特征约束

在这里,您可以设置对特征(如单调性)的约束,即目标值是否与特征的值增加方向相同。目前,我们预见不到需要设置此类约束。此类约束可能是某些用例中的监管要求的一部分。如果是这样,它们可以在此处指定。大多数用例不需要此类约束。现在,让我们点击额外选项卡,如下面的截图所示:

图 6.5 – 额外选项

图 6.5 – 额外选项

在这里,我们看到一个选项可以更改用于建模的优化指标。我发现 DataRobot 的推荐非常好,除非您有充分的商业理由选择不同的指标,否则您应该使用此选项。鉴于我们处于建模的早期阶段,并且我们希望了解我们的数据,我们将选择搜索交互选项,取消选择从顶级模型创建混合器选项,并选择仅包括具有 SHAP 值支持的模型选项。如第二章中所述,机器学习基础SHapley Additive exPlanations (SHAP) 值有助于理解模型,并将为我们的问题提供额外的见解。这可能以模型精度为代价,但我们将在以后担心提高精度。如果您继续向下滚动此页面,您将看到更多选项,如下面的截图所示:

图 6.6 – 更多选项

图 6.6 – 更多选项

在这里,您可以设置选项以限制运行时间,限制目标变量预测的值,设置随机种子,或为特定特征添加权重。目前,我们看不出有必要更改这些默认设置。

这完成了配置过程,我们现在可以构建模型。

构建模型和模型排行榜

一旦我们完成对配置设置的任何更改,我们可以向上滚动并点击开始按钮。DataRobot 将自动开始构建模型,如下面的截图所示:

图 6.7 – 模型的自动构建

图 6.7 – 模型的自动构建

您可以看到 DataRobot 正在构建哪些模型以及使用了多少训练数据。您会注意到 DataRobot 将首先使用较小的数据集构建快速模型,学习哪个表现更好,然后有选择地使用更多数据构建模型。在当前情况下,您可能看不到这一点,因为一开始数据就很少。一旦 DataRobot 完成构建模型,它将显示模型排行榜,如下面的截图所示:

图 6.8 – 模型排行榜

图 6.8 – 模型排行榜

在前面的截图中,你可以看到哪些模型基于你为交叉验证选择的指标而上升至顶端。你也可以从下拉菜单中选择不同的指标,以查看模型在不同指标上的比较。你可以清楚地看到哪些模型上升至顶端。在顶级看到梯度提升模型并不罕见。你也会注意到,根据所选的指标,模型排名会有所变化。你会看到一旦 DataRobot 为部署选择了一个模型,它已经解锁了保留结果,并使用 100%的数据训练模型以准备部署。现在,我们将忽略这一点,因为我们还没有准备好讨论部署。另一件需要注意的事情是用于顶级模型的特征列表。你会看到一个新的信息性特征+特征列表被使用。这是 DataRobot 为这些模型创建的特征列表。让我们看看这个列表包含的内容,如下所示:

![图 6.9 – 新特征列表图片

图 6.9 – 新特征列表

如你所见,这个列表包含了一组特征,它还包含了一个 DataRobot 自动创建的新特征:(孔径)除以(长度)。这个比率可能对发动机有重要意义,你应该与领域专家(SMEs)讨论其作用。如果之前不知道,这可能会代表你业务团队的一个新见解。实际上,这被称为冲程比,被认为是发动机的一个重要参数。建模过程的下一步是看看是否需要进一步细化这个特征列表。让我们回到模型排行榜,选择表现最好的模型eXtreme Gradient Boosted Trees Regressor (Gamma Loss),转到理解选项卡并选择特征影响子选项卡,如下面的截图所示:

![图 6.10 – 理解和特征影响选项卡图片

图 6.10 – 理解和特征影响选项卡

你会看到并不是每个模型都会计算特征影响,所以请点击启用特征影响按钮,让 DataRobot 进行计算。一旦点击,DataRobot 将开始计算影响,并显示结果,如下面的截图所示:

![图 6.11 – 特征影响图片

![图 6.11 – 特征影响你会注意到特征影响是通过 SHAP 值计算的,我们之前已经讨论过这一点。默认情况下,它显示了前 25 个特征。我们将在稍后讨论特征和模型的详细信息。现在,我们想查看整个特征集。为此,我们将点击右下角的导出按钮。现在我们将看到导出选项,如下面的截图所示:![图 6.12 – 导出特征影响图片

图 6.12 – 导出特征影响

你可以将这些信息下载为.csv文件以进行更详细的探索。让我们使用 Excel 打开.csv文件来查看特征影响,如下面的截图所示:

图 6.13 – 整个集合的特征影响

图 6.13 – 整个集合的特征影响

如你所见,最后七个特征没有增加太多,我们可以尝试移除它们并查看影响。像 DataRobot 这样的工具的一个好处是运行这些实验非常快且容易。现在我们知道我们想要做什么,让我们回到特征影响屏幕。注意左下角的+ 创建特征列表按钮。点击该按钮将弹出一个创建新特征列表的对话框,如下面的截图所示:

图 6.14 – 创建新的特征列表

图 6.14 – 创建新的特征列表

在这里,我们可以给特征列表起一个新的名字,FL1 top23,并指定我们想要 23 个最佳特征。现在,我们可以点击创建特征列表按钮来保存这个新的特征列表。现在,一个新的特征列表已经创建,我们可以在页面右侧的列中点击配置建模设置。这将弹出一个配置对话框,如下面的截图所示:

图 6.15 – 配置建模设置

图 6.15 – 配置建模设置

我们现在可以从下拉菜单中选择新的特征列表,FL1 top23。如果我们需要,可以修改其他设置并点击运行按钮。DataRobot 现在将开始使用新的特征列表构建模型,当过程完成后,你可以在排行榜中看到新的模型,如下面的截图所示:

图 6.16 – 带有新模型的排行榜

图 6.16 – 带有新模型的排行榜

如你所见,使用新特征列表构建的模型表现更好,现在位于排行榜的顶部(忽略已部署就绪的模型,因为它使用了整个数据集)。正如我们所见,移除贡献不大的特征实际上有助于模型(即使只是略微)。鉴于这个模型使用的是更小的特征集,它是一个更理想的模型。我们可以根据需要继续这个过程。在此阶段,我们也开始更深入地查看模型的细节和它产生的结果。我们将在下一章回到这个话题。现在,我们想看看模型蓝图或 DataRobot 构建模型所采取的步骤。

理解模型蓝图

DataRobot 在构建模型时执行了许多数据转换和超参数调整。它利用了许多最佳实践来构建特定类型的模型,这些最佳实践以蓝图的形式编码。您可以通过检查这些蓝图来了解这些最佳实践,并更好地理解构建模型所采取的步骤。要检查模型的蓝图,您可以点击一个模型,转到描述选项卡,然后选择蓝图选项卡,如下面的截图所示:

![图 6.17 – 模型蓝图

![img/Figure_6.17_B17159.jpg]

图 6.17 – 模型蓝图

在这里,您可以查看工作流程步骤。如您所见,这个蓝图相当简单。这是因为梯度提升方法非常灵活,不需要太多的预处理。让我们看看另一个表现相当不错的模型,即广义加性 2 模型(Gamma 损失)的蓝图,如下面的截图所示:

![图 6.18 – 广义加性 2 模型(Gamma 损失)的模型蓝图]

![img/Figure_6.18_B17159.jpg]

图 6.18 – 广义加性 2 模型(Gamma 损失)的模型蓝图]

在这里,您可以看到需要对分类变量和缺失值进行预处理。现在让我们看看另一个深度学习DL)模型的蓝图。选择使用训练计划的 Keras 精简残差神经网络回归器模型,并选择蓝图选项卡,如下面的截图所示:

![图 6.19 – Keras 的模型蓝图

![img/Figure_6.19_B17159.jpg]

图 6.19 – Keras 的模型蓝图

您可以看到,对于 Keras,我们需要对数据进行清洗、缩放,并对分类变量进行独热编码。您可以通过点击模型框来检查这些步骤的详细信息,如下面的截图所示:

![图 6.20 – 处理步骤细节

![img/Figure_6.20_B17159.jpg]

图 6.20 – 处理步骤细节

您现在可以看到构建模型时执行的任务以及使用的超参数设置。还有一个链接,可以查看关于该方法的其他详细信息。在检查蓝图后,您可能会发现 DataRobot 没有使用您最喜欢的算法,您可能会想知道该算法或模型的性能可能是什么样的。为此,您可以在页面左上角点击存储库选项卡,如下面的截图所示:

![图 6.21 – 存储库蓝图

![img/Figure_6.21_B17159.jpg]

图 6.21 – 存储库蓝图

在这里,您将看到 DataRobot 提供的所有与此项目相关的蓝图。如您所见,这是一个相当全面的列表。请注意,这个列表将因项目类型的不同而有所变化(例如,时间序列项目)。您可以选择这些蓝图中的任何一个来构建一个模型。新模型将显示在排行榜上,您可以在那里评估其相对性能。目前,我们对此特定项目不感兴趣做这件事。

在这一点上,我们感兴趣的是比较一些模型,以查看它们在更详细层面上如何比较。为此,让我们点击顶部的最右侧标签,称为模型比较。这将打开一个页面,您可以选择任何两个模型来查看它们的匹配情况,如下面的截图所示:

![图 6.22 – 模型比较图 6.22 – 模型比较

图 6.22 – 模型比较

在这里,我们选择了 XGBoost 模型和广义加性模型GAM)模型,用于在多个指标上进行比较。我们可以看到,这两个模型之间并不太远,您可以根据其他因素选择任何一个。正如我们之前讨论的,GAMs 的优势在于它们易于向商业用户解释,并且可以呈现为查找表LUT),有时也称为评级表。选择 GAM 模型可能还有监管原因。让我们通过点击计算双重提升数据按钮进一步探索,带我们到以下屏幕:

![图 6.23 – 双重提升图图 6.23 – 双重提升图

图 6.23 – 双重提升图

双重提升图用于比较两个模型的结果。对于双重提升图,结果是根据两个模型之间的差异进行排序,而不是根据目标值。然后,这些值被分箱以显示每个箱子的结果。阴影区域描述了两个模型之间的差异。在这里,我们再次看到,这两个模型在性能上非常相似。

如果两个模型在整体得分良好但在此图表中显示值有较大偏差,那么这些模型将是创建集成模型的良好候选者。

构建集成模型

众所周知,模型集合往往表现更好,并且也更稳健。DataRobot 提供了自动构建模型集合的能力;然而,这确实需要一些权衡。例如,构建和部署模型集合需要更多的时间和计算资源,并且它们也往往更不透明。这就是我们最初没有从构建模型集合开始的理由。一旦你构建了几个模型,并且你对提高模型准确率的方法感兴趣,你可以决定构建模型集合。正如我们在前面的章节中看到的,我们必须明确选择构建模型集合的选项,这也意味着我们无法计算 SHAP 值。让我们看看这是如何操作的。首先,让我们转到项目列表页面,该页面显示了所有当前项目,如下面的截图所示:

![图 6.24 – 项目列表图片

图 6.24 – 项目列表

在这里,我们将选择 Automobile Example 2。从菜单中,我们将选择 Duplicate 选项。现在,你会看到 Duplicate 对话框,如下面的截图所示:

![图 6.25 – 复制项目图片

图 6.25 – 复制项目

我们可以给它一个新的名字,Automobile Example 3,并且我们将选择 Copy dataset only。这样,我们可以应用新的项目设置。让我们点击 Confirm。这将创建一个新的项目。我们可以选择目标为价格,现在我们点击 Advanced Options 选项卡,如下面的截图所示:

![图 6.26 – 模型集合(blender)的高级选项图片

图 6.26 – 模型集合(blender)的高级选项

这次,我们将选择 Create blenders from top models 选项,并取消选择 Include only models with SHAP value support 选项。现在,我们可以点击 Start 按钮让 DataRobot 构建模型。一旦 DataRobot 完成构建模型,我们可以检查排行榜,如下面的截图所示:

![图 6.27 – 拼接模型排行榜图片

图 6.27 – 拼接模型排行榜

你会注意到 DataRobot 构建了一个 AVG Blender 模型,这似乎是顶级模型,但提升效果并不明显。混合模型有时可以比单个模型产生更大的提升,因此探索这个选项是值得的。我们可以选择这个模型,并点击 Describe 选项卡,然后点击 Blueprint 选项卡,如下面的截图所示:

![图 6.28 – AVG Blender 的蓝图图片

图 6.28 – AVG Blender 的蓝图

现在,我们可以看到 blender 已经选择了两个 XGBoost 模型,因此提升效果并不令人惊讶。在这种情况下,我们不会选择混合模型,而是返回到上一个项目。

摘要

在本章中,我们学习了如何利用 DataRobot 的功能构建和比较模型。正如你所见,DataRobot 使得快速构建多个模型变得非常简单,并帮助我们比较这些模型。正如你所体验的,我们尝试了许多事情,构建了数十个模型。这种快速模型探索是 DataRobot 的关键功能,其对数据科学团队的重要性不容小觑。如果你要自己用 Python 构建这些模型,将会花费更多的时间和精力。相反,我们利用了这些时间和思考来实验不同的想法,并将更多的精力投入到理解问题上。我们还了解到了编码最佳实践的蓝图。这些蓝图对于新晋和经验丰富的数据科学家都是有用的学习工具。我们还学习了 DataRobot 如何为我们构建集成或混合模型。

可能会有一种冲动想要跳过分析阶段,直接开始部署这些模型,但重要的是在进行一些分析之前不要直接跳入这一步。我们现在已经准备好深入挖掘模型,理解它们,并看看我们能否从中获得更多见解。

第七章: 模型理解和可解释性

在上一章中,我们学习了如何构建模型,现在我们将学习如何使用 DataRobot 生成的输出理解模型,并利用这些信息解释为什么模型会做出特定的预测。正如我们之前讨论的,这一点对于确保我们正确使用结果至关重要。DataRobot 自动化了创建图表和绘图的大部分任务,以帮助人们理解模型,但你仍然需要知道如何在你试图解决的问题的背景下解释它所显示的内容。这也是为什么即使许多任务已经自动化,我们仍然需要参与这个过程的人的原因。正如你可以想象的,随着自动化程度的提高,解释结果的任务将变得越来越有价值。

在本章中,我们将涵盖以下主要内容:

  • 检查和理解模型细节

  • 评估模型性能和指标

  • 生成模型解释

  • 理解模型学习曲线和权衡

检查和理解模型细节

在上一章中,我们为不同的项目创建了几个模型。DataRobot 在一个项目中创建 10 到 20 个模型,查看和分析所有这些模型的细节将非常繁琐。你不必逐一审查这些模型,在做出最终选择之前,通常只审查前几个模型。现在,我们将查看Automobile Example 2项目中的模型排行榜,并选择最顶尖的模型,如下面的截图所示:

图 7.1 – 模型信息

图 7.1 – 模型信息

在前面的截图中,我们在描述选项卡内选择了模型信息选项卡,以查看模型的大小以及创建预测所需预期时间。这些信息对于需要快速评分数千笔交易且对时间敏感的实时应用非常有用。现在,让我们转到理解选项卡内的特征影响选项卡,如下面的截图所示:

图 7.2 – 特征影响

图 7.2 – 特征影响

这张图对于模型来说非常重要,因为它展示了特征对 XGBoost 模型贡献的大小。我们可以看到,最大的贡献者是curb_weightengine_sizehorsepowerhighway_mpgcylinder_count。另一方面,cylinder_sizeengine_type的贡献很小。虽然cylinder_size的预测能力不是很强,但我们不能忘记预测并不总是最终目标。我们知道cylinder_sizeengine_size有影响,这是一个重要的特征。目标可能是利用这些信息找出降低成本的方法。为此,我们可能希望减小engine_size,但你不能直接减小engine_size。为此,你需要减小气缸的大小或数量,这将导致engine_size的减小。拥有一个因果图来指导你,在确定实现目标的最佳行动时变得非常有帮助。

在我们采取行动之前,让我们检查一下广义加性模型GAM)的结果,如图下所示截图:

![图 7.3 – GAM 的特征影响]

图片 7.3

图 7.3 – GAM 的特征影响

图 7.3 展示了 GAM 的重要特征。虽然许多特征看起来很相似,但我们注意到engine_type在这个模型中的重要性相当高,而在之前的模型中engine_type的重要性非常低。这并不是错误——它指向了这样一个事实,即许多特征是相互关联的,不同的模型可以从不同的特征中捕捉到信号,并且预测能力并不一定等同于根本原因。为了采取行动,我们需要了解导致目标特征变化的根本特征。换句话说,最能预测某事的特征,并不总是可以改变以在目标中产生期望变化的特征。

为了进一步了解特征如何影响目标,让我们在模型的“理解”选项卡中选择“特征效应”选项卡,如图下所示截图:

![图 7.4 – 特征效应]

图片 7.4

图 7.4 – 特征效应

上述截图显示了各种特征的局部依赖性图。选定的图是关于curb_weight的。该图显示了curb_weight和价格之间相当线性的关系。我们确实在几个地方看到了价格的一些异常下降——例如,在curb_weight值为2700左右。在我们对此过于认真之前,我们注意到围绕这个值的数据量非常有限。这告诉我们,这个特定的观察结果很可能是由于数据不足。这确实提出了一个问题,即我们的模型很可能会在那个小区域内预测一个较低的价格,这反过来又可能导致收入降低。

让我们在以下截图中查看另一个特征:

![图 7.5 – engine_size 的部分依赖性]

图片 7.5

图 7.5 – engine_size 的部分依赖图

前面的截图显示了 engine_size 和价格之间高度非线性关系。我们在 engine_size 值为 180 附近看到了价格的一个非常戏剧性的上升。如果不与领域专家讨论,很难知道这个效果有多真实。我们可以注意到,对于大于 130 的尺寸,可用的数据量非常小,因此我们看到的效应可能仅仅是数据不足造成的。就目前来看,它表明价格在 200 以上的尺寸上停滞不前,这对业务可能是一个重要的见解。

让我们看一下以下截图中的 highway_mpg 的另一个部分依赖图:

图 7.6 – highway_mpg 的部分依赖图

图 7.6 – highway_mpg 的部分依赖图

图 7.6 显示了另一个高度非线性关系,一个关键的转折点发生在 highway_mpg 值约为 28 附近。这清楚地表明在 28 附近有一个大的价格下降,因此这是一个关键点。这可能是由于法规,低于 28 将您置于不同类型的车辆或发动机。我们还注意到,一旦超过这个阈值,任何进一步的变化对价格的影响都不是很大(然而,从其他角度来看,它仍然可能非常有影响)。如果您不知道为什么是这样,与您的主题专家SMEs)讨论这一点很重要。

我展示和讨论这些图表的主要目的是向您展示分析这些图表而不是花费所有时间编写这些图表的重要性。由于 DataRobot 会自动为您创建这些图表,您现在可以花时间进行更有价值的分析工作,以帮助改进您的业务。

让我们回顾一下 engine_size 的图表,但这次是针对 GAM,如下截图所示:

图 7.7 – GAM 的部分依赖图

图 7.7 – GAM 的部分依赖图

图 7.7 显示了 GAM 的部分依赖图。与 图 7.5 进行比较,我们看到 图 7.795180 的值周围显示了更清晰的阈值。与领域专家讨论这个问题可以帮助您确定哪个模型更好地代表现实,哪个模型有助于您更好地设定定价。GAMs 的一个好处是您可以轻松地平滑这些曲线并调整它们的形状以部署。记住——准确的预测并不总是等同于更好的干预或行动。

GAMs 更容易理解和解释。让我们再看另一个图表,它有助于理解这一点:

图 7.8 – 特征系数

图 7.8 – 特征系数

图 7.8 展示了 GAM 中不同特征的系数。你会注意到 DataRobot 创建了一些派生特征。你可以点击它们以查看更多详细信息。这提供了一个系数的高级视图,但还有一个更好的视图,可以更好地理解模型。为此,让我们点击 GAM 的“描述”选项卡内的“评级表”选项卡,如下面的截图所示:

![图 7.9 – GAM 的评级表图片

图 7.9 – GAM 的评级表

这个视图允许你下载 DataRobot 构建的评级表;你也可以修改这个表并将其上传回来以使用修改后的表。这种机制因此允许你根据对问题的理解手动微调你的模型。因此,这个功能非常强大,因为它为你提供了很多灵活性,但与此同时,你必须谨慎使用。让我们点击“下载表格”按钮并下载逗号分隔值CSV)文件。下载后,我们可以使用Excel打开文件,如下面的截图所示:

![图 7.10 – GAM 的评级表图片

图 7.10 – GAM 的评级表

现在,你可以看到评级表的样子。在这里,你可以看到 DataRobot 为各种特征创建了区间。对于每个区间,它都分配了系数和相对性,以说明特征变化如何影响目标变量。为了更好地理解这一点,我们可以在 Excel 中为单个特征创建图表,如下面的截图所示:

![图 7.11 – 特征相对性图片

图 7.11 – 特征相对性

图 7.11 中,你可以看到给定特征(如 body_style)如何影响价格。GAM 模型本质上是从所选特征中得到的所有贡献的总和。给定评级表,任何人都可以轻松计算价格,这也可以以非常简单的方式实现。鉴于单个特征效应是非线性的(但仍非常易于理解),这使得这些模型在易于理解的同时表现出色。GAMs 变得非常受欢迎也就不足为奇了。

我们还想查看一个图表,这个图表经常有助于理解特征的贡献。为此,我们将点击页面顶部的“洞察”菜单项,这将显示下面的图表:

![图 7.12 – 模型洞察图片

图 7.12 – 模型洞察

图 7.12 使用 DataRobot 选定的模型(在这种情况下,如果值落在特定区间内则为one,否则为zero)展示了变量效应。你可以参考所选模型的特征效应来查看这些图表之间是否存在任何不一致。

现在我们已经从哪些特征重要以及它们如何有助于目标值的视角理解了模型,我们可以关注模型的表现如何。

评估模型性能和指标

在本节中,我们将关注模型在尝试预测目标值方面的表现如何。让我们首先查看不同模型之间的整体性能比较,如下面的截图所示:

图 7.13 – 模型间的性能

图 7.13 – 模型间的性能

前一个截图显示了之前见过的整体排行榜。在这里,我们可以看到基于Gamma 偏差指标的不同模型的总体性能。我们还可以通过点击指标附近的下拉箭头来查看基于其他指标的性能,如下面的截图所示:

图 7.14 – 性能指标

图 7.14 – 性能指标

图 7.14 展示了我们可以选择的各项指标。你通常会看到在不同指标中,哪些模型会出现在顶部位置上呈现出相似的趋势。一般来说,DataRobot 选择的指标是一个非常不错的选择,如果不是最佳选择。现在,让我们通过点击模型并在评估选项卡中选择升力图选项卡来检查特定模型的性能细节,如下面的截图所示:

图 7.15 – 升力图

图 7.15 – 升力图

前一个截图中的升力图显示了预测值与实际值之间的对比。你可以选择分组结果的桶数。最大值为60,这通常是一个好的起点。这意味着预测值首先按升序排序,然后分组到60个桶中。你看到的结果是那个桶内的平均值。分桶的原因是,如果你查看整个数据集,会有如此多的数据,你将无法从中得出任何有意义的结论。你可以看到,模型在整个值域上表现非常好,有一些小区域,其中差异似乎比其他区域更高。我们通常希望看到多个模型的升力图,以查看是否有某个模型比另一个模型表现更好的区域。现在,让我们查看 GAM 的升力图,如下面的截图所示:

图 7.16 – GAM 的升力图

图 7.16 – GAM 的升力图

图 7.16 的结果看起来与图 7.15 的结果非常相似,但我们可以看到,对于更高的值,GAM 的表现不如 XGBoost 模型。现在我们知道 GAM 相对于 XGBoost 模型在哪些具体区域较弱。让我们进一步查看,通过点击评估选项卡中的残差选项卡,如下面的截图所示:

![图 7.17 – 模型残差图片

图 7.17 – 模型残差

残差似乎在平均值周围分布良好,但略偏向负值。让我们也检查一下 GAM 的残差分布。我们可以在下面的屏幕截图中看到输出:

![图 7.18 – GAM 的残差图片

图 7.18 – GAM 的残差

GAM 的残差也分布良好,但与 XGBoost 模型相比,略偏斜。总体而言,模型的表现看起来非常好。我们现在可以深入了解个别预测及其解释。

生成模型解释

DataRobot 的另一个关键功能是它自动为每个预测生成实例级解释。这对于理解为什么特定的预测结果是这样非常重要。这不仅对于理解模型很重要;很多时候,这也需要用于合规目的。我相信如果你被拒绝信用,你一定见过生成的解释。生成这些解释的能力并不简单,可能非常耗时。让我们首先看看 XGBoost 模型生成的解释,如下面的屏幕截图所示:

![图 7.19 – 模型解释图片

图 7.19 – 模型解释

由于我们选择了 010000。您可以选择一些特定的点,并查看构成该预测的组成部分。在 图 7.19 中,我们选择了预测点 27788.86。我们可以看到右侧的主要贡献元素,其中 engine_size 贡献最大,在这种情况下,engine_size 的值为 183。请注意,特征的相对贡献可能会根据具体情况而变化,这里特征的排序将不会与前面章节中看到的特征影响顺序完全匹配。让我们将此与 GAM 生成的解释进行比较,如下面的屏幕截图所示:

![图 7.20 – GAM 模型的模型解释图片

图 7.20 – GAM 模型的模型解释

在前面的屏幕截图中,选择的点是预测 31465.18。对于这个点,我们可以看到对价格有主要贡献的特征,我们还注意到由于 engine_size183 导致的减少或负贡献在 GAM 中要大得多。

整个数据集的解释可以下载并进行分析,以获得更多见解。您还可以通过点击上传新数据集按钮,轻松上传全新的数据集进行评分并生成这些解释。

正如你在本章中看到的,不同的模型有不同的性能,使用特征的方式略有不同,可理解性水平也不同。在最终选择你想要使用的模型之前,应该考虑几个其他维度。现在让我们看看模型学习曲线和一些模型权衡。

理解模型学习曲线和权衡

机器学习ML)问题中,我们总是试图找到更多数据来改进我们的模型,但正如你可以想象的那样,总会有一个点,收益递减。很难知道何时达到那个点,但你可以通过查看学习曲线来获得一些指示。幸运的是,DataRobot 通过自动构建这些学习曲线使这项任务变得简单。当 DataRobot 开始构建模型时,它首先尝试在数据的小样本上使用广泛范围的算法。然后使用更大的样本大小构建有希望的模型,依此类推。

在这个过程中,我们发现随着更多数据的添加,性能改进了多少。要查看学习曲线,你可以点击屏幕顶部的学习曲线菜单项,如下面的截图所示:

图 7.21 – 模型学习曲线

图 7.21 – 模型学习曲线

你可以在页面右侧看到不同的模型类型。在这里,你可以点击你想要检查和比较的模型。选择模型后,你点击+ 计算学习曲线按钮。这将弹出一个对话框,显示所选模型和相应的样本大小,如下面的截图所示:

图 7.22 – 用于比较的模型

图 7.22 – 用于比较的模型

如果图 7.22中的选择看起来正确,你可以点击计算按钮。现在你会看到所选模型的曲线,如下面的截图所示:

图 7.23 – 学习曲线比较

图 7.23 – 学习曲线比较

随着样本量的增加,你现在可以看到性能的改进。我们可以看到 GAM 学习非常快,但随着样本量的增加,XGBoost 模型开始占据主导地位。我们可以看到,这两个模型都将从额外的数据中受益。我们还可以看到,如果我们只有目前数据的一半,那么 GAM 将是明显的赢家。

我们现在可以看看模型的一个另一个权衡——即速度与准确率的权衡。如果你点击页面顶部的速度与准确率菜单项,你会看到一个图表,如下面的截图所示:

图 7.24 – 速度与准确率权衡

图 7.24 – 速度与准确率权衡

你会注意到 DataRobot 构建了一个 AVG Blender 模型,这似乎是顶级模型,但提升并不大。混合模型有时可以比单个模型产生更大的提升,因此探索这个选项是值得的。我们可以选择这个模型,并在“描述”菜单项中的“蓝图”选项卡上点击。

摘要

在本章中,我们介绍了如何利用 DataRobot 的功能构建和比较模型。正如你所见,DataRobot 使得快速构建多个模型变得非常简单,并帮助我们进行比较。正如你所体验的,我们尝试了许多事情,构建了数十个模型。这是 DataRobot 的关键功能,其对数据科学团队的重要性不容小觑。如果你要自己用 Python 构建这些模型,将会花费更多的时间和精力。相反,我们利用了这些时间和思考来实验不同的想法,并将更多的精力投入到理解问题上。我们还了解到了编码最佳实践的蓝图。这些蓝图对于新晋和经验丰富的数据科学家都是非常有用的学习工具。我们还学习了 DataRobot 如何为我们构建集成或混合模型。

可能会很有诱惑力直接跳过并开始部署这些模型之一,但重要的是在进行一些分析之前不要直接跳到那一步。在下一章中,我们将更深入地研究模型,以了解它们,并看看我们是否能从中获得更多见解。

第八章:模型评分和部署

在上一章中,我们学习了如何使用 DataRobot 生成的输出来理解模型以及为什么模型会提供特定的预测。现在,我们将学习如何使用模型对输入数据集进行评分并创建用于预期应用的预测。DataRobot 自动化了许多评分和生成行级解释所需的任务。

然而,这些任务并没有结束。在大多数情况下,这些预测需要转换为行动,以便由人员或应用程序消费。这种将预测映射到行动的过程需要理解业务,因此需要有人来解释结果(在大多数用例中)。在本章中,我们将讨论如何进行这项工作。我们将涵盖以下主要主题:

  • 评分和预测方法

  • 生成预测解释

  • 分析预测和后处理

  • 部署 DataRobot 模型

  • 监控已部署的模型

评分和预测方法

DataRobot 提供了多种方法来使用已创建的模型对数据集进行评分。其中最简单的方法是通过 DataRobot 用户界面UI)进行批量评分。为此,我们需要遵循以下步骤:

  1. 创建一个包含要评分的数据集的文件。鉴于我们正在使用公共数据集,我们将简单地使用相同的数据集进行评分。在实际项目中,您将能够访问一个新数据集,您希望为其创建预测。为了我们的目的,我们简单地复制了我们的 imports-85-data.xlsx 数据集文件,并将其命名为 imports-85-data-score.xlsx

  2. 现在,让我们选择 预测 选项卡,然后选择 测试预测 选项卡,用于 XGBoostXGB)模型,如下面的截图所示:Figure 8.1 – 批量评分

    Figure 8.1 – B17159.jpg

    图 8.1 – 批量评分

    在前面的截图中,您将看到有一个选项可以 拖放新数据集 来添加评分文件到模型中。

  3. 让我们选择我们的 imports-85-data-score.xlsx 评分文件,并将其拖放到 拖放新数据集 框中。一旦放下文件,它就会上传,您可以在界面上看到它,如下面的截图所示:Figure 8.2 – 计算预测

    Figure 8.2 – B17159.jpg

    图 8.2 – 计算预测

  4. 现在,您可以点击在 Excel 中可以查看的 .csv 文件,如下面的截图所示:

Figure 8.3 – 下载的预测

Figure 8.3 – B17159.jpg

图 8.3 – 下载的预测

下载的预测文件现在可以与原始数据集合并,以进行进一步分析。

评分数据集的第二种方法是通过 DataRobot 批量预测 应用程序编程接口API),将在下一节中讨论。

生成预测解释

在本节中,我们将重点介绍如何为评分数据集生成预测和解释。在上传评分数据集(如前节所述)后,您现在可以转到理解选项卡,然后选择预测解释选项卡,如下面的截图所示:

![Figure 8.4 – Prediction explanations

![img/Figure_8.4_B17159.jpg]

图 8.4 – 预测解释

在前面的截图中,您可以看到现在显示的是已上传的评分数据集。您现在可以点击数据集文件名旁边的图标来计算解释。一旦计算完成,您将看到下载图标。您可以使用下载图标来下载模型预测生成的解释。解释以.csv文件的形式提供,可以使用 Excel 打开,如下面的截图所示:

![Figure 8.5 – Prediction explanations file

![img/Figure_8.5_B17159.jpg]

图 8.5 – 预测解释文件

在前面的截图中,我们看到文件包含预测以及每个预测的解释。例如,如果我们查看make行,它解释了这辆汽车相对于基准值的 5.17%的价值差异。同样,您可以看到每个特征值的相对贡献。请注意,文件中的特征不是按最重要的特征排序的,并且对于给定行最重要的特征与其他行可能不同。特征重要性会随行变化。

现在我们有了预测及其解释,让我们看看如何分析这些内容,并确定如何使用它们采取行动或做出决策。

分析预测和后处理

在我们部署模型之前,分析预测并查看它们是否有意义,是否存在某些错误模式,以及如何将预测转化为可执行的行动,这些都是传统数据科学工具和方法帮助不大,而您需要依赖判断和其他学科的方法来帮助制定下一步的方面。为此,让我们首先将评分数据集文件与解释文件结合起来。这可以在结构化查询语言SQL)、Python 或 Excel 中完成。合并后的文件看起来大致如下:

![Figure 8.6 – Combined scoring data and predictions

![img/Figure_8.6_B17159.jpg]

图 8.6 – 合并评分数据和预测

我们还创建了一个新的ERROR列,它简单地从价格中减去预测。现在我们可以使用 Excel 创建数据透视表,并从多个角度查看结果。例如,让我们创建一个数据透视表,查看按符号化ERROR 平均值,如下面的截图所示:

![Figure 8.7 – Average of ERROR value by symboling

![img/Figure_8.7_B17159.jpg]

图 8.7 – 按符号化平均 ERROR 值

前面的截图显示,对于值-2,错误率要高得多。查看数据集,我们发现我们只有三个-2的数据点,因此模型表现不佳并不令人惊讶。这告诉我们,当符号化值为-2时,我们不能相信结果,我们应该尝试获取更多该值的数据。此类分析可以指出改进的领域以及需要集中精力解决的问题。我们还意识到,由于这是一个平均误差,我们应该使用误差的绝对百分比值的平均值来防止得出错误的结论,如下面的截图所示:

Figure 8.8 – Average of abs perc ERROR value by symboling

Figure 8.8 – Average of abs perc ERROR value by symboling

图 8.8 – 按符号化计算的绝对百分比误差平均值

现在,我们看到随着符号化值的增加,绝对百分比误差在减小。在这个阶段,除了探索输出数据并从不同角度观察以寻找可以找到的内容外,没有找到洞察力的明确方法。通常,对错误进行排序并查看具有异常大错误的行是一个好主意,然后看看你是否可以确定为什么会出现这种情况。

现在,让我们转向构建数据科学模型最重要的一个方面——理解应该采取哪些行动。现在我们有一个合理的模型来预测价格,一个问题随之而来:我们应该如何利用这些信息? 希望在项目开始时就确定了这次练习的目标。让我们假设目标是根据模型预测和提供所有参数(如engine_size等)来设定新车辆的价格。我们也可以想象,这样的模型在设计师试图确定不同参数(如borewidth)之间的权衡时,在设计阶段也是有用的。这进一步说明,预测模型可以多次应用于在构建模型时未考虑到的用例。

然而,这需要我们理解业务问题的更广泛背景。这是我们花费时间讨论和理解业务背景的主要原因,正如我们在第三章“理解和定义业务问题”中所讨论的那样。回顾那章以刷新那里讨论的概念可能是有用的,因为我们将使用那里介绍的一些技术,例如因果建模。

为了确定我们如何使用价格预测,让我们回顾一下我们关于价格与其他参数之间关系的了解。在第五章《使用 DataRobot 进行探索性数据分析》中,我们研究了关联分析信息。DataRobot 生成了使用互信息生成的关联强度。我们可以使用这些信息来绘制不同特征之间的网络图,如下面的截图所示。你可以通过为每个特征画一个圆圈,然后创建具有高关联强度的特征之间的线条来完成此操作:

图 8.9 – 特征之间关联的网络图

图 8.9 – 特征之间关联的网络图

第七章《模型理解和可解释性》中,我们看到了价格的特征重要性,以SHapley Additive exPlanationsSHAP)值来衡量,是针对我们选择的模型特定的。以下可能代表此问题的因果图:

图 8.10 – XGB 模型的因果图

图 8.10 – XGB 模型的因果图

图表的左侧表示 SHAP 值中最重要的特征。让我们假设实际收取的价格与预测略有不同。价格差异特征反映了某人可能做出的收取与预测不同的价格的决定。价格特征影响销量,这最终影响盈利能力。请注意,这仅反映了一种使用此模型帮助做出定价决策的可能方式。

另一方面,如果我们想象我们正在尝试帮助汽车设计团队制定出既是最优配置也是最盈利的汽车配置,那么我们可能会以不同的方式看待这个图。这是因为不同的汽车或发动机设计选择也会影响汽车的成本。此外,从图 8.9 我们知道特征不是独立的。改变缸径特征将改变发动机尺寸马力特征。因此,当我们考虑做出决策时,我们必须考虑因果影响。这是一个非常简化的观点,你可以想象对于真实问题,这些图将更加复杂。想象一下,商业领导者通过在脑海中考虑所有这些关系来做出这些决策。这也是为什么许多时候,模型不会被商业用户使用的原因之一。

在我们的示例问题中,图 8.10 中所示的因果图相当简单。你可以想象现实世界中的问题,其中这个图将更加复杂。在这种情况下,很难评估模型部署对生态系统的影响,这包括用户和其他利益相关者。复杂问题往往有许多未预见的后果,尤其是当受影响的是人的时候。

在这种情况下,如果潜在影响可能很大,建议在合成或模拟环境中测试新模型。完成测试和影响分析后,我们现在可以部署我们的模型。

部署 DataRobot 模型

DataRobot 使得部署您开发的模型变得非常简单。为了准备模型进行部署,以下是步骤:

  1. 让我们解锁项目,以便我们可以查看保留数据集的指标,如下截图所示:图 8.11 – 解锁 DataRobot 模型

    图 8.11 – 解锁 DataRobot 模型

    在前面的截图中,您可以在界面的右侧看到解锁所有模型的保留集项目选项。

  2. 在选择用于部署的模型之后,您才应该解锁项目。在我们的例子中,我们选择了使用FL1 top23特征列表的 XGB 模型。点击此选项将弹出一个对话框,如下截图所示:图 8.12 – 解锁项目保留集

    图 8.12 – 解锁项目保留集

  3. 解锁项目是一个不可逆的过程。让我们解锁项目,查看保留集的指标,如下截图所示:图 8.13 – 解锁项目视图

    图 8.13 – 解锁项目视图

    图 8.13 显示,保留集的值高于交叉验证的值,这是预期的。保留集的值是模型部署后应期望的性能的更好表示。

  4. 现在项目已解锁,让我们用 100% 的数据重新训练所选模型,以提高该模型的表现。为此,点击模型旁边的橙色+号,如图 图 8.13 所示。这将弹出一个更改样本大小的对话框,如下截图所示:图 8.14 – 定义新的样本大小

    图 8.14 – 定义新的样本大小

    在前面的截图中,您可以看到更改样本大小的选项。

  5. 将滑块拖到100%,表示您想用 100% 的数据训练模型,如下截图所示:图 8.15 – 设置新的样本大小

    图 8.15 – 设置新的样本大小

  6. 您现在可以点击使用新的样本大小运行按钮。DataRobot 将现在使用 100% 的数据重新训练 XGB 模型。对于 XGB 模型,您现在可以点击预测选项卡,然后点击部署选项卡,如下截图所示:图 8.16 – 部署模型

    图 8.16 – 部署模型

  7. 接下来,点击部署模型按钮。这将弹出一个新页面,如下截图所示:图 8.17 – 为模型创建部署

    图 8.17 – 为模型创建部署

  8. 您现在可以为您的部署模型命名。您还可以选择部署模型所在的服务预测环境,这是由您的管理员设置的。在数据漂移部分,您可以指定是否要跟踪数据漂移或启用挑战者模型。您还可以启用预测行的存储,这允许 DataRobot 分析随时间推移的性能。同样,您还可以启用跟踪属性,以进行基于段落的模型性能分析。

  9. 您现在可以点击https://app2.datarobot.com

  10. 您现在可以调用此 API 来生成预测。您还可以通过点击不同的标签页来查看有关您的部署的其他信息。如果您点击服务健康标签页,您将看到如下页面:

图 8.19 – 部署的服务健康

图 8.19 – 部署的服务健康

前面的截图显示了价格预测模型的状态。它显示了已完成的预测数量、预测的响应时间和错误率。截图没有显示任何值,因为我们刚刚部署了此模型。

我们现在已准备好开始监控这个部署模型。

监控部署模型

如您现在所猜到的,一旦模型部署,数据科学团队的工作并没有结束。我们现在必须监控这个模型,看看它的表现如何,是否按预期工作,以及我们是否需要干预并做出任何更改。我们将按以下步骤进行:

  1. 为了了解它是如何工作的,让我们点击预测标签页,如下截图所示:图 8.20 – 使用部署的模型进行预测

    图 8.20 – 使用部署的模型进行预测

  2. 我们现在可以通过拖放文件(在这里,我们将使用在模型训练期间使用的相同文件)到预测源框中,上传要评分的数据集。我们现在可以看到其他选项变得可用,如下截图所示:图 8.21 – 计算数据集的预测

    图 8.21 – 计算数据集的预测

  3. 在选择选项后,我们可以点击计算并下载预测按钮。在 DataRobot 完成计算后,我们将看到输出文件变得可用,如下截图所示:图 8.22 – 下载预测

    图 8.22 – 下载预测

    输出文件现在可以下载并分析。由于我们感兴趣的是监控模型,让我们点击服务健康标签页,如下截图所示:

    图 8.23 – 模型的服务健康

    图 8.23 – 模型的服务健康

    我们现在可以看到,该模型已服务了 15 个请求,平均响应时间为 325 毫秒(ms),错误率为 0%。整体服务健康看起来很好。

  4. 我们现在可以通过点击数据漂移选项卡来查看模型的数据漂移,如下面的截图所示:

图 8.24 – 模型的数据漂移

图 8.24 – 模型的数据漂移

在上一张截图的顶部是价格。如果您向下滚动页面,您将看到额外的图表,如下面的截图所示:

图 8.25 – 模型的数据漂移:附加信息

图 8.25 – 模型的数据漂移:附加信息

上一张截图显示了随时间变化的平均预测值。这将表明预测是否稳定,或者它们是否随时间变化。您将不得不依靠自己对业务问题的理解来确定漂移量是否可接受。DataRobot 也会通过显示红色、黄色或绿色状态来给您一个指示。红色状态表示存在需要解决的问题;同样,黄色表示您应该注意潜在的问题,绿色表示一切看起来都很正常。一般来说,问题可能是数据管道中的错误或商业环境的改变。商业环境的改变将表明模型需要重新训练。

如果模型需要重新训练或者您需要重建模型,您可以遵循我们在前几章中概述的步骤。这完成了使用 DataRobot 构建和部署模型的基本视图。

摘要

在本章中,我们学习了如何训练模型后使用模型。我们讨论了用于评分数据集的方法以及用于分析结果输出的方法。我们还涵盖了将预测转化为行动或决策的方法和考虑因素。这是一个关键步骤,您必须与业务利益相关者合作,确保引入此模型不会引起未预见到的问题。这也是进行变更管理任务的时候,比如向受变更影响的人传达变更,并确保用户接受新流程的培训,知道如何使用新功能。

我们接着讨论了如何使用 DataRobot 功能快速部署模型并监控模型性能。很容易低估这一功能的重要性。模型部署和监控并不容易,许多组织花费大量时间和精力来部署模型。希望我们已经展示了如何使用 DataRobot 轻松完成这一任务。

我们现在已经完成了构建和部署模型所需的基本步骤,现在可以深入了解 DataRobot 的一些高级概念和功能。你现在可以根据你的兴趣或将要从事的项目类型深入研究高级主题。例如,如果你正在处理时间序列问题,那么你可以回顾第九章预测和时间序列建模

第三部分:高级主题

本节涵盖了您在掌握前几节内容后可以利用的许多高级主题和能力。本节提供了经验丰富的数据科学家将使用的高级功能示例,以使他们更加高效。本节的一些章节需要熟悉 Python 编程。

本节包含以下主题:

  • 第九章, 预测和时间序列建模

  • 第十章, 推荐系统

  • 第十一章, 处理地理空间数据、NLP 和图像处理

  • 第十二章, DataRobot Python API

  • 第十三章, 模型治理和 MLOps

  • 第十四章, 结论

第九章:预测和时间序列建模

在本章中,我们将了解时间序列是什么,并了解如何使用 DataRobot 来建模它们。时间序列建模在商业中变得越来越有用。然而,与预测相关的挑战使得许多有技能的数据科学家在成功执行时间序列建模方面面临相当大的挑战,这种建模形式也可能非常耗时。DataRobot 提供了一个自动化流程,使数据科学家能够以有效和高效的方式执行时间序列项目。在本章中,我们将介绍预测的概念,强调其商业重要性和内在挑战,并说明如何使用 DataRobot 来构建其模型。

到本章结束时,你将学会如何利用 DataRobot 构建时间序列预测模型。此外,我们还将探讨如何使用这些模型进行预测。在高级主题部分,我们将进一步构建多序列时间序列模型。以下是本章将涵盖的主要主题:

  • 时间序列预测和建模的概念性介绍

  • 定义和设置时间序列项目

  • 构建时间序列预测模型并理解其模型结果

  • 使用时间序列模型进行预测

  • 时间序列建模的高级主题

技术要求

本章的一些部分需要访问 DataRobot 软件以及一些数据处理工具。大多数示例涉及小型数据集,因此可以通过 Excel 处理。我们将在本章中使用的数据集将在下面进行描述。

电器能源预测数据集

此数据集可在加州大学欧文分校(UCI)机器学习仓库中访问(archive.ics.uci.edu/ml/datasets/Appliances+energy+prediction#)。

数据集引用

路易斯·M·坎达内多维罗妮克·费尔德海姆多米尼克·德拉马伊克斯,《低能耗房屋中电器能源使用的数据驱动预测模型》,《能源与建筑》,第 140 卷,2017 年 4 月 1 日,第 81-97 页,ISSN 0378-7788

此数据集捕捉了房屋中各个房间和室外环境中的温度和湿度,以及各种设备随时间变化的能源消耗。数据每 10 分钟采集一次。这是一个典型的时间序列数据集示例。数据以 .csv 格式提供,网站还提供了各种特征的描述。此数据集中的所有特征都是数值特征。数据集还包括两个随机变量,以使问题更有趣。

时间序列预测建模的概念性介绍

商业环境的动态性质使得时间成为商业成功的关键资源。因此,企业在决策时需要考虑时间因素。商业环境中的变化发生得很快,这使得组织需要采取快速但经过深思熟虑的行动。分析技术为组织提供了工具,这些工具能够预测未来,从而使决策者有足够的时间确保他们的决策与组织目标一致。组织使用特定时间的数据来预测未来某一时期的销售量。其他作家已经区分了时间序列模型和预测模型。在本章中,我们使用了这个术语,并将时间序列预测视为利用基于时间的数据通过高级分析获得指导商业决策的见解。

时间序列预测支持商业计划的多个方面。通过预测,可以优化人力和其他形式的资源规划,以确保实现预期的结果。通过预测,现金流、利润和预算预测可以更加严格地建立,从而减轻人为偏差。预测销售可能会受到可控和非可控的多种因素的影响。某些随时间变化的消费者因素倾向于影响销售量。这些因素包括人口变化、客户口味和兴趣的变化。此外,需求对更广泛的经济变量(如通货膨胀)敏感,这些变量也随时间变化。因此,使用一些可以作为这些消费者和经济变量代理的特征变得至关重要,除了滞后或历史销售数据。由于一些这些变量难以获取,分析师往往局限于在建模未来结果时使用一些历史值和数量。

尽管详细讨论时间序列超出了本书的范围,然而,理解建模时间序列的特性使得它们更具挑战性是相关的。除了本书前几章讨论的其他预测建模形式的困难之外,时间序列建模还带来了额外的挑战。线性回归建模的一个假设是观察值的独立性,即观察或数据行是独立的。然而,这个假设在时间序列建模中不可避免地被打破。在时间序列中,自相关自然发生,因为观察在不同时间段内是相似的。也有可能高度修正的观察不会连续发生,在这种情况下,会出现季节性。当固定时间段内的观察具有更高的相关性时,序列被认为是季节性的。实际上,这些是观察的周期性波动。在假日期间航班票务销售量的相似量就体现了这一点。季节性确实可能发生,但并不遵循固定的周期性时间框架。通常,验证周期需要比序列的其他属性(如周期性)大得多的数据集,因为周期性主要与外部因素有关,例如商业环境中的宏观经济或政治变化。

自相关还导致了线性,这是一个描述连续观察值相似性的总体趋势的概念,尽管它们以遵循线性趋势的方式变化。由于这种线性趋势,尽管有时会有一些综合波动,特定时间框架的平均值将遵循一个模式,但不太可能相同,因此使用了移动平均MA)和自回归方法来表示时间序列。然而,序列仍然可以通过它们随时间变化的统计属性的程度来表征。当它们具有恒定的均值和方差,且与时间无关时,它们被认为是平稳的。最有趣的是,尽管在统计上存在问题,但某些时间序列数据具有这些特性的组合。一个很好的例子是航班量。尽管随着时间的推移逐渐增加,具有季节性,但在经济衰退期间通常会下降。在这个例子中,我们可以看到季节性、周期性和线性的元素。

有时候在细节中容易丢失的概念是可操作性。可操作性是指利益相关者能够因为分析或模型的结果而采取行动的能力,数据科学家通常专注于预测的准确性。虽然准确性很重要,但更重要的是为决策者提供可操作的指导。一个能够让你今天采取行动的预测比一个更准确但不可操作的预测更有价值。在定义预测问题时必须谨慎,以确保正在开发的模型具有可操作性。

本节中省略的对话突出了使时间序列建模对典型数据科学家更具挑战性的特性。DataRobot 已经开发了独特的流程,使数据科学家,包括那些统计知识有限的人,能够创建复杂且稳健的时间序列模型。在下一节中,我们将探讨如何在 DataRobot 中定义和设置时间序列问题。

定义和设置时间序列项目

第四章,“为 DataRobot 准备数据”,到第八章,“模型评分和部署”,我们探讨了在 DataRobot 中创建、理解、评分和部署基本模型的过程。我们看到了 DataRobot 自动为我们构建了几个模型,然后我们可以使用这些构建的模型对数据集进行评分。进一步地,在我们选择了一个与我们的需求最匹配的模型之后,DataRobot 为我们提供了一个部署所选模型的过程。由于时间序列建模与其他形式的预测建模之间的差异,我们将在本节中探讨如何通过有效地定义和设置 DataRobot 中的时间序列项目来缓解问题。

我们将用于探索使用 DataRobot 进行时间序列建模的数据集是我们在第四章,“为 DataRobot 准备数据”中探讨的家用电器能耗预测数据集。该项目的目标是预测能耗。这个能耗时间序列数据集包含了来自不同数据源 4 个半月的 10 分钟读数。首先,涉及到的数据包括房屋内的温度和湿度。这些数据通过无线传感器网络进行监测,并且每 10 分钟存储一次。房屋中的九个房间都有温度和湿度的读数被存储在相应的时间段内。其次,还有外部数据提供了附近机场(公共来源)关于房屋外部的详细天气信息,同样以 10 分钟为间隔。这包括风速、能见度、露点、压力和湿度。这些信息通过日期和时间与数据合并。此外,与日期和时间对齐的家用电器和照明使用情况也被附加到数据集中。

在这个数据集中,很容易看出这个时间序列预测的目标是预测能源使用。直接影响变量是房屋内的温度和大气压力;然而,房屋外部的天气数据也很重要。我们创建了计算房屋九个房间平均条件的特征。此外,我们还设计了捕捉平均房间温度与外部温度以及平均房间压力与外部压力之间差异的特征。由于我们有两个时间序列(设备使用和照明使用),我们将以两种方式来处理这个问题。首先,作为一个.csv文件,如下截图所示:

![图 9.1 – 选择时间序列的目标变量图片

图 9.1 – 选择时间序列的目标变量

项目命名为Energy_Prediction,选择的目标变量是total_energy(照明和设备使用的总和)。我们按以下步骤进行:

  1. 在选择目标变量后,我们选择时间变量和时间建模的性质。点击date特征,它指定了所有读数的日期和时间,如下截图所示:![图 9.2 – 选择基于时间的函数和时间变量 图片

    图 9.2 – 选择基于时间的函数和时间变量

  2. 点击设置基于时间的建模按钮并选择时间特征后,平台会请求构建的时间感知模型类型。有两种选项——自动时间序列预测与回测自动机器学习与回测,如下所述:

    • 自动时间序列预测与回测—此选项在预测未来数据时考虑了先前数据。对于时间序列,需要预测多个未来的点。此类基于时间的项目的例子可以是使用去年销售数据来估计下个月百货商店的每日销售额。

      自动机器学习与回测—自动机器学习选项,有时被称为时间外验证,基本上是按时间顺序创建基于时间的特征,然后使用一个典型的预测模型来预测该行的目标变量。在这里,我们不使用典型的交叉验证方案;相反,这种方法使用旧数据来训练,并保留新数据用于回测。我们项目的问题背景属于预测类别,因此选择了此选项,如下截图所示:

![图 9.3 – 基于时间的建模选项图片

图 9.3 – 基于时间的建模选项

一旦我们选择了自动时间序列预测与回测选项,我们将看到一个时间感知建模选项卡(见图 9.3)。在这里,需要仔细选择几个选项。我们表达模型用于预测的数据回溯多远,以及模型预测多远。让我们首先考虑特征推导窗口选项。这个滚动窗口突出显示了一个滞后,相对于预测点的时间,时间序列模型的特征和统计量是据此推导出来的。滚动窗口相对于预测点表达,并随着时间的推移自动向前移动。在理想情况下,这个窗口应该覆盖你的数据中的季节性周期。本质上,这个窗口通常回答的问题是:我们模型用于预测的数据回溯多远?此外,窗口的结束和你的预测时间之间应该有足够的时间来应对任何数据摄入延迟,确保数据足够新。这个时期被称为盲历史。在我们的案例中,我们假设一个小时足够的时间来允许任何盲历史,因此将预测点之前的时间间隔设置为 60 分钟。考虑到我们的数据限制在 4 个半月,我们问题的背景下的季节性将是日夜使用。因此,我们将我们的滚动窗口设置为 2 天(2,880 分钟),考虑到最初的 60 分钟预测点间隔,总计为 2,940 分钟。

第二个考虑因素是预测窗口选项。这定义了相对于预测点,我们预测的未来有多远。这有两个要素;首先,预测开始的时间。预测应该提供足够的时间采取行动,但又不能过于遥远,以确保这些预测足够准确。其次,我们选择预测的结束点。这取决于起点以及我们问题的性质。因此,这一方面回答了问题:预测应该向前推进多远?对于当前的问题,我们选择了操作化差距,即预测点和预测窗口开始之间的 1 天(1,440 分钟)差距。此外,滚动窗口设置为 1 天,考虑到我们的操作化差距,变为 2,880 分钟。

在本节中我们已经建立了时间序列预测项目,现在我们将探讨构建模型的过程,从理解特征列表及其分布到观察它们对评估模型的影响。

构建时间序列预测模型并理解其模型结果

与我们在第四章中查看的项目类似,即准备数据以供 DataRobot 使用第八章的[模型评分和部署],一旦我们完成了初始配置,我们就向上滚动并点击开始按钮。通过这样做,DataRobot 会自动为该项目构建时间序列模型。在我们评估模型之前,了解平台提取的特征的性质将是有用的。DataRobot 从数据中提取的特征与其它预测模型大不相同,如下面的截图所示:

![图 9.4 – 特征列表

![图片 B17159_09_04.jpg]

图 9.4 – 特征列表

特征列表选项卡下显示的列表是作为探索性数据分析EDA)的一部分构建的,并列出了 DataRobot 在创建模型时使用的不同特征列表。许多特征列表涉及派生特征,这些特征是根据时间序列的属性自动创建的。关于派生特征的进一步讨论将在本节后面进行。很容易看出,一些列表涉及从原始数据中提取的特征(例如,时间序列提取特征)。其他列表仅涉及从日期中创建的特征,而有些则被认为是有信息的。大多数列表似乎是不同类型(例如,时间序列信息特征)的组合。重要的是,特征列表提供了每个特征列表名称的描述以及特征的数量。可能至关重要的特征列表作为排行榜功能的一部分展示,如下面的截图所示,这指导我们最终模型的选择:

![图 9.5 – 模型排行榜

![图片 B17159_09_05.jpg]

图 9.5 – 模型排行榜

排行榜功能提供了对为 DataRobot 项目构建的模型的洞察。它提供了有关模型名称和标识符ID)、它们的准确度指标以及它们的类型、版本和模型开发中的样本大小的信息。然而,在时间序列建模中,有一些差异,如下所述。首先,样本大小存在于数据范围内。这是由于时间序列数据集基于时间的特性。与其他建模形式不同,数据的顺序确实会影响结果;因此,数据是在时间范围内选择的。在这种情况下,如图 9.5所示,我们的模型是使用 3 个月、21 小时和 51 分钟的数据构建的。其次,我们没有验证交叉验证列,而是有回测 1所有回测列。回测逻辑上遵循关于样本大小的讨论(参见第六章使用 DataRobot 进行模型构建)。回测提供了对数据子集上模型性能的评估。然而,与典型的验证不同,数据是按时间顺序排列的,回测的大小和数量可以根据需要更改。我们为这个示例项目使用了默认的回测设置,以便数据以这种方式分区,使得只有一个回测分区可用于建模。最后,在时间序列建模项目中,似乎有更多的特征列表。与其他预测项目类型一样,模型可以通过排行榜功能上的任何列进行排序或选择。

有许多指标可以用来评估时间序列预测模型。这当然取决于模型本身。对于回归类型的输出,有些人提倡使用均方根误差RMSE)。问题的本质在确定评估指标时仍然至关重要。话虽如此,基线模型在排行榜上的作用对于评估其他模型至关重要。基线模型在做出预测时使用最新的值。因此,将模型与基线预测蓝图进行比较在模型评估中起着关键作用,因为它在一定程度上回答了以下问题:我们的模型在多大程度上优于从最新数据中做出的简单预测? DataRobot 提供了平均绝对缩放误差MASE),它将感兴趣模型的平均绝对误差MAE)与基线模型的进行比较。例如,以下截图所示的Eureqa 广义加性模型(250 代)模型,在回测 1中的比较比率为约 0.76。这表明 Eureqa 模型比基线模型好约 24%。由于保留集指标可能会突出数据中的重大变化,因此它应该包含在模型评估中,但不应单独使用。本章的时间序列建模高级主题部分涵盖了评估模型时的其他指示。点击模型名称可以提供关于数据和其过程更详细的见解。我们现在转向我们认为对时间序列预测独特的内容,以下使用Eureqa 广义加性模型(250 代)作为例子:

图 9.6 – 原始特征的冲击

图片

图 9.6 – 原始特征的冲击

理解标签页向我们展示了特征影响特征效应预测解释词云功能,这些我们在第七章模型理解和可解释性中已经遇到。特征影响显示了特征对模型整体准确性的相对贡献程度。点击特征影响标签页将打开原始特征页面(见图 9.6)。原始特征是它们在数据集中存在的特征。

total_energy (1440 分钟平均基线)中的其他标签页看起来是基于时间序列的平稳性构建的特征,如下面的截图所示。这是因为它突出了平均 1,440 分钟基线能量对模型准确性的重要性:

图 9.7 – 导出特征的冲击

图片

图 9.7 – 导出特征的冲击

图 9.7所示,从时间序列的平稳性中衍生出相当数量的特征似乎是合理的,这本身可能表明这个时间序列相当平稳。然而,在得出这个结论时需要谨慎,因为我们的数据集只包含了 4 个半月的值得数据;例如,我们的数据集只覆盖了 2016 年 1 月到 2016 年 5 月,因此没有涵盖晚夏、秋季和早冬月份。因此,如果我们使用覆盖更长时间范围的数据集,可能会出现季节性。

DataRobot 创建了利用时间序列特性的特征,以提高其模型的准确性。尽管在这个项目中不明显,但如果有季节性或周期性,DataRobot 会确定周期性变化发生的时间,并相应地创建特征。基于这些信息,它接下来检测季节性模式——例如,在某个时间段内发生的季节性可以通过从时间段的开始计数或从时间段的结束计数来定义。因此,该平台可以检测并构建特征,例如,使用 3 月的最后一个周六的能量使用情况来预测 4 月的最后一个周六的能量使用情况。以类似的方式,DataRobot 使用基于差分的特征来提高模型性能。它可以使用 3 月第一周的平均使用情况作为特征来预测 4 月第一周的使用情况。

切换到描述标签页,打开蓝图标签页后,我们就会看到时间序列项目建模过程中涉及到的各个阶段。如以下截图所示,我们可以迅速认识到这与其他章节中遇到的其他预测项目并没有太大区别:

图 9.8 – 模型蓝图

图 9.8 – 模型蓝图

我们现在已经花费时间构建和理解时间序列预测模型。下一步合乎逻辑的步骤是使用我们选定的模型进行预测。

使用时间序列模型进行预测

DataRobot 为我们提供了使预测变得轻松的工具。对于小于 1 千兆字节GB)的小数据集,可以使用排行榜功能中的制作预测标签页进行预测。这涉及到设置和上传预测数据集,然后在拖放新数据集用户界面(UI)功能中进行评分。对于显著更大的数据集,需要部署模型,并使用应用程序编程接口API)进行预测。在本章中,我们将介绍预测的第一种方法。在第十二章DataRobot Python API中,我们将详细讨论一般模型部署和与 API 一起工作。

排行榜对时间序列模型评分的拖放方法与传统的模型方法略有不同,如第八章“模型评分和部署”中所述。当打开预测选项卡时,DataRobot 会简要概述进行预测所需数据的最新性和数量。这个概述与模型开发配置期间建立的预测窗口以及派生特征基本一致。正如以下截图所示的预测过程,预测数据集需要至少 4,320 分钟的历史数据,超出预测点前 60 分钟。此外,当模型包含涉及早期时间段的派生特征时,早期时间段也包含在数据集要求中。由于所讨论的模型具有 24 小时差异的派生特征,这增加了对 5,820 分钟的要求。这 5,820 分钟的要求包括一个初始的 60 分钟预测点间隔窗口,4,320 分钟的基础预测需求数据,以及为派生差分特征增加的 1,440 分钟。这使得模型在 1,440 分钟的操作间隔之后,能够在预测点前 2,880 分钟进行预测。其中一些特征如下所示:

![图 9.9 – 预测窗口图 9.9 – 预测窗口

图 9.9 – 预测窗口

要进行预测,如果数据格式与训练数据一致,请按以下步骤操作:

  1. 点击导入数据,允许从本地源、统一资源定位符URL)、现有的数据源之一或 AI 目录中摄取数据。如果在默认预测点之后没有找到行,DataRobot 将生成一个模板。为此,预测窗口内必须没有空行,并且模板文件必须满足上传大小限制条件。文件上传后,DataRobot 设置预测点并包括满足预测窗口期望所需的行。

  2. 在上传数据后,点击以下截图所示的计算预测按钮,因为上传的预测文件是最新的,没有间隔,并且行数符合预期:![图 9.10 – 计算时间序列预测 图 9.10 – 计算时间序列预测

    图 9.10 – 计算时间序列预测

    在图 9.10 中的预测设置按钮提供了预测选项,其中预测点可能不是最新的,或者更改了预测的范围。

  3. 要进行此类更改,请单击预测设置按钮,它默认打开预测点预测选项卡,如图下截图所示。此窗口提供了一个预测点滑动选项卡选择器,可以通过滑动或输入实际时间值进行配置。然而,无效的日期已被禁用:

图 9.11 – 预测点预测设置

图 9.11 – 预测点预测设置

如前所述,可以选择作为预测点的次数有限。预测点必须小于或等于最新的一个。在本项目的情况下,这是2016-05-27 19:00:00:00,这是最新的数据行时间,有1440分钟的操作间隔。可以通过类似的操作来更改预测日期范围。理想情况下,预测范围预测功能将用于验证模型,而不是进行未来预测。

在本节中,我们强调了确保我们的时间序列模型预测数据集与训练模型数据集相似的重要性。我们继续进行预测并从模型中解释其他结果。接下来,我们将探讨涉及 DataRobot 的时间序列建模的更高级主题。

时间序列建模的高级主题

在本章中,我们学习了如何在 DataRobot 中配置、构建和使用基本时间序列预测模型进行预测。在前一节中,我们的注意力集中在构建只有一个时间序列的模型。然而,你可能会有这样的情况,需要做出多时间序列预测。在我们的能源利用问题背景下,我们可能想要预测灯光和电器的使用情况。在其他地方,能源公司可能想要在同一模型中预测不同城市或家庭的能源使用情况。现在,我们将深入研究这类问题的解决方案。此外,我们将探讨未来其他高级方法可能用于评估我们的时间序列模型。最后,我们将承认计划事件对时间序列的影响,并强调 DataRobot 为处理这种可能性所采取的措施。

本项目使用的数据集突出了灯光和其他电器的能耗。对于早期项目,我们将所有使用量加总作为我们的目标变量,但在本项目(命名为Energy_Prediction_2)中,将建立模型来预测每种设备类型的能耗。现在该数据集有两个序列,这意味着时间戳可能会重复,但每个序列内的时间戳必须是唯一的。区分列Device_type是分配给使用量的设备类型的 ID。在将项目验证为时间感知并选择其类型为Device_type后:

图 9.12 – 多序列时间序列预测设置

图 9.12 – 多序列时间序列预测设置

对于这个项目,我们感兴趣的是进一步评估我们的模型。因此,在自定义我们的预测窗口,在5 + Holdout内进行。以下截图详细说明了此配置的设置,我们可以看到训练、验证和保留数据是如何从初始数据中划分出来的。重要的是要强调,为了设置回测,我们必须考虑数据中的任何形式的季节性、周期性和/或循环性,并确保每个折叠至少有一个这些实例。这是因为每个回测都应该是一个完整的数据集,所以季节性、周期性和循环性需要在每个回测中考虑。验证和间隔长度也可以更改。此项目的默认长度设置为超过 13 小时 9 分钟。您可以在以下位置查看配置:

![图 9.13 – 回测配置

![图片 B17159_09_13.jpg]

图 9.13 – 回测配置

在配置回测后,我们点击开始来训练模型。当模型创建后,评估过程类似于单一时间序列模型。正如以下截图所示,我们可以看到所有回测指标,它衡量模型在所有回测中的平均性能。因此,它提供了一种快速评估模型性能以及数据模式随时间一致性的有趣方法:

![图 9.14 – 随时间变化的准确性

![图片 B17159_09_14.jpg]

图 9.14 – 随时间变化的准确性

模型评估标签页中的随时间变化的准确性功能允许用户对其模型随时间的变化进行直观且深入的评估(见图 9.14)。在这里,预测值和实际值以视觉方式呈现。在此窗口中,您可以选择要绘制的序列设置,并更改回测预测距离设置。在业务背景下,此视图有助于了解是否存在表现不佳的时期,这可能意味着数据中未表示的业务方面。以下截图所示的预测准确性窗口是另一个重要的表示,它表明模型性能如何随着预测距离的变化而变化:

![图 9.15 – 预测准确性窗口

![图片 B17159_09_15.jpg]

图 9.15 – 预测准确性窗口

预测准确性窗口突出了模型性能的变化,因为预测被延伸到未来。这个视图使我们能够评估模型性能在时间上的相似性,这表明模型何时可以在业务中使用。此外,它还突出了当使用 MASE 性能指标时,模型性能显著超过基线模型的情况。如图 9.15 所示,模型在回测 1的性能似乎在+1,960 分钟标记处开始显著优于基线模型。稳定性视图向用户展示了分数随时间范围的变化。

随着对性能更优的模型的追求,我们需要对建模范式进行一些改变。对于时间序列建模可用的默认模型可能根本无法提供所需的表现。在这种情况下,正如在第六章“使用 DataRobot 进行模型构建”中解释的那样,模型库提供了选择传统时间序列模型(如自回归积分移动平均ARIMA))和更近期的模型(如 Keras 长短期记忆LSTM)和XGBoostXGB))的选项。根据研究时间序列的性质,这些建模方法有时会呈现更好的性能。

摘要

在本章中,我们广泛探讨了如何使用 DataRobot 构建时间序列模型。我们简要讨论了时间序列建模为商业带来的独特机会,以及它对分析师和数据科学家提出的挑战。我们使用 DataRobot 创建了单时间序列和多时间序列模型。我们还描述了如何使用 DataRobot 构建的模型进行预测。随后,我们讨论了 DataRobot 时间序列能力的先进方面。

预测对商业至关重要,因为它能够根据时间依赖变量预测未来可能发生的事情。另一个具有商业价值的领域是建议不同客户对广泛产品感兴趣的能力。这就是推荐系统发挥作用的地方。

在下一章第十章“推荐系统”中,我们将探讨如何使用 DataRobot 构建推荐引擎。

第十章:推荐系统

在本章中,我们将了解推荐系统是什么,讨论它们的各种类型,并通过DataRobot实现的内容推荐系统进行实践。在本章中,推荐系统推荐系统推荐引擎推荐引擎被交替使用。

在最简单的形式中,推荐系统向用户或买家推荐可能相关的项目。在今天的商业环境中,企业往往有大量的商品、产品或服务出售,这使得用户或买家与其期望的产品或服务连接变得更加困难。本章解释了推荐引擎在当前商业空间中的普遍性。

虽然这本书不是涵盖推荐系统所有方面的地方,但我们将讨论如何利用 DataRobot 构建和(从)推荐引擎中进行预测,并概述这些系统的概念,以及对其类型的简要讨论。因此,在本章结束时,你将学习如何利用 DataRobot 构建内容推荐引擎。本章的主要内容包括以下内容:

  • 推荐系统概念介绍

  • 构建推荐系统的方法

  • 在 DataRobot 中定义和设置推荐系统

  • 在 DataRobot 中构建推荐系统

  • 使用 DataRobot 进行推荐系统预测

技术要求

本章的大部分内容需要访问 DataRobot 软件。代码示例基于一个相对较小的数据集,Book-Crossing,由三个表格组成,其操作是在Jupyter Notebook中完成的。

查看以下视频,了解代码的实际应用效果bit.ly/3HxcNUL

Book-Crossing 数据集

用于说明 DataRobot 在构建推荐系统中的应用的示例,基于 Cai-Nicolas Ziegler 及其同事的 Book-Crossing 数据集。此数据集可在www2.informatik.uni-freiburg.de/~cziegler/BX/访问。

注意

在使用此数据集之前,本书的作者已通知数据集的所有者关于其在本书中的使用情况。

Cai-Nicolas Ziegler, Sean M. McNee, Joseph A. Konstan, Georg Lausen (2005). 通过主题多样化改进推荐列表。第 14 届国际万维网会议(WWW '05)论文集。2005 年 5 月 10 日至 14 日,日本千叶。

数据是在 2004 年 8 月至 9 月期间,对 Book-Crossing 社区进行了为期四周的收集过程中收集的。随后的三个表格,以 CSV 格式提供,构成了这个数据集。

  • User-ID以整数形式呈现。还提供了用户的LocationAge值。

  • ISBMBook-TitleBook-AuthorYear-Of-PublicationPublisher

  • Book-Rating 评分值要么是隐式的 0,要么在 110 之间是显式的(数值越高,评分越好)。然而,在本项目的背景下,我们将仅关注用于模型开发的显式评分。表格还包括 User-IDISBN 值。

推荐系统的概念介绍

企业长期以来一直有向客户推荐其产品或服务的传统。例如,走进一家书店,你可能会看到其他客户购买的流行书籍列表。这是一种简单的推荐系统,因为它为买家提供了一个潜在购买产品的快照。

为了在数字经济中取得胜利,企业正变得越来越以客户为中心。以客户为中心意味着公司旨在将客户的需求放在首位。尽管如此,由于客户的需求像客户本身一样多样化,企业需要采取独特的方法来推出他们的产品。这在一定程度上解释了基于流行度的推荐系统的失败,因为它们未能考虑买家的独特档案。随着数字化程度的提高、商业产品种类的增加以及客户需求多样性的增长,这种方法不太可能取得成功。

有趣的是,数据科学工具可以通过多种方式考虑买家的需求,从而为推荐系统提供多种提高智能的方法。

在介绍不同类型的推荐系统时,我们将继续使用书店的例子。

首先,基于项目的协同过滤推荐系统方法根据买家的产品购买历史以及这些 产品 与其他产品的关联向书买家提出产品建议。因此,如果某人购买了 Book A,并且 Book ABook B 相关联,那么就会建议 Book B。第二种方法,基于用户的协同过滤,在提出建议时考虑了 买家 之间的相似性。因此,如果 Buyer ABuyer B 相似,并且 Buyer A 购买了 Book C,那么就会向 Buyer B 推荐购买 Book C。第三种方法,基于内容的推荐,在提出建议时考虑了书籍和用户特征。最后,混合系统方法在提出建议时结合了基于协同和基于内容的方法。很容易看出,这两种方法都各有优缺点。我们现在将更深入地探讨这些方法以及如何使用 DataRobot 构建基于内容的推荐系统。

构建推荐系统的方法

推荐系统的目标是向买家推荐相关的产品。由于它们能够考虑买家的独特性,智能推荐引擎为商家创造了数十亿美元的收入,并帮助买家找到相关的产品。这对消费者和商家来说都是双赢的局面。已经介绍了各种数据驱动的方法来创建智能推荐系统。推荐系统有三种主要方法:协同过滤系统、基于内容的系统和混合系统。以下小节将讨论这些方法中的每一个。

协同过滤推荐系统

协同过滤推荐系统背后的核心思想是利用他人的过去行为来推断个人可能感兴趣的内容。协同过滤方法借鉴了产品与用户之间历史交互的数据存储。表 10.1展示了用户对书籍评分的交互矩阵。每个用户用 1 到 5 的数字对一本书进行评分,其中 5 代表最高程度的享受。在没有评分的地方,假定个人没有阅读这本书。协同过滤有两种主要类型:基于项目的协同过滤和基于用户的协同过滤。

![表 10.1 – 用户/产品交互矩阵图片

表 10.1 – 用户/产品交互矩阵

基于项目的协同过滤系统(或基于项目的协同算法)在项目之间寻找相似性,并基于这些相似性进行推荐。这种方法基于根据项目与个人之前喜欢或购买的项目相似程度来向个人推荐项目。根据表 10.1,基于项目的过滤方法可以很容易地看出书 C书 E在之前的读者中被以相似的方式评分。基于这种项目关系,如果一个人高度评价书 C,就会推荐书 E,反之亦然。因此,由于用户 5高度评价书 E且未见过书 C,就提出了推荐书 C,因为他们很可能喜欢书 C

基于用户协同过滤的系统,会在用户之间找到相似性,并基于这些相似性进行推荐。用户到用户协同算法旨在找到行为相似或处于相同行为邻域的用户,这是通过他们的历史行为建立的。然后算法考虑他们的偏好并做出推荐。这些推荐系统的核心思想是假设如果个体相似的,他们喜欢的东西也将相似。从表 10.1中可以推断出用户 2用户 4有相似的书籍兴趣。因为用户 4书籍 D给出了高度评价,所以认为用户 2喜欢书籍 D的可能性很高,因此推荐。正如我们所看到的,这两种协同过滤方法都是基于相似性这一理念。

相似度度量提供了做出推荐的基础。有几个相似度度量,其中皮尔逊相关系数余弦相似度是最受欢迎的。其他人通过利用邻域来接近这种相似度的测量。K 最近邻算法被用来找到被推荐或推荐给的对象最近的物品或用户。

由于交互数据集容易获取,构建协同过滤系统比基于内容的系统要容易得多,这将在下一节中讨论。然而,推荐系统的协同方法有几个缺点。在表 10.1的背景下,引入了一个没有历史记录的新用户用户 6。很容易看出,协同过滤系统将难以向这位用户做出推荐。对于没有历史数据的项目来说,问题类似。这个问题,也被称为冷启动问题,已经被广泛记录。数据稀疏性是与协同过滤相关联的另一个常见问题。大多数平台和大型企业都有买家和产品。然而,最活跃的用户只会购买一小部分可用的产品。因此,在驱动这些引擎时,存在一个数据缺口,这些数据对于有意义地计算相似性是必要的。

基于内容的推荐系统

基于内容的推荐系统基于项目特征和用户档案进行建议。这种方法有一个不同的数据结构作为其基础。基于内容的系统是15,模型是基于回归的,因为它预测一个区间变量。这个模型变成了基于内容的推荐引擎。

从前面的讨论中,我们可以看出,基于内容的系统可以轻松缓解冷启动问题,因为书籍和用户很可能有一些形式的描述。与协同过滤系统相比,基于内容的系统更具可扩展性,因为在生产环境中,当需要时可以轻松地进行预测,而不是必须同时为所有用户和产品进行预测。重要的是,即使用户只评价或购买少量产品,基于内容的系统仍然可以表现良好,因为它们关注的是描述,而不是用户或产品。然而,当物品的特征不易获得时,大多数基于内容的系统都会遇到困难。在某些情况下,为产品生成属性可能会很具挑战性(例如,如果产品包含图像或声音)。在这种情况下,基于内容的系统将没有描述可以分析。此外,由于日益增长的在线隐私担忧,用户的人口统计信息可能不易获得。协同过滤和基于内容的推荐方法的局限性导致了混合系统的使用。

混合推荐系统

混合推荐系统是推荐系统的一种集成方法。混合系统通过利用两种或更多推荐策略的组合来为用户生成推荐。通过这样做,它们减轻了归因于任何一种策略的限制,从而受益于众人的智慧

混合系统有几种方法。最常用(也是最容易实现)的是加权方法。在这里,独立推荐系统的分数被汇总以给出一个总推荐分数。汇总方法多种多样,包括基本平均、应用规则和使用线性函数。阶段方法也可以部署。这通常涉及将推荐系统的结果作为另一个推荐系统的输入特征。因此,阶段 1系统的输出成为阶段 2系统的额外输入。切换方法涉及使用规则在不同的推荐系统之间切换,以利用特定环境下的优势。例如,如果协同过滤被认为给出了更好的结果,切换机制可以使用协同过滤方法,但当出现冷启动时,它可以切换到基于内容的方法。混合系统相对于基于内容的系统的一个优势是,当物品特征难以确定时,可以开发推荐。正如将在第十一章中展示的,与地理空间数据、NLP 和图像处理一起工作,DataRobot 具有先进的图像和文本数据特征提取能力。

在 DataRobot 中定义和设置推荐系统

由于 DataRobot 能够从图像、音频和文本数据中提取特征,它有效地管理了基于内容的推荐系统的特征可用性限制。此外,DataRobot 的自动化机器学习模型流程意味着它非常适合利用基于内容的优势,同时弥补这种方法的特征不可用性限制。如 技术要求 部分所述,我们示例中使用的数据集包括三个表。这包括用户表(展示用户资料)、书籍表(概述书籍特征)和评分表(包含用户书籍评分)。由于我们有一个描述书籍的表,另一个描述用户的表,将这些表和评分集合并为基于内容的推荐系统场景。为此,我们使用了 Jupyter Notebook。图 10.1 展示了我们运行的脚本,用于导入数据集、操作数据、合并表并将数据写回 CSV 文件:

![图 10.1 – Jupyter Notebook 中的数据处理图 10.02_B17159.jpg

图 10.1 – Jupyter Notebook 中的数据处理

在评分表中,rating 值为 0 的行被排除,因为这些评分是隐含的。这些行将在 使用 DataRobot 进行推荐系统预测 部分中用来演示如何使用推荐引擎进行预测。通过更改表头以及将 ratingsbooksusers 值合并到一个表中,每一行都描述了一个用户和一本书,以及一个评分。数据快照显示在 表 10.2 中。尽管我们可以使用 Python API 方法(如将在 第十二章DataRobot Python API)中所示,在 Jupyter Notebook 中创建 DataRobot 项目以保持一致性,但我们下载了数据文件:rating.csv

![表 10.2 – 数据快照图 10.03_B17159.jpg

表 10.2 – 数据快照

按照在 第六章使用 DataRobot 进行模型构建 中建立的过程,我们为推荐系统创建了一个 DataRobot 项目。在执行此操作时,我们将 rating.csv 文件拖入初始项目窗口。这打开了 图 10.2 中显示的窗口。对于每一行,由于书籍评分被用作用户兴趣的指标,它可以作为目标变量。由于目标变量 ratings 的性质,这个推荐系统的机器学习模型将是回归模型类型。

![图 10.2 – DataRobot 项目启动窗口图 10.04_B17159.jpg

图 10.2 – DataRobot 项目启动窗口

如预期,评分的范围是110。理想情况下,我们将删除具有隐含评分(0)和user_ID字段的行,以创建一个用于建模的稳健数据集。接下来要做的事情是构建推荐系统的机器学习模型。

在 DataRobot 中构建推荐系统

组 ID 特征字段中,user_id的一个优势。

第六章中详细说明的,使用 DataRobot 进行模型构建,当在模型创建过程中模型存储库标签页的搜索字段中的Training Schedule或简单地Training时,DataRobot 开始开发机器学习模型。这将显示相关模型列表(见图 10.3):

![图 10.3 – 选择最适合推荐系统的先进建模方法图片

图 10.3 – 选择最适合推荐系统的先进建模方法

除了选择这些建模方法并将其包括在要创建的模型列表中之外,还基于Informative Features执行了所有五个交叉验证运行。点击运行任务将它们包括到处理队列中。

在模型创建完成后,下一步是评估它们的准确性。在此之前,检查相对重要性图表以确认我们的模型是否符合常识是很重要的。正如图 10.4所示,通过洞察窗口打开变量重要性窗口为我们提供了探索这些模型的机会:

![图 10.4 – 变量重要性图片

图 10.4 – 变量重要性

London旁边和标题的一个方面(例如,Kingdom)的值可以解释为对模型有影响。因此,在这个简化的例子中,创建了一个更高阶的特征,它是LondonKingdom之间的交互。因此,根据这个新创建的高阶特征的存在与否,评分预测会相应地发生很大变化。

在模型选择中,使用“定制的Keras Slim 残差神经网络回归器使用自适应训练计划(1 层:64 个单元)是表现最好的模型(见图 10.5)。重要的是要强调,在某些情况下,测量推荐系统模型的准确性并不像表面上那么简单。想象一下,在这种情况下,当一个人购买一本书时,我们只能有一个1的评分,否则就是0。天真地衡量模型的准确性变得有限,因为0评分并不一定意味着个人对物品不感兴趣。这是因为可能个人从未读过这本书。因为一个好的推荐系统会推荐与个人档案相匹配的未读书籍,所以它很可能有相当比例的误报。这是因为,尽管他们的当前评分是0,但相关用户很可能对阅读它们感兴趣。在这些情况下,召回率类型的指标在评估模型性能时变得更加重要。鉴于我们只确定个人购买物品的情况,单独评估这些情况是合理的。因此,模型准确性预测正确阅读的书籍的程度,通常称为召回率,成为一个更合适的指标。

![图 10.5 – 推荐系统排行榜标签页图 10.7 – 数据图 B17159.jpg

图 10.5 – 推荐系统排行榜标签页

对于推荐系统,在决定使用哪种模型时,准确性和预测速度是非常重要的考虑因素。为了使这个讨论有据可依,重要的是要理解,在推荐系统中进行预测有两种主要方法。第一种方法是对用户和物品组合进行批评分,其中物品尚未被用户阅读。随着物品和用户的增加,这个数据集呈指数级增长。第二种方法是实时预测。例如,想象一个人到达一个电子商务平台。那个人的数据以及产品的数据会迅速评分,建议几乎瞬间完成。在这两种情况下,预测速度对商业成功至关重要。DataRobot 的Keras Slim 残差神经网络回归器使用自适应训练计划(1 层:64 个单元)的预测速度是每 1000 次预测1.6746,每次预测的预测速度是35.57毫秒。一些混合模型的验证分数看起来更好,但在预测速度方面要弱得多。

![图 10.6 – DataRobots 的速度与准确性图表图 10.8 – 数据图 B17159.jpg

图 10.6 – DataRobots 的速度与准确性图表

这表明,尽管这个模型非常准确,但在做出预测时速度非常慢。速度与准确性图表展示了几个模型的速度和准确性的快照可视化。可以使用模型比较工具进行更深入的成对比较。为了继续讨论预测,我们现在将转向在 DataRobot 中进行推荐系统预测。

使用 DataRobot 进行推荐系统预测

在 DataRobot 上从推荐引擎创建建议是直接的。我们使用拖放方法(如前几章所述),因为我们的预测数据集很小。对于更大的数据集(超过 1 GB),这是推荐系统的典型情况,建议使用 DataRobot 预测 API。创建模型和进行预测的 API 方法在第十二章DataRobot Python API中有详细说明。

我们的示例预测数据集大小为 64 MB,因此拖放方法很合适。对于这种预测方法,我们指定从原始数据集中要使用的列。理想情况下,我们至少需要一个物品和用户的标识符。如图 10.7 所示,我们选择在我们的预测中包含ISBNuser_idtitle字段。我们将预测数据集拖放到指定区域。像往常一样,这个数据集很快就会被评估,我们会看到运行外部测试计算预测选项。

![图 10.7 – 推荐引擎预测设置图片

图 10.7 – 推荐引擎预测设置

在这一点上,我们点击.csv文件(见表 10.3)。如前所述,预测集是从原始数据集中抽取的,其中评分是隐式的(因此评分分数为零)。因此,预测数据集只包含可能的用户-物品交互的有限样本。一些用户(例如,user_id8的用户),大约有10个物品评分,而一些用户只有1个物品评分。在理想情况下,所有未看到的物品都应该被评分。话虽如此,向用户提供的建议是按照预测兴趣的顺序进行的。对于用户8,首先提供的是名为《A Second Chicken Soup for the Woman's Soul (Chicken Soup for the Soul Series)》的书籍。在某些情况下,使用的是前n个推荐。在我们的案例中,前n指的是,对于每个用户,根据其预测值选择前n本书籍。

![表 10.3 – 推荐引擎样本预测图片

表 10.3 – 推荐引擎样本预测

选择的模型可以使用 DataRobot 部署为 REST API,如第八章“模型评分和部署”中所示,然后可以通过 DataRobot API 调用(我们将在第十二章“DataRobot Python API”中讨论)对数据进行评分。一些 DataRobot 模型可以下载为 JAR 文件,这些文件可以与其他应用程序集成以进行实时预测。在其他情况下,可以使用不同的用户-物品交互进行批量预测,然后存储在大数据存储表中,例如 Google Cloud BigQuery

摘要

在本章中,我们介绍了并评估了推荐系统的不同方法。我们考察了基于内容和协同过滤推荐系统的数据结构要求,并讨论了它们的潜在假设。然后我们指出 DataRobot 在从具有挑战性的数据类型(例如,图像数据)中提取特征方面的优势,这些数据类型通常限制了基于内容系统的使用。然后我们展示了如何使用小数据集构建和使用基于内容的推荐系统进行预测。

需要强调的是,本项目使用的数据集由多种数据类型组成。DataRobot 能够提取特征并整合不同数据类型以创建机器学习模型。在下一章中,我们将探讨在创建机器学习模型时如何使用包含图像、文本和位置数据的组合数据集。

第十一章:处理地理空间数据、NLP 和图像处理

在本书到目前为止的内容中,我们主要关注数值型和分类特征。在大数据中,情况并不总是如此,因为随着大数据的到来,数据种类也在不断增加。图像、文本和地理空间数据在获取洞察力和为最复杂的问题提供解决方案方面变得越来越有价值。例如,最近,基于位置的数据已被用于提高广告活动的有效性。例如,可以根据用户的位置向他们展示不同的广告;如果他们是咖啡爱好者并且靠近咖啡店,可以向他们的移动设备发送推送通知。在其他情况下,基于高级文本分析或自然语言处理的聊天机器人,为商业提供了高效且有效的途径来解决客户问题。最有趣且新兴的解决商业问题的方法之一是使用多模态数据集,这些数据集在同一项目中结合了不同的变量类型。

显然,分析不同变量类型的话题本身就可以是一本书的主题。然而,提供不同变量类型分析概述对于在构建涉及文本、图像和位置数据的多模态模型中使用 DataRobot 至关重要。考虑到这一点,在本章中,我们将深入研究文本、图像和地理空间数据的定义和分析方法。之后,我们将使用 DataRobot 构建和利用一个模型进行预测,该模型利用多模态数据集的独特性来预测房价。因此,将要涉及的主题如下:

  • 地理空间、文本和图像数据的概念介绍

  • 在 DataRobot 中定义和设置多模态数据

  • 在 DataRobot 中使用多模态数据集构建模型

  • 在 DataRobot 中使用多模态数据集进行预测

技术要求

本章中进行的分析和建模大多需要访问 DataRobot 软件。一些操作使用了其他工具,包括 MS Excel。本章中使用的数据集是房屋数据集。

房屋数据集

房屋数据集可以在 Eman Hamed Ahmed 的 GitHub 账户中访问(github.com/emanhamed)。该数据集中的每一行代表一栋特定的房屋。初始特征集描述了其特征、价格、邮编、卧室、浴室、厨房和正面的图像。没有缺失数据。我们继续为每栋房屋开发文本描述,基于卧室数量、浴室数量、城市、国家、州和实际物业大小。在其他地方,ZIP 代码被转换为纬度和经度,作为列添加到数据集中。有关基本特征的更多信息可在 GitHub 链接中找到,数据以.csv格式提供。

数据集引用

《基于视觉和文本特征的房价估计。在第八届国际联合计算智能会议论文集》,H. Ahmed E. 和 Moustafa M.* (2016)。ISBN 978-989-758-201-1,第 62-68 页。DOI: 10.5220/0006040700620068

地理空间、文本和图像数据的概念介绍

正如我们使用不同的感官来全面理解周围的物体一样,一个机器学习ML)模型也受益于来自不同类型传感器和来源的数据。仅有一种类型的数据(例如,数值或分类)会限制模型的理解、可预测性和鲁棒性水平。在本节中,我们将更深入地讨论不同数据类型在构建模型中的商业重要性、相关挑战以及必要的预处理步骤,以减轻这些挑战。

地理空间 AI

地理空间理解对某些行业(包括矿产开发、保险、零售和房地产)的决策制定产生了长期影响。虽然数据科学的商业重要性已经确立,但基于位置的 AI 才刚刚开始获得认可。ML 在提高业务绩效中的应用突显了在构建预测模型时,将基于位置的信息和特征添加到数据集中的重要性。

主要由分类和数值数据构建的典型 ML 模型对实现商业目标做出了巨大贡献,但决策不仅仅受数值和分类信息的影响。实际上,事件发生在特定的地点。ML 模型需要基于位置的信息,以便位置上下文能够有效地提供商业洞察和预测。在一个地理区域有效的方法可能在另一个地理区域不适用。

使用 ML 和基于位置的信息的潜在商业影响伴随着几个挑战:

  • 数据集、工具和人员技能的缺乏。

  • 将 ML 管道连接到本地基于位置的分析技术并不简单。

  • 只有少数 R 和 Python 包具有地理空间功能。

  • 理解这些能力需要对分析师进行进一步的教育和培训。

DataRobot 的地理位置 AI 能力有助于缓解一些这些挑战。地理位置 AI 能力通过增加一系列地理空间分析和建模工具来补充现有的 AutoML 体验。使用 DataRobot,可以从数据集中选择位置特征,但地理位置 AI 能力使平台能够自动识别地理空间数据并创建地理空间特征。可以上传多种地理空间数据文件格式。这些包括 GeoJSON、Esri 形状文件和地理数据库、PostGIS 表,以及传统的纬度和经度数据。

自然语言处理

作为人类,我们通过广泛的各种单词进行有效沟通,无论是否有使用单词数量的限制。除了单词之外,肢体语言、语调和单词的语境对于有效沟通至关重要。例如,使用相同的一组单词,“猫比狗大”与“狗比猫大”有不同的含义。自然地,人类根据自由文本理解、得出结论并预测未来。自由文本的使用带来了有价值的信息,并且可以从其中提取丰富的见解。然而,由于自由文本缺乏一致的结构,它们对机器处理提出了挑战。

对话和其他形式的自由文本是杂乱无章且无结构的,因为它们无法整齐地放入传统的行和列的表格中。自然语言处理NLP)位于数据科学和语言学的交汇点,涉及系统地使用高级过程来分析、理解和从自由文本中提取数据。通过 NLP,科学家可以利用自由文本生成有价值的见解,这些见解随后被集成到构建性能更好的模型中。文本挖掘允许识别与某些结果相关的独特单词或单词组。例如,在房价预测案例中,房屋的描述提高了模型在估计房价方面的可预测性。考虑到这一点,描述也影响着个人购房的决定。个人购房的倾向影响着房地产定价。NLP 算法可以识别单词序列的影响、影响性单词或短语,以及单词在句子中的语境。

NLP 是机器能够从文本中提取重要信息的关键。因此,NLP 允许机器通过给文本赋予一个数字分数来决定自由文本中描述的情感,这个分数表示文本对某个主题或事件的情感。同样,它有助于识别某些单词最有可能属于的类别。这种能力催生了包括文本分类、命名实体识别、情感分析和文本摘要在内的多种应用。

要将自由文本提供有用见解或集成到模型中并非易事。正如之前所提到的,原始文本没有结构,因此需要引入结构。此外,许多词具有相同的意义,而且同一个词在不同的语境中可能有不同的含义。在典型的分析过程中,需要采取许多步骤来规范化自由文本。至少需要以下四个步骤:

  1. 文本处理的第一步是将文本语料库分割成单独的单词。这一步骤也称为分词,它使得识别关键词和短语成为可能。分割后的单词被称为标记。N-gram 是文本分析的基本单位。

  2. 接下来,有一些单词对文本的意义贡献很小或没有贡献。这些通常是常见单词;例如,在英语中,我们有像thethatisthese这样的单词。在文本挖掘的上下文中,这些单词被称为噪声或有时被称为停用词。因此,这一步被称为噪声去除

  3. 之后,单词被转换为它们的词根意义。对此有几种方法。作为一个例子,词干提取通常通过消除某些字母将单词转换为词根词干。所以,像happyhappinesshappilyhappiest这样的单词都将返回到词根词happ。由于相同的单词可能有多个含义,因此在文本处理中,单词的消歧变得至关重要。而词干提取通过截断前缀或后缀将单词返回到其词根,词形还原则检查单词的上下文,以确保提取的词干被转换为称为词元的逻辑基础。例如,当词干提取时,单词anticipate可能被返回到ant。然而,在上下文中,ant并不合理;因此,词形还原将确保单词anticipate被保留。

  4. 最后,但同样重要的是,0255的过程,称为0表示完全黑色,而完全白色表示255。另一方面,彩色图像具有包含蓝色、绿色和红色层的 3D 数组。就像灰度图像中的黑色一样,这些层的每个都有自己的值,从0255,最终颜色是这三个层对应值的组合。

    图像处理通常遵循预定义的步骤,从图像中提取有用且一致的特征,这些特征与提取目的相一致。.csv文件位于图像文件夹旁边。为卧室、浴室、正面视图和厨房创建了四个新的图像列。因此,.csv文件上的每一行数据都有其图像的路径,如表 11.2所示。这些路径指向 ZIP 文件中相应图像文件的存储位置。在 ZIP 文件中,包含表格特征的.csv文件需要放置在包含所有图像的文件夹中。每个图像都有一个独特的名称,与.csv文件上的图像路径列保持一致。ZIP 文件和HousePrice文件夹的设置如图 11.1所示。话虽如此,数据集仍然可以通过 AI 目录进行导入。这也赋予了 DataRobot 连接到其他图像数据源的能力。此外,如果您有权访问 Paxata 工具,可以在数据预处理中部署该工具:

    ![图 11.3 – ZIP 文件(左)和图像文件夹(右)的数据设置]

    ](https://github.com/OpenDocCN/freelearn-ml-zh/raw/master/docs/agl-ml-dtrbt/img/B17159_11_03.jpg)

    图 11.3 – ZIP 文件(左)和图像文件夹(右)的数据设置

    图 11.1左边的图像显示了 ZIP 文件的设置方式。包含图像文件的文件夹Houses Dataset位于HousePrice.csv文件旁边。右边的图像展示了Houses Dataset文件夹中的图像文件。在这里,图像被标记,位置与数据单元格HousePrice.csv(如表 11.2所示)一致。数据完全设置好后,下一步是开始模型开发。

    在 DataRobot 中使用多模态数据集构建模型

    在我们的 ZIP 文件中完全设置好多模态数据集后,我们进入 DataRobot 中启动项目。使用拖放方法的数据摄入与早期项目类似,但在这个案例中我们上传 ZIP 文件。在 ZIP 文件上传后,选择价格作为目标变量。DataRobot 自动检测文本、图像和地理空间字段(见图 11.2)。几何特征是由原始数据集中的纬度和经度变量组成的基于位置的属性。除了纬度和经度坐标外,位置特征还可以由其他原生地理空间格式形成,例如 Esri 形状文件、GeoJSON 和 PostGIS 数据库。这些可以通过拖放、AI 目录或 URL 方法上传:

    图 11.4 – 特征名称列表

    图 11.4 – 特征名称列表

  5. 通过在“特征名称”列表中选择“价格”选项,可以查看基于位置的列表价格的可视表示。通过点击“地理空间地图”标签页和“在地图上计算特征”按钮。如图 11.3所示,地理空间地图窗口提供了基于位置的数据集分析可视化。它显示了空间中属性的分布——每个区域的房屋数量及其平均价格:图 11.5 – 地理空间地图

    图 11.5 – 地理空间地图

    地图图例提供了关于地图的重要信息。它强调六边形的颜色表示该位置的平均房价。在其他地方,它通过六边形的高度表示案例的频率。这个 ESDA 特征不仅显示了地图上房价的视觉分布,还展示了不同区域的房屋数量。可以对其他特征,如房屋面积变量和卧室数量,进行类似的地理空间分析。

    可以通过选择任意的图像变量进行初步的图像特征检查。这显示了特征名称列表中的图像样本。在这里,可以看到并按房价范围组织不同的图像特征。

  6. 为了进一步探索房产层面的图像特征,我们点击包含图像路径的.csv文件,图像被集成到数据集中(见图 11.4)。对于每一行,图像都清晰显示。进一步滚动将显示所列房产的自由文本描述。现在,这个包含文本、位置和图像特征的多模态数据集可以用来构建更稳健的模型,并对房价进行预测:图 11.6 – DataRobot 对多模态数据的视图

    图 11.6 – DataRobot 对多模态数据的视图

  7. 与早期项目一样,我们点击开始以启动模型构建过程。建模过程完成后,使用RMSE 指标评估模型。排行榜显示 DataRobot 总共构建了 36 个模型。表现最好的是Nystroem 核 SVM 回归器模型。

    图 11.5所示,打开模型会展示其蓝图,概述了使数据为该模型准备所需的全部步骤。由于数据的多模态特性,预处理步骤相当复杂。DataRobot 进行了地理空间处理,并将其与一些数值变量以及高级图像和文本处理(在图 11.5中不可见)集成。有关每个步骤的更多信息,点击步骤框可以提供有关建模步骤的一些见解,以及链接到该步骤的全面文档:

    图 11.7 – 多模态数据建模的模型蓝图

    图 11.7 – 多模态数据建模的模型蓝图

  8. 区域内是房屋最具有影响力的特征;其次是FullDescription文本特征。之后,BedroomsImage_kitchen特征依次排列。相当有趣的是,Image_bathroom似乎对模型准确性有负面影响。这表明这些图像的见解将模型引离实际房价:

图 11.8 – 多模态模型的特征影响

图 11.8 – 多模态模型的特征影响

因此,为了避免模型向改进性能偏离,我们使用浴室图像进行预测。通过这样做,我们将使用浴室特征来展示 DataRobot 中可用的图像特征探索能力。DataRobot 根据图像的相似性进行无监督学习,将图像聚类在一起。看起来,主要显示白色商品的图像位于可视化图的右侧和上部。我们可以根据房价过滤可视化:

图 11.9 – 图像嵌入

图 11.9 – 图像嵌入

image_bathroom 变量。看起来模型主要从浴室的白色装置中进行预测。这可能会提供关于为什么 image_bathroom 被视为对模型性能有负面影响的原因。有可能从白色装置中提取的信息误导了模型:

图 11.10 – 激活图

图 11.10 – 激活图

基于位置的信息伴随着对其他数据类型的重要补充。然而,一些模型在特定地理区域表现不佳。检查模型性能并考虑位置使分析师能够采取行动以改进模型性能。DataRobot 的 空间精度功能展示了模型残差在不同位置的时空表示(参见 图 11.9 以获取示例)。此图表可能使分析师考虑某些区域残差较高的原因:

图 11.11 – 空间精度

图 11.11 – 空间精度

例如,正如 图 11.9 所示,凤凰地区的平均残差价格超过 $380k,比大多数地区都要高。这个区域可能被认为是低收入地区。这种可视化可能将数据科学家引向包括本地化经济指数的特征。这可能会为高残差提供解释。因此,包括此类特征可能会提高模型的总体性能。用于测量精度的数据分区可以通过在验证、交叉验证或保留分区之间切换来设置。此外,可以根据用户的要求调整精度指标类型和聚合方式。

补充其基于位置的特征工程,DataRobot 的基于位置的统计分析能力可以利用其位置感知来创建 eXtreme Gradient Boosted Trees Regressor (Gamma Loss) 模型的第四个最重要的特征,GEO_KNL_K10_LAG1_Price,这是一个这样的特征(参见 图 11.10)。该特征使用通过距离增加的核大小来描述价格的空间依赖结构。k 近邻方法也可以部署:

图 11.12 – 空间滞后特征

图 11.12 – 空间滞后特征

文本分析信息,如词云,在 FullDescription 文本特征中不可用,这确实是本模型最具影响力的特征之一。尽管在模型蓝图(图 11.10)上不可见,但文本变量使用另一个模型,Auto-Tuned Word N-Gram Text Modeler using token occurrences – FullDescription 进行评分,该模型本质上使用 FullDescription 特征转换成不同数量的单词(如 NN-grams 中)并评分。之后,这个特征在链接尺度上进行了转换并标准化。对于文本相关的洞察,我们转向 Insights 视图,提供两种重要的文本洞察能力,Word Cloudtext mining

FullDescription 特征影响房价。如图 11.11 所示,单词的大小突出了标记的频率,而颜色则表示其影响系数。这个系数通常标准化在 -1.5 到 1.5 之间。单词的颜色越接近红色,系数就越大,因此房价也就越高:

![Figure 11.13 – Word Cloud for a multimodal datasetimg/B17159_11_13.jpg

图 11.13 – 多模态数据集的词云

我们可以假设,当 FullDescription 变量包含橙色字词、alameda county 和大号字时,价格很可能是高的。同样,对于小号字词和 city riverside,预期价格会较低。文本挖掘能力使用条形图显示了与词云类似的信息。

现在我们已经能够使用多模态数据集构建模型,对其特征进行分析,并评估这些模型的性能,接下来我们将专注于使用模型进行预测。

在 DataRobot 上使用多模态数据集进行预测

在构建模型后,有多种方法可以在 DataRobot 上进行预测。对于本用例,我们将使用 Make Prediction 方法来展示预测能力,该方法位于 Predict 选项卡内。我们最初使用本章中 Defining and setting up multimodal data in DataRobot 部分的步骤概述创建一个预测 ZIP 文件数据集。开发的预测数据集可以拖放到高亮区域或本地导入。如 图 11.12 所示,我们选择了我们感兴趣的属性,包括预测数据集:

![Figure 11.14 – Making a prediction from multimodal datasetsimg/B17159_11_14.jpg

图 11.14 – 从多模态数据集中进行预测

在本例中,我们选择了 House_idFullDescriptionBedroomsCityState。我们还可以看到预测数据集包含 400 所房屋。最后,包含所有请求列的 .csv 文件(参见 表 11.3):

![Table 11.15 – A prediction table from a multimodal datasetimg/B17159_11_15.jpg

表 11.15 – 多模态数据集的预测表

预测列显示了每行的预测价格。这完成了使用多模态数据集进行预测的过程。正如预期的那样,在从多模态数据集构建的模型部署后,可以对它们进行预测。

摘要

在本章中,我们探讨了如何从图像、位置和自由文本中生成洞察。通过这样做,我们强调了这些数据类型带来的好处,以及每个数据类型带来的挑战。我们还指出了这些通常是如何在主流中解决的。我们继续使用 DataRobot 构建多模态数据集的模型并进行预测。我们还探讨了从模型的位置、自由文本和图像方面获取洞察的多种方式。通过展示使用多模态数据集构建模型的过程,我们展示了 DataRobot 如何简化处理不同数据类型带来的挑战。

话虽如此,重要的是要指出,DataRobot 在处理自由文本方面似乎存在一些限制。虽然该平台显著简化了文本处理的过程,但在本出版物发布时,我们尚不清楚特定领域停用词在 DataRobot 处理过程中的包含程度。似乎通用停用词被删除了,但有时需要考虑特定领域的停用词。在其他方面,在多模态建模的背景下,我们不确定模型中的文本方面是否可以调整以包含和改变词干提取和词元还原的方法。因此,建议在将文本输入 DataRobot 之前,您自行进行文本处理和特征工程,以获得更好的结果。

在本章以及之前各章中,我们使用平台与 DataRobot 进行了交互。尽管该平台具有众多功能,但这些功能也带来了一些限制。这些限制以及如何通过平台编程访问来缓解它们,在第十二章**,DataRobot Python API中得到了广泛讨论。

第十二章:DataRobot Python API

用户可以通过使用 DataRobot 的 Python 客户端包来访问 DataRobot 的功能。这使得我们可以摄取数据,创建机器学习项目,从模型中进行预测,并编程管理模型。API 为用户提供的优势很容易看出。Python 和 DataRobot 的集成使用使我们能够利用 DataRobot 提供的 AutoML 功能,同时利用 Python 所具有的程序灵活性和潜力。

在本章中,我们将使用 DataRobot Python API 摄取数据,创建包含模型的工程,评估模型,并对它们进行预测。从高层次上讲,我们将涵盖以下主题:

  • 访问 DataRobot API

  • 理解 DataRobot Python 客户端

  • 编程构建模型

  • 编程进行预测

技术要求

在本章将要进行的分析和建模中,您将需要访问 DataRobot 软件。Jupyter Notebook 对于本章至关重要,因为与 DataRobot 的大多数交互都将通过控制台进行。您的 Python 版本应为 2.7 或 3.4+。现在,让我们看看本章将使用的数据库集。

查看以下视频,了解代码的实际应用效果:bit.ly/3wV4qx5

汽车数据集

汽车数据集可在 UCI 机器学习数据库中访问(archive.ics.uci.edu/ml/datasets/Automobile)。该数据集中的每一行代表一辆特定的汽车。特征(列)描述了其特征、风险评级和相关的归一化损失。尽管这是一个小型数据集,但它具有许多数值和分类特征。其特征在网页上进行了描述,数据以 .csv 格式提供。

数据集引用

Dua, D. 和 Graff, C. (2019). UCI 机器学习数据库 (archive.ics.uci.edu/ml). 加州欧文:加州大学信息与计算机科学学院。

访问 DataRobot API

DataRobot 的程序化使用使数据专家能够在保持典型编程的灵活性的同时利用平台的高效性。通过 DataRobot 的 API 访问权限,可以集成来自多个来源的数据,用于分析或建模目的。这种能力不仅限于摄入的数据,还包括结果的输出。例如,API 访问使得客户风险分析模型能够从不同的来源获取数据,例如 Google BigQuery、本地文件以及 AWS S3 存储桶。通过几行代码,可以在 Salesforce 上更新记录,以及通过 BigQuery 表在 PowerBI 上显示的记录。这种多数据源集成能力的优势进一步体现在它能够实现模型结果的自动化、计划内、端到端的定期刷新。

在此之前的案例中,客户基础可以定期重新评分。关于评分数据,DataRobot 平台只能评分小于 1 GB 大小的数据集。当问题需要大量数据集时,批量预测 API通常会将数据分块并并发评分。对于包含数亿行数据的集合,可以使用批量预测 API 设置迭代作业,分块并迭代评分数据。

此外,DataRobot 的 API 访问权限允许用户在分析之前开发具有商业意义的用户自定义特征,以及基于评分模型结果的那些特征。这使得建模过程更加稳健,因为它允许将人类智慧应用于结果。在前面的客户风险分析案例中,可以将客户分类到风险类别,以便于更轻松地进行商业决策。此外,根据所提供的解释,还可以开发下一步的最佳行动方案。

此外,DataRobot 的程序化使用允许用户根据需要配置不同的可视化。这也为分析师提供了更广泛的视觉结果类型。Seaborn 和 Matplotlib Python 库提供了大量不同配置的可视化类型。这也允许可视化某些数据子组或分割。在其他好处中,甚至可以选择要可视化的数据的一些特定方面。

使用 DataRobot 的 API 访问它的一个主要优势是能够迭代地创建多个项目。这里有两个简单的例子。提高多类建模结果的一种方法是用一对一的建模范式。这涉及到为每个类别创建模型。在评分时,所有模型都用于评分数据,并且对于每一行,具有最高评分的类别被分配给该行。为了使这一点更加生动,让我们假设我们正在构建基于其他特征的预测车轮驱动类型的模型。首先,为三种主要的车轮驱动类型创建模型;即,前轮驱动FWD)、全轮驱动4WD)和后轮驱动RWD)。然后,数据与所有三个模型进行评分,并假设呈现每一行最高预测的模型是该行所属的类别。

模型工厂是另一个例子,其中多个模型项目被集成到一个系统中,以便每个项目为数据中的子组构建模型。在某些问题中,数据往往嵌套在那些某些变量倾向于控制模型行为方式的地方。一个例子是建模嵌套在班级中的学生表现。这些特征,如学校的班主任,往往控制其他外生变量对因变量的影响。

在汽车的情况下,它们的品牌通常决定了价格。例如,无论斯柯达与奥迪有多相似,奥迪很可能更贵。因此,在为这种情况开发模型时,为每个汽车品牌创建模型是理想的。在程序化访问 DataRobot 的上下文中,这个想法是为每个汽车品牌运行项目的一个迭代。

除了程序化创建和评分 DataRobot 模型外,我们还将使用 Jupyter Notebook 的集成开发环境IDE)为一对一和模型工厂的情况构建项目。然而,在我们能够使用 API 通过 DataRobot 创建项目之前,必须覆盖某些识别过程。让我们看看。

要程序化访问 DataRobot,用户需要创建一个 API 密钥。这个密钥随后被用来从客户端访问平台。要创建 API 密钥,请打开主页右上角的账户菜单(见图 12.1)。从那里,访问开发者工具窗口(见图 12.1):

图 12.1 – 访问开发者工具

图 12.1 – 访问开发者工具

在打开开发者工具窗口后,点击创建新密钥并输入新密钥的名称。在保存新密钥的名称后,将生成 API 密钥(见图 12.2)。之后,生成的密钥被复制并安全存储。API 密钥以及端点是建立本地机器与 DataRobot 实例之间连接所必需的:

![图 12.2 – 创建 API 密钥图片

图 12.2 – 创建 API 密钥

端点参数是 DataRobot 端点的 URL。app.datarobot.com/api/v2 是美国云端点的默认端点,适用于其美国和日本用户。欧盟管理的云端点是 app.eu.datarobot.com/api/v2。VPC、本地、混合或私有用户通常将他们的部署端点作为 DataRobot GUI 根。为了增强安全性,这些凭证有时以 .yaml 文件的形式存储和访问。这两个凭证使计算机与 DataRobot 实例之间建立连接,以便使用 DataRobot Python 客户端。

使用 DataRobot Python 客户端

Python 编程语言是数据科学家使用最流行的编程语言之一。它既灵活又强大。能够集成 DataRobot 的 AutoML 功能并利用 Python 的灵活性,为数据科学家提供了各种好处,正如我们之前提到的。

使用 Jupyter IDE 在 Python 中编程。

现在,让我们探索 DataRobot Python 客户端。

要使用 DataRobot Python 客户端,Python 必须是 2.7 或 3.4+ 版本。必须安装最新版本的 DataRobot。对于云版本,pip 命令将安装 DataRobot 包的最新版本。在 Python 中运行 !pip install datarobot 应该会安装 DataRobot 包。

安装了 DataRobot 包后,该包已被导入。DataRobot 包的 Client 方法提供了连接到 DataRobot 实例所需的重要连接。如图 图 12.3 所示,Client 方法的格式如下:

Import DataRobot as dr
dr.Client(endpoint= 'ENTER_THE_ENDPOINT_LINK', token = 'ENTER_YOUR_API TOKEN')

在数据摄取方面,可以从不同的来源导入数据。这个过程与使用 Python 的正常数据导入相同。本地文件安装相当简单。在这里,你需要的是 API 密钥和文件路径。图 12.3 展示了导入汽车数据集的代码。对于 JDBC 连接,要从 BigQuery 和 Snowflake 等平台获取数据,除了 API 密钥外,还需要数据源对象的身份以及用户数据库的凭证——它们的用户名和密码。用户数据库的凭证由其组织的数据库管理员提供。

在本节中,我们介绍了如何访问程序化使用 DataRobot 所需的凭证。我们还以程序方式导入了数据。自然地,在导入数据之后,进行一些分析和建模是接下来的步骤。在下一节中,我们将使用 Python API 创建机器学习模型。

以编程方式构建模型

现在我们已经导入了数据,我们将开始以编程方式构建模型。我们将查看构建最基础的模型,然后探索如何提取和可视化特征影响,最后评估我们模型的性能。然后,我们将创建更复杂的项目。具体来说,我们将构建一个对多个类别的多分类分类模型和模型工厂

要创建一个 DataRobot 项目,我们必须使用 DataRobot 的Project.start方法。这个方法的基本格式是导入必要的库(在下面的例子中是 DataRobot)。之后,展示访问凭证,如前文所述。在调用Project方法时,就是这一点。project_namesourcedatatargetProject方法创建项目所需的最小参数。project_name参数告诉 DataRobot 为创建的项目命名。sourcedata提供有关创建模型所需数据位置的信息。这可能是一个位置或一个 Python 对象。最后,target指定要构建的模型的目标变量,如下所示:

import datarobot as dr
dr.Client(endpoint= 'ENTER_THE_ENDPOINT_LINK', token = 'ENTER_YOUR_API TOKEN')
project = dr.Project.start(project_name = 'ENTER_PROJECT_NAME',
sourcedata='ENTER_DATA_LOCATION',
target='ENTER_YOUR_TARGET_VARIABLE')

创建项目的基本格式在前一节中已展示,并在图 12.3中进行了说明。一旦创建了模型,我们可以使用project.get_models方法获取它们的列表。默认情况下,这些模型按验证分数顺序排列。在这个例子中,我们将使用汽车数据集,我们在第六章“使用 DataRobot 构建模型”中用它来构建模型。项目的名称是autoproject_1。在这里,文件的存储位置特别存储在一个名为data的 pandas 对象中。目标变量是price。请注意,这些参数是区分大小写的:

![图 12.3 – 以编程方式创建 DataRobot 模型和提取它们的列表img/B17159_12_03.jpg

图 12.3 – 以编程方式创建 DataRobot 模型并提取它们的列表

创建模型后,调用get_models方法列出模型。我们可以看到表现最好的模型是Gradient Boosted Greedy Trees Regressor (Least-Square Loss)。为了评估这个模型,我们需要提取它的 ID。为此,我们必须创建一个名为best_model_01的对象来存储表现最好的模型。然后对这个模型调用这个度量方法。如图所示,这个模型的交叉验证 RMSE 为2107.40

![图 12.4 – 以编程方式评估 DataRobot 模型img/B17159_12_04.jpg

图 12.4 – 以编程方式评估 DataRobot 模型

为了提供一些关于价格驱动因素的了解,我们需要特征影响。这些可以通过 DataRobot API 使用 get_or_feature_impact 方法检索。为了可视化项目的特征影响,我们必须定义一个名为 plot_FI 的函数,该函数接受模型名称和图表标题作为参数,获取特征影响,然后使用 Seaborn 的条形图方法进行归一化和绘图。关于 autoproject_1 项目,以下截图显示了如何使用 plot_FI 函数检索和展示特征影响:

![图 12.5 – 定义函数和提取特征影响图片 B17159_12_05.jpg

图 12.5 – 定义函数和提取特征影响

通过程序访问 DataRobot 可以进一步扩大该平台提供的益处。有了程序访问权限,您可以利用 Python 中的迭代过程,并且用户可以为同一数据集创建多个项目。现在,让我们看看从同一数据集创建多个项目的两种方法:多类分类和模型工厂

多类分类涉及将实例分类到两个以上的类别。可以创建一个项目,将行分类到这些类别中的任何一个。本质上,这是一个将行分类到所有可用类别之一的模型。另一种处理此问题的方法是为不同的类别构建不同的模型。在此方法中,为每个类别作为目标构建一个模型。您可以看到如何使用 Python 的迭代过程执行此操作;即通过遍历所有目标级别。一对多方法更适合执行具有两个以上类别的分类问题。

现在,让我们演示如何在自动定价项目中使用一对多方法。在这里,我们将使用 pandas 的 qcut 创建价格类别。qcut 帮助将数据划分为大小相似的区间。使用此函数,我们可以将我们的数据划分为价格类别——从低到高。以下截图显示了这一价格离散化过程以及检查案例在类别中的分布:

![图 12.6 – 价格离散化图片 B17159_12_06.jpg

图 12.6 – 价格离散化

在创建了类别之后,为了允许数据泄漏,我们将丢弃初始价格变量。我们将编写一个循环,为每个价格类别构建模型。执行以下步骤:

  1. price_class 变量转换为虚拟变量。

  2. 对于每一次迭代,在虚拟价格类别名称之后创建一个 DataRobot 项目。

  3. 对于每一次迭代,我们都会丢弃正在建模的 price_class 虚拟级别。这确保了没有泄漏。

  4. 对于每一次迭代,我们必须为目标变量虚拟构建模型。

  5. 在创建项目后,每个项目的最佳模型被选中并存储在字典中:

![图 12.7 – 创建一对多分类项目套件图片 B17159_12_07.jpg

图 12.7 – 创建一个单类与所有分类的项目套件

这个过程涉及创建一系列具有目标迭代所有价格类别的项目。在创建项目后,使用以Auto开头的所有项目的迭代来选择每个目标类别的最佳模型,然后选择每个项目的表现最好的模型。这些最佳模型被放置在一个字典中。

有时建议(如果不是理想的情况)使用数据子集创建不同的项目。在选择了目标变量的所有案例之后,你必须为每个项目创建迭代创建数据的随机子集。然而,在自动定价的情况下,我们无法探索这一点,因为外样本的大小有限。

A fuel-type):

  1. 首先,创建并存储一个项目。

  2. 选择目标变量(感兴趣的变量)的案例。在这个例子中,变量是fuel-type。在这里,这个变量被选中,并且使用这个变量的不同级别来创建 DataRobot 项目。简单来说,这一步包括,例如,选择所有将fuel-type设置为gas的行作为一个子组。

  3. 如果需要,定义评估指标。在这里,我们可以修改我们在第六章中遇到的“使用 DataRobot 进行模型构建”的高级选项。其他高级选项也可以选择并修改。

  4. 如果需要,设置一个数据限制,即某个类别将被取消选择(例如,如果该类别的行数少于 20)。这一步骤的重要性在于,某些变量级别可能发生频率非常低,因此子组内的样本量很小。因此,从这些变量中创建模型成为了一个挑战。这一步骤成为使用子组内案例计数来删除这些变量级别的最佳位置。

  5. 从所有项目中选择了所有模型并将它们存储在一个字典中。

在创建自动定价问题的模型因子时,一些步骤是显而易见的(参见图 12.8)。在这里,fuel-type被选为创建项目的基础特征。在这种情况下,只创建了两个项目:一个用于汽油汽车,另一个用于柴油汽车。现在我们已经创建了模型,下一步是收集每个fuel-type的最佳性能模型:

![图 12.8 – 创建模型工厂图片

图 12.8 – 创建模型工厂

使用单类与所有多类分类模型以及模型工厂的有效性在于它们能够根据目标变量的每个级别来拟合模型。这个过程是自动化的,并考虑样本验证、所有预处理步骤以及模型训练过程。当数据基数和体积较高时,这些方法通常会优于典型的建模方法。

对于模型工厂,为感兴趣的特征的不同级别创建了多个项目。为了评估这一点,从所有项目的字典中选择了每个项目的最佳性能模型。所有项目中的最佳模型集存储在另一个字典对象中。然后,通过一个for循环遍历字典中的所有模型以提取模型的性能,如图所示:

图 12.9 – 使用模型工厂评估模型性能

图 12.9 – 使用模型工厂评估模型性能

改进模型性能只是你应该使用“一对多”多类分类模型以及模型因素的原因之一。有时,理解驱动因素同样重要。可视化不同燃料类型的特征重要性可以呈现有趣的驱动因素对比。这意味着不同的因素会影响不同燃料类型的定价。这可能会影响战略决策。如图所示,Python API 可以通过利用 Seaborn 和 Matplotlib 的图表函数来绘制特征影响:

图 12.10 – 不同柴油和汽油汽车的特征影响

图 12.10 – 不同柴油和汽油汽车的特征影响

如我们所见,汽车燃料类型的特征影响存在一些差异。虽然“车辆重量”似乎是一个重要的驱动因素,但其对柴油车辆的影响相对更为重要。同样,对于汽油车来说,这些汽车产生的动力,由“发动机尺寸”和“马力”特征所代表,在确定价格方面比柴油车更为重要。你已能看出这些初步发现对决策的影响以及如何将其应用于其他商业案例。使用特征重要性来检查多个模型也可以应用于“一对多”分类问题。

在本节中,我们使用 Python API 创建了基本的 DataRobot 项目。之后,我们通过在一个系统中使用多个项目来解决更复杂的问题。在那里,我们创建了“一对多”项目来解决多类分类问题,并使用模型工厂来解决涉及子组的多层次问题。我们还探讨了特征影响和模型评估。在程序化创建模型后,我们将学习如何使用这些模型进行预测。具体来说,我们将学习如何部署模型、进行预测、从模型中提取解释以及通过并行化对大型数据集进行评分。

程序化进行预测

DataRobot 程序化使用提供的可能性是巨大的。通过使用其 API,可以部署模型并对它们进行预测。在生产环境中进行程序化预测之前,需要部署模型。DataRobot 模型通过便携式预测服务器进行部署。这些是 Docker 容器,可以托管机器学习模型,并通过 REST API 提供预测和预测解释。

要部署模型,我们可以使用 DataRobot 包的 deployment 方法。在这里,我们必须提供一个描述、DataRobot 模型的 ID 以及其标签来创建部署。一个典型的 Python 部署脚本遵循以下格式:

deployment = dr.Deployment.create_from_learning_model(
MODEL_ID, label='DEPLOYMENT_LABEL', description='DEPLOYMENT_DESCRIPTION',
    default_prediction_server_id=PREDICTION_SERVER_ID)
deployment

根据这种方法,以下截图显示了在 Building models programmatically 部分中创建的 autoproject_1 可以如何部署。在这里,模型 ID 是 best_model_1。我们将使用 AutoBase Deployment 并将其描述为 Base Automobile Price Deployment

图 12.11 – 程序化部署模型

图 12.11 – 程序化部署模型

部署过程可以迭代,以使更复杂的项目成为可能。例如,使用模型工厂,无论区分变量有多少级别,只需一个 for 循环,就可以将所有最佳模型部署到 DataRobot。对于每个最佳模型,都会创建一个部署,然后用于评分新数据。以下截图显示了用于汽车项目的模型工厂部署脚本,其中燃料类型作为区分变量:

图 12.12 – 从模型工厂部署模型

图 12.12 – 从模型工厂部署模型

部署了模型后,可以对它们进行预测。要在开发环境中进行简单预测,我们可以使用 DataRobot BatchPredictionJob.score_to_file 方法。要进行预测,此方法需要模型 ID、预测数据和评分数据将存储的位置。在这里,我们将使用 best_model_1 来评分我们用于开发模型的相同模型,df 数据对象,以及指定预测文件路径的位置路径,即 ./pred.csvpassthrough_columns_set 参数指定将包含在预测中的原始数据集的列。由于此设置为 'all',因此返回所有列,如下所示:

图 12.13 – 简单的程序预测

图 12.13 – 简单的程序预测

这些预测包括初始数据集的所有列,以及预测价格。在某些情况下,包括预测背后的理由是理想的。在这种情况下,应在作业配置中包含 max_explanations 参数。此参数设置每行数据应提供的最高解释数量。

摘要

DataRobot 为我们提供了一种独特的快速开发模型的能力。借助这个平台,数据科学家可以结合 DataRobot 的优势以及开放编程的灵活性。在本章中,我们探讨了获取用于程序化使用 DataRobot 所需凭证的方法。使用 Python 客户端,我们演示了数据摄取的方式以及如何创建基本项目。我们开始构建用于更复杂问题的模型。我们创建了模型工厂以及一对多模型。最后,我们展示了如何部署模型并用于评分数据。

使用 DataRobot 进行程序化操作的一个关键优势是能够从众多来源摄取数据,对其进行评分,并将它们存储在相关来源中。这使得进行端到端数据集评分成为可能。系统可以设置为定期进行模型评分。随之而来的是许多数据质量和模型监控问题。下一章将重点介绍如何在 DataRobot 平台上控制模型和数据的质量,以及如何使用 Python API。

第十三章:模型治理和 MLOps

在前面的章节中,我们学习了如何构建、理解和部署模型。现在我们将学习如何治理这些模型,以及如何在运营中负责任地使用这些模型。在早期章节中,我们讨论了理解业务问题、模型将运行的系统以及使用模型预测的潜在后果的方法。MLOps是由机器学习DevOps组成的词汇。它由一系列流程和实践组成,旨在高效、可靠和有效地在企业内部实现机器学习ML)模型的运营。MLOps 旨在通过确保生产模型的输出质量良好并实现自动化,来持续满足商业价值和监管要求。它提供了一个集中式系统来管理所有生产中 ML 模型的整个生命周期。

MLOps 中的活动涵盖模型部署的所有方面,提供生产中模型的实时跟踪准确性,提供冠军挑战者流程,该流程使用实时数据持续学习和评估模型,跟踪模型偏差和公平性,并提供一个模型治理框架,以确保模型在满足监管要求的同时继续产生业务影响。在第8 章,“模型评分和部署”中,我们介绍了在 DataRobot 平台上的模型部署。

此外,在第8 章,“模型评分和部署”中,我们广泛地讨论了生产中监控模型方面的内容。鉴于模型治理在 MLOps 过程中的关键作用,在本章中,我们将介绍模型治理框架。模型监控的一个关键方面是确保模型没有偏差,并且对所有受模型影响的人公平,这一点我们将在本章中探讨。之后,我们将更深入地研究如何启用 MLOps 的其他方面,包括如何维护和监控模型。因此,我们将涵盖以下主要主题:

  • 治理模型

  • 解决模型偏差和公平性问题

  • 实施 MLOps

  • 生产中通知和更改模型

技术要求

本章的大部分内容需要访问 DataRobot 软件。示例使用了一个相对较小的数据集,Book-Crossing,由三个表格组成,其操作在第10 章,“推荐系统”中已有描述。在数据描述中,我们将创建除了在第10 章,“推荐系统”中使用之外的新字段。

Book-Crossing 数据集

用于说明模型治理方面的示例与用于构建推荐系统在第第十章,“推荐系统”中使用的示例相同。数据集基于 Cai-Nicolas Ziegler 及其同事的 Book-Crossing 数据集(www2.informatik.uni-freiburg.de/~cziegler/BX/)。数据是在 2004 年 8 月至 9 月间对 Book-Crossing 社区进行的为期 4 周的爬取中收集的。

重要提示

在使用此数据集之前,本书的作者已通知数据集的所有者关于其在本书中的使用情况:

Cai-Nicolas Ziegler, Sean M. McNee, Joseph A. Konstan, Georg Lausen (2005). 通过主题多样化改进推荐列表。第 14 届国际万维网会议(WWW 2005)论文集。2010 年 5 月至 2014 年,2005 年,日本千叶

接下来的三个表格,以.csv格式提供,构成了这个数据集。

  • 用户:此表展示了用户的个人资料,使用匿名User-ID并以整数形式呈现。还包括用户的LocationAge

  • 书籍:此表包含了书籍的特征。其特征包括ISBMBook-TitleBook-AuthorYear-Of-PublicationPublisher

  • 评分:此表显示了评分。每一行提供了一个用户对一本书的评分。Book-Rating要么是隐式的0,要么是显式的110之间(数值越高,越受好评)。然而,在本项目背景下,我们将仅关注用于模型开发的显式评分。该表还包括User-IDISBN字段。

此外,我们使用 Excel 创建了两个额外的字段,使用年龄和评分列。我们创建了RatingClass字段,该字段将评分超过7视为评分,否则为。同样,我们创建了AgeGroup字段;将 40 岁以上的年龄归类为四十岁以上,将 25 岁以下的年龄归类为二十五岁以下,否则它们被视为25 至 40 岁之间。最后,我们删除了缺失年龄列的数据行。

治理模型

使用机器学习治理的组织定义了一套规则和控制框架,用于管理与模型开发、生产和后期监控相关的机器学习工作流程。机器学习的商业重要性已经确立。然而,只有一小部分投资于机器学习的公司在实现其好处。一些机构在确保机器学习项目的成果与其战略方向良好一致方面遇到了困难。重要的是,许多组织受到法规的约束,例如欧盟和欧洲经济区最近实施的通用数据保护条例,这些法规影响了这些模型及其输出的使用。总的来说,企业需要引导其机器学习使用,以确保满足监管要求,并持续实现战略目标和价值观。

建立一个治理框架可以确保数据科学家能够专注于他们角色的创新部分,即解决新问题。有了治理,数据科学家花在评估他们的模型为业务带来的商业价值、评估生产模型的性能以及检查是否存在数据漂移的时间会更少。模型治理简化了所有生产模型的版本控制和变更跟踪过程。这是机器学习审计跟踪的关键方面之一。此外,可以设置通知,当生产中的模型遇到异常和性能变化时,提醒利益相关者。当性能出现显著下降时,可以通过无缝的方式将生产中的模型与表现更好的挑战者模型进行交换。尽管这个过程可能需要其他利益相关者的审查和授权,但它比典型的数据科学工作流程要简单得多。

显然,在整个过程中治理模型是一项复杂且耗时的任务。没有工具支持,数据科学团队很容易错过关键步骤。DataRobot 等工具使这项任务变得更容易,确保许多必需的任务自动完成。这种易用性有时也可能导致团队在未思考的情况下使用这些工具。这同样也是危险的。因此,需要谨慎地结合使用 DataRobot 等工具和建立流程控制和审查,以确保适当的治理。

DataRobot 的 MLOps 为组织提供了一个机器学习模型治理框架,有助于风险管理。使用模型治理工具,业务主管可以跟踪重要的业务指标,并确保持续满足监管要求。他们可以轻松评估生产中的模型性能,以确保模型适合用途。此外,在部署之前,模型的商业关键性已经通过治理得到定义。这确保了当模型对业务至关重要时,对模型的任何更改都需要在全面实施之前由利益相关者进行审查和授权。符合伦理的要求,期望使用机器学习模型能够实现公平的过程。因此,模型的输出应该消除任何形式的偏见。在本章的后续部分,除了 MLOps 的其他方面,我们还将探讨如何在开发阶段和在生产阶段减轻机器学习模型的偏差。

解决模型偏差和公平性问题

机器学习的一个关键特征在于它从过去学习以预测未来。这意味着未来的预测会受到过去的影响。一些训练数据集的结构可能会在机器学习模型中引入偏见。这些偏见基于人类系统中明显的不言而喻的不公平。众所周知,偏见会维持模型存在之前的偏见和不公平,可能导致意外的后果。一个无法理解人类偏见的 AI 系统,如果不是加剧,也会反映出训练数据集中的偏见。很容易理解为什么与男性相比,女性更有可能通过机器学习模型获得较低的薪资预测。在类似的例子中,使用历史数据驱动的机器学习模型的信用卡公司可能会被引导向来自少数族裔背景的个人提供更高的利率。这种未经授权的关联是由训练数据集中固有的人类偏见引起的。在模型开发中包含带有偏见特征的无偏见特征是不公平的。一个公平的过程在预测个人的信用时考虑了个人的支付历史,但基于家庭成员的支付历史进行预测时,可能会出现不公平的结果。

监督学习模型可能特别不公平,因为某些数据存在循环依赖。例如,为了获得信用卡,人们需要信用记录,而要拥有信用记录,则需要信用卡。由于模型对信用评估至关重要,因此某些人几乎不可能获得信用卡。此外,关于某些子群体的数据有限,使他们更容易受到偏见的影响。这是因为这类群体训练数据中的最小结果分布变化可能会扭曲该群体成员的预测结果。所有这些都指向了机器学习模型应该管理偏见并支持公平过程的程度。

许多行业——例如,医疗保健、保险和银行——为了满足监管要求,采取具体措施来防范任何形式的偏见和不公平。虽然解决人类偏见本身具有内在的挑战性,但解决机器学习偏见相对容易一些。因此,作为机器学习治理的一部分,解决机器学习偏见可能是确保他们的产品不会放大对机器学习系统伦理方面的怀疑的关键。

在解决潜在的未经授权的结果时,DataRobot 引入了偏见和公平性监控和控制功能。此功能在模型开发期间进行选择和配置。让我们回顾一下,在 DataRobot 中如何解决偏见。与典型平台一样,我们上传数据,如前几章所述。在项目配置窗口(如图 13.1 所示),我们打开高级选项偏见和公平性选项卡:

  1. 在此选项卡中,我们定义受保护特征,如何建立和衡量公平性,以及目标变量。我们指定预测数据集中需要保护的字段。这些字段在AgeGroup字段中被选中作为受保护(参见图 13.1)。在一些行业数据集中,必须选择诸如性别、种族、年龄和宗教等属性。这样,DataRobot 管理和呈现度量标准来衡量每个受保护字段中可能存在的模型偏差:图 13.1 – 在模型开发过程中配置偏差和公平性

    图 13.1 – 在模型开发过程中配置偏差和公平性

  2. 接下来,RatingClass级别的High。这使我们可以测量目标变量这一级别的偏差。

  3. 比例平衡相等平衡预测平衡真实有利率与真实不利率平衡有利预测值与不利预测值平衡

  4. 如果用户不确定选择哪个度量标准,他们可以点击帮助我选择,这将呈现进一步的问题集。回答这些问题将提供公平性度量标准值的建议,如图图 13.2所示:图 13.2 – 公平性度量标准推荐

    图 13.2 – 公平性度量标准推荐

    在选择我们的度量标准时,因为我们非常关注我们的模型在各个年龄组成员之间具有相似的预测准确性,因此我们选择Equal Error选项来响应我们如何衡量模型公平性的需求。由于我们的结果分布在高和低之间相对平衡,我们选择回答是否对极少数人口有利的目标结果发生?这个问题。在此之后,DataRobot 建议True Favorable Rate & True Unfavorable Rate Parity。在整个过程中,平台提供了选项的描述,并解释了推荐的度量标准,以及其他度量标准。

  5. 图 13.3中展示的AgeGroup Light Gradient Boosting on Elastic Predictions模型点击低于默认阈值:

图 13.3 – 每类偏差探索

图 13.3 – 每类偏差探索

根据这个结果,模型在预测Between 25 and 40类中个体的真实不利结果(低评级)的准确性低于其他两个类别。这个类别的得分低于默认的 80%阈值。Between 25 and 40类应用了默认的 80%阈值。图 13.4展示了交叉类精度,一组更全面的准确性指标,如何用于评估受保护类别的准确性:

图 13.4 – 交叉类精度检验

图 13.4 – 交叉类精度检验

AgeGroup类别。正如 图 13.4 所示,模型的准确性似乎在所有准确性指标上对25 至 40 岁类别较低。因为,正如之前提到的,当模型处于有利类别时,其性能在各个类别之间相似,只有25 至 40 岁类别的负面结果的真实率较低似乎影响了模型的公平性。因为模型从历史数据中学习,探索可能导致这种偏差的特征可能对采取进一步行动至关重要。图 13.5 展示了交叉类别数据差异功能,它深入探讨了为什么机器学习模型中存在偏差:

![图 13.5 – 两个年龄组之间的交叉类别数据差异比较img/B17159_13_05.jpg

图 13.5 – 两个年龄组之间的交叉类别数据差异比较

为了探索模型偏差背后的原因,年龄组特征似乎影响了模型的准确性。这是因为年龄组作为预测变量,与其他变量相比将具有最大的差异,因为它与预测变量相同。年份特征的数据差异较低,但比年龄组特征更重要。进一步考察右手图表(图 13.6)中年份的分布显示,与25 至 40 岁组相比,较老的书和缺失年份的书似乎更多地被四十岁以上组评价。相反,25 至 40 岁群体似乎对较新书评价更多,而对其较老的同龄人评价较少。

当模型偏差超过企业设定的阈值时,需要采取措施来管理这种不公平性。解决这种不公平性的选项包括删除可能导致偏差的特征、重新训练模型,或者改变模型以使其更符合道德标准。大多数情况下,这些更改最终会影响模型的总体准确性。然而,在我们的示例案例中,基于弹性预测的轻梯度提升并不是我们表现最好的模型。DataRobot 在其偏差和公平性工具包中具有偏差与准确性排行榜比较功能(见 图 13.6):

![图 13.6 – 偏差与准确性排行榜img/B17159_13_06.jpg

图 13.6 – 偏差与准确性排行榜

使用训练计划的Keras 剩余自注意力分类器是最准确的模型,并符合道德标准。在这种情况下,这个模型可以被部署到生产环境中。需要注意的是,基于神经网络的模型目前通常不被许多监管机构接受,但这种情况可能会在未来改变。

预计将有关评估 ML 模型偏差和公平性的流程集成到数据科学工作流程中,以确保模型结果支持公平的过程。随着关于伦理 AI 的对话在各个行业变得越来越普遍,这一点变得更加重要。在探讨了确保模型公平的方法之后,我们现在将进入下一节,讨论部署公平模型、监控生产中的模型性能以及实施 MLOps 的其他方面。

实施 MLOps

DataRobot 通过其 MLOps 套件,为用户提供能力,不仅能够在生产环境中部署模型,还能治理、监控和管理生产环境中的模型。在之前的章节中,我们探讨了如何在平台上部署模型以及如何使用 Python API 客户端。MLOps 提供了一种自动化的模型监控能力,它可以跟踪生产环境中模型的健康状态、准确性和数据漂移。对生产模型的实时自动化监控确保了模型输出高质量的结果。此外,当模型性能下降时,相关利益相关者会收到通知,以便采取行动。

在本节中,我们将重点关注本书第八章“模型评分和部署”中未涉及到的模型监控方面。我们探讨了如何通过服务健康和数据漂移功能检查部署服务的质量,以及随着时间的推移,训练数据和预测数据之间底层特征分布的变化。随着时间的推移,引入了包含目标变量的最新数据到部署中。DataRobot 可以检查模型的初始预测并确定生产环境中模型的实际准确性。DataRobot 还提供了在生产环境中切换不同模型的能力。本节重点介绍生产模型准确性的评估、设置通知以及在生产环境中切换模型。

如您现在所猜测的,数据科学团队的工作在模型部署后并未结束。我们现在必须监控生产环境中的模型。在涉及模型监控的对话开始之前,我们需要控制个人对那些部署的权限。利益相关者的角色和责任是 MLOps 治理的重要方面。成功实施 ML 解决方案取决于对角色和利益相关者在 ML 模型生产生命周期中实际职责的明确定义。正如图 13.7 所强调的,当部署与其他利益相关者共享时,每个利益相关者都会被赋予一个角色,该角色定义了他们对该部署的访问级别:

图 13.7 – 部署共享

图 13.7 – 部署共享

要打开部署共享窗口(如图 图 13.7 所示),在模型部署后,选中右上角的部署操作按钮(三横线图标)。然后,选择共享。在这里,这个RatingClass Predictions部署与一个利益相关者共享,ben@aaaa.com。重要的是,这个人被赋予了用户的角色。拥有用户角色,这个利益相关者可以读写。实际上,他们可以查看部署,消费预测,查看部署清单,使用 API 获取数据,并将其他用户添加到部署中。所有者级别有额外的管理权限,可以执行业务关键操作,例如删除部署,替换模型,以及编辑部署元数据。最低的用户角色是消费者,它只允许利益相关者通过 API 路由消费预测。

生产模型监控确保模型在开发期间按预期继续提供高质量的商业影响。这种质量的下降是生产数据分布变化或特征影响内生变量的程度变化的结果。例如,使用量的变化会影响客户流失,这是企业的一个重要变量。在假日期间,流失的预测将会更高。如果他们没有预料到这种分布或数据漂移的变化,这种流失预测的波动会给企业带来担忧。同样,预测变量影响业务结果的程度也可能发生变化。一个例子是价格对购买倾向的影响。在大流行高峰期,个人在非必需品的购买上要保守得多。现在,想象一下在大流行之前为非必需品构建的、正在生产的购买倾向模型的准确性。很容易看出,模型的准确性在生产中会迅速下降,从而对业务绩效产生重大影响。这种情况下,需要监控模型部署后的性能。

第八章 模型评分和部署 中,我们讨论了数据漂移,它检查训练集和生成集之间的分布变化,同时考虑到其特征重要性。在这里,我们的重点将转移到监控生产中变量对结果的影响。这种影响的变化可以通过监控生产模型的准确性来确定,这是 DataRobot 提供的功能。作为 部署设置 窗口的一部分,如图 图 13.8 所示,有一个 准确性 选项卡:

![图 13.8 – 准确性设置部署窗口图 13.8 – 准确性设置部署窗口

图 13.8 – 准确性设置部署窗口

精度选项卡提供了对生产模型精度的洞察。此功能允许用户检查其生产模型随时间的变化性能。为了计算生产模型的精度,需要提供实际结果。在上传实际结果后,为了生成精度,需要完成一系列字段。这些包括实际响应关联 ID字段,以及可选的已采取行动时间戳(参见图 13.9):

图 13.9 – 精度设置特征

图 13.9 – 精度设置特征

RatingClass。为了将此与先前的预测数据集链接,本例中的rowid被请求以启用此连接。需要注意的是,有时由于模型的预测结果,业务可能会采取行动,这最终可能会影响结果。为了在计算精度时考虑这种可能性,可选地请求已采取行动时间戳变量(参见图 13.10 中这些特征的选取):

图 13.10 – 生产精度识别特征选择

图 13.10 – 生产精度识别特征选择

在选择强制变量后,点击保存按钮。这将启动计算,随后打开精度窗口,显示模型的 生产精度。生产模型的性能以瓷砖和图形时间序列的形式呈现。图 13.11 展示了部署精度窗口。选定了LogLossAUC精度Kolmogorov-SmirmovGini Norm指标瓷砖。开始显示了在开发过程中,模型对保留数据集的性能。看起来这个模型在生产中的表现比在训练中更好。通过自定义瓷砖,可以选择其他指标及其顺序。随时间精度图显示了模型精度随时间的变化。图上最左边的绿色点表示在开发过程中,模型对保留数据集的精度:

图 13.11 – 随时间评估的生产模型性能

图 13.11 – 随时间评估的生产模型性能

。有一个选项可以更改正在探索的类别。重要的是要注意,使用这些选项,可以监控模型在AgeClass保护变量不同级别上的准确性。这可以通过在段属性选项中选择AgeClass,然后在段值字段中选择任一级别来实现。虽然在当前场景中,生产准确性反映了数据漂移,但可以配置通知,以便当指标以对业务产生不利影响的方式偏离时,利益相关者会收到通知。在下一节中,我们将介绍这些通知,以及如何在部署中更改模型。

生产中的通知和更改模型

在本章中,我们确定了模型商业影响可能衰减的原因以及如何在 DataRobot 平台上跟踪这种影响。在端到端预测过程完全自动化且人类干预有限的情况下,确保有系统通知利益相关者生产模型性能的任何重大变化变得至关重要。DataRobot 可以发送关于服务健康、数据漂移和准确性的重大变化的通知。这些通知可以在部署窗口中设置和配置:

  1. 设置选项卡中选择通知。如图 13.12 所示,提供了三个选项:发送所有事件的通知、发送关键事件的通知和不发送任何通知。所有事件的通知通过电子邮件发送;所有部署更改都会发送给所有者:图 13.12 – 部署通知设置

    图 13.12 – 部署通知设置

    在图 13.12 中,通知被设置为仅通知我关于关键部署活动。此设置意味着当部署上有关键活动发生时,利益相关者会收到通知。

  2. 1:00。有选项可以设置在每小时到每季度监控周期之间的任何时间发送通知。当复选框未选中时,通知被禁用:图 13.13 – 监控通知设置

    图 13.13 – 监控通知设置

  3. 过去 7 天的通知,意味着将前七天的数据分布与训练数据进行比较。

  4. 作为特征漂移指标,0.2。一些特征可以通过使用0.45作为0.45的阈值来排除在漂移跟踪之外,当0.45的漂移超过0.2

    b. 当五个或更多低重要性特征有显著漂移时,将发送失败通知。

    c. 当一个或多个高重要性特征有漂移,其0.45

  5. AUCAccuracyBalance AccuracyLogLossFVE Binomial等其他指标相关的通知。在这种情况下,选择Logloss

    b. 选择百分比变化。

    c. 然后将规则设置为每天1:00。这些可以配置为每天到每季度的任何频率。

  6. 在此设置完成后,点击保存新设置按钮激活通知程序。然而,值得注意的是,任何有权访问部署的利益相关者都可以配置他们想要接收的通知。当模型的变更变得重要时,可能需要替换部署中的模型。

    生产模型的性能往往会随着时间的推移而下降。这引发了替换部署中模型的必要性。在 MLOps 提供的产品中,DataRobot 提供了模型替换功能。要更改部署中的模型,您需要导航到部署概述窗口。从部署概述窗口右侧的操作按钮中选择替换模型选项(见图 13.14):

  7. 点击替换模型选项会显示一个粘贴 DataRobot 模型 URL请求。此 URL 是新模型可以找到的位置,当从排行榜打开时:![Figure 13.14 – 生产模型替换

    ![img/B17159_13_14.jpg]

    Figure 13.14 – 生产模型替换

  8. 当选择Accuracy(准确度)、Data Drift(数据漂移)、Errors(错误)、Scheduled Refresh(计划刷新)和Scoring Speed(评分速度)时。如图图 13.15所示,在此情况下选择了Data Drift

  9. 最后,点击接受并替换

![Figure 13.15 – 选择模型替换的理由

![img/B17159_13_15.jpg]

Figure 13.15 – 选择模型替换的理由

在部署中替换了模型后,未来从这个部署中得出的预测将使用更新后的模型。重要的是要强调,模型替换只能由部署所有者执行。在某些情况下,模型的商业影响是显著的。在这种情况下,在切换模型之前,建议在合成或模拟环境中测试新模型或挑战者模型。在典型的数据科学工作流程中,冠军/挑战者模型场景已经建立。在这里,挑战者模型计算预测,并将它们的性能与生产中的冠军模型进行比较。在完成测试和影响分析后,我们现在可以部署我们的模型。DataRobot 为数据科学家提供了在冠军模型仍在生产中时测试多个挑战者模型的能力。这简化了当需要替换模型时的模型选择过程。

MLOps 还提供了让不同利益相关者审查模型变更的能力。为了实现这一点,模型作为其部署的一部分被分配重要性级别。这些重要性级别取决于模型结果对业务战略商业影响的程度、预测量以及监管期望。这些重要性级别随后驱动谁需要在实施之前审查部署的变更。

摘要

在本章中,我们强调了建立指导企业中 ML 模型使用的框架的价值。ML 治理能力支持用户确保 ML 模型在满足监管期望的同时继续创造商业价值。此外,我们还为不同级别的利益相关者设置了与 ML 部署相关的控制措施。在某些行业中,有必要认真考虑任何决策过程中偏差的影响。由于 ML 模型基于可能受到人类偏差影响的数据,这些模型可能会放大这种偏差。因此,我们探讨了在模型开发和之后如何减轻 ML 偏差的方法。

我们还考察了特征对结果变量的影响。这些变化可能对商业结果产生关键影响,因此需要监控模型结果在生产中的性能。在本章中,我们探讨了如何评估模型性能随时间的变化。重要的是,我们学习了如何在数据漂移或/和模型准确性发生显著变化时配置通知。此外,我们还考察了在生产中如何根据需要将模型切换到挑战者模型。

我们还强调了本章未深入探讨的一些其他 MLOps 功能。在下一章中,我们将探讨我们认为 DataRobot 和自动化机器学习未来的前景。鉴于这本书并非全面涵盖 DataRobot,且该平台持续扩展其功能,在下一章中,我们将指出一些可以获取更多开发信息的地方。

第十四章:结论

在前面的章节中,我们学习了如何使用 DataRobot 构建和部署模型。我们学习了基础知识,以及一些高级数据科学概念。机器学习和数据科学的学科正在迅速发展。作为回应,像 DataRobot 这样的工具也在增强其功能。虽然这些工具将继续进步并使数据科学家更加高效,但人们也预期优秀数据科学家的角色将变得越来越重要,并且被更好地理解。我希望我们已经说服了你,数据科学家不会变得过时,并且这些工具为数据科学家提供了很多帮助,无论他们的专业水平如何。同样,我们目前拥有的方法和工具在智能方面仍然非常有限。在我们构建的系统被称为智能系统之前,还有很多学习和发现要做。

我们迄今为止提供的信息应该有助于您开始开发和部署模型,并开始影响您的业务。在这个旅程中,还有很多东西要学习。在本章中,我们将提供有关 DataRobot 的额外信息来源,并讨论数据科学和 DataRobot 的未来可能看起来是什么样子。我们将涵盖以下主要主题:

  • 了解更多关于 DataRobot 的信息

  • 自动化机器学习的未来

  • DataRobot 的未来

了解更多关于 DataRobot 的信息

关于机器学习、人工智能和相关方法,有许多额外的信息来源。关于 DataRobot 的最佳信息来源如下:

  • DataRobot 网站www.datarobot.com

    该网站包含有关平台、多个资源和案例研究的信息。它还包含链接到其他有用的网站,其中一些将在下面描述。

  • DataRobot 社区网站community.datarobot.com

    这是一个 DataRobot 用户社区的网站。您可以访问这个网站与其他用户建立联系,查看他们正在讨论的信息,并提出问题。

  • DataRobot 社区 GitHubgithub.com/datarobot-community

    这是一个包含与 DataRobot 相关项目存储库的 GitHub 网站。您可以查看许多与 DataRobot 相关任务的代码示例和示例。在这里,您将找到 Python 脚本和笔记本,以及许多其他语言的样本。如果您准备好开始使用 DataRobot API,这是一个很好的去处。

  • DataRobot Python 客户端datarobot-public-api-client.readthedocs-hosted.com/en/v2.25.0/

    此链接提供了有关公开可用的 DataRobot Python 包的信息。在这里,您可以找到有关如何获取此包、安装它以及如何使用它的信息。请注意,您需要一个有效的许可证才能使用此包。

  • DataRobot 文档

    一旦您登录到 DataRobot,您就可以看到指向广泛的 DataRobot 文档的链接,包括工具本身以及 DataRobot API,正如我们在第一章“什么是 DataRobot 以及为什么您需要它”中讨论的那样。

  • DataRobot 文档网站docs.datarobot.com

    DataRobot 最近决定将所有文档发布在这个网站上。这包括 DataRobot 平台、API、教程和笔记本,以及术语表。现在这是查找所有 DataRobot 相关文档的默认网站。

    在线您可以找到许多公开可用的机器学习、AutoML 以及 AutoML 工具的信息来源。现在让我们讨论一下机器学习似乎将走向何方。

自动化机器学习的未来

自从自动化机器学习工具开始在数据科学社区中出现以来,已经过去了 5 年多。现在市场上既有开源工具(例如,TPOT 和 Auto-WEKA),也有专有工具(例如,Kortical 和 H2O)。现在所有主要的云服务提供商都提供了一些 AutoML 服务。对这些工具的兴趣一直在上升。可以肯定的是,对这些工具的兴趣将持续上升,并且可以预期将有更多的产品进入市场。我们预计这些工具将继续扩大自动化任务的范畴,以涵盖模型开发过程的更多方面。我们已经看到,例如 DataRobot 通过内部开发和收购 Paxata 等方式提供了更多功能。尽管这些工具确实不支持所有用例或建模类型,但它们在典型组织中覆盖了大量的用例。每个季度都在添加更多功能和算法。我们还预计,一些专注于特定问题或方法(如强化学习)的利基供应商将出现。

本书所描述的许多想法和方法都可以与其他 AutoML 工具一起使用,甚至可以仅使用带有开源 Python 库的笔记本环境。AutoML 工具本质上是为了自动化许多日常和劳动密集型任务。即使有了这些发展,我们预计模型开发过程中的所有方面都不能完全自动化。我们在本书的不同章节中涵盖了这些方面的许多内容。因此,我们相信训练有素且经验丰富的数据科学家始终是必需的。采用这些工具将使数据科学家能够覆盖更多的用例,并且产生的模型质量将更高。这些工具还将扩大高级算法在理解数据科学概念但不太熟悉或舒适于编程的组织分析人员中的适用范围。像任何工具或技术一样,存在误用的可能性。数据敏锐的组织将实施模型治理和培训计划,以防止与使用不良或偏见数据、解决错误问题或创建不可执行的解决方案相关的问题。此外,组织应考虑其具体需求,然后选择最适合其情况的工具。

预计机器学习将需要超越模式匹配,我们预计在未来的几年里,对因果建模的关注将更大。这是因为许多工业用例需要做出特定的决策或干预,这些决策需要决策者理解因果影响和这些决策的后果。我们已经讨论了一些这些主题和方法。这些方法在其当前形式下难以自动化,需要大量的人类输入。为了使这些方法成为主流,需要自动化这些方法的一些方面,以便组织开始采用它们。

随着工具的扩展,包括因果建模,添加构建系统级模型或能够组合模型以创建对考虑中的系统的更广泛视角的能力将变得至关重要。我们将看到“数字孪生”模型的出现,这些模型将代表整个系统。还将需要管理和控制许多需要进行的实验的配置。鉴于构建单个模型涉及大量数据集,目前用于在多个模型上运行多个实验的方法不可扩展。

我们还预计,随着数据科学家开始意识到这些工具将使他们更有效率,同时仍然提供他们所需的所有灵活性,更多的数据科学家将采用 AutoML 工具。这是通过结合编程语言、API 和自动化支持来实现的。

另一个值得关注的趋势是工具供应商关注解决客户问题。随着供应商规模的扩大,一些供应商失去客户关注是很常见的,这最终可能导致他们的失败。这不是一个新现象;这已经发生在工具供应商身上很长时间了。我们看到了许多供应商失去了这种关注,并逐渐消失。AutoML 供应商中也会发生一些类似的事情,因此请注意那些对您的需求反应不敏感的供应商。

DataRobot 的未来

DataRobot 是 AutoML 领域的早期先驱,似乎已经成为主导者,但还有许多其他公司(如 H20、Kortical 和 Google Cloud AutoML 等)正在迅速追赶。许多大型云服务提供商也纷纷进入这个领域,并提供了极具吸引力的价格。DataRobot 继续提供额外的功能,并结合经验丰富的数据科学家的良好支持。为此,我们预计 DataRobot API 将继续发展并变得更加健壮,以便经验丰富的数据科学家能够以高度灵活和自动化的方式使用 DataRobot。

即使在这本书撰写过程中,我们也注意到新功能正在被发布,例如最近收购的 Zepl 笔记本平台。除此之外,DataRobot 还继续收购其他公司以完善其产品线。最近,很多关注点都集中在 MLOps 和模型的快速部署上。随着功能和能力的增加,理解和使用 DataRobot 的学习曲线也在增加。我们的经验是,许多使用 DataRobot 的数据科学家并不完全了解其功能,也没有充分利用它。我们希望像这样的书籍能帮助解决这个问题。然而,仅此还不够,为了保持竞争优势,有必要扩展到前文所述的下一代功能。

总之,我们希望我们已经为您提供了如何立即在组织中应用 DataRobot 的良好概述,并使您的数据科学之旅更加高效。希望我们已经说服您,数据科学家的角色不仅仅是产生预测,而是帮助做出良好的决策。正如我们做的许多事情自动化了组织中许多角色的任务一样,我们也不应该害怕数据科学任务的自动化。我们希望这本书能为各行各业广泛的数据科学家提供有用的想法。

posted @ 2025-09-03 10:08  绝不原创的飞龙  阅读(8)  评论(0)    收藏  举报