亚马逊-Sagemaker-机器学习秘籍-全-
亚马逊 Sagemaker 机器学习秘籍(全)
原文:
annas-archive.org/md5/ec0e40f9231d8bf8063b0b53abbdd2cf译者:飞龙
前言
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。
使用的约定
本书使用了多种文本约定。
文本中的代码:表示文本中的代码单词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 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并填写表格。
盗版:如果您在互联网上遇到我们作品的任何形式的非法副本,如果您能提供位置地址或网站名称,我们将不胜感激。请通过 copyright@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 – 典型流程步骤及其每个步骤的详细信息
遵循这些步骤对于成功进行机器学习项目至关重要。有时,由于截止日期或开发调试过程中不可避免地出现的问题,这些步骤会被跳过。我们将展示如何使用 DataRobot 帮助您避免一些问题,并确保您的团队遵循最佳实践。这些步骤将在本书的其他章节中详细说明,并附有示例,但让我们先从高层次上熟悉它们。
问题理解
这可能是最重要的步骤,同时也是最不受重视的步骤。大多数数据科学项目失败是因为这一步骤被仓促完成。这也是数据科学学科中可用的方法和工具最少的地方。这一步骤包括以下内容:
-
从系统角度理解业务问题
-
理解最终用户或模型结果消费者期望的是什么
-
理解利益相关者将如何使用结果
-
理解潜在的数据来源以及数据在到达您之前是如何被捕获和修改的
-
评估使用数据和数据源是否存在任何法律问题
-
深入理解数据集的各种特征意味着什么
数据准备
这个步骤在数据科学社区中是众所周知的,因为数据科学团队通常大部分时间都花在这个步骤上。这是一个数据科学或数据工程团队需要使用 SQL、Python 或 R 等工具完成大量工作的任务。在这个步骤中,也需要数据科学家运用其技能和经验(例如,特征工程),尽管 DataRobot 正在开始提供这方面的能力。例如,DataRobot 提供了许多有用的数据可视化和关于数据质量的通知,但分析师需要从中理解并采取适当的行动。
这个步骤还涉及定义模型的预期结果(例如,预测下周将售出多少商品或确定贷款违约的概率),以及如何在模型开发、验证和测试阶段衡量结果的质量。
模型开发
这个步骤涉及使用不同的算法开发多个模型,并优化或调整算法的超参数。然后评估模型产生的结果,以缩小模型列表,可能删除一些特征,并微调超参数。
通常也会查看特征效应、特征重要性和部分依赖图来构建额外的特征。一旦你对结果满意,你开始思考如何将预测和解释转化为可使用和可操作的信息。
模型部署
在模型开发完成后,模型结果会与用户和利益相关者进行审查。这是你应该仔细评估结果将如何转化为行动的时候。这些行动的后果会是什么,是否存在可能出现的意外后果?这也是评估模型产生的任何公平性或偏差问题的时机。确保与用户和业务领导者讨论任何担忧。
DataRobot 提供了多种机制,可以快速将模型作为 REST API 或可执行的 Java 对象部署到组织的任何基础设施或云中。一旦模型作为 API 运行,变更管理的艰难部分就开始了。在这里,你必须确保组织为与新的业务方式相关的变化做好准备。这对那些习惯于以某种方式做事的人来说通常是困难的。沟通为什么这是必要的,为什么它更好,以及如何执行新功能是经常被忽视的重要方面。
模型维护
一旦模型成功部署并运行,重点就转向管理模型操作和维护。这包括确定数据差距和其他建议,以随着时间的推移改进模型,以及根据需要改进和重新训练模型。监控包括评估传入的数据以查看数据是否发生了漂移以及漂移是否需要采取行动,监控预测服务的健康状况,以及监控模型输出的结果和准确性。定期与用户会面以了解模型做得好的地方以及可以改进的地方也很重要。有时也常见使用冠军模型和挑战者模型来查看是否有一个不同的模型能够在生产环境中表现更好。
如我们之前概述的,尽管这些步骤以线性方式呈现,但在实践中,这些步骤并不按照这种确切顺序发生,通常在得到最终结果之前有很多迭代。机器学习模型开发是一个具有挑战性的过程,我们现在将讨论一些挑战以及如何应对它们。
数据科学相关的挑战
从数据科学项目中获得价值并非易事,许多项目以失败告终。虽然一些原因与任何类型的项目都普遍存在,但数据科学项目有一些独特的挑战。数据科学仍然是一个相对年轻和不成熟的学科,因此会遭遇任何新兴学科都会遇到的问题。数据科学从业者可以从其他成熟的学科中学习,以避免一些其他人已经学会避免的错误。让我们回顾一下使数据科学项目具有挑战性的关键问题:
-
高质量数据缺乏:这是一个常见的说法,但这个问题不太可能在短时间内消失。关键原因在于,大多数组织习惯于收集数据以供报告使用。这往往涉及汇总、以成功为导向的信息。另一方面,用于构建模型所需的数据需要详细,并且应该捕捉到所有结果。许多组织为了满足数据需求,在数据和数据仓库上投入了大量资金;他们犯的错误是从报告的角度而不是从模型的角度收集数据。因此,尽管花费了大量的时间和成本,他们最终发现自己处于一个可用数据不足的地方。这导致高层领导对为什么他们的团队能够利用这些花费巨大的大型数据仓库感到沮丧。在下一章中,我们将讨论花时间发展对业务的系统性理解可以帮助缓解这个问题。
-
数据爆炸:数据正在以指数级规模生成和收集。随着收集到的数据越来越多,数据的规模使得通过传统的报告方法进行分析和理解变得更加困难。新的数据也催生了之前不可能的新用例。数据的扩展也增加了噪声。这使得使用传统方法提取有意义的见解变得越来越困难。
-
经验丰富的数据科学家短缺:这也是一个受到很多媒体关注的话题。短缺的原因是这个领域相对较新,技术和方法仍在迅速发展。另一个因素是数据科学是一个多学科领域,需要多个领域的专业知识,如统计学、计算机科学和商业,以及对其应用领域的了解。目前的大多数人才库相对缺乏经验,因此大多数数据科学家没有机会使用广泛的方法和数据类型来处理各种用例。最佳实践仍在不断发展,并未得到广泛应用。随着越来越多的工作变得数据驱动,对于广泛的员工来说,具备数据意识也将变得重要。
-
工具和环境不成熟:目前使用的工具和环境相对不成熟,这使得高效构建和部署模型变得困难。数据科学家的大部分时间都花在与数据和基础设施问题作斗争上,这限制了他们理解业务问题和评估模型商业和伦理影响的时间。这反过来又增加了产生持久商业价值的失败概率。
-
黑盒模型:随着模型复杂性的增加,我们理解它们所做事情的能力下降。这种缺乏透明度造成了许多问题,可能导致模型产生无意义的或最坏情况下危险的结果。更糟糕的是,这些模型在训练和验证数据集上往往具有更好的准确性。黑盒模型往往难以向利益相关者解释,因此不太可能被用户采用。
-
偏差和公平性:最近提出了机器学习模型存在偏差和不公平的问题,这对于任何希望开发和部署机器学习模型的人来说都是一个关键关注点。偏差可以通过有偏差的数据、有偏差的过程,甚至使用模型结果进行有偏差的决策而渗入模型。使用黑盒模型使得这个问题更难以追踪和管理。偏差和公平性难以检测,但将越来越重要,不仅对组织的声誉,而且对它们可能引起的监管或法律问题都至关重要。
在我们讨论如何应对这些挑战之前,我们需要向您介绍 DataRobot,因为正如您可能已经猜到的,DataRobot 有助于解决许多这些挑战。
DataRobot 架构
DataRobot 是最著名的商业自动化机器学习(自动机器学习,AutoML)工具之一。显然,旨在自动化的技术本身也应该从自动化中受益。随着你通过数据科学流程,你会意识到有许多任务在本质上具有重复性,并且标准化到足以进行自动化的程度。DataRobot 在捕捉这些任务以提高构建和部署机器学习模型的速度、规模和效率方面做得非常出色。我们将在本书中详细讨论这些方面。话虽如此,仍有许多任务和流程的方面需要数据科学家和数据分析师做出决策、采取行动和权衡。我们也将突出这些方面。以下图表展示了 DataRobot 架构的高级视图:

图 1.2 – DataRobot 架构的关键组件
图表展示了架构的五个关键层及其相应的组件。在接下来的章节中,我们将描述每一层以及它是如何使数据科学项目得以实现的。
托管平台
DataRobot 环境通过网页浏览器访问。环境本身可以托管在组织的服务器上,或者托管在云平台(如 AWS 或 DataRobot 的云)上的组织服务器实例中。每种托管选项都有其优缺点,而选择哪种选项取决于您组织的需要。其中一些在 表 1.1 中进行了高层次讨论:

图 1.3 – 各种托管选项的优缺点
从这张表中,你可以看出 DataRobot 为你提供了很多选择,你可以选择最适合你环境的选项。重要的是让你的 IT、信息安全和法律团队参与到这次对话中来。现在让我们看看数据是如何进入 DataRobot 的。
数据源
数据集可以通过本地文件(csv、xlsx 等)、连接到关系型数据库、从 URL 或从 Hadoop 分布式文件系统(HDFS)(如果它适用于你的环境)导入到 DataRobot 中。数据集可以直接导入到项目中,也可以放入 AI 目录中。目录中的数据集可以在多个项目中共享。DataRobot 与多个数据管理系统提供商建立了集成和技术联盟。
核心功能
DataRobot 提供了一套相当全面的特性来支持整个机器学习(ML)流程,无论是通过核心产品还是通过附加组件,如 Paxata,它提供了易于使用的数据准备和探索性数据分析(EDA)功能。关于 Paxata 的讨论超出了本书的范围,因此我们将提供核心产品功能的详细信息。DataRobot 会自动执行几个 EDA 分析,并将这些分析呈现给用户,以获得对数据集的洞察并捕捉任何可能需要修复的数据质量问题。
自动建模功能是 DataRobot 提供的最关键的能力。这包括确定要在选定的问题上尝试的算法、执行基本特征工程、自动构建模型、调整超参数、构建集成模型以及展示结果。必须注意的是,DataRobot 主要支持监督式机器学习算法和时间序列算法。尽管有执行自然语言处理(NLP)和图像处理的能力,但这些功能并不全面。DataRobot 最近还通过提供快速将模型作为 REST API 部署、监控数据漂移和服务健康以及跟踪模型性能的功能,增加了 MLOps 能力。DataRobot 还在继续增加功能,例如支持地理空间数据和偏差检测。
这些任务通常需要使用 R 和 Python 等编程语言来完成,可能会相当耗时。用于编写数据分析、模型构建、输出分析和部署的代码所需的时间可能非常可观。通常,还会花费大量时间进行调试和修复错误,以及使代码更加健壮。根据模型的大小和复杂性,这个过程可能需要从几周到几个月不等。DataRobot 可以将这个时间缩短到几天。这些时间可以反过来用于更快地交付项目、构建更健壮的模型,以及更好地理解要解决的问题。
外部交互
可以通过一个全面的用户界面(我们将在下一节中描述)访问 DataRobot 功能,一个可以在 Python 或 R 框架中使用以编程方式通过 API 访问 DataRobot 功能的客户端库,以及一个用于外部应用程序的 REST API。DataRobot 还提供了创建应用程序的能力,这些应用程序可以被商业用户使用,使他们能够做出数据驱动的决策。
用户
虽然大多数人认为 DataRobot 是为不喜欢编码的数据分析师和数据科学家设计的,但它为能够编码的数据科学家提供了显著的能力,并且可以显著提高任何数据科学团队的效率。对于某些特定用例,它也提供了一些对商业用户的支持。其他系统可以通过 API 与 DataRobot 模型集成,这可以用于向外部系统添加智能或在外部数据库中存储预测。他们通过合作伙伴计划存在几个工具集成。
导航和使用 DataRobot 功能
现在您已经对核心功能有所了解,让我们快速浏览一下 DataRobot 的外观以及如何导航各种功能。本节将从高层次介绍 DataRobot,但请放心:我们将在后续章节中深入细节。本节仅旨在让您熟悉 DataRobot 功能。
您的 DataRobot 管理员将为您提供适当的 URL、用户名和密码以访问您的 DataRobot 实例。根据我的经验,Google Chrome 与 DataRobot 的兼容性最好,但您当然可以根据需要尝试其他浏览器。
备注
请注意,您看到的屏幕和选项取决于您拥有的产品许可证以及管理员授予您的权限。在大多数情况下,这不会影响本书的流程。由于我们将专注于 DataRobot 的 ML 开发核心,您应该能够跟上。
因此,让我们继续启动浏览器并访问您的 DataRobot URL。您将看到一个登录屏幕,如下所示:

图 1.4 – DataRobot 登录屏幕
使用您的凭据登录。登录后,您将看到一个欢迎屏幕(图 1.4),提示您选择您想要执行的操作。根据您的设置,您也可能直接进入数据输入屏幕(图 1.5):

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

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

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

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

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

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

图 1.11 – DataRobot API 文档
我们将在后面的章节中介绍 API。如果你不熟悉编程或相对较新手,你现在可以忽略这部分内容。如果你是一位经验丰富的数据科学家,并且精通 Python 或 R,你可以开始审查可用的各种函数,以进一步自动化你的模型构建任务。
让我们回到 DataRobot 的主页,这次选择页面右上角的文件夹图标(图 1.11):

图 1.12 – 项目下拉菜单
如果你没有看到文件夹图标,这仅仅意味着你没有定义任何项目。我们将在稍后的章节中更详细地描述创建项目的过程。现在,只需熟悉不同的选项及其外观即可。在这里,你会看到创建新项目或管理现有项目的选项。在这里,你还会看到关于当前活动项目的某些细节以及最近项目的列表。
创建新项目选项将带您回到之前在图 1.5中看到的新的项目页面。如果您选择管理项目菜单,它将显示按创建日期列出的所有项目(图 1.12)。在这里,您可以选择一个项目以查看更多详细信息,克隆项目,与其他用户共享项目,或根据需要删除项目,如图所示:
![Figure 1.13 – Manage projects page]
![img/b17159_01_13.jpg]
图 1.13 – 管理项目页面
如果您点击页面右上角看起来像人的最后一个菜单项,您将看到一个下拉菜单(图 1.13):
![Figure 1.14 – 用户账户管理下拉菜单]
![img/b17159_01_14.jpg]
图 1.14 – 用户账户管理下拉菜单
从这里您可以管理您的个人资料并调整账户设置。如果您有管理员权限,您可以查看和管理其他用户和组。如有需要,您还可以从 DataRobot 注销。
如果您选择个人资料菜单,您将看到账户的详细信息(图 1.14):
![Figure 1.15 – User profile page]
![img/b17159_01_15.jpg]
图 1.15 – 用户个人资料页面
在这里您可以更新一些您的信息。您还会在顶部第二行菜单中看到一些新的菜单选项。这允许您更改设置或访问一些开发者选项等。如果您选择设置菜单,您将看到以下内容(图 1.15):
![Figure 1.16 – 用户设置]
![img/b17159_01_16.jpg]
图 1.16 – 用户设置
在此页面上,您可以更改密码、设置双因素认证、更改主题,并设置通知(您将看到基于管理员如何设置您的账户的不同选项)。
如果您选择开发者工具,您将看到以下内容(图 1.16):
![Figure 1.17 – Developer Tools screen]
![img/b17159_01_17.jpg]
图 1.17 – 开发者工具屏幕
在这里,您可以创建与您的账户关联的 API 密钥。如果您将使用 DataRobot API,此密钥非常有用。您还可以下载 API 包以在组织的基础设施内部署模型并设置便携式预测服务器。
如果您点击顶部的AI 目录菜单,您将看到 DataRobot 内可共享的数据集目录(图 1.17):
![Figure 1.18 – AI Catalog]
![img/b17159_01_18.jpg]
图 1.18 – AI 目录
本页向您展示可用的数据集列表。如果您看不到任何数据集,可以通过点击添加新数据按钮(图 1.18)在此上传测试数据集。您也可以点击数据集来探索可用的数据。您可以按来源、用户定义的标签或所有者/创建者进行搜索和排序:
![Figure 1.19 – Dataset information page]
![img/b17159_01_19.jpg]
图 1.19 – 数据集信息页面
通常,数据集仅在项目中可用。如果您想在项目之间或项目迭代中共享数据集,您可以在该目录中创建数据集。这允许您在项目之间和用户之间共享这些数据集。数据集可以是静态的,也可以根据需要使用 SQL 查询动态创建。如果需要从多个表或来源为项目获取数据,您还可以通过 Spark SQL 修改或混合数据集。
如果您点击配置文件按钮,您将看到数据集的配置文件级别信息(图 1.19)。这些信息会自动为您编译。我们将在稍后详细描述这些功能及其使用方法:

图 1.20 – 数据集信息页面
此页面显示了当时活动项目中数据集的详细信息。此页面是 DataRobot 能力的关键组成部分之一。页面显示了汇总信息以及 DataRobot 检测到的任何数据质量问题。下面,它显示了数据特征的摘要以及相对于目标特征的特征重要性。我们将在后续章节中更详细地介绍这些功能。
现在让我们点击页面左上角的数据菜单。此页面(图 1.20)展示了您当前活动项目的数据集的详细分析:

图 1.21 – 项目数据页面
本页展示了您数据集分析的结果,提供任何警告,特征的相关重要性,以及用于您项目的特征列表。我们将在后续章节中详细审查此页面的功能。
现在让我们点击顶部的模型菜单项。这显示了活动项目的模型排行榜(图 1.21):

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

图 1.23 – MLOps 页面
MLOps页面显示了你的活动部署及其健康状况。你可以根据你的用例设置有关数据漂移或模型准确性的警报。
下一个菜单项是模型注册。现在,模型注册是将外部开发模型引入 DataRobot 的机制。这个功能是一个附加功能,你的组织可能已经购买或尚未购买。这个方面是一个超出本书范围的高级主题。
让我们点击下一个菜单项,应用。你现在会看到图 1.23所示的内容:

图 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中的表格。请注意,你可能拥有的线索可能分布在多个数据库或 Excel 文件中。你必须将这些信息全部汇总到一个表格中。如果你拥有的数据集很复杂,你可能需要使用 SQL 等语言,Python Pandas或Excel等工具,或者Paxata等工具。
时间序列数据集
时间序列或预测问题将时间作为数据集的关键组成部分。它们与监督学习数据集类似,略有不同,如图 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 将突出潜在的异常值,但您必须审查这些数据点并确定是否将其移除或保留。
缺失值
这是在数据集中非常常见的问题。您的数据集可能包含许多标记为 NULL 或 NaN 的缺失值。在某些情况下,您可能会看到一个 ?,或者您可能会看到一个组织可能用来表示缺失或未知值的异常值,例如 -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 – 使用互信息进行特征关联
此图展示了使用互信息指标来表示的相互关系。互信息(Mutual Information,MI)利用信息论来确定从另一个特征中获取关于一个特征的信息量。与皮尔逊相关系数相比,使用 MI 的好处是它可以用于任何类型的特征。其值从 0(两个特征是独立的)到 1(它们携带相同的信息)。这在确定哪些特征将是模型的良好候选者以及哪些特征不会提供任何有用的信息或冗余方面非常有用。在模型构建开始之前,理解并使用这种视图非常重要,尽管 DataRobot 会自动使用这些信息来做出建模决策。
除此之外,还有一个指标也被用于类似的功能。如果您点击前一个截图底部的指标下拉菜单,可以选择另一个名为克拉美尔 V(Cramer's V)的指标。一旦选择克拉美尔 V,您将看到一个类似的图形视图(图 2.4):

图 2.4 – 使用克拉美尔 V 进行特征关联
克拉美尔 V 是 MI 的一个替代指标,并且使用方式相似。其值范围也从 0(无关系)到 1(特征高度相关)。克拉美尔 V 通常与分类变量一起使用,作为皮尔逊相关系数的替代。
注意到 DataRobot 自动找到了相互关联的特征簇。每个簇都用不同的颜色编码,特征在 图 2.4 中按簇排序。您可以放大到特定的簇以进一步检查它们。这是 DataRobot 环境的一个重要特性,因为非常少的数据科学家了解这个想法或使用它。这些簇很重要,因为它们突出了相互关联的特征组。这些复杂的相互依赖关系通常对于理解业务问题非常重要。通常,只有拥有大量领域经验的人才知道这些复杂的相互依赖关系。大多数人甚至不会意识到这些复杂性。如果您是某个领域的初学者,那么理解这些将相当于多年的经验。仔细研究这些,与您的业务专家讨论,以全面理解他们试图强调的内容,然后利用这些见解来改进您的模型以及您的业务流程。
此外,请注意 DataRobot 提供了一份前 10 个最强关联的列表。注意这些关联,并花些时间思考它们对您的问题意味着什么。这些关联与您对领域的了解一致吗,或者有一些惊喜?往往是惊喜导致了关键的见解,这些见解可能对您的业务具有价值。在以下列表中,您可以看到一个查看特征关联对按钮。如果您点击该按钮,您将看到图 2.5:
![Figure 2.5 – 特征关联细节
![img/Figure_2.5_B17159.jpg]
图 2.5 – 特征关联细节
此图形详细展示了两个选定特征之间的关系。在这个例子中,一个特征是分类的,而另一个是数值的。该图显示了这两个特征之间的关系,并可能为问题提供额外的见解。务必调查这些关系,特别是那些可能不符合直觉的关系。
现在,您可以点击特定的特征来查看它们的分布情况(图 2.6):
![Figure 2.6 – 特征细节
![img/Figure_2.6_B17159.jpg]
图 2.6 – 特征细节
此视图显示了值的分布直方图以及它们与目标值的关系。需要关注的关键点是数据不足的范围以及非线性区域。这些可能给您提供关于特征工程的想法。这些也是您询问系统为何表现出这种行为的区域?
在完成这项背景工作后,您现在可以开始深入研究建模算法。
机器学习算法
现在有成百上千种机器学习算法可用于机器学习项目,而且每天都有新的算法被发明。DataRobot 支持广泛的开源机器学习算法,包括几个深度学习算法——Prophet、基于 SparkML 的算法和 H2O 算法。现在让我们看看存在哪些类型的算法以及它们的应用(图 2.7):
![Figure 2.7 – 机器学习算法
![img/Figure_2.7_B17159-DESKTOP-C2VUV36.jpg]
图 2.7 – 机器学习算法
我们的重点将主要放在 DataRobot 支持的算法类型上。这些算法类型将在以下子节中描述。
监督学习
当您可以在训练数据集中提供答案(也称为标签)时,会使用监督学习算法。对于监督学习,您必须将数据集的一个特征指定为答案,算法通过观察多个示例并从这些示例中学习来尝试预测答案。参见图 2.8了解不同类型的答案:
![Figure 2.8 – 监督学习算法的目标
![img/Figure_2.8_B17159.jpg]
图 2.8 – 监督学习算法的目标
DataRobot 的功能主要集中于监督学习算法。其中包括深度学习算法以及来自 SparkML 和 H2O 的大数据算法。DataRobot 内置了最佳实践来选择最适合你问题和数据集的算法。有四种主要的监督学习问题类型:
回归
回归问题是指答案(目标)以数值形式出现的问题(参见图 2.8)。回归模型试图拟合一条曲线,使得预测值与实际值之间的误差在整个训练数据集上最小化。有时,甚至可以将分类问题设置为一个数值回归问题。在这种情况下,答案是数字,然后可以通过阈值将其转换为二进制。逻辑回归就是这样一种方法,它产生一个介于零和一之间的值。你可以将低于某个阈值的所有答案标记为零,而高于阈值的答案标记为一。根据问题,可以使用线性回归算法以及非线性回归算法。模型评估基于回归线与数据匹配的程度。常用的指标包括RMSE、MAPE、LogLoss和R-squared。常用的算法包括XGBoost、Elastic 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 – 时间序列问题的回测
在回测中,使用过去数据构建模型,然后使用较新的、模型从未见过的保留数据来测试。这种基于时间的保留数据切片也被称为时间外验证。DataRobot 为您自动化了许多这些任务,我们将在后面更详细地看到。
算法
让我们回顾一下 DataRobot 中使用的几种主要算法。在这里,我们只提供这些算法的高级概述。这些算法可以通过改变它们的超参数来针对特定问题进行调整。要更详细地了解任何特定算法,您可以参考机器学习书籍或 DataRobot 文档。以下是一些重要的算法:
- 随机森林。随机森林模型是通过创建多个决策树模型,然后使用输出的平均值来构建的。这是通过创建训练数据的自助样本并在这些建立决策树(Figure 2.10)来实现的:
![Figure 2.10 – Random forest]
![Figure 2.10_B17159.jpg]
Figure 2.10 – Random forest
随机森林模型可以处理缺失数据和非线性,并在许多情况下被证明非常有效。随机森林模型可以用于回归问题以及分类问题:
-
XGBoost:也称为eXtreme梯度提升树,是基于决策树的算法,因其通常能产生非常有效的预测并能够处理缺失值而变得非常流行。它们可以处理非线性问题和特征之间的交互。XGBoost 通过创建一个随机森林并在先前树的残差上构建树来建立在随机森林模型之上。这样,每一组新的树都能够产生更好的结果。XGBoost 既可以用于回归问题,也可以用于分类问题。
-
Rulefit:Rulefit 模型是简单规则的集成。你可以将这些规则想象成像决策树一样链接在一起。Rulefit 模型更容易理解,因为大多数人可以理解将规则组合起来解决问题。DataRobot 通常构建此模型以帮助您理解问题并提供见解。您可以去“模型”标签页的见解部分查看从 Rulefit 模型生成的见解以及给定规则对问题的有效性。它们可以用于分类问题以及回归问题。
-
ElasticNet、Ridge 回归器、Lasso 回归器:这些模型使用正则化来确保模型不会过拟合且不会过于复杂。正则化是通过添加更多特征的惩罚来实现的,这反过来迫使模型要么丢弃一些特征,要么减少它们的相对影响。Lasso 回归器(也称为L1 回归器)使用的是系数的绝对值作为惩罚权重。使用 Lasso 的效果是尝试将系数减少到零,从而选择重要的特征并移除那些贡献不大的特征。Ridge 回归器(也称为L2 回归器)使用的是平方系数作为惩罚权重。这种影响是减少系数的幅度。ElasticNet用于指代同时使用 Lasso 和 Ridge 正则化的线性模型,以产生既简单又正则化的模型。当你有很多相互关联的特征时,这非常有用。
-
逻辑回归:逻辑回归是一种用于二元分类的非线性回归模型。输出形式为概率值,范围从 0 到 1。这通常与一个阈值一起使用,以将值分配为 0 或 1。
-
SVM(支持向量机):这是一种试图找到最佳分离类别的分类算法。在二维空间中很容易看出它的样子(图 2.11),但该算法在高维空间中也被证明效果良好。SVM 的另一个优点是它通过使用非线性核函数来处理非线性,这些核函数可以将问题线性化:

图 2.11 – 监督学习算法的目标
-
GA2M(广义加性模型):这是那些罕见的同时提供可理解性和高准确性的算法之一,即使在非线性问题中也能提供高准确率。名字中的数字“2”代表其建模特征之间交互的能力。GAM 模型的输出是各个特征效应经过分箱后的输出之和。由于 GAM 允许这些效应是非线性的,因此它可以捕捉问题的非线性本质。模型的结果可以用一个简单的表格表示,该表格显示了每个特征对整体答案的贡献。这种表格表示方式对大多数人来说很容易理解。对于那些可理解性和可解释性非常重要的行业或用例,这可能是你可以选择的最佳选项之一。
-
K-最近邻:这是一个非常直接的算法,它找到 k 个最近的数据点(基于一种特定的距离计算方式)。现在它为这些 k 个点找到分类答案。然后它确定得票最多的答案,并将其作为答案。默认的距离度量是欧几里得距离,但 DataRobot 会根据数据集选择合适的度量。用户还可以指定要使用的特定距离度量。
-
TensorFlow。TensorFlow 是一个基于深度神经网络的深度学习模型。深度神经网络是指由人工神经元集合组成的深层隐藏层。这些神经元携带高度非线性的激活函数,允许它们适应高度非线性问题。这些模型在不需要特征工程的情况下就能产生高准确率,但与其它算法相比,它们需要更多的训练数据。这些模型通常被认为非常不透明,容易过拟合,因此不适合某些应用。它们在特征和特征工程难以提取的应用中特别成功,例如图像处理。这些模型可以用于回归问题,也可以用于分类问题。
-
Keras 神经网络:Keras 是一个基于 TensorFlow 构建的高级深度学习库,它允许将多种类型的深度学习模型集成到 DataRobot 中。作为一个高级库,它使得构建 TensorFlow 模型变得容易得多。前述章节中描述的一切都适用于 Keras。在 DataRobot 中的特定实现非常适合稀疏数据集,并且特别适用于文本处理和分类问题。
无监督学习
无监督学习问题是指你未提供答案或标签的问题。这类问题的例子包括聚类或异常检测。DataRobot 对于这些问题没有太多提供,但它确实有一些异常或离群值检测的能力。这些问题是指数据点以一种非常罕见的方式不寻常。例子包括欺诈检测、网络安全漏洞检测、故障检测和数据离群值检测。DataRobot 允许你设置一个没有目标的项目,然后它会尝试识别异常数据点。对于任何聚类问题,你应该尝试使用 Python 或 R 来创建聚类模型。
强化学习
强化学习问题是你希望学习一系列由代理做出的决策,以便实现某个特定目标的情况。这个目标与一个奖励相关联,该奖励是给予代理的,以奖励其完全或部分实现目标。对于这种训练没有可用的数据集,因此代理必须尝试多次(使用不同的策略)并在每次尝试中学习一些东西。经过多次尝试,代理将学会产生最佳奖励的策略或规则。正如你现在可以猜到的,这些算法在没有数据但可以在现实世界(或合成世界)中反复实验的情况下工作得最好。正如我们之前讨论的,DataRobot 不是这类问题的合适工具。
集成/混合模型
集成是一种创建聚合或混合其他模型预测的模型的技术。不同的算法有时能更好地利用问题的不同方面或数据集。这意味着很多时候,通过结合几个好的模型,你可以提高预测的准确性。当然,这也伴随着复杂性和成本的提高。DataRobot 提供了许多混合方法,并且在大多数情况下,它会自动为你的项目构建混合模型。然后你可以评估提高的准确性是否足以证明额外的复杂性是合理的。
蓝图
在 DataRobot 中,每个模型都与一个蓝图相关联。蓝图是 DataRobot 用来训练特定模型的一步一步的食谱。参见Figure 2.12以获取示例:
![Figure 2.12 – 模型蓝图
![Figure 2.12_B17159.jpg]
Figure 2.12 – 模型蓝图
蓝图显示了 DataRobot 构建特定模型所采取的所有步骤,包括 DataRobot 所做的任何数据准备和特征工程。点击任何特定的框将显示采取的行动、使用的参数以及特定算法的文档。这也为您的建模项目提供了出色的文档,这些文档是自动为您创建的。
现在,让我们看看如何确定算法的表现如何。为此,我们需要一些性能指标。
性能指标
DataRobot 为模型提供了一系列的性能指标。您必须指定您想要用于优化项目模型的指标。通常,最佳指标是 DataRobot 推荐的指标。一旦模型构建完成,DataRobot 也会计算其他指标,因此您可以跨多个指标查看您模型的成果。请记住,没有哪个指标适合所有情况,您在选择评估结果的指标时应该谨慎。以下是关于常用指标的一些详细信息:
-
RMSE(均方根误差):RMSE 是一个首先计算误差平方(实际值与预测值之间的差异)的指标。然后,在整个数据集上平均这些值,然后计算这个平均值的平方根。鉴于这个指标依赖于值的规模,其解释依赖于问题。您不能比较两个不同数据集的 RMSE。这个指标在数据不是高度偏斜的回归问题中经常使用。
-
MAPE(平均绝对百分比误差):MAPE 在某种意义上与 RMSE 相似,因为它首先计算百分比误差的绝对值。然后,这些值在数据集上平均。鉴于这个指标按百分比缩放,比较不同数据集的 MAPE 更容易。然而,您必须注意,非常小的值(或零值)的百分比误差往往看起来很大。
-
SMAPE(对称 MAPE):SMAPE 与 MAPE 相似,但解决了上述讨论的一些缺点。SMAPE 限制了上限百分比值,这样小的值的误差就不会压倒指标。这使得 SMAPE 成为一个可以轻松跨不同问题比较的好指标。
-
准确率:准确率是用于分类问题的指标之一。它可以表示如下:
准确率 = 正确预测数/总预测数
它实际上是正确预测数与所有预测数的比率。对于不平衡问题,这个指标可能会误导,因此它从不单独用来确定模型的表现。它通常与其他指标结合使用。
-
平衡准确率:平衡准确率通过在预测的两个类别上归一化准确率来克服准确率的问题。假设两个类别是 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。
-
伽马偏差:伽马偏差用于目标值呈伽马分布的回归问题。对于此类目标,伽马偏差测量预测值与实际值之间的平均偏差的两倍(使用对数似然函数)。拟合完美的模型将具有零偏差。
-
泊松偏差:泊松偏差用于回归问题,当目标是计数偏斜数据时。它的工作方式与伽马偏差非常相似。
-
LogLoss: LogLoss(也称为交叉熵损失)是衡量分类问题预测概率不准确性的指标。值为 0 表示模型完美,随着模型变差,logloss 值增加。
-
R 平方:R 平方是用于回归问题的指标,它说明了拟合线如何代表数据集。其值介于 0 和 1 之间。0 表示模型较差,无法解释任何变化,而 1 表示模型完美,解释了 100%的变化。它是使用最广泛的指标之一,但可能会因为增加更多变量而提高,而不一定改善模型。它也不适用于非线性问题。
现在我们已经讨论了一些常用的指标,让我们看看如何查看其他结果来评估模型的质量,以及不同特征对模型的影响。
理解结果
在本节中,我们将讨论各种指标和其他信息的可视化,以了解建模练习的结果。这些是除了上一节讨论的模型指标外,需要仔细检查的重要可视化。这些可视化是由 DataRobot 为它训练的任何模型自动生成的。
升值图
升值图显示了模型在预测目标值方面的有效性。由于数据点通常非常多,无法在一个图形中显示,因此升值图对输出进行排序,并将数据聚合到多个区间中。然后,它比较每个区间中预测值和实际值的平均值(图 2.13):

图 2.13 – 升值图
前面的升值图显示了预测是如何从低到高排序,然后分箱(本例中有 60 个箱)。现在你可以看到每个箱中的平均预测值和平均实际值。这让你对模型在整个范围内的表现有一个概念。你可以看到模型表现较差的范围。如果模型在对你业务重要的范围内表现不佳,你可以进一步调查以了解如何在该范围内改进模型。你还可以检查不同的模型,看看是否有在更重要的区域表现更好的模型。升值图对于回归问题更有意义。
混淆矩阵(二进制和多类别)
对于分类问题,评估模型结果的最佳方法之一是查看混淆矩阵及其相关指标(图 2.14)。此选项卡适用于多类别问题:

图 2.14 – 混淆矩阵
混淆矩阵映射了每个类别的预测值与实际值的计数(频率)。让我们看看轿车列。大绿色圆圈表示我们正确地将轿车分类为轿车的次数。在该列中,你还会看到红色点,表示模型预测它为轿车,但实际上它是另一种类型。你可以看到所有类别的这些情况。相对刻度应该能给你一个关于模型表现如何以及它在哪些方面有困难的印象。
如果你选择一个特定的类别,你可以在右侧查看该类别的特定混淆矩阵。你可以看到两列(+表示预测为轿车,-表示预测为非轿车)。同样,你还可以看到两行(+表示它是轿车,-表示它不是轿车)。你还可以看到一些关键的定义和指标:
-
真阳性(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.16)并比较时间序列的实际值与预测值:

图 2.16 – 模型准确率随时间变化
您可以查看这些值用于回测或保留数据集。图表将清楚地显示模型表现不佳的地方以及您可能想要关注以改进模型的地方。
特征影响
除了模型性能外,您首先想了解的是特征对模型性能的影响程度。特征影响选项卡(图 2.17)可能是理解您模型的最关键部分:

图 2.17 – 特征影响
图形显示了一个按重要性排序的最重要特征列表。对于每个特征,您可以看到该特征对模型的影响程度。您可以看到哪些特征贡献很小;这可以用来创建新的特征列表,通过删除一些影响很小的特征来实现。
特征拟合
特征拟合选项卡(图 2.18)显示了特征贡献的另一种视图。图形显示了按重要性排序的特征:

图 2.18 – 特征拟合
对于选定的特征,它显示了预测值与实际值在特征值范围内的比较。通过审查关键特征的这些图表,可以提供有关特征如何影响结果以及表现较好的值范围和表现最差的值范围的很多见解。这有时可能会突出您可能需要收集更多数据以改进模型的数据区域。
特征效应
特征效应显示的信息与特征拟合(图 2.19)非常相似。在此图形中,特征按特征影响排序。此外,特征效应专注于部分依赖性:

图 2.19 – 特征效应和部分依赖
部分依赖图是你想要仔细研究的最重要图表之一。这些图表告诉你特征值的变化如何影响其他特征值范围内目标平均值的改变。这种洞察力对于理解业务问题、理解模型正在做什么以及更重要的是,哪些模型方面是可操作的以及哪些值范围会产生最大影响至关重要。
预测解释
预测解释描述了特定预测的原因,即针对特定实例或正在评分的行的特征值(图 2.20)。请注意,这与特征影响不同,特征影响告诉你特征在全局层面上的重要性:

图 2.20 – 预测解释
预测解释可以为整个数据集或数据子集生成,如前一个屏幕截图所示。例如,它将提供模型预测特定值的前三个原因。在某些用例中,出于监管原因,可能需要这些解释,但生成这些解释是个好主意,因为它们有助于理解模型为什么以某种方式预测,并且在验证或捕捉模型中的错误时非常有用。DataRobot 使用两种算法来计算解释:XEMP(基于示例的解释)或Shapley 值。XEMP 支持更广泛的模型,并默认选择。Shapley 值将在下一节中描述。
Shapley 值
Shapley 值(SHAP)是生成预测解释的另一种机制(图 2.21)。如果你想在解释中使用 SHAP,你必须在按下开始按钮之前,在项目设置的高级选项中指定这一点。一旦 DataRobot 开始构建模型,你无法切换到 SHAP。SHAP 值仅适用于线性或基于树的模型,并且对于集成模型不可用:

图 2.21 – 基于 SHAP 的解释
SHAP 值基于合作博弈论,该理论试图为协作项目中团队成员的贡献分配价值。在机器学习的背景下,它试图在存在一组特征共同进行预测时,为特定特征分配价值贡献。SHAP 值是可加的,你可以轻松地看到最终答案中有多少是由于特定特征值造成的。
摘要
在本章中,我们介绍了一些基本的机器学习概念,这些概念在我们继续阅读剩余章节时将非常有用,并且在你的数据科学之旅中也将非常有用。请注意,我们只对概念进行了高层次概述,根据你的工作角色,你可能需要更深入地探索一些领域。我们还将这些材料与 DataRobot 执行某些功能的方式以及你需要更加关注的地方联系起来。
希望这能让你对 DataRobot 将显示的内容以及在你项目不同阶段需要关注的地方有所了解。由于 DataRobot 自动化了模型构建和预测任务的大部分工作,你可能会有忽略 DataRobot 为你自动生成的大量输出的诱惑。请抵制这种诱惑。DataRobot 软件在生成这些输出时投入了大量的努力和资源,这是有充分的理由的。它也在为你做大量的基础工作,所以请充分利用这些功能。具体来说,我们涵盖了以下内容:在数据准备过程中需要注意哪些事项?哪些数据可视化对于理解你的数据集很重要?关键机器学习算法有哪些,你何时使用它们?你如何衡量模型结果的好坏?你如何评估模型性能并理解模型对你问题的描述?
现在我们已经了解了基础知识,我们将在下一章开始我们的数据科学之旅,学习如何理解业务问题以及如何将其转化为可以使用机器学习解决的问题规范。
第三章:理解和定义商业问题
本章涵盖了成功最关键的话题,但在数据科学课程或书籍中并未详细讨论。尽管理解并定义商业问题的主题被简要提及为应该做的事情,但讨论很少深入到如何正确地去做。在本章中,我们将探讨可以用来理解所考虑的系统并确定需要解决的问题的具体工具和方法。
这一节与 DataRobot 无关,因为 DataRobot 无法帮助你在这一过程中。这是数据分析师、业务分析师或数据科学家必须做的事情。正确定义商业问题很难做到——它无法自动化,而且大多数时候也没有得到妥善处理。如果你掌握了这项技能,你将变得无价。这是一个始终需要经验丰富的数据科学家(或未来他们被称为什么)的关键领域。
到本章结束时,你将了解一些核心概念和方法,这些是你确保解决正确问题的必要知识。本书的其余部分将解释如何以正确的方式解决这些问题。
在本章中,我们将涵盖以下主要主题:
-
理解系统上下文
-
理解“为什么”和“如何”
-
找到商业问题的根源
-
定义机器学习(ML)问题
-
确定负责任的人工智能(AI)的预测、行动和后果
-
实施并产生价值
理解系统上下文
所有问题都源于系统的上下文。系统可能是一个生物体的单个细胞、全球人口或整个经济。同样,所有解决方案都需要适应系统。一个技术解决方案(例如,人工智能解决方案)通常需要改变流程、人员、技能、其他 IT 系统,甚至可能需要改变商业模式才能有效。对于一个组织来说,系统可能是其整个供应链、竞争对手和客户。鉴于系统的定义可能非常广泛,通常建议你想象系统比你所考虑的问题更广泛。你希望你的问题所触及的所有组成部分或代理都成为系统上下文的一部分。定义系统边界既是艺术又是科学,并且是一个迭代的过程。鉴于你将从更广泛的视角审视系统,这也意味着相同的系统上下文将适用于多个机器学习项目或用例。在这里获得的理解将在许多项目中带来回报。
在组织或行业中工作过的数据科学家或分析师可能会本能地学习到许多问题的系统性方面。他们可能会觉得他们不需要进一步调查,因为他们已经理解了关键问题。虽然这可能是对的,但人们也会发展出盲点,开始忽视关键缺失的部分或携带隐含的假设,这些假设大多数情况下是正确的,但有时是错误的。使用结构化方法来捕捉系统性理解有助于克服这些问题,并确保每个人都从共同的理解出发。这些问题通常是导致项目下游出现问题或延误的问题。让我们通过创建环境图来了解我们如何构建这种理解。
环境图是您系统的整体视图,展示了关键参与者和他们的互动,如图所示:
![图 3.1 – 环境图
![img/B17159_03_01.jpg]
图 3.1 – 环境图
特定的绘图惯例并不那么重要;更重要的是,您需要理解和记录组件,并了解它们是如何相互作用的。现在有许多绘图惯例,所以请随意使用您喜欢的。确保在图中捕捉到每个主题的三到五个重要实例。箭头不必是单向的。
当您查看这个简单的图表时,您会同意我们应该知道所有这些信息。当您尝试构建这个图表时,您可能会惊讶地发现找到和捕捉这些信息并不那么简单。组织中的大多数人都会对这些事物有所了解,但可能无法精确地指定最重要的客户或关键绩效指标(KPIs)等。在大多数组织中,可能需要一些时间和讨论才能将这些内容整理出来。图中的大部分组件都很容易理解,但有些则有些令人困惑,因此值得稍作讨论,如下所述:
-
关键目标:关键目标是可衡量的指标,让您能够确定您是否及时实现了目标。这些通常以财务表现、市场份额、客户满意度、声誉、质量水平和合规性等形式出现。拥有精确和可衡量的定义以及与组织目标的协调一致非常重要。这些对组织来说具有真正的价值,了解您的项目和模型如何影响这些因素也很重要。
-
外部驱动/风险:这些是影响关键目标的外部因素或驱动因素,但不在您的控制之下。请注意,我们不是在讨论具体事件,而是在讨论可能被视为事件的因素的值的变化——例如,该因素可能是国内生产总值(GDP)的变化。这不在我们的控制之下,-20%的值可能表明金融危机。因此,我们在这个案例中的驱动因素是 GDP 变化,而不是金融危机。
-
关键决策杠杆:这些也是影响关键目标的因素,但它们在我们可控范围内。例如,员工数量是我们可控的因素(因为我们可以决定雇佣多少人)并且它将对结果产生影响。其他例子可能包括在新技术或市场营销上投入多少,等等。这些可能是战略决策或选择,例如创建新的分销渠道、捆绑产品等。无论类型如何,重要的是要确保想法以精确的方式被捕捉到——例如,如果新的分销渠道是一个驱动因素,你应该知道五个实际的选择是什么。
警告
请不要陷入哲学争论。快速创建你的图表的第一版,并在需要时进行改进。在分析可能告知并改变当前思考的情况下,可以带着第一稿向前推进。
如你现在可能已经猜到的,强调这三项的原因是,关于它们的历史数据对于任何数据科学项目都将是关键的。你也会同意,这些因素的数据对于运营以及战略决策都是关键的,但你可能会发现这些数据可能不容易获得或可能存在质量问题。此外,特别关注关键知识库。这些将是包含你组织数据的数据库、数据仓库、数据湖或文件系统。我们将在接下来的章节中再次回顾这些项目。
现在我们已经了解了背景,我们想要了解我们的系统是如何运作的以及为什么它以某种方式表现。这两个方面对于理解系统都是至关重要的。在下一节中,我们将描述如何创建这种理解。
理解原因和方式
理解一个系统的功能和其行为的关键在于以下方面:
-
过程:对象和信息是如何通过系统的流程流动的?
-
交互:不同的实体或系统的不同组成部分是如何相互作用的?
-
状态:一个实体的状态是如何随时间演变的?
-
因果关系:有哪些因果关系?
这些方面中的每一个都通过图表来表示。有许多用于流程建模、因果建模和交互图的图表规范。这些规范在不同的领域中用途不同。你可以遵循你喜欢的或已经熟悉的任何规范。在这本书中,我们将遵循适合计算建模的某些规范。这意味着这些图表可以与数据结合,转化为可用于分析的模型。这将在我们项目的后期阶段变得很重要。如何创建这些图表并将它们转化为计算模型的深入细节超出了本书的范围,但如果你感兴趣,你可以寻找其他资源来学习这些技术。即使你不创建计算模型,这些图表也会提供有用的见解,你可以在你的机器学习项目中使用。可能你的组织中有人在构建——或者已经构建——这样的图表。你应该寻找这些人,并请他们在构建这些图表时提供帮助。让我们更详细地看看这些方面的每一个。
流程图
在组织的运营中,有几个具有明确定义流程的功能。对象、人员或信息通过这些流程流动,如下面的图所示:

图 3.2 – 流程图
根据系统环境,你已经知道了组织中最重要的流程。你可以开始构建这些关键流程的图表——或者至少是与你项目相关的那个流程。构建端到端流程流是非常重要的——例如,整个客户旅程,或者一个产品的整个开发流程。同样重要的是要从客户的角度(灰色框)理解流程,而不仅仅是内部流程(白色框)。确保捕捉到故障点或返工路径,或者流程可能突然结束而不是正常完成的地方。当实体通过这些流程时,会做出决策或计算,这些可能是机器学习问题的候选者。无论你从哪个项目开始,沿途识别其他潜在的机会都是一个好主意。结果可能表明,以不同的方式看待流程或构建不同的机器学习模型可能会带来更大的利益,或者可能预防当前项目的需求。无论结果如何,捕捉这些信息都是重要的。顺便说一句,你注意到在先前的流程图中客户没有收到拒绝消息吗?正如你可以想象的那样,这是客户体验中一个被遗漏的重要部分。我相信错误会在某个时候被发现,但使流程明确会增加尽早发现并考虑它在构建模型时的机会。
除了构建图示之外,捕捉关于该过程的数据同样重要。你经常会遇到有人已经构建了流程图,但没有捕捉任何数据的情况。如果你正在阅读这本书,那么我不需要告诉你收集这些数据对于准确理解过程的重要性。需要捕捉的典型信息包括每个步骤中流动的物体数量和类型、每个步骤所需的时间、每个步骤所需的劳动力和资源、采取特定路径的概率、质量指标等等。如果关键流程没有捕捉到此类信息,那么尽快开始收集这些信息是很重要的。这些信息对于构建项目商业案例、作为模型中的有用特征以及帮助识别可能被隐藏的问题可能至关重要。
重要的是再次指出,你不想陷入术语争论,而是快速创建一个图示,足以帮助你理解过程中发生的事情,而不是一个包含每一个细微差别的非常详细的视图。如果需要深入了解过程的某个特定方面,重新审视这是可以的。
实际的流程通常比我们在图 3.2中展示的要复杂一些,但并不太多,而且发现许多外部特定部门中这些任务完成的人不知道的事情并不罕见。在我的经验中,发现没有一个人理解整个流程的情况也并不罕见。这个练习本身就有价值,因为它可以突出关键问题,但对于构建模型以自动化流程某些部分的数据科学团队来说,尤其有价值,但我惊讶地看到数据科学团队在不了解流程的情况下构建了多少次模型。
交互图
在一个系统中,有许多交互发生,这些交互并不遵循固定的流程。这些交互可以按不同的顺序发生,需要保持灵活性,并且最好通过交互图来理解。那些有软件开发背景的人可能熟悉这样的图示,它们展示了软件组件或对象之间的交互。在我们的案例中,我们感兴趣的是理解系统关键参与者之间的交互,如下面的图示所示:

图 3.3 – 交互图
图表显示了一个市场,其中几个竞争对手在销售他们的产品。客户来到这个市场购买产品。竞争对手在各个媒体渠道上花钱做广告,并设定他们的价格。消费者受到广告、定价和其他消费者口碑的影响。在任何给定时间,许多这些互动都在进行中,创造了一个复杂且动态的环境。如果你在构建定价模型,你必须考虑到所有这些因素,否则你的模型将对数据有很好的统计拟合,但在实际操作中却证明是无效的。
注意,关键参与者可以是人、组织、机器人、市场、欺诈者等等。构建这个和其他图表背后的想法是将你所知道的内容编码化并使其明确化。这使每个人都能对系统有一个共同的认识,并质疑假设或指出缺失的信息。同样重要的是确保你将这些图表视为需要用数据来检验的假设。你必须不断地问自己,数据是否支持我们在这些图表中所说的内容。如果不是,那么可能需要细化你的假设,或者可能缺少数据或其他数据质量问题。也许数据收集存在偏差。我确信你听说过关于如何使用有偏差的数据做出预测,结果却完全错误的故事。构建图表并不能保证你将捕捉到有偏差的数据,但它确实提高了你捕捉到它的机会。
状态图
状态图捕捉了系统中某些重要实体或演员的状态演变。典型的候选者包括客户和产品。与其他图表一样,你只为系统中的重要或关键演员构建这些图表。
一个示例状态图如下所示:

图 3.4 – 状态图
状态图在概念上与马尔可夫链非常相似(这个概念表示系统从一个状态转换到另一个状态的概率,这种概率是固定的,并且不依赖于任何先前历史),但在状态图中,你不必假设历史不重要。状态图是为特定代理构建的。图 3.4显示了一个人随时间推移通过各种状态的状态图。箭头代表从一个状态到另一个状态的转换,并且人在给定状态下停留,直到他们转换到下一个状态。转换通常被认为是瞬时的。你也可以从转换概率的角度来考虑转换(在这种情况下,它开始类似于马尔可夫链)。这些图表可以是分层的,从某种意义上说,一个状态可以被分解为子状态,而这些子状态可以通过转换相互连接。
除了构建图之外,你还想了解是什么导致了转换的发生。它是确定性的还是随机的?你还想收集关于这些转换发生频率和时间的资料,因为这些数据对于进一步分析和构建机器学习模型非常有用。一个行为者的转换可能会引起另一个行为者状态的转换,因此状态图也与交互图相关联。每个转换都可能是一个机器学习模型的潜在候选者,你可以使用数据来预测何时(以及哪个)转换可能会触发。正如你可以想象的那样,构建这些图将导致识别出可能被遗漏的机会。
使用这些图,你现在已经理解了系统是如何运作的。我们现在准备查看决定系统行为的是什么。
因果图
因果图旨在捕捉我们对系统中存在的因果关系关系的理解。这种理解可能正确也可能不正确。事实上,你可能永远无法证明因果关系。抛开哲学辩论不谈,你可以通过使用本节中概述的方法,并结合数据,大大提高你的理解。
一个示例因果图可以在此处查看:

图 3.5 – 因果图
前面的图显示了房地产市场中的关系(这只是一个例子——它并没有显示所有因果关系)。它表明,随着利率上升,房屋销售会下降。房屋销售也受需求和价格的影响。随着价格上涨,价格上涨可以增加需求,因为更多的人想要买房来赚钱,但价格本身是一个障碍。你可以看到,在这个简单的图中存在相反的效果和反馈循环。难怪动态让我们困惑,这经常导致系统出现混乱。每个人都认为他们理解房地产市场是如何运作的,但在复杂的动态面前,真正的理解很难实现。许多商业情况中也存在类似的动态。构建一个预测房价的机器学习模型很容易,但理解整体动态要困难得多。这种缺乏理解可能导致你使用优秀的机器学习模型做出糟糕的决定,因此构建这样的模型对于理解你试图解决的问题的真实性质至关重要。这样的图对于理解和处理混杂变量以及反事实分析也非常有用 [Pearl]。
来自系统动力学学科的因果模型还有另一种表示方法。这种表示方法结合了其他图表的一些想法和因果图,以创建一个可以非常具有洞察力的视图,并且可以轻松地转换为动态模拟模型。系统动力学本身是一个庞大的学科,关于这个主题有许多优秀的书籍和论文[斯特曼]。在这里,我将只介绍这个概念及其外观,以及它如何有用。以下是一个系统动力学(也称为库存和流量)图的示例:

图 3.6 – 系统动力学(库存和流量)图
这个图表将状态图、流程图和因果图的思想捕捉到一个综合的视图中,可以非常具有指导意义。想象一下产品从一个状态变化到另一个状态的过程,从原始产品变为已发货产品。在这个例子中,每个框代表特定状态下的产品数量——例如,组装产品框代表所有已经组装并等待成为成品的产品。这是在完成率的速率下发生的。完成率取决于有多少组装员可以完成这项工作。你还会注意到,一些组装产品出现了缺陷。这些产品以缺陷率的速率流入缺陷产品框。然后它们必须由维修人员修复。由于缺陷,无法达到发货目标,出现了短缺。这种短缺增加了对员工的压力,进而增加了倦怠。倦怠反过来又减少了组装员的人数(他们辞职或生病)。由于组装员人数减少,这减慢了完成率。这反过来又增加了压力,更多的人被转移到维修人员的位置,因为维修可以更快地完成。这导致没有人作为预防者工作,从而导致了恶性循环的持续,过程变得越来越积压。
这种动态在很多组织中都会发生,他们想知道为什么他们总是处于压力之下。一旦图表被布置出来,你就可以看到问题在于他们只是在修复症状,而不是缺陷的根本问题。在这个简单的图表中很容易看出,但在更复杂的情况下,你可以对这些图表进行模拟以找到问题点。这个图表也有助于阐明过程、决策和商业目标之间的关系。这些图表可以模拟以了解决策的商业影响,以及部署机器学习模型的影响。这是展示你努力价值的一种很好的方式,大多数人都能轻松理解。
现在,让我们回到机器学习。如果这个分析没有做,那么很可能是缺陷修复会被标记为问题,你很可能会构建一个模型来预测将产生多少缺陷或预测将发送多少物品。你会构建一个很好的模型,但这并不能解决问题。关键问题是要找到导致缺陷的因素以及如何减少缺陷。这需要制造团队与数据科学团队紧密合作以找到解决方案。再次强调,关键点是除非有人进行这种分析,否则数据科学团队很可能会解决错误的问题。你可能认为这种情况不常发生,但我认为这种情况发生的频率比你想象的要高得多,因为真正的问题往往隐藏很长时间。
通常,最好将这些图中绘制的每个因果关系视为一个假设。然后,图表示了一系列假设。有统计和模拟方法可以用来验证这些假设。为此,你需要开始收集数据或开始发现数据存储的位置。现在我们已经了解了这些图,让我们看看我们如何找到问题的根源。
解决业务问题的根源
一些问题容易解决,而另一些问题则证明要难得多。其中一个原因是,当一个问题的症状出现在其他地方并且经过一段时间之后,就很难知道问题真正在哪里。根据定义,症状是明显可见的——它们是明确的,你可以轻松收集关于它们的数据。另一方面,潜在的问题可能发生在某个其他部门或建筑中,因为它不会立即引起疼痛,所以是不可见的。很可能是没有收集关于根本问题的数据,或者收集这些数据可能过于困难。鉴于机器学习的特性,几乎可以肯定的是,你得到的所有数据都是关于症状的。如果你很幸运,你可能会得到一些关于根本问题的数据(尽管你不会知道它)。
一种开始的方法是使用一种称为“五问法”的旧方法,它基本上涉及连续问五次“为什么?”以找到根本原因。很多时候,每个层次可能会有多个原因。因此,在实践中,许多人使用另一种称为“鱼骨图”的图来捕捉这些信息,如图所示:

图 3.7 – 鱼骨图
在前面的鱼骨图示例中,我们试图理解为什么会出现软件缺陷问题。当你提出为什么的问题并捕捉到原因时,你开始添加潜在的原因。你继续这个过程,直到你觉得你已经捕捉到了问题的本质。正如你所见,这基本上是一个因果图,可以用作构建你系统因果模型的一个起点,同时保持对特定问题的关注。然后可以收集数据来证实或拒绝假设。正如你所见,这个鱼骨图将为我们看到的图 3.6中的系统动态图提供信息。这个练习的关键点是理解根本原因并着手解决这个问题。我希望你开始意识到,准确预测某件事并不总是等同于解决实际问题,你必须对你的项目设置 ML 问题时要格外小心,以确保项目成功。此外,请注意,导致问题的可能原因可能有多个,你可能必须解决多个问题才能看到问题的显著缓解。另一方面,如果不了解全貌,只解决一个方面(比如员工倦怠)可能会导致你得出结论,认为倦怠不是一个问题。在组织中,得出错误的结论并将其纳入组织的神话——“我们已经尝试过了,但这不起作用.”并不罕见。
既然我们已经确定了需要解决的商业问题,让我们看看如何将其转化为 ML 问题。
定义 ML 问题
在我们深入探讨 ML 的细节之前,重要的是要注意,并非所有问题都适合用 ML 来解决。一个问题要成为好的候选者,它应该具有以下特征(我们现在将只关注监督学习(SL)问题):
-
存在一个明确的或标签值,如果算法可以预测它,将会很有用。在没有算法的情况下,这个值仍然是未知的,需要人的判断,或者需要大量努力才能确定。有时,目标可能不是感兴趣的变量本身,而是计算中的关键组成部分。这部分并不总是显而易见,但你在本章前面的部分所做的问题分析无疑将有助于阐明哪个变量是最好的目标。
-
你可以访问一个足够大的历史数据集,其中包含你希望预测的目标或标签值。你需要创建一个包含相关数据的来源列表,并开始理解它们包含的数据。
-
确定哪种类型的 SL 问题最适合你的问题(回归、分类或时间序列)。有时,你可以将一种类型的问题转化为另一种类型。
-
通常在准确性、可解释性和可理解性之间有一个权衡。对于您的商业问题,考虑什么更重要是很重要的。在许多情况下,我们愿意牺牲准确性以提高可理解性。这反过来又决定了您应该选择哪些算法和解释方法。
您需要审查您的数据集和商业问题定义,以查看是否可以制定一个规范,以满足之前列出的条件。在这样做的时候,可能需要进行一些转换,例如这些:
-
将目标进行转换,使其作为输出更有价值或更适合解决商业问题。以下是一些示例:
(a) 如果目标数值范围非常大或者分布具有高度偏斜,那么您可以尝试将目标进行对数转换作为新的目标。
(b) 如果实际值不如范围重要,那么您可以创建分箱,并使用分箱值作为目标。
(c) 有时,值的改变或变化率可以作为一个更好的目标。
-
基于因果图创建交互特征。以下是一些示例:
(a) 因果模型中的中间变量,这些变量没有直接观察到,但可以通过组合其他各种特征来计算。
(b) 如果您的目标是对数形式,那么创建各种特征的日志可能是有意义的。
(c) 类似地,如果某些特征在商业问题中具有特殊意义,您可能想要对这些特征进行分箱。
(d) 探索创建变化率特征对于您的模型是否重要。
-
识别在因果图中出现但不在您的数据集中存在的缺失数据。根据其重要性和获取的难易程度,您可能希望在构建模型之前收集这些数据。另一种选择是与使用您已有的数据进行模型构建并行启动数据收集过程。在后一种情况下,当您收集到数据时,您总是可以在下一次迭代中重新审视模型。
此外,您还必须考虑您将如何定义和评估错误。哪种指标最适合这个问题?我们在第二章“机器学习基础”中介绍了指标,DataRobot 会自动为问题选择一个合适的指标。我发现大多数时候选择都非常好,所以除非您有充分的理由不这样做,否则遵循推荐是一个好主意。除了指标之外,您还需要考虑您是否更关心特定范围内的错误,而不是其他范围的错误——例如,您可能希望在一个特征的较高价值范围内比在较低价值范围内更准确。在这种情况下,您可以考虑使用这个数值特征(这必须是一个非目标特征)作为计算错误指标的权重。您可以在附加选项卡下的高级选项中找到此设置,如下面的截图所示:

图 3.8 – 其他选项
上述截图显示了选择用作预测权重的特征的选项。请注意,这必须在项目开始时设置。一旦模型构建开始,您就不能更改此设置。
一旦您定义了机器学习问题,DataRobot 就会开始构建模型。我们将在后面的章节中介绍这一点。现在,我们想要讨论当模型构建完成并且现在能够生成预测时会发生什么。
确定预测、行动和后果以实现负责任的 AI
在 DataRobot 中构建和部署模型后,可能看起来我们的工作已经完成——但并非如此。您应该开始分析预测配置文件的外观,并开始与用户和利益相关者讨论将要采取的行动的细节。您帮助构建的模型可能会在您的系统中引入许多变化,并影响其他人。因此,确保这些影响不是负面的非常重要。确保您的模型不会造成伤害被称为负责任的 AI。这将建立在您在理解阶段通过各种图表所做的工作之上。
正如我们在前面的章节中看到的那样,因果图有助于您将特征与目标相关联,我们还可以看到目标如何影响系统的其他部分。该图应揭示目标如何影响关键目标或结果;它还应揭示将改变系统其余部分行为的关键反馈循环,以及给出其他后果的暗示。这使得理解并计算您模型的投资回报率(ROI)相对简单。数据科学团队表达的一个常见挑战是他们发现很难表达模型的影响。正如您现在所看到的,我们从因果角度理解我们的系统所投入的工作也有助于确定模型的企业影响。
很常见的是,大多数系统并不提供免费的午餐——总是有权衡。你的行动可能会改善一个目标,但可能会损害另一个。理解这些权衡并确保你的利益相关者也理解它们非常重要。即使模型将提供正的投资回报率,它也可能在其他领域降低性能,以至于你可能不想继续进行。其中一些后果可能涉及监管或伦理问题。这些领域通常被忽视,直到后来(痛苦地)被发现。进行这种分析的关键好处之一是确保你能够尽早发现问题。
另一种经常使用的机制是模拟系统动态图。这让你能够理解你系统的动态行为,并可以作为虚拟实验。虚拟实验或模拟让你在发布模型之前在一个安全的环境中测试不同的策略。这不仅可以帮助你避免代价高昂的错误——它还经常可以提出改进或策略,以进一步优化收益。许多数据科学项目不成功的原因是,数据科学团队很少这样做,通常没有进行这种分析所需的技能,并且历史上并没有认真对待这一部分。让我们看看一个简单的系统中的 ML 模型示例:

图 3.9 – 影响分析
在这个例子中,你有一个使用一些特征来生成促销价格的定价促销模型。该模型监控销售情况并根据情况更新价格。由于某些原因(数据库更新、审批等),在电子商务网站上更新这些价格存在延迟。这导致销售数据出现滞后,建模团队并不知道这一点,因为建模团队没有理解整个流程以及更新网站价格所需的时间。如果你对这个简单的图表进行分析,你会发现这种带有延迟的反馈循环会产生振荡行为。这意味着定价将始终不准确——有时会更高,有时会更低。这种行为与你在大多数模型结果中看到的行为有些相似,因此这种影响可能会被忽略。即使模型本身没有问题,系统表现也可能不佳。我保持这个例子非常简单,以便说明问题。你可以想象,如果情况更复杂,大多数人可能无法在问题变得太晚之前自己发现问题。
另一方面,你也可以评估你的模型与现状相比将产生多少销售影响。这是展示投资回报率和你的工作商业价值的好方法。由于基于这些图表的模拟是你们业务的视觉表示,大多数人发现它比叙述或电子表格更容易理解。这也帮助获得你 ML 模型的可接受度。
虽然 DataRobot 不帮助解决这些方面的许多问题,但它确实提供了确定你的模型是否具有偏见以及任何受保护特征的机制,并测量模型中存在的偏见程度。这与前面的分析相结合,可以确保你的模型没有偏见,结果不会被用于违反你组织价值观的方式。现在我们对我们模型的预期结果感到满意,我们可以开始部署过程。
运营和产生价值
在你的基础设施中实施模型可能是一项复杂的任务。有些部署方面可以通过 DataRobot 简化,但有些部署方面超出了 DataRobot 的范围,可能相当具有挑战性。让我们讨论以下属于此过程的任务:
-
将模型作为应用程序编程接口(API)部署:首要任务之一是将你的模型作为 API 部署,以便按需提供预测。你必须决定这需要是批量操作还是实时操作。DataRobot 自动化了设置此过程的大部分任务,你可以在几分钟内拥有一个提供预测的 API。
-
与业务系统集成和测试:拥有 API 只是故事的一部分——你现在需要将此 API 集成到你的业务系统中。有时,你可以通过独立的 Excel 文件或网页向用户提供预测,但对于许多用例,集成是必需的。这有时可能需要时间和精力,并可能减慢进度。许多组织开始使用的一种潜在路径是机器人流程自动化(RPA)。如果您的用例适合 RPA 实施,DataRobot 提供了与多个 RPA 工具的集成,可以加快集成过程。
-
构建端用户界面:如果你的用例需要完全自动化,则不需要此功能,但大多数用例将需要一定程度的用户参与。一旦集成完成,你仍需要某种方式让用户与预测进行交互并做出适当的决策。你需要考虑用户如何适应新的业务方式,以及如何使这一体验尽可能无摩擦。实际上,在许多用例中,预测被特别设置以减少现有流程中的摩擦。
-
用户培训:确保您正在计划并为受新模型影响的用户提供培训。创建培训并提供这种培训是提高模型采用率和接受度的绝佳方式。很多时候,这种想法是在事后才出现的,可能会导致延误或降低接受度。
-
用户接受度和变更管理:这通常是一个持续的过程。通常,从一开始就涉及用户和利益相关者是一个好主意。如果用户觉得他们的声音被听到了,这将提高接受的可能性。用户还可以帮助避免数据科学团队自己可能无法发现的潜在问题。经常沟通您为什么要进行这个项目,它如何影响用户,以及他们的工作将如何改变(希望是变得更好),这些都是提高成功机会的好策略。与用户一起构建之前列出的图表是开始这种对话的绝佳方式,也是最终为业务增加价值的方式。正如您所看到的,在模型构建之前和之后有许多事情要做,才能实现价值。难怪项目往往无法成功增加价值。
-
模型监控和维护:一旦模型投入运行,您需要建立机制来监控预测服务和性能。随着时间的推移,性能往往会下降,或者您可能希望提高模型的性能。这需要用新数据更新或重新训练模型。幸运的是,DataRobot 提供了设置监控和模型重新训练的机制,使得这些任务变得非常简单。
摘要
在本章中,我们介绍了一些工具和方法,以帮助您理解您的系统和您试图解决的商业问题。其中一些方法即使是经验丰富的数据科学家也可能感到陌生,但花时间将它们内化并在您的项目中进行实践是非常重要的。考虑到时间压力,其中一些方法可能会觉得没有必要。这就是为什么像 DataRobot 这样的工具是有益的,因为它们可以减少您在重复性任务上花费的时间,让您能够专注于工具无法完成的事情。
希望我已经说服你们,数据科学团队专注于理解问题,并使用自动化工具进行一些模型构建和调优任务,这对组织提供了最佳价值。在这里完成的大部分工作也将在项目后期派上用场,当我们准备将模型实施到组织中时。具体来说,在本章中,我们学习了如何理解更广泛的系统环境,系统是如何运作的,以及为什么它会以某种方式表现。我们还看到了如何找到企业需要解决的根源问题,并将业务问题转化为可以用机器学习解决的问题。然后我们学习了如何确保解决方案解决了正确的问题,并且不会产生意外的副作用。
最后,我们学习了如何确保解决方案被利益相关者接受并得到实施,从而实现商业价值。
我们现在已准备好开始使用一些示例数据集,并开始使用 DataRobot 来帮助我们解决我们发现的业务问题和定义的机器学习问题。
进一步阅读
-
《因果性:模型、推理与推断,第二版》,作者:朱迪亚·佩尔,出版社:剑桥大学出版社。
-
《商业动力学:复杂世界的系统思维与建模》,作者:约翰·D·斯特曼,出版社:Irwin/McGraw-Hill。
第二部分:DataRobot 的全 ML 生命周期:从概念到价值
本节将涵盖使用 DataRobot 构建和部署 ML 模型的全生命周期。完成本节后,您将了解如何从项目开始到结束。尽管任务按线性列出,但在任何实际项目中,这些任务都会迭代发生,并且在许多过程中,您将返回到之前的步骤重新执行一些任务。
本节包括以下章节:
-
第四章, 为 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,低能耗房屋中家电能源使用的数据驱动预测模型,Energy and Buildings,第 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 数据库
-
亚马逊 S3 存储桶
-
Hadoop 分布式文件系统(HDFS)
-
NoSQL 数据库
-
数据仓库
-
数据湖
-
图形数据库
-
数据流
根据数据源的类型,您将使用不同的机制来访问这些数据。这些可能是本地或云端的。根据数据的状态,您可以直接将数据带入 DataRobot,或者您可能需要在将数据带入 DataRobot 之前做一些准备工作。DataRobot 最近添加了 Paxata 功能来帮助这个过程,但您可能无法访问该附加组件。大部分的处理工作是通过 SQL、Python、pandas 和 Excel 完成的。为了本书的目的,我们将只关注 Excel。
如果您对 SQL 和 pandas 不熟悉,那么在有机会的时候开始学习它们将很有帮助:
-
您可以通过访问创建新项目菜单来连接到数据源,如图所示:![图 4.1 – 连接到数据源
![图片]()
图 4.1 – 连接到数据源
-
您可以搜索已定义的现有数据源,或者添加新的数据连接。如果您选择添加新数据连接选项(如图所示),您将看到以下连接选项:![图 4.2 – 数据连接类型
![图片]()
图 4.2 – 数据连接类型
-
您将看到您组织可用的连接选项。这里显示的内容可能与前面的图不同。大多数具有 JDBC 驱动的数据库都受支持,但您可能需要咨询您的管理员。例如,让我们选择MySQL选项,如图下所示:

图 4.3 – 配置数据连接
在前面的图中,您将看到配置 MySQL 数据源的配置参数。其他数据源在本质上类似。在这里,您将输入可以从数据库管理员那里获得的配置设置。如果您要将数据导入 Python 或 Excel 中的数据库,则需要创建类似的连接。
注意
您需要具备一些 SQL 的实际知识或与了解 SQL 的人合作,才能使用这些选项。
为建模聚合数据
从前面的章节中,您可能还记得机器学习算法期望数据集以特定的形式存在,并且它需要在一个表中。然而,为这个表所需的数据可能存在于多个来源。因此,您需要做的第一件事之一就是从多个来源聚合数据。这通常使用 SQL 或 Python 来完成。最近,DataRobot 增加了将多个数据集添加到项目中,并在 DataRobot 内部聚合这些数据的能力。请注意,您可能仍需要在 DataRobot 之外执行一些数据清洗操作,因此如果您想使用 DataRobot 的聚合功能,您需要在将数据带入 DataRobot 之前执行清洗操作。我们将在下一节中介绍数据清洗。如果您选择在 DataRobot 内部进行数据聚合,您必须确保在项目的非常开始阶段就进行此操作(图 4.4):

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

图 4.5 – 二级数据集
在这里,您可以添加新的数据集并定义主数据集和二级数据集之间的关系。对于时间序列问题,您还可以使用此功能将数据聚合到正确的时间尺度,并将其与主数据集连接起来。
请注意,这确实需要您对关系表的工作原理和某些 SQL 概念有一定的了解。如果您不熟悉这些概念,并且不确定要使用哪些索引,请与了解数据库的人合作,以帮助您设置此配置。
数据集清洗
这一步可以在我们之前章节中提到的数据聚合之前或之后进行。在第二章“机器学习基础”中,我们介绍了一些关于数据清洗的概念,所以让我们看看如何在数据集上实际操作。为此,让我们从汽车数据集开始。请参考技术要求部分以访问此数据集的 UCI 仓库:
-
让我们下载两个文件:
imports-85.data和imports-85.names。数据文件是.csv格式,所以让我们将文件重命名为.csv扩展名,并使用 Excel(您可以使用任何文本编辑器)打开它。现在您将看到数据(图 4.6):![图 4.6 – 汽车数据]()
图 4.6 – 汽车数据
-
您会在前面的屏幕截图中注意到缺少标题信息。要检索标题信息,请在任何文本编辑器中打开
.names文件。您将看到属性名称以及它们的定义。在您的.csv文件顶部创建一个空行,然后您将必须手动输入这些属性名称作为文件的第一行。现在让我们将此文件保存为autodata.csv。现在它应该看起来像图 4.7所示:

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

图 4.8 – 交叉表
使用符号的原因是它是风险的指标。根据问题和您试图达成的目标,您可以为此目的选择其他一些特征。目前,我们将使用符号来说明如何操作。还有更复杂的插补方法可用,例如基于 K-最近邻的插补方法,如果您愿意可以探索(scikit-learn.org/stable/modules/generated/sklearn.impute.KNNImputer.html)。
在审查“家用电器能源预测数据集”时,我们发现数据看起来非常干净,不需要进一步清洗。在现实世界的项目中,您几乎找不到没有任何问题的数据集。在时间序列数据集中需要注意的典型问题如下:
-
非常少的数据:您至少需要 35 个或更多的数据点来进行回归分析,以及 100 个数据点来解决分类问题,以便 DataRobot 能够对您的数据做出有用的处理。
-
数据缺失:有时某些时间步的数据可能会缺失。在这种情况下,您可以使用之前或之后时间步的值来为缺失的时间步分配值。您也可以让 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的特征。让我们还创建一个名为cylinder-size的特征,通过将engine-size除以cylinder-count。以下是一些特征的方程:
-
volume = length * width * height -
mpg-ratio = highway-mpg / city-mpg -
cylinder-size = engine-size / cylinder-count
图 4.11 展示了这些特征值看起来是什么样的:

图 4.11 – 车辆数据集的工程化特征
正如你现在所看到的,存在许多可能性来创建新的特征,这些特征可能有助于解决你的问题。许多这些新特征可能并不有用,稍后删除它们是可以接受的。有时,这些特征对客户或利益相关者可能有意义,你可能希望保留它们而不是其他冗余的特征。
让我们看一下电器能源预测数据集文件。使用这个数据集,我们可以创建以下特征:
-
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)
新的数据特征将如图 图 4.12 所示:

图 4.12 – Appliances Energy Prediction Dataset 的工程特征
正如你所见,这些功能利用了我们通过与领域专家交谈或在网上进行研究所能找到的领域知识。你可能通过研究露点、压力和能见度等主题,找到更多这样的功能。自动化系统可能很难自己捕捉到所有这些特征,但另一方面,自动化系统可能能够基于这些特征找到一些额外的有趣特征。最近,DataRobot 也开始添加一些自动进行特征工程的能力,但这些能力相对有限。这些能力非常有用的一个领域是时间序列问题。在这个特定领域,这些能力在尝试大量难以自己匹配的特征时极为有帮助。话虽如此,将你的领域知识通过工程特征注入模型的责任仍然在你。
摘要
在本章中,我们介绍了帮助您为构建模型准备数据集的方法。虽然 DataRobot 正在开始提供对许多数据准备任务的支持,但许多这些方法仍需要在 DataRobot 之外应用。正如我们讨论的,许多这些任务目前无法自动化,并且需要领域理解来做出适当的决策。
具体来说,在本章中,我们学习了如何连接到各种数据源以及如何从这些源汇总数据。我们研究了如何处理缺失数据问题以及其他在建模前应该进行的数据操作。我们还介绍了创建新特征的方法,这些新特征对于提高模型性能可能非常重要。
我们现在处于一个阶段,我们将几乎完全在 DataRobot 环境中工作,以分析数据和构建模型。在下一章中,我们将使用 DataRobot 来分析数据集。
第五章:使用 DataRobot 进行探索性数据分析
在本章中,我们将介绍与使用 DataRobot 探索和分析您的数据集相关的任务。DataRobot 执行许多您需要执行此分析的功能,但您仍然需要自己理解这些功能。
到本章结束时,您将学会如何利用 DataRobot 进行探索性数据分析(EDA)。在本章中,我们将涵盖以下主要内容:
-
数据摄入和数据目录
-
数据质量评估
-
EDA
-
设置目标特征和相关性分析
-
特征选择
数据摄入和数据目录
现在我们已经准备好了数据集,我们有两种选择将它们带入 DataRobot。我们可以访问创建新项目/拖拽数据集页面(图 1.5)或AI 目录页面(图 1.17)。如果数据集相对较小,我们可能更喜欢从创建新项目方法开始。经过几次迭代后,当数据集稳定下来,您可以将其移动到AI 目录页面,以便在其他项目中重复使用。
让我们从上传我们在第四章,为 DataRobot 准备数据中创建的汽车数据集作为本地文件开始。您可以将项目命名为Automobile Example 1,如下面的截图所示:

图 5.1 – 上传新项目数据集
您会注意到 DataRobot 自动开始分析数据并执行快速探索性分析。您可以看到它发现了30个特征和205行数据。
注意
如果您正在使用包含多个工作表的 Excel 文件,请确保您想要的数据位于第一个工作表中。
数据质量评估
DataRobot 还会进行数据质量评估,并在发现任何数据问题时通知您,如下面的截图所示:

图 5.2 – 数据质量问题
在这种情况下,它已在八个特征中发现了异常值。您可以查看详细信息,看看这些是否看起来可以接受,或者您需要删除或以其他方式修复这些异常值。我们将在下一节探索和分析这些特征时这样做。
注意到它还检查了任何特征中是否存在伪装的缺失值或过多的零。这些可能难以手动检测,并且可能对您的模型造成问题,因此如果出现这些问题,修复这些问题很重要。例如,您在第四章,为 DataRobot 准备数据中看到,我们已经修复了normalized-losses特征中过多零的问题。如果我们之前没有这样做,DataRobot 会提醒我们修复此问题或过滤掉这些行后再继续。它还会在选定目标特征后进行额外的分析。
你将对 Appliances Energy 数据集执行相同的流程。
EDA
正如你在上一节中看到的,DataRobot 自动对数据集进行了初步分析。让我们看看我们将如何审查这些数据并从中获得洞察。如果你向下滚动页面,你会看到一个特征表及其特性的概述,如下面的截图所示:

图 5.3 – 数据分析概览
你可以看到,在这个表中,DataRobot 已经计算并列出了关于特征的数据质量问题的任何担忧,它是什么类型的变量,数据集中有多少唯一值,以及有多少值是缺失的。这些都是非常重要的特征,你需要审查所有这些,以确保你理解它们在告诉你什么。
例如,DataRobot 选择的变量类型是你预期的吗?如果你查看num_of_doors,你会注意到这是一个分类变量。尽管这是正确的,因为数据是以文本形式存在的,但你都知道这实际上是数字。你可能想修复这个问题(就像我们在第四章,为 DataRobot 准备数据中为num_of_cylinders所做的那样)。提前这样做将减少后续的重工作和浪费的努力。同样,你会注意到num_of_doors有两个缺失值。如果这个数字更高,我们就会尝试解决缺失值,正如在第四章,为 DataRobot 准备数据中讨论的那样。此外,注意唯一值。对于某些特征,我们期望有许多唯一值,而对于其他特征,则不是。检查 DataRobot 发现的是否与你的预期一致。如果不一致,尝试确定原因。当分类变量有大量唯一值时,请特别注意。我们很快就会讨论如何解决这个问题。
对于数值特征,你还会看到一些汇总统计信息,例如平均值、中位数、标准差(标准差)、最小值和最大值。请为每个特征进行审查,看看它们是否都看起来合理。如果你点击任何特征行,它将展开并显示更多详细信息,如下面的截图所示:

图 5.4 – “symboling”特征详情
在这里,你可以看到所有值的直方图。你现在可以看到这些数据是如何分布的。需要特别注意的一个方面是你没有太多数据的地方。例如,你可以看到对于值-2可用的训练数据量非常有限,因此我们预计在尝试预测这些值时可能会出现问题。现在,让我们看一下以下截图中的normalized_losses的详细信息:

图 5.5 – “normalized_losses”特征详情
在这个视图中,我们可以看到,在 "make" 特征周围似乎几乎没有损失,我们可以看到它的分布情况:

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

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

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

图 5.9 – "engine_type" 的特征细节
在这种情况下,我们发现一种类型占主导地位,而一些类型几乎没有任何代表。查看这种分布,您可能希望创建另一个特征,将此转换为二进制值,对于每种其他类型都是 "ohc" 和 1。这也会在数据集中创建一些平衡。
请记住,这可能会或可能不会证明是有用的。您必须在您的模型中尝试它,看看什么有效。现在,让我们看一下下面的截图,看看 "num_of_cylinders" 和 "cylinder_count",这是我们数据准备期间创建的一个特征:

图 5.10 – "num_of_cylinders" 和 "cylinder_count" 的特征细节
正如您所看到的,尽管数据相同,但转换后的值与您首次查看直方图时得到的印象不同。数值值是数据的更准确表示,应该比分类值导致更好的模型。
希望我们已经强调了 DataRobot 自动提供的内容以及通过查看 DataRobot 生成的图表可以获得哪些类型的见解。我们现在准备好设置我们的目标特征并进行额外的分析。
设置目标特征和相关性分析
到您达到这个阶段时,您应该已经对您试图解决的问题以及应该的目标特征有一个相当好的了解。使用不同的特征作为不同用例的目标并不罕见。有时,您会将转换后的特征设置为目标(例如,特征的日志)。对于汽车数据集,我们想要预测汽车的价格。一旦您选择了目标特征,如下面的截图所示,它将分析该特征并提供一些建议:


图 5.11 – 设置目标特征
您可以从前面的截图看到,它展示了价格是如何分布的。DataRobot 也提醒说,一些目标值是缺失的。理想情况下,我们在上传数据集之前应该过滤掉带有缺失目标值的行。您还会注意到,DataRobot 将其描述为一个回归问题。另一个需要注意的事项是,它选择了Gamma Deviance作为优化指标。您可以在第二章,“机器学习基础”中了解更多关于这个指标的信息,或者您可以在 DataRobot 的帮助部分中更详细地探索它。目前来看,鉴于价格值的广泛差异,这似乎是一个不错的选择。
在我们点击开始按钮之前,我们应该探索高级选项。这样做的原因是,一旦您点击开始按钮,您就不能更改选项。话虽如此,如果没有完全理解数据,往往很难做出所有正确的选择。克服这个问题的方法之一是暂时忽略高级选项,并继续探索。
一旦我们知道我们想要什么,我们就可以创建一个新的项目并选择合适的选项。您可以看到这是一个迭代的过程,我们经常会尝试一些东西,然后回来重新做一些工作。此外,请注意,图 5.11 中的建模模式设置为快速。这通常是一个好的开始选择。考虑到这一点,我们实际上可以跳过选项并直接点击开始按钮。您会注意到 DataRobot 将开始执行额外的分析,如下面的截图所示:


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

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

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

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

图 5.16 – 特征关联
DataRobot 将这些称为关联而不是相关性,原因在于 DataRobot 使用包含一组紧密相关特征(如engine_size、bore、cylinder_size和stroke)的engine。将这些关系作为一个整体来理解对于解决商业问题可能非常重要。在这个特定案例中,它告诉你你不能单独修改这些中的一个。
改变气缸直径将影响许多其他特征,即使你的模型最终没有包含这些特征。忽略这些方面通常会导致下游问题,所以请特别注意这些关系。
通过按重要性排序关联,你可以获得额外的见解,如图下所示:

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

图 5.18 – MI 值
这让你对这些值的相对规模有了更好的感觉。在这个视角下,我们可以看到,期望对价格的影响非常小。这似乎有点反直觉,值得进一步调查。为此,我们可以通过点击价格和期望来查看关联细节,如图下所示:

图 5.19 – 关联对细节
在这里,我们可以看到,对于相同的期望值,价格可能会有很大的变化。尽管如此,我们仍然可以看到,平均而言,涡轮增压的价格更高。基于这一点,我们将将其保留在模型组合中。我们还应该与领域专家讨论,看看为什么它没有与价格更强烈地相关联。这些讨论可能导致创建其他可能阐明这种关系的特征。另一方面,价格和车门数量之间的关系看起来并不很有趣。
仔细审查关联对,看看可以从中获得哪些见解是个好主意。至少,要审查那些值非常高或非常低的关联。具体来说,要寻找非线性关系。例如,让我们看看 curb_weight和highway_mpg之间的关联,如图下所示:

图 5.20 – curb_weight 和 highway_mpg 之间的关联
在这里,你会注意到,随着 curb_weight的增加,每加仑英里数(MPG)的值会减少,这是符合直觉的。我们还看到,曲线在更高的重量处开始变平。这可能是由许多原因造成的,因为影响 MPG 的其他因素并不随着重量的增加而增加。
注意,虽然这可能会或可能不会影响模型的预测准确性,但理解这些关系是确定基于模型采取的行动的关键。例如,对于重量大于curb_weight和drive_wheels的重量,重量减少可能不会为 MPG 带来很大的好处,如下面的屏幕截图所示:

图 5.21 – curb_weight与drive_wheels之间的关系
在前面的屏幕截图中,我们可以看到curb_weight受到drive_wheels选择的影响。如果我们在这两个特征中同时使用我们的模型,模型可能会给予curb_weight更高的优先级,并且可能发现drive_wheels的使用价值不大。因此,商业用户可能会将drive_wheels视为不太重要。
如你所见,这并不正确,因为curb_weight本身受到drive_wheels的影响。有时,如果不够小心,一个精确的模型可能会给出错误的印象。DataRobot 可以进行这种分析并生成这些图表,但正确理解和解释这些图表的责任在你。
让我们再次看看我们之前查看的一些单个特征图。为此,让我们查看图 5.13中显示的特征细节,并点击curb_weight。这将显示关于该特征的详细信息,如下面的屏幕截图所示:

图 5.22 – curb_weight的特征细节
你会注意到,我们现在在这个图表中有了更多的一些信息。具体来说,我们现在可以看到价格如何随着curb_weight的变化而变化,以及curb_weight值的分布情况。观察这些关系可以为你提供额外的洞察力,尤其是在关系非线性时。例如,让我们看看以下屏幕截图中的highway_mpg的详细信息:

图 5.23 – highway_mpg的特征细节
如你所见,随着 MPG 值的增加,价格呈指数下降。鉴于这种非线性似乎也存在于其他特征中,尝试通过取价格的对数来创建一个新的目标特征可能是有用的。同样,通过查看其他特征,你可以得到一些关于特征转换的想法,这些转换可能是有益的。有些人可能会想知道为什么我们应该这样做,因为新的算法可以处理非线性。虽然这是真的,但如果从业务理解的角度来看是有意义的,仍然最好将你的非线性问题进行转换。此外,这也允许算法将计算能量集中在其他可能被忽视的领域。
现在我们已经理解了特征,并且已经按需进行了转换,我们可以专注于选择一个特征集来开始建模过程。
特征选择
特征选择背后的基本思想是选择对目标具有高度重要性的特征。此外,我们还想移除与其他特征高度交叉相关(或具有高互信息值)的任何特征。在 DataRobot 中,所选的特征集以特征列表的形式表示。如果您点击页面左上角的特征列表菜单,如图所示,您将看到 DataRobot 为数据集创建的特征列表:
![Figure 5.24 – Feature Lists]
![img/Figure_5.24_B17159.jpg]
![Figure 5.24 – Feature Lists]
在这里,您将看到一个包含所有原始特征、基于单变量分析(即,逐个分析特征)的选择特征,以及包含最重要特征的列表。DR Reduced Features M8列表或单变量选择列表看起来是良好的起点。点击项目数据菜单返回数据视图。现在,让我们通过从特征列表下拉菜单中选择单变量选择来检查单变量列表,如图所示:
![Figure 5.25 – Selecting a feature list]
![img/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.2 – 高级选项
在这里,您可以查看分区选项。您可以看到默认设置,并且可以根据需要更改它们。由于我们拥有的数据量非常有限,我已经将交叉验证折数减少到3,将保留百分比减少到 15%。您可以轻松更改这些值,并根据需要使用不同的设置运行。接下来,我们点击智能降采样选项卡,如下面的截图所示:

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

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

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

图 6.6 – 更多选项
在这里,您可以设置选项以限制运行时间,限制目标变量预测的值,设置随机种子,或为特定特征添加权重。目前,我们看不出有必要更改这些默认设置。
这完成了配置过程,我们现在可以构建模型。
构建模型和模型排行榜
一旦我们对配置设置进行了任何更改,我们可以向上滚动并点击开始按钮。DataRobot 现在将自动构建模型,如下面的截图所示:

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

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

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

图 6.10 – 理解和特征影响选项卡
您会看到并非每个模型都会计算特征影响,所以请点击启用特征影响按钮,让 DataRobot 进行计算。一旦点击,DataRobot 将开始计算影响并显示结果,如图所示:

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

图 6.12 – 导出特征影响
您可以将此信息下载为.csv文件以更详细地探索它。让我们使用 Excel 打开.csv文件来查看特征影响,如下面的截图所示:

图 6.13 – 整个集合的特征影响
如您所见,最后七个特征贡献不大,我们可以尝试移除它们并查看影响。像 DataRobot 这样的工具的一个好处是运行这些实验非常快速且简单。现在我们知道我们想要做什么,让我们回到特征影响屏幕。注意左下角的+ 创建特征列表按钮。点击该按钮将弹出一个创建新特征列表的对话框,如下面的截图所示:

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

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

图 6.16 – 带有新模型的排行榜
如您所见,使用新特征列表构建的模型表现更好,现在位于排行榜的顶部(忽略已部署的模型,因为它使用了整个数据集)。正如我们所见,移除贡献不大的特征实际上有助于模型(即使只是略微)。鉴于这个模型使用的是更小的特征集,它是一个更理想的模型。我们可以根据需要继续这个过程。在此阶段,我们也开始更深入地查看模型的细节和它产生的结果。我们将在下一章回到这个话题。现在,我们想看看模型蓝图或 DataRobot 构建模型所采取的步骤。
理解模型蓝图
DataRobot 在构建模型时执行了许多数据转换和超参数调整。它利用了许多最佳实践来构建特定类型的模型,这些最佳实践以蓝图的形式编码。您可以检查这些蓝图,以了解这些最佳实践,并更好地理解构建模型所采取的步骤。要检查模型的蓝图,您可以点击一个模型,转到描述标签页,然后选择蓝图标签页,如图下所示:
![img/Figure_6.17_B17159.jpg]
![img/Figure_6.17_B17159.jpg]
Figure 6.17 – 模型蓝图
在这里,您可以查看工作流程步骤。如您所见,这个蓝图相当简单。这是因为梯度提升方法非常灵活,不需要太多的预处理。让我们看看另一个表现相当不错的模型,即广义加性模型 2(Gamma 损失)的蓝图,如图下所示:
![Figure 6.18 – 广义加性 2 模型(Gamma 损失)的模型蓝图
![img/Figure_6.18_B17159.jpg]
Figure 6.18 – 广义加性 2 模型(Gamma 损失)的模型蓝图
在这里,您可以看到需要对分类变量和缺失值进行预处理。现在让我们看看另一个深度学习(DL)模型的蓝图。选择使用训练计划的 Keras 精简残差神经网络回归器模型,并选择蓝图标签页,如图下所示:
![Figure 6.19 – Keras 的模型蓝图
![img/Figure_6.19_B17159.jpg]
Figure 6.19 – Keras 的模型蓝图
您可以看到,对于 Keras,我们需要进行数据清洗、缩放和分类变量的 one-hot 编码。您可以通过点击模型框来检查这些步骤的详细信息,如图下所示:
![Figure 6.20 – 处理步骤详情
![img/Figure_6.20_B17159.jpg]
Figure 6.20 – 处理步骤详情
您现在可以查看用于构建模型的任务执行情况和使用的超参数设置的解释。同时,还有一个链接可以查看关于所用方法的更多详细信息。在检查蓝图后,您可能会发现您最喜欢的算法没有被 DataRobot 使用,并且您可能会想知道该算法或模型的性能可能是什么样的。为此,您可以在页面左上角的仓库标签页上点击,如图下所示:
![Figure 6.21 – 蓝图仓库
![img/Figure_6.21_B17159.jpg]
Figure 6.21 – 蓝图仓库
在这里,您将看到 DataRobot 提供的所有与此项目相关的蓝图。如您所见,这是一个相当全面的列表。请注意,此列表将因项目类型的不同而有所变化(例如,时间序列项目)。您可以选择这些蓝图中的任何一个来构建一个模型。新模型将显示在排行榜上,您可以在那里评估其相对性能。目前,我们对此特定项目不感兴趣。
在这一点上,我们感兴趣的是比较一些模型,以查看它们在更详细水平上的比较效果。为此,让我们点击顶部的最右侧标签,称为模型比较。这将打开一个页面,您可以选择任何两个模型来查看它们的匹配情况,如下面的截图所示:

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

图 6.23 – 双重提升图
双重提升图用于比较两个模型的结果。对于双重提升图,结果是根据两个模型之间的差异进行排序,而不是根据目标值。然后,这些值被分箱以显示每个分箱的结果。阴影区域描述了两个模型之间的差异。在这里,我们再次看到这两个模型在性能上非常相似。
如果两个模型在整体上得分良好,但在此图表中的数值偏差较大,那么这些模型将是创建集成模型的良好候选者。
构建集成模型
众所周知,模型集合往往表现更好,并且也更稳健。DataRobot 提供了自动构建集合模型的功能;然而,这确实需要一些权衡。例如,集合模型需要更多的时间和计算资源来构建和部署,并且它们通常也更不透明。这就是我们最初没有从构建集合模型开始的原因。一旦您构建了几个模型,并且对提高模型准确率感兴趣,您可以选择构建集合。正如我们在前面的章节中看到的,我们必须明确选择构建集合的选项,这也意味着我们无法计算 SHAP 值。让我们看看这是如何操作的。首先,让我们转到项目列表页面,它显示了您当前的所有项目,如下面的截图所示:

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

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

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

图 6.27 – 包含集合模型的排行榜
您会注意到 DataRobot 已经构建了一个 AVG Blender 模型,这似乎是顶级模型,但提升并不大。混合模型有时可以比单个模型产生更大的提升,因此探索这个选项是值得的。我们可以选择这个模型,然后点击 Describe 选项卡,再点击 Blueprint 选项卡,如下面的截图所示:

图 6.28 – AVG Blender 的蓝图
我们现在可以看到,混合器选择了两个 XGBoost 模型,因此提升并不令人惊讶。在这种情况下,我们不会选择混合模型,而是返回到上一个项目。
摘要
在本章中,我们学习了如何利用 DataRobot 的功能构建和比较模型。正如你所见,DataRobot 使得快速构建多个模型变得非常简单,并帮助我们比较这些模型。正如你所体验的,我们尝试了许多事情,构建了数十个模型。这种快速模型探索是 DataRobot 的关键功能,其对数据科学团队的重要性不容小觑。如果你要自己用 Python 构建这些模型,将会花费更多的时间和精力。相反,我们利用了这些时间和思考来实验不同的想法,并将更多的精力投入到理解问题上。我们还了解到了编码最佳实践的蓝图。这些蓝图对于新晋和经验丰富的数据科学家都是有用的学习工具。我们还学习了 DataRobot 如何为我们构建集成或混合模型。
可能会有一种冲动想要跳过分析阶段,直接开始部署这些模型,但重要的是在进行一些分析之前不要直接跳入这一步。我们现在已经准备好深入挖掘模型,理解它们,并看看我们能否从中获得更多见解。
第七章:模型理解和可解释性
在上一章中,我们学习了如何构建模型,现在我们将学习如何使用 DataRobot 生成的输出理解模型,并利用这些信息解释为什么模型提供了特定的预测。正如我们之前讨论的,这一方面对于确保我们正确使用结果至关重要。DataRobot 自动化了创建图表和绘图的大部分任务,以帮助人们理解模型,但您仍然需要知道如何根据您试图解决的问题的上下文来解释它所显示的内容。这也是为什么即使许多任务已经自动化,我们仍然需要参与过程的人员的另一个原因。正如您可以想象的那样,随着自动化的程度提高,解释结果的任务将变得越来越有价值。
在本章中,我们将涵盖以下主要主题:
-
审查和理解模型细节
-
评估模型性能和指标
-
生成模型解释
-
理解模型学习曲线和权衡
审查和理解模型细节
在上一章中,我们为不同的项目创建了几个模型。DataRobot 在一个项目中创建 10 到 20 个模型,查看和分析所有这些模型的细节将非常繁琐。您不必审查这些模型中的每一个,在最终选择之前只审查前几个模型是很常见的。现在,我们将查看Automobile Example 2项目中的模型排行榜,并选择顶级模型,如下面的截图所示:


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


Figure 7.2 – 特征影响
这是对模型来说最重要的图表之一,因为它显示了特征对 XGBoost 模型贡献了多少。我们可以看到,最大的贡献者是curb_weight、engine_size、horsepower、highway_mpg和cylinder_count。另一方面,cylinder_size和engine_type的贡献很小。虽然cylinder_size确实不是很有预测性,但我们不能忘记预测并不总是最终目标。我们知道cylinder_size对engine_size有影响,这是一个重要的特征。目标可能是利用这些信息找出降低成本的方法。为此,我们可能希望减少engine_size,但你不能直接减少engine_size。为此,你需要减少气缸的大小或数量,这将导致engine_size的减少。有一个因果图来指导你,在确定实现我们目标的最佳行动时变得非常有帮助。
在我们采取行动之前,让我们检查一下以下截图所示的广义加性模型(GAM)的结果:

图 7.3 – GAM 的特征影响
图 7.3显示了 GAM 的重要特征。虽然许多特征看起来很相似,但我们注意到engine_type在这个模型中的重要性相当高,而engine_type在先前模型中的重要性非常低。这并不是错误——它指向了这样一个事实,即许多特征是相互关联的,不同的模型可以从不同的特征中捕捉到信号,并且预测能力不一定等同于根本原因。为了采取行动,我们需要了解导致目标特征变化的根本特征。换句话说,最能预测某事的特征不一定是可以通过改变它来创造目标变化特征的。
为了进一步了解一个特征如何影响目标,让我们在模型的理解选项卡中选择特征效应选项卡,如下截图所示:

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

图 7.5 – engine_size 的局部依赖
前面的截图显示了engine_size和价格之间高度非线性关系。我们看到在engine_size值为180时价格有一个非常显著的上升。如果不与领域专家讨论,很难知道这种效果的真实性。我们可以注意到,对于大于130的尺寸,可用的数据量非常小,因此我们看到的效应可能仅仅是数据不足造成的。就目前来看,它表明价格在超过200的尺寸后趋于稳定,这对企业来说可能是一个重要的洞察。
让我们看一下以下截图中的另一个highway_mpg的局部依赖图:
![Figure 7.6 – highway_mpg 的局部依赖图
![img/Figure_7.6_B17159.jpg]
图 7.6 – highway_mpg 的局部依赖图
图 7.6 显示了另一个高度非线性关系,关键转折点发生在highway_mpg值约为28的地方。这清楚地表明在28附近价格有大幅下降,因此这是一个关键点。这可能是因为法规,低于28会使您处于不同类型的车辆或发动机。我们还注意到,一旦超过那个阈值,任何进一步的变化对价格的影响都不太大(然而,从其他角度来看,它仍然可能非常有影响)。如果您不知道为什么是这样,与您的主题专家(SMEs)讨论这一点很重要。
展示和讨论这些图表的主要目的是向您展示分析这些图表而不是花费所有时间编码这些图表的重要性。由于 DataRobot 会自动为您创建这些图表,您现在可以花时间进行更有价值的分析工作,以帮助改进您的业务。
让我们重新审视engine_size的图表,但这次是针对 GAM,如下面的截图所示:
![Figure 7.7 – GAM 的局部依赖图
![img/Figure_7.7_B17159.jpg]
图 7.7 – GAM 的局部依赖图
图 7.7 显示了 GAM 的局部依赖,与图 7.5相比,我们看到图 7.7在95和180的值周围显示了更清晰的阈值。与领域专家讨论这个问题可以帮助您确定哪个模型更好地代表现实,哪个模型有助于您更好地设定定价。GAM 的一个好处是您可以轻松地平滑这些曲线并调整它们的形状以部署。记住——准确的预测并不总是等同于更好的干预或行动。
GAMs 更容易理解和解释。让我们再看另一个图表,它有助于理解这一点:
![ Figure 7.8 – Feature coefficients
![img/Figure_7.8_B17159.jpg]
图 7.8 – 特征系数
图 7.8显示了 GAM 中不同特征的系数。你会注意到 DataRobot 创建了一些派生特征。你可以点击它们以查看更多详细信息。这提供了系数的高级视图,但还有一个更好的视图,可以更好地理解模型。为此,让我们点击 GAM 的描述选项卡内的评分表选项卡,如下面的截图所示:


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


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


图 7.11 – 特征相对性
在图 7.11中,你可以看到给定特征(如body_style)如何影响价格。GAM 模型本质上是从所选特征中得到的所有贡献的总和。根据评分表,任何人都可以轻松计算价格,这也可以以非常简单的方式进行实现。鉴于单个特征效应是非线性的(但仍非常易于理解),这使得这些模型在易于理解的同时表现出色。GAMs 变得非常受欢迎也就不足为奇了。
我们还想查看一个图表,这个图表在理解特征贡献方面非常有帮助。为此,我们将在页面顶部的洞察菜单项上点击,这将显示此处所示的图表:


图 7.12 – 模型洞察
图 7.12显示了使用常数样条(在这种情况下,如果值在一个特定区间内,则为one;否则为zero)构建的 DataRobot 选定的模型变量效应。你可以参考所选模型的特征效应来查看这些图表之间是否存在任何不一致。
现在我们从哪些特征重要以及它们如何有助于目标值的视角理解了模型,我们可以关注模型的表现。
评估模型性能和指标
在本节中,我们将关注模型在尝试预测目标值方面的表现。让我们首先查看不同模型之间的总体性能比较,如图所示:

图 7.13 – 模型性能对比
前面的截图显示了整体排行榜,我们之前已经见过。在这里,我们可以看到基于 Gamma Deviance 指标的各个模型的总体性能。我们还可以通过点击指标附近的下拉箭头,查看我们可以选择的指标列表,如图所示:

图 7.14 – 性能指标
图 7.14 显示了我们可以选择的各项指标。您通常会在不同指标中看到类似的趋势,即哪些模型出现在顶部位置。一般来说,DataRobot 选择的指标是一个非常不错的选择,如果不是最佳选择。现在让我们通过点击模型并选择 Evaluate 选项卡内的 Lift Chart 选项卡来检查特定模型的性能细节,如图所示:

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

图 7.16 – GAM 的提升图
图 7.16 中的结果看起来与 图 7.15 的结果非常相似,但我们可以看出,对于更高的值,GAM 的表现并不好。我们现在知道 GAM 相比于 XGBoost 模型在哪些具体方面较弱。让我们进一步查看,通过点击 Evaluate 选项卡内的 Residuals 选项卡,如图所示:

图 7.17 – 模型残差
残差似乎围绕平均值分布得很好,但略向负值偏斜。让我们也检查一下 GAM 的残差分布情况。我们可以在以下截图看到输出:


图 7.18 – GAM 的残差
GAM 的残差也分布得很好,但与 XGBoost 模型相比,略微偏斜。总体而言,模型的表现看起来非常好。我们现在可以深入了解单个预测及其解释。
生成模型解释
DataRobot 的另一个关键功能是它自动为每个预测生成实例级解释。这对于理解为什么某个特定预测以这种方式出现非常重要。这不仅对于理解模型很重要;很多时候,这也需要用于合规目的。我相信如果你被拒绝信用,你一定见过生成的解释或提供的解释。生成这些解释的能力并不简单,可能非常耗时。让我们首先看看以下截图所示的 XGBoost 模型生成的解释:


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


图 7.20 – GAM 的模型解释
在前面的截图上,选中的点是用于预测31465.18。对于这个点,我们可以看到导致该价格的主要特征,并且我们还注意到由于engine_size的值为183对 GAM 的贡献较大,因此存在一个减少或负贡献。
整个数据集的解释可以下载并进行分析以获得额外的见解。您也可以上传全新的数据集进行评分并生成这些解释,只需点击上传新数据集按钮即可。
正如您在本章中看到的,不同的模型有不同的性能,使用特征的方式略有不同,并且可理解性水平也不同。在最终选择要使用的模型之前,应该考虑几个其他维度。现在让我们看看模型学习曲线和一些模型权衡。
理解模型学习曲线和权衡
在机器学习(ML)问题中,我们总是试图找到更多数据来改进我们的模型,但正如您所想象的,总会有一个收益递减的点。很难知道何时达到那个点,但您可以通过查看学习曲线来获得提示。幸运的是,DataRobot 通过自动构建这些学习曲线使这项任务变得简单。当 DataRobot 开始构建模型时,它首先尝试在数据的小样本上使用广泛范围的算法。然后使用更大的样本大小构建有希望的模型,依此类推。
在这个过程中,我们发现随着更多数据的添加,性能改进了多少。要查看学习曲线,您可以点击屏幕顶部的学习曲线菜单项,如下面的截图所示:

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

图 7.22 – 用于比较的模型
如果图 7.22中的选择看起来正确,您可以点击计算按钮。现在您将看到所选模型的 学习曲线,如下面的截图所示:

图 7.23 – 学习曲线比较
现在,您可以看到随着样本大小的增加,性能的改进。我们可以看到 GAM 学习非常快,但随着样本大小的增加,XGBoost 模型接管了。我们可以看到这两个模型都将从额外的数据中受益。我们还可以看到,如果我们只有目前数据的一半,那么 GAM 将是明显的赢家。
现在我们可以看看模型的一个权衡——即速度与准确性的权衡。如果您点击页面顶部的速度与准确性菜单项,您将看到一个图表,如下面的截图所示:

图 7.24 – 速度与准确性权衡
你会注意到 DataRobot 构建了一个 AVG Blender 模型,这似乎是顶级模型,但提升并不大。混合模型有时可以在单个模型之上产生显著的提升,因此探索这个选项是值得的。我们可以选择这个模型,并在描述菜单项中的蓝图选项卡上点击。
摘要
在本章中,我们介绍了如何利用 DataRobot 的功能构建和比较模型。正如你所见,DataRobot 使构建多个模型变得非常容易,并帮助我们进行比较。正如你所体验的,我们尝试了许多事情,构建了数十个模型。这是 DataRobot 的关键功能,其对数据科学团队的重要性不容小觑。如果你要自己用 Python 构建这些模型,将会花费更多的时间和精力。相反,我们利用了这些时间和思考来实验不同的想法,并将更多的精力投入到理解问题上。我们还了解了编码最佳实践的蓝图。这些蓝图对于新数据科学家和经验丰富的数据科学家都是有用的学习工具。我们还学习了 DataRobot 如何为我们构建集成或混合模型。
可能会很有诱惑力想要跳过分析阶段,直接开始部署这些模型,但重要的是在进行一些分析之前不要直接跳到那一步。在下一章中,我们将更深入地研究这些模型,以了解它们,并看看我们是否能从中获得更多见解。
第八章:模型评分和部署
在上一章中,我们学习了如何使用 DataRobot 生成的输出理解模型以及为什么模型会提供特定的预测。现在,我们将学习如何使用模型对输入数据集进行评分并创建用于预期应用的预测。DataRobot 自动化了许多评分和生成行级解释所需的任务。
然而,创建预测并不是这些任务的终点。在大多数情况下,这些预测需要被转换成人们或应用程序可以消费的行动。这种将预测映射到行动的过程需要理解业务,因此需要有人来解释结果(在大多数用例中)。在本章中,我们将讨论如何进行这一过程。我们将涵盖以下主要主题:
-
评分和预测方法
-
生成预测解释
-
分析预测和后处理
-
部署 DataRobot 模型
-
监控已部署的模型
评分和预测方法
DataRobot 提供了多种方法来使用已创建的模型对数据集进行评分。其中最简单的方法是通过 DataRobot 的用户界面(UI)进行批量评分。为此,我们需要遵循以下步骤:
-
创建一个包含要评分的数据集的文件。鉴于我们使用的是公共数据集,我们将简单地使用相同的数据集进行评分。在实际项目中,您将能够访问一个新的数据集,您希望为该数据集创建预测。为了我们的目的,我们简单地创建了
imports-85-data.xlsx数据集文件的副本,并将其命名为imports-85-data-score.xlsx。 -
现在,让我们选择预测选项卡,然后选择测试预测选项卡,针对XGBoost(XGB)模型,如图下所示:
![图 8.1 – 批量评分]()
图 8.1 – 批量评分
在前面的屏幕截图中,您将看到有一个选项可以拖放一个新的数据集以将评分文件添加到模型中。
-
让我们选择我们的
imports-85-data-score.xlsx评分文件,并将其拖放到拖放一个新的数据集框中。一旦放下文件,它将被上传,您可以在界面上看到它,如图下所示:![图 8.2 – 计算预测]()
图 8.2 – 计算预测
-
您现在可以点击 Excel 中可以查看的
.csv文件,如图下所示:

图 8.3 – 下载的预测
现在下载的预测文件可以与原始数据集合并,进行进一步分析。
评分数据集的第二种方法是使用 DataRobot 批量预测应用程序编程接口(API),将在下一节中讨论。
生成预测解释
在本节中,我们将重点介绍如何为评分数据集生成预测和解释。在上传评分数据集(如前节所述)后,您现在可以转到理解选项卡,然后选择预测解释选项卡,如下面的截图所示:

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

图 8.5 – 预测解释文件
在前面的截图中,我们看到文件包含预测,以及每个预测的解释。例如,如果我们查看make行,它解释了这辆汽车与基准值之间差异的 5.17%。同样,您可以看到每个特征值的相对贡献。请注意,文件中的特征不是按最重要的特征排序的,并且对于给定行,最重要的特征与其他行可能不同。特征重要性会随行而变化。
现在我们有了预测及其解释,让我们看看如何分析这些内容,并确定如何使用它们采取行动或做出决策。
分析预测和后处理
在我们部署模型之前,分析预测并查看它们是否有意义,错误中是否有某些模式,以及如何将预测转化为可操作的内容,这些都是传统数据科学工具和方法帮助不大,需要依靠判断和其他学科的方法来帮助制定下一步的方面。为此,让我们首先将评分数据集文件与解释文件结合起来。这可以在结构化查询语言(SQL)、Python 或 Excel 中完成。合并后的文件看起来大致如下:

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

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


图 8.8 – 根据 symboling 的平均绝对百分比误差值
现在,我们看到随着symboling值的增加,绝对百分比误差逐渐降低。在这个阶段,除了探索输出数据并从不同角度观察以寻找线索外,没有其他硬性方法来发现洞察。通常,对错误进行排序并查看具有异常大错误的行是一个好主意,然后看看你是否能确定原因。
现在,让我们转向构建数据科学模型最重要的一个方面——理解需要采取哪些行动。现在我们已经有了一个合理的模型来预测价格,随之而来的是一个疑问:我们应该如何利用这些信息? 希望在项目开始时就已经确定了这次练习的目标。让我们假设目标是根据模型的预测来设定新车辆的售价,并提供所有参数,例如engine_size等。我们也可以想象,这样的模型在设计师试图确定不同参数(如bore或width)之间的权衡时,在设计阶段也是有用的。这进一步说明,预测模型可以多次应用于在构建模型时未考虑到的用例。
然而,这要求我们理解业务问题的更广泛背景。这是我们花费时间讨论和理解业务背景的主要原因,正如我们在第三章中讨论的,理解和定义业务问题。回顾那章可能会有所帮助,以刷新那里讨论的概念,因为我们将在那里使用一些介绍的技术,例如因果建模。
为了确定我们如何使用价格预测,让我们回顾一下我们关于价格与其他参数之间关系的了解。在第五章《使用 DataRobot 进行探索性数据分析》中,我们研究了关联分析信息。DataRobot 生成了使用互信息生成的关联强度。我们可以使用这些信息来绘制不同特征之间的网络图,如下面的截图所示。你可以通过为每个特征画一个圆圈,然后创建具有高关联强度的特征之间的线条来完成此操作:

图 8.9 – 特征之间的关联网络图
在第七章《模型理解和可解释性》中,我们看到了价格在SHapley Additive exPlanations(SHAP)值方面的特征重要性是特定于我们选择的模型的。以下可能代表这个问题的因果图:

图 8.10 – XGB 模型的因果图
图表的左侧表示 SHAP 值中最重要的特征。让我们假设实际收取的价格与预测略有不同。价格差异特征反映了某人可能做出的收取与预测不同的价格的决定。价格特征影响销量,这最终影响盈利能力。请注意,这仅反映了一种使用此模型帮助做出定价决策的可能方式。
如果,相反,我们想象我们正在尝试帮助汽车设计团队制定最佳汽车配置,这将也是最有利可图的配置,那么我们可能会以不同的方式看待这个图。这是因为不同的汽车或发动机设计选择也会影响汽车的成本。此外,我们从图 8.9中知道,特征不是独立的。改变缸径特征将改变发动机尺寸和马力特征。因此,当我们考虑做出决策时,我们必须考虑因果影响。这是一个非常简化的视角,你可以想象,对于真实问题,这些图将更加复杂。想象一下,商业领导者通过在脑海中考虑所有这些关系来做出这些决策。这也是为什么许多时候,模型没有被商业用户使用的一个原因。
在我们的示例问题中,图 8.10中显示的因果图相当简单。你可以想象现实世界中的问题,其中这个图将更加复杂。在这种情况下,很难评估模型部署对生态系统的影响,这包括用户和其他利益相关者。复杂问题往往有许多未预见的后果,尤其是当受影响的是人的时候。
在这种情况下,如果潜在影响可能很大,建议在合成或模拟环境中测试新模型。完成测试和影响分析后,我们现在可以部署我们的模型。
部署 DataRobot 模型
DataRobot 使您轻松部署您已开发的模型。为了准备模型进行部署,以下是步骤:
-
让我们解锁项目,以便我们可以看到保留数据集的指标,如下面的屏幕截图所示:
![图 8.11 – 解锁 DataRobot 模型]()
图 8.11 – 解锁 DataRobot 模型
在前面的屏幕截图中,您可以在界面右侧看到解锁所有模型的保留项目选项。
-
您应该在选择了要部署的模型后才能解锁项目。在我们的例子中,我们选择了使用FL1 top23特征列表的 XGB 模型。点击此选项将打开一个对话框,如下面的屏幕截图所示:
![图 8.12 – 解锁项目保留]()
图 8.12 – 解锁项目保留
-
解锁项目是一个不可逆的过程。让我们解锁项目并查看保留指标,如下面的屏幕截图所示:
![图 8.13 – 解锁的项目视图]()
图 8.13 – 解锁的项目视图
图 8.13显示,保留值高于交叉验证值,这是预期的。保留值是模型部署后应期望的性能的更好表示。
-
现在项目已解锁,让我们用 100%的数据重新训练所选模型以提高该模型的表现。为此,点击图 8.13中显示的模型橙色+号。这将打开一个用于更改样本大小的对话框,如下面的屏幕截图所示:
![图 8.14 – 定义新的样本大小]()
图 8.14 – 定义新的样本大小
在前面的屏幕截图中,您可以看到更改样本大小的选项。
-
将滑块拖到100%以表示您希望使用 100%的数据来训练模型,如下面的屏幕截图所示:
![图 8.15 – 设置新的样本大小]()
图 8.15 – 设置新的样本大小
-
您现在可以点击使用新样本大小运行按钮。DataRobot 现在将使用 100%的数据重新训练 XGB 模型。对于 XGB 模型,您现在可以点击预测选项卡,然后点击部署选项卡,如下面的屏幕截图所示:
![图 8.16 – 部署模型]()
图 8.16 – 部署模型
-
接下来,点击部署模型按钮。这将打开一个新页面,如下面的屏幕截图所示:
![图 8.17 – 为模型创建部署]()
图 8.17 – 为模型创建部署
-
您现在可以为您的部署模型命名。您还可以选择部署模型所在的服务器环境,这是由您的管理员设置的。在数据漂移部分,您可以指定是否要跟踪数据漂移或启用挑战模型。您还可以启用预测行的存储,这允许 DataRobot 分析随时间推移的性能。同样,您还可以启用跟踪属性,以进行基于段落的模型性能分析。
-
您现在可以点击
https://app2.datarobot.com。 -
您现在可以调用此 API 来生成预测。您也可以通过点击不同的选项卡查看有关您的部署的其他信息。如果您点击服务健康选项卡,您将看到一个像这样的页面:

图 8.19 – 部署的服务健康
上一张截图显示了价格预测模型的状态。它显示了已完成的预测数量、预测的响应时间以及错误率。截图没有显示任何值,因为我们刚刚部署了此模型。
我们现在可以开始监控这个部署的模型。
监控部署模型
如您现在所猜想的,一旦模型部署完成,数据科学团队的工作并没有结束。我们现在必须监控这个模型,看看它的表现如何,是否按预期工作,以及我们是否需要干预并做出任何更改。我们将按以下步骤进行:
-
要了解它是如何工作的,让我们点击预测选项卡,如下截图所示:
![图 8.20 – 使用部署的模型进行预测]()
图 8.20 – 使用部署的模型进行预测
-
我们现在可以通过拖放文件(在这里,我们将使用在模型训练期间使用的相同文件)到预测源框中,上传要评分的数据集。现在我们可以看到其他选项变得可用,如下截图所示:
![图 8.21 – 计算数据集的预测]()
图 8.21 – 计算数据集的预测
-
选择选项后,我们可以点击计算并下载预测按钮。DataRobot 完成计算后,我们将看到输出文件变得可用,如下截图所示:
![图 8.22 – 下载预测]()
图 8.22 – 下载预测
现在可以下载输出文件并进行分析。由于我们感兴趣的是监控模型,让我们点击服务健康选项卡,如下截图所示:
![图 8.23 – 模型的服务健康]()
图 8.23 – 模型的服务健康
我们现在可以看到,该模型已服务了 15 个请求,平均响应时间为 325 毫秒(ms),错误率为 0%。整体服务健康看起来很好。
-
通过点击数据漂移选项卡,我们可以查看模型的漂移情况,如下面的截图所示:

图 8.24 – 模型的数据漂移
在前面的截图顶部,在价格处。如果你滚动页面,你会看到更多的图表,如下面的截图所示:

图 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#)。
数据集引用
Luis M. Candanedo,Véronique Feldheim,Dominique Deramaix,《低能耗房屋中家电能源使用的数据驱动预测模型》,《能源与建筑》,第 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 – 选择时间序列的目标变量
项目命名为Energy_Prediction,选择的目标变量是total_energy(照明和电器使用的总和)。我们按以下步骤进行:
-
在选择目标变量后,我们选择时间变量和时间序列建模的性质。点击
date特征,它指定了所有读数的日期和时间,如下面的截图所示:![图 9.2 – 选择时间感知函数和时间变量]()
图 9.2 – 选择时间感知函数和时间变量
-
一旦点击了设置时间感知建模按钮并选择了时间特征,平台会要求选择要构建的时间感知模型类型。有两种选项——自动时间序列预测与回测和自动机器学习与回测,如下所述:
-
自动时间序列预测与回测——此选项考虑过去数据来预测未来数据。对于时间序列,需要预测多个未来的点。此类时间感知项目的例子可以是使用去年销售数据来估计百货商店下一个月的每日销售额。
自动机器学习与回测——自动机器学习选项,有时被称为时间外验证,基本上是在一行中创建基于时间的特点,然后使用一个典型的预测模型来预测该行的目标变量。在这里,我们不使用典型的交叉验证方案;相反,这种方法使用旧数据来训练,并保留新数据用于回测。我们项目的上下文问题属于预测类别,因此选择了此选项,如下面的截图所示:
-

图 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 代)模型,在Backtest 1中的比较比率为约 0.76。这表明 Eureqa 模型比基线模型好约 24%。由于保留集指标可能会突出数据中的重大变化,因此它应包含在模型评估中,但不应单独使用。本章的时间序列建模高级主题部分涵盖了评估模型时的其他指示。点击模型名称可以提供关于数据和其过程的具体见解。我们现在转向我们认为对时间序列预测独特的内容,以下使用Eureqa 广义加性模型(250 代)作为示例:

图 9.6 – 原始特征的影响
理解标签页向我们展示了特征影响、特征效应、预测解释和词云功能,这些我们在第七章的模型理解和可解释性中已经遇到过。特征影响显示了特征对模型整体准确性的相对贡献程度。点击特征影响标签页将打开原始特征页面(见图 9.6)。原始特征是它们在数据集中存在的特征。
在total_energy (1440 分钟平均基线))中的其他标签页看起来是基于时间序列的平稳性构建的特征,如下面的截图所示。这是因为它突出了平均 1,440 分钟基线能量对模型准确性的重要性:

图 9.7 – 导出特征的影响
如图 9.7所示,相当数量的派生特征似乎是从时间序列的平稳性中创建的,这本身可能表明这个时间序列相当平稳。尽管如此,在得出这个结论时需要谨慎,因为我们的数据集只包含了 4 个半月的值得数据;例如,我们的数据集只覆盖了 2016 年 1 月到 2016 年 5 月,因此没有涵盖晚夏、秋季和早冬月份。因此,如果我们使用覆盖更长时间范围的数据集,可能会出现季节性。
DataRobot 创建了利用时间序列特性的特征,以提高其模型精度。尽管在本项目中不明显,但在存在季节性或周期性时,DataRobot 会确定周期性变化发生的时间,并相应地创建特征。基于这些信息,它接下来检测季节性模式——例如,在某个时间段内发生的季节性可以通过从时间段的开始计数或从时间段的结束计数来定义。因此,该平台可以检测并构建特征,例如,使用 3 月的最后一个周六的能源使用量来预测 4 月的最后一个周六的能源使用量。以类似的方式,DataRobot 使用基于差分的特征来提高模型性能。它可以使用 3 月第一周的平均使用量作为特征来预测 4 月第一周的使用量。
接下来转到“描述”选项卡,打开“蓝图”选项卡后,我们可以快速理解,这与前面章节中遇到的其他预测项目并没有太大区别:

图 9.8 – 模型蓝图
我们现在已经花费时间构建和理解时间序列预测模型。下一步合乎逻辑的步骤是使用我们选定的模型进行预测。
使用时间序列模型进行预测
DataRobot 为我们提供了使预测变得轻松的工具。对于小于 1 千兆字节(GB)的小数据集,可以使用“制作预测”选项卡在“排行榜”功能中进行预测。这涉及到设置和上传预测数据集,然后在“拖放新数据集”用户界面(UI)功能中进行评分。对于显著更大的数据集,需要部署模型,并使用应用程序编程接口(API)进行预测。在本章中,我们将介绍第一种预测方法。关于 DataRobot 的一般模型部署和与 API 一起使用,在第十二章,DataRobot Python API中进行了广泛讨论。
时间序列模型的排行榜在评分模型方面的拖放方法与传统模型略有不同,如第八章中所述,模型评分和部署。当打开制作预测选项卡时,DataRobot 简要概述了进行预测所需数据的最新性和数量。这个概述与模型开发配置期间建立的预测窗口以及导出的特征基本一致。如下面的截图所示,预测数据集需要至少 4,320 分钟的历史数据,超出预测点前 60 分钟。此外,当模型包含涉及早期时间段的导出特征时,早期时间段也包含在数据集要求中。因为所讨论的模型具有 24 小时差异的导出特征,这增加了对 5,820 分钟的要求。这 5,820 分钟的要求包括一个初始的 60 分钟预测点间隔窗口,4,320 分钟的基础预测要求数据,以及为导出差分特征增加的 1,440 分钟。这使得模型在 1,440 分钟的操作间隔之后,能够在预测点前 2,880 分钟进行预测。其中一些特征在此处展示:

图 9.9 – 制作预测窗口
要进行预测,如果数据格式与训练数据一致,请按以下步骤操作:
-
点击导入数据,允许从本地源、统一资源定位符(URL)、您现有的数据源之一或 AI 目录中摄取数据。如果在默认预测点之后没有找到行,DataRobot 将生成一个模板。为此,预测窗口内必须没有空行,并且模板文件必须满足上传大小限制条件。文件上传后,DataRobot 设置预测点并包括满足预测窗口期望所需的行。
-
在上传数据后,点击计算预测按钮,如图所示,因为上传的预测文件是最新的,没有间隔,并且包含期望的行数:
![图 9.10 – 计算时间序列预测]()
图 9.10 – 计算时间序列预测
图 9.10中的预测设置按钮提供了预测选项,其中预测点可能不是最新的,或者更改了预测的范围。
-
要进行此类更改,请单击 预测设置 按钮,它默认打开 预测点预测 选项卡,如以下截图所示。此窗口提供了一个预测点滑动选项卡选择器,可以通过滑动或输入实际时间值进行配置。然而,无效的日期已被禁用:

图 9.11 – 预测点预测设置
如前所述,可以选择作为预测点的次数是有限的。预测点必须小于或等于最新的一个。在本项目的情况下,这是 2016-05-27 19:00:00:00,这是最新的数据行时间,有 1440 分钟的操作间隔。可以通过类似的操作来改变预测日期范围。理想情况下,应使用 预测范围预测 功能来验证模型,而不是做出未来预测。
在本节中,我们强调了确保我们的时间序列模型预测数据集与训练模型数据集相似的重要性。我们继续进行预测并从模型中解释其他结果。接下来,我们将探讨更多涉及 DataRobot 时间序列建模的高级主题。
时间序列建模的高级主题
在本章中,我们学习了如何在 DataRobot 中配置、构建和使用基本时间序列预测模型进行预测。在前一节中,我们的注意力集中在构建只有一个时间序列的模型。然而,你可能会有这样的情况,需要做出多时间序列的预测。在我们的能源利用问题背景下,我们可能想要预测灯光和电器的使用情况。在其他地方,一家能源公司可能想要在同一模型中预测不同城市或家庭的能源使用情况。现在,我们将深入探讨这类问题的解决方案。此外,我们还将探讨未来其他高级方法可能用于评估我们的时间序列模型的方式。最后,我们将承认计划事件对时间序列的影响,并强调 DataRobot 为处理这种可能性所采取的措施。
本项目使用的数据集突出了灯光和其他电器的能源使用情况。在早期项目中,我们将所有使用量加起来作为我们的目标变量,但在本项目(命名为 Energy_Prediction_2)中,将构建预测每个设备类型使用情况的模型。此数据集现在有两个序列,这意味着时间戳可能会重复,但每个序列中的时间戳必须是唯一的。区分列 Device_type 是分配给使用情况的设备类型的 ID。在将项目验证为时间感知并选择其类型为 Device_type 后:

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

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

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

图 9.15 – 预测准确性窗口
预测准确性窗口突出显示了随着对未来进行预测,模型性能的变化。这个视图使我们能够评估模型性能在时间上的相似性,这表明模型可以在业务中使用。此外,当使用 MASE 性能指标时,它还突出了模型性能显著超过基线模型的情况。如图 9.15 所示,模型在回测 1的性能似乎在 +1,960 分钟标记处开始显著优于基线模型。稳定性视图向用户提供跨时间范围的分数度量。
随着对性能更好的模型的追求,我们需要对建模范式进行一些改变。可用于时间序列建模的默认模型可能无法提供所需性能。在这种情况下,正如在第六章模型构建与 DataRobot中解释的那样,模型存储库提供了选择传统时间序列模型(如自回归积分移动平均(ARIMA))和更近期的模型(如 Keras 长短期记忆(LSTM)和XGBoost(XGB))的选项。根据研究的时间序列的性质,这些建模方法有时会提供更好的性能。
摘要
在本章中,我们广泛探讨了如何使用 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。还提供了用户的Location和Age值。 -
ISBM、Book-Title、Book-Author、Year-Of-Publication、Publisher。 -
书籍评分值要么是隐式的0,要么是显式的1到10之间(数字越高,评分越好)。然而,在本项目背景下,我们将仅关注模型开发中的显式评分。表格还包括用户 ID和ISBN值。
推荐系统概念介绍
企业长期以来一直有向客户推荐其产品或服务的传统。例如,走进一家书店,你可能会看到其他客户购买的热门书籍列表。这是一种简单的推荐系统,因为它为买家提供了潜在产品的快照。
为了在数字经济中取得胜利,企业正变得越来越以客户为中心。以客户为中心意味着公司旨在将客户的需求放在首位。然而,由于客户的需求像客户本身一样多样化,企业需要采取独特的方法来推出他们的产品。这在一定程度上解释了基于流行度的推荐系统的失败,因为它们未能考虑买家的独特档案。因此,随着数字化程度的提高、企业提供的商品增加以及客户需求的多样化,这种方法不太可能取得成功。
有趣的是,数据科学工具可以通过考虑买家的各种需求来提供多种方法,使推荐系统更加智能。
在介绍不同类型的推荐系统时,我们将继续使用书店的例子。
首先,基于物品的协同过滤推荐系统方法根据买家的产品购买历史以及这些产品与其他产品的关联性向书籍买家提出产品建议。因此,如果某个个人购买了书籍 A,而书籍 A与书籍 B有关联,那么就会建议书籍 B。第二种方法,基于用户的协同过滤,在提出建议时考虑了买家之间的相似性。因此,如果买家 A与买家 B相似,且买家 A购买了书籍 C,那么就会向买家 B推荐书籍 C。第三种方法,基于内容的推荐,在提出建议时考虑了书籍和用户特征。最后,混合系统方法在提出建议时结合了基于协同和基于内容的方法。很容易看出,这两种方法都各有优缺点。现在我们将更深入地探讨这些方法以及如何使用 DataRobot 构建基于内容的推荐系统。
构建推荐系统的方法
推荐系统旨在向买家推荐相关产品。由于它们能够考虑买家的独特性,智能推荐引擎为商家创造了数十亿美元的收入,并帮助买家找到相关产品。这对消费者和商家来说都是双赢的局面。已经介绍了创建智能推荐系统的各种数据驱动方法。推荐系统有三种主要方法:协同过滤系统、基于内容的系统和混合系统。以下将讨论这些方法的每个子部分。
协同过滤推荐系统
协同过滤推荐系统的核心思想是利用他人的过去行为来推断个人可能感兴趣的内容。协同过滤方法借鉴了产品与用户之间历史交互的数据存储。表 10.1展示了用户对书籍评分的交互矩阵。每个用户用 1 到 5 的数字对一本书进行评分,其中 5 代表最高程度的享受。在没有评分的地方,假定个人没有阅读过这本书。协同过滤有两种主要类型:基于物品的协同过滤和基于用户的协同过滤。

表 10.1 – 用户/产品交互矩阵
基于物品的协同过滤系统(或物品到物品的协同算法)通过寻找物品之间的相似性,并基于这些相似性进行推荐。这种方法基于根据物品与个人之前喜欢或购买过的物品的相似程度来向个人推荐物品。根据表 10.1,基于物品的过滤方法可以很容易地看出,Book C和Book E在之前的读者中被以相似的方式评分。基于这种物品关系,如果一个人对Book C给予高度评价,就会推荐Book E,反之亦然。因此,由于用户 5对Book E给予了高度评价,但尚未看到Book C,因此提出了对Book C的推荐,因为它们很可能喜欢Book C。
基于用户协同过滤的系统,会在用户之间找到相似性,并基于这些相似性进行推荐。用户间协同算法旨在找到行为相似或处于相同行为邻域的用户,这是通过他们的历史行为建立的。然后算法考虑他们的偏好并做出推荐。这些推荐系统的核心思想是假设如果个体是相似的,那么他们喜欢的东西也会相似。从表 10.1中可以推断出用户 2和用户 4有相似的书籍兴趣。因为用户 4对书籍 D给出了高度评价,所以认为用户 2喜欢书籍 D的可能性很高,因此推荐了这本书。正如我们所看到的,这两种协同过滤方法都是基于相似性这一理念。
相似度度量提供了做出推荐的基础。有几个相似度度量,其中皮尔逊相关系数和余弦相似度是最受欢迎的。其他人则通过邻域来接近这种相似度的测量。K 最近邻算法被用来找到被推荐或推荐给的对象最近的物品或用户。
由于交互数据集容易获取,构建协同过滤系统比基于内容的系统要容易得多,这将在下一节中讨论。然而,推荐系统的协同方法有几个缺点。在表 10.1的背景下,引入了一个没有历史记录的新用户用户 6。很容易看出,协同过滤系统将难以向这位用户做出推荐。对于没有历史数据的项目来说,问题类似。这个问题,也被称为冷启动问题,已经被广泛记录。数据稀疏性是与协同过滤相关联的另一个常见问题。大多数平台和大型企业都有买家和产品。然而,最活跃的用户只会购买一小部分可用的产品。因此,在驱动这些引擎时,存在一个在有意义地计算相似性所需的数据缺口。
基于内容的推荐系统
基于内容的推荐系统根据物品特征和用户档案提出建议。这种方法有一个不同的数据结构作为其基础。基于内容的系统是1和5,该模型是基于回归的,因为它预测一个区间变量。这个模型变成了一个基于内容的推荐引擎。
从前面的讨论中,我们可以看出,基于内容的系统可以轻松缓解冷启动问题,因为书籍和用户很可能有一些形式的描述。与协同过滤系统相比,基于内容的系统更具可扩展性,因为在生产环境中,当需要时可以轻松地进行预测,而不是必须同时为所有用户和产品进行预测。重要的是,即使用户只评价或购买少量产品,基于内容的系统仍然可以表现良好,因为它们关注的是描述,而不是用户或产品。然而,当物品的特征不易获得时,大多数基于内容的系统都会遇到困难。在某些情况下,生成产品的属性可能具有挑战性(例如,如果产品包含图像或声音)。在这种情况下,基于内容的系统将没有描述可以分析。此外,由于日益增长的在线隐私担忧,用户的人口统计信息可能不易获得。协同过滤和基于内容的推荐方法的局限性导致了混合系统的使用。
混合推荐系统
混合推荐系统是推荐系统的一种集成方法。混合系统通过利用两种或更多推荐策略的组合来为用户生成推荐。通过这样做,它们缓解了归因于任何一种策略的限制,从而受益于众人的智慧。
混合系统有几种方法。最常用(也是最容易实现)的是加权方法。在这里,独立推荐系统的分数被汇总以给出一个总推荐分数。汇总方法多种多样,包括基本平均、应用规则和使用线性函数。阶段方法也可以部署。这通常涉及将推荐系统的结果作为另一个推荐系统的输入特征进行整合。因此,阶段 1系统的输出成为阶段 2系统的额外输入。切换方法涉及使用规则在不同的推荐系统之间切换,以利用特定环境下的优势。例如,如果协同过滤被认为给出了更好的结果,切换机制可以使用协同过滤方法,但当出现冷启动时,它可以切换到基于内容的方法。混合系统相对于基于内容的系统的一个优势是,当项目特征难以确定时,可以开发推荐。正如将在第十一章中展示的,与地理空间数据、NLP 和图像处理一起工作,DataRobot 具有先进的图像和文本数据特征提取能力。
在 DataRobot 中定义和设置推荐系统
由于 DataRobot 能够从图像、音频和文本数据中提取特征,它有效地管理了基于内容的推荐系统的特征可用性限制。这一点加上 DataRobot 的自动化机器学习模型流程,意味着它非常适合利用基于内容的优势,同时弥补这种方法的特征不可用性限制。如技术要求部分所述,我们示例中使用的数据集包括三个表。这包括用户表(展示用户档案)、书籍表(概述书籍特征)和评分表(包含用户书籍评分)。由于我们有一个描述书籍的表,另一个描述用户的表,将这些表和评分集合并为基于内容的推荐系统的场景。为此,我们使用了 Jupyter Notebook。图 10.1展示了我们运行的脚本,用于导入数据集、操作数据、合并表并将它作为 CSV 文件写回:

图 10.1 – 在 Jupyter Notebook 中的数据处理
在评分表中,rating的值为0的行被排除,因为这些评分是隐式的。这些行将在“使用 DataRobot 进行推荐系统预测”部分中用来演示如何使用推荐引擎进行预测。通过更改表头以及将ratings、books和users值合并到一个表中,每一行都描述了一个用户和一本书,以及一个评分。数据快照显示在表 10.2中。尽管我们可以使用 Python API 方法(如第十二章,DataRobot Python API)在 Jupyter Notebook 中创建 DataRobot 项目以保持一致性,但我们下载了数据作为一个文件:rating.csv。

表 10.2 – 数据快照
按照在第六章,使用 DataRobot 进行模型构建中建立的过程,我们为推荐系统创建了一个 DataRobot 项目。在这个过程中,我们将rating.csv文件拖入初始项目窗口。这打开了图 10.2中显示的窗口。对于每一行,由于书籍评分被用作用户兴趣的指标,它可以作为目标变量。由于目标变量ratings的性质,这个推荐系统的机器学习模型将是回归模型类型。

图 10.2 – DataRobot 项目启动窗口
如预期的那样,评级的范围是 1 到 10。理想情况下,我们将删除具有隐式评级(0)和 user_ID 字段的行,以创建一个用于建模的稳健数据集。接下来要做的事情是构建推荐系统的机器学习模型。
在 DataRobot 中构建推荐系统
在 组 ID 特征 字段中,user_id 的无驾驶功能是其中一个优势。
如 第六章 Model Building with DataRobot 详细所述,DataRobot 在创建模型时,在模型 存储库 选项卡中的搜索字段中的 Training Schedule 或简单地 Training 开始开发机器学习模型。这将弹出一个相关模型的列表(见 图 10.3):

图 10.3 – 选择最适合推荐系统的先进建模方法
除了选择这些建模方法以包含在创建的模型列表中之外,还基于 Informative Features 进行了 Autopilot Stage 1 的模型,然后执行了所有五个 交叉验证 运行。点击 运行任务 将这些包括到处理队列中。
在创建模型之后,下一步是评估它们的准确性。在此之前,检查 相对重要性 图表以确定我们的模型是否符合常识是很重要的。正如 图 10.4 所示,通过 洞察 窗口打开 变量重要性 窗口为我们提供了探索这些模型的机会:

图 10.4 – 变量重要性
旁边带有 London(伦敦)的值以及标题的一个方面(例如,Kingdom(王国))可能被视为对模型有影响。因此,在这个简化的例子中,创建了一个更高阶的特征,它是 London 和 Kingdom 之间的交互。因此,根据这个新创建的更高阶特征的是否存在,评级预测会相应地发生很大变化。
在模型选择中,使用确定的Keras Slim Residual Neural Network Regressor 使用自适应训练计划(1 层:64 个单元)是表现最好的模型(见图 10.5)。需要强调的是,在某些情况下,测量推荐系统模型的准确性并不那么简单。想象一下,在这种情况下,我们只能有一个1的评分,当一个人购买一本书时,否则将是0。天真地衡量模型的准确性变得有限,因为0评分并不一定意味着个人对物品不感兴趣。这是因为可能个人从未读过这本书。因为一个好的推荐系统会推荐与个人阅读偏好相符的未读书籍,所以很可能有相当比例的误报。这是因为,尽管他们的当前评分是0,但相关用户很可能对阅读它们感兴趣。在这些情况下,召回率类型的指标在评估模型性能时变得更加重要。鉴于我们只确定个人购买物品的情况,合理地单独评估这些情况。因此,模型准确性预测正确阅读的书籍的程度,通常称为召回率,成为一个更合适的指标。

图 10.5 – 推荐系统排行榜标签页
对于推荐系统来说,在决定使用哪种模型时,准确性和预测速度是非常重要的考虑因素。为了使这次讨论有据可依,了解以下两点非常重要:使用推荐系统进行预测主要有两种主要方法。第一种方法是对用户和物品组合进行批处理评分,其中物品尚未被用户阅读。随着物品和用户的增加,这个数据集会呈指数级增长。第二种方法是实时预测。例如,想象一个个人来到一个电子商务平台。这个个人的数据以及产品的数据会迅速评分,建议几乎瞬间完成评分。在这两种情况下,预测速度对于商业成功至关重要。DataRobot 的Keras Slim Residual Neural Network Regressor 使用自适应训练计划(1 层:64 个单元)的预测速度是1.6746,每 1000 次预测的预测速度是35.57毫秒。一些混合模型的验证分数看起来更好,但在预测速度方面要弱得多。

图 10.6 – DataRobots 的速度与准确性对比图
这表明,尽管这个模型非常准确,但在进行预测时速度非常慢。速度与准确性 图表展示了几个模型的速度和准确性的快照可视化。可以使用 模型比较 工具进行更深入的成对比较。为了继续讨论预测,我们现在将转向在 DataRobot 中进行推荐系统预测。
使用 DataRobot 进行推荐系统预测
在 DataRobot 上创建建议非常简单。我们使用拖放方法(如前几章所述),因为我们的预测数据集很小。对于更大的数据集(超过 1 GB),这是推荐系统的典型情况,建议使用 DataRobot 预测 API。创建模型和进行预测的 API 方法在 第十二章,DataRobot Python API 中有详细说明。
我们示例中的预测数据集大小为 64 MB,因此拖放方法是合适的。对于这种预测方法,我们指定了要从原始数据集中使用的列。理想情况下,我们至少需要一个物品标识符和一个用户标识符。如图 图 10.7 所示,我们选择在我们的预测中包含 ISBN、user_id 和 title 字段。我们将预测数据集拖放到指定区域。像往常一样,这个数据集很快就被评估了,我们面前出现了 运行外部测试 或 计算预测 选项。
![Figure 10.7 – A recommendation engine prediction setup
![img/Figure_10.09_B17159.jpg]
Figure 10.7 – A recommendation engine prediction setup
在这个阶段,我们点击 .csv 文件(见 表 10.3)。如前所述,预测集是从原始数据集中抽取的,其中评分是隐式的(因此评分分数为零)。因此,预测数据集只包含可能的人-物品交互的有限样本。一些用户(例如,user_id 为 8 的用户),大约有 10 项评分,而一些用户只有 1 项评分。在理想情况下,所有个人未看到的物品都应该被评分。话虽如此,向用户提供的建议是按照预测的兴趣顺序排列的。对于用户 8,首先提供的是名为《A Second Chicken Soup for the Woman's Soul (Chicken Soup for the Soul Series)》的书籍。在某些情况下,使用的是前 n 条推荐。在我们的案例中,"top n" 指的是,根据预测值,为每个用户选择前 n 本书籍。
![ Table 10.3 – A recommendation engine sample prediction
![img/Figure_10.10_B17159.jpg]
表 10.3 – 推荐引擎样本预测
所选模型可以使用 DataRobot 部署为REST API,如第八章中所示,模型评分和部署,然后可以通过 DataRobot API 调用(我们将在第十二章中讨论,DataRobot Python API)对数据进行评分。某些 DataRobot 模型可以下载为JAR文件,可以与其他应用程序集成以进行实时预测。在其他地方,可以使用不同的用户-项目交互进行批量预测,然后存储在大数据存储表中,如Google Cloud BigQuery。
摘要
在本章中,我们介绍了并评估了推荐系统的不同方法。我们考察了基于内容和协同过滤推荐系统的数据结构需求,并讨论了它们的潜在假设。然后,我们指出 DataRobot 在从具有挑战性的数据类型(例如,图像数据)中提取特征方面的优势,这些数据类型通常限制了基于内容系统的使用。然后,我们说明了如何使用 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)。IJCCI 2016,ISBN 978-989-758-201-1,第 62-68 页。DOI: 10.5220/0006040700620068
地理空间、文本和图像数据的概念性介绍
正如我们使用不同的感官来全面理解周围的物体一样,一个机器学习(ML)模型也受益于来自不同类型传感器和来源的数据。仅有一种类型的数据(例如,数值或分类)会限制模型的理解、可预测性和鲁棒性水平。在本节中,我们将更深入地讨论不同数据类型在构建模型中的商业重要性、相关挑战以及必要的预处理步骤,以减轻这些挑战。
地理空间人工智能
地理空间理解对某些行业的决策制定有着长期的影响,包括矿产开发、保险、零售和房地产。虽然数据科学的商业重要性已经确立,但基于位置的人工智能才刚刚开始获得认可。在提高业务绩效中使用机器学习凸显了在构建预测模型时,通过添加基于位置的信息和特征来增强数据集的重要性。
主要由分类数据和数值数据构建的典型机器学习(ML)模型对实现商业目标做出了巨大贡献,但决策不仅仅受数值和分类信息的影响。实际上,事件发生在特定的地点。为了使位置上下文有效地呈现商业洞察和预测,机器学习模型需要基于位置的信息。一种地理区域有效的方法可能在另一个地理区域不适用。
使用机器学习和基于位置的信息的商业影响潜力伴随着几个挑战:
-
数据集、工具和人员技能的缺乏。
-
将机器学习管道与原生基于位置的分析技术连接起来并不简单。
-
只有少数 R 和 Python 包具有地理空间功能。
-
理解这些能力需要分析师进行进一步的教育和培训。
DataRobot 的位置人工智能能力有助于缓解这些挑战。该位置人工智能能力通过增加一系列地理空间分析和建模工具来补充现有的 AutoML 体验。使用 DataRobot,可以从数据集中选择位置特征,但位置人工智能能力使平台能够自动识别地理空间数据并创建地理空间特征。可以上传多种地理空间数据文件格式。这些包括 GeoJSON、Esri 形状文件和地理数据库、PostGIS 表,以及传统的纬度和经度数据。
自然语言处理
作为人类,我们通过大量词汇进行有效沟通,无论是否对使用的词汇量有限制。除了词汇之外,肢体语言、语调和词汇的上下文对于有效沟通至关重要。例如,使用相同的词汇组,猫比狗大与狗比猫大具有不同的含义。自然地,人类根据自由文本进行理解、得出结论和预测未来。自由文本的使用带来了有价值的信息,从中可以挖掘出丰富的见解。然而,由于自由文本缺乏一致的结构,它们对机器处理构成了挑战。
对话和其他形式的自由文本是杂乱无章且无结构的,因为它们无法整齐地放入传统的行和列的表格中。自然语言处理(NLP)位于数据科学和语言学的交汇点,涉及系统地使用高级过程进行分析、理解和从自由文本中提取数据。通过 NLP,科学家可以利用自由文本生成有价值的见解,这些见解随后被集成到构建性能更好的模型中。文本挖掘允许识别与某些结果相关的独特词汇或词汇组。例如,在房价预测案例中,房屋的描述提高了模型在估计房价方面的可预测性。考虑到这一点,描述也影响了个人购买房屋的决定。个人购买房屋的倾向影响了房地产定价。NLP 算法可以识别词汇顺序的影响、影响词汇或短语以及词汇在句子中的上下文。
自然语言处理(NLP)是机器能够从文本中提取重要信息的关键。因此,NLP 允许机器通过给文本一个数字分数来决定自由文本中描述的情感,表示其对主题或事件的情感。同样,它有助于识别某些词汇最有可能属于的类别。这种能力催生了包括文本分类、命名实体识别、情感分析和文本摘要在内的多种应用。
使自由文本提供有用的见解或集成到模型中并非易事。正如之前所提到的,原始文本没有结构,因此需要引入结构。此外,许多词汇具有相同的意义,同一个词在不同的上下文中可能有不同的含义。在典型的分析过程中,需要采取许多步骤来规范化自由文本。至少需要以下四个步骤:
-
文本处理的第一步是将文本语料库分割成单独的单词。这一步骤也称为分词,它使得识别关键词和短语成为可能。分割后的单词被称为标记。N-gram 是文本分析的基本单元。
-
接下来,有一些单词对文本的意义贡献很小或没有贡献。这些通常是常见单词;例如,在英语中,我们有像 the、that、is 和 these 这样的单词。在文本挖掘的上下文中,这些单词被称为噪声或有时被称为停用词。因此,这一步被称为噪声去除。
-
之后,单词会被转换成它们的词根意义。这有几个方法。作为一个例子,词干提取通常通过删除某些字母将单词转换成词根词干。所以,像 happy、happiness、happily 和 happiest 这样的单词都会被转换回词根词 happ。因为相同的单词可能有多种含义,所以在文本处理中,单词的消歧变得至关重要。而词干提取通过截断前缀或后缀将单词返回到它们的词根,词形还原则检查单词的上下文,以确保提取的词干被转换成逻辑基础,称为词元。例如,单词 anticipate 在词干提取后可能被转换回 ant。然而,在上下文中,ant 并没有意义;因此,词形还原将确保单词 anticipate 被保留。
-
最后,但同样重要的是,有一个过程被称为
0和255,其中0表示完全黑色,而完全白色表示255。另一方面,彩色图像有包含蓝色、绿色和红色层的 3D 数组。就像灰度图像中的黑色一样,这些层的每个都有自己的值,范围从0到255,最终的色彩是这三个层对应值的组合。图像处理通常遵循预定义的步骤,从图像中提取有用和一致的特征,这些特征与提取的目的相一致。位于图像文件夹旁边的
.csv文件。为卧室、浴室、正面视图和厨房创建了四个新的图像列。因此,.csv文件上的每一行数据都有其图像的路径,如 表 11.2 所示。这些路径指向 ZIP 文件中相应图像文件的位置。在 ZIP 文件中,包含表格特征的.csv文件位于包含所有图像的文件夹中。每个图像都有一个独特的名称,与.csv文件上的图像路径列保持一致。ZIP 文件和HousePrice文件夹的设置如图 图 11.1 所示。话虽如此,数据集仍然可以通过 AI 目录进行摄取。这也给了 DataRobot 连接到其他图像数据源的能力。此外,如果您有权访问 Paxata 工具,可以在数据预处理中部署该工具:![图 11.3 – ZIP 文件(左)和图像文件夹(右)的数据设置]
![图 11.3 – ZIP 文件(左)和图像文件夹(右)的数据设置]()
图 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 – 特征名称列表
-
通过选择
Feature Name列表中的Price选项,可以查看基于位置的列表价格的可视表示。通过点击Geospatial Map标签和Compute feature over map按钮。如图 11.3所示,Geospatial Maps窗口提供了基于位置的数据集分析可视化。它显示了空间上房产的分布——每个区域的房屋数量及其平均价格:![图 11.5 – 地理空间地图]()
图 11.5 – 地理空间地图
地图图例提供了关于地图的重要信息。它强调六边形的颜色表示该位置的平均房价。在其他地方,它通过六边形的高度表示案例的频率。这种 ESDA 功能不仅显示了地图上房价的视觉分布,还展示了不同区域的房屋数量。对于其他特征,如房屋面积变量和卧室数量,也可以进行类似的地理空间分析。
这种对图像特征的初步检查可以通过选择任意的图像变量进行。这显示了特征名称列表中的图像样本。在此,可以看到并按房价范围组织不同的图像特征。
-
为了进一步探索物业级别的图像特征,我们点击包含图像路径的
.csv文件,图像被集成到数据集中(见图 11.4)。对于每一行,图像都清晰显示。进一步滚动将显示所列物业的自由文本描述。现在,这个包含文本、位置和图像特征的多模态数据集可以用来构建更稳健的模型并预测房价:![图 11.6 – DataRobot 对多模态数据的视图![图片]()
图 11.6 – DataRobot 对多模态数据的视图
-
与早期项目一样,我们点击开始以启动模型构建过程。建模过程完成后,使用RMSE 指标对模型进行评估。排行榜显示 DataRobot 总共构建了 36 个模型。表现最好的是Nystroem 核 SVM 回归器模型。
如图 11.5所示,打开模型会展示其蓝图,概述了使数据为该模型准备所需的全部步骤。由于数据的多模态特性,预处理步骤相当复杂。DataRobot 进行了地理空间处理,并将其与一些数值变量以及高级图像和文本处理(后者在图 11.5中不可见)集成。有关每个步骤的更多信息,点击步骤框可以提供有关建模步骤的一些见解,并链接到该步骤的全面文档:
![图 11.7 – 多模态数据建模的模型蓝图
![图片]()
图 11.7 – 多模态数据建模的模型蓝图
-
在
区域内是房屋最具有影响力的特征;其次是FullDescription文本特征。之后,Bedrooms和Image_kitchen特征依次排列。相当有趣的是,Image_bathroom似乎对模型准确性有负面影响。这表明这些图像的见解将模型引向实际房价:

图 11.8 – 多模态模型的特征影响
由于这个原因,为了避免模型向改进性能发展,我们使用卫生间图像进行预测。通过这样做,我们将使用卫生间特征来展示 DataRobot 中可用的图像特征探索能力。DataRobot 通过根据图像的相似性进行无监督学习来聚类图像。仍然在卫生间视图内。我们可以看到 DataRobot 将相似图像聚在一起。似乎主要显示白色商品的图像位于可视化图的右侧和上部。我们可以根据房价来过滤可视化:

图 11.9 – 图像嵌入
image_bathroom 变量。看起来模型主要从浴室的白色装置中进行预测。这可能会提供关于为什么 image_bathroom 被视为对模型性能有负面影响的原因。有可能从白色装置中提取的信息误导了模型:

图 11.10 – 激活图
基于位置的信息伴随着对其他数据类型的重要补充。然而,一些模型在特定地理区域表现不佳。检查模型性能并考虑位置使分析师能够采取行动以改进模型性能。DataRobot 的 空间精度 功能展示了模型残差在不同位置的时空表示(例如,见 图 11.9)。此图表可能引导分析师考虑某些区域高残余背后的原因:

图 11.11 – 空间精度
例如,如 图 11.9 所示,凤凰城地区的平均残余价格超过 $380k,比大多数地区都要高。这个区域可能被认为是低收入地区。这种可视化可能将数据科学家引导到包括本地化经济指数的特征。这可能会为高残余提供解释。因此,包括这样的特征可能会提高模型的总体性能。用于测量精度的数据分区可以通过在验证、交叉验证或保留分区之间切换来设置。此外,可以根据用户的要求调整精度指标类型和聚合方式。
补充其基于位置的特征工程,DataRobot 的基于位置的统计分析能力可以利用其位置感知来创建 eXtreme Gradient Boosted Trees Regressor (Gamma Loss) 模型的第四个最重要的特征,GEO_KNL_K10_LAG1_Price,这是一个这样的特征(见 图 11.10)。该特征使用通过距离增加的核大小来描述价格的空间依赖结构。k-最近邻方法也可以部署:

图 11.12 – 空间滞后特征
文本分析信息,如词云,在FullDescription文本功能中不可用,这确实是该模型最具影响力的功能之一。尽管在模型蓝图(图 11.10)中不可见,但文本变量是通过另一个模型评分的,即使用标记发生频率的自动调优词 N-gram 文本模型器 – FullDescription,该模型本质上使用FullDescription功能转换成标记(作为N在N-gram中)并评分。之后,该特征在链接尺度上进行了转换并标准化。对于与文本相关的见解,我们转向见解视图,提供两种重要的文本见解能力,词云和文本挖掘。
FullDescription特征影响房价。如图图 11.11所示,单词的大小突出了标记的频率,而颜色表示其影响系数。这个系数通常标准化在-1.5 到 1.5 之间。单词的颜色越接近红色,系数就越大,因此房价也就越高:

图 11.13 – 多模态数据集的词云
我们可以假设,当FullDescription变量包含橙色单词、阿拉米达县和大的单词时,价格很可能是高的。同样,对于小型单词和城市河畔,预期价格会较低。文本挖掘能力使用条形图显示与词云类似的信息。
现在我们已经能够使用多模态数据集构建模型,对其特征进行分析,并评估这些模型的性能,接下来我们将专注于使用模型进行预测。
在 DataRobot 上使用多模态数据集进行预测
在构建模型后,在 DataRobot 上有很多方式进行预测。对于此用例,我们将使用预测选项卡中的Make Prediction方法来展示预测能力。我们最初使用本章中定义和设置 DataRobot 中的多模态数据部分中的步骤概述创建一个预测 ZIP 文件数据集。开发的预测数据集可以通过拖放或本地导入到高亮区域。如图 11.12所示,我们选择我们感兴趣的属性,包括预测数据集:

图 11.14 – 从多模态数据集中进行预测
在这个示例中,我们选择了House_id、FullDescription、Bedrooms、City和State。我们还可以看到预测数据集有 400 套房子。最后,.csv文件包含了所有请求的列(见表 11.3):

表 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):
![Figure 12.1 – Accessing Developer Tools
![img/B17159_12_01.jpg]
图 12.1 – 访问开发者工具
打开开发者工具窗口后,点击创建新密钥并输入新密钥的名称。在保存新密钥的名称后,API 密钥将被生成(见图 12.2)。之后,生成的密钥将被复制并安全存储。API 密钥以及端点对于在本地机器和数据 Robot 实例之间建立连接是必要的:

图 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_name、sourcedata和target是Project方法创建项目所需的最小参数。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 模型和提取其列表
一旦创建了模型,就需要调用get_models方法来列出模型。我们可以看到表现最好的模型是Gradient Boosted Greedy Trees Regressor (Least-Square Loss)。为了评估这个模型,我们需要提取其 ID。为此,我们必须创建一个对象,best_model_01,来存储表现最好的模型。然后对这个模型调用此指标方法。如图所示,该模型的交叉验证 RMSE 为2107.40:

图 12.4 – 以编程方式评估 DataRobot 模型
为了提供一些关于价格驱动因素的了解,我们需要特征影响。这些可以通过 DataRobot API 使用get_or_feature_impact方法检索。为了可视化项目的特征影响,我们必须定义一个名为plot_FI的函数,该函数接受模型名称和图表标题作为参数,获取特征影响,然后使用 Seaborn 的条形图方法进行归一化和绘图。关于autoproject_1项目,以下截图显示了如何使用plot_FI函数检索和展示特征影响:

图 12.5 – 定义函数并提取特征影响
通过程序访问 DataRobot 可以进一步发挥该平台的优势。通过程序访问,您可以利用 Python 中的迭代过程,用户可以为同一数据集创建多个项目。现在,让我们看看从同一数据集创建多个项目的两种方法:多类别分类和模型工厂。
多类别分类涉及将实例分类到两个以上的类别。可以创建一个单一的项目,将行分类到这些类别中的任何一个。本质上,这是一个将行分类到所有可用类别之一的模型。另一种处理此问题的方法是为不同的类别构建不同的模型。在此方法中,为每个类别作为目标构建一个模型。您可以看到如何使用 Python 的迭代过程执行此操作;即通过遍历所有目标级别。一对多方法更适合执行具有两个以上类别的分类问题。
现在,让我们演示如何在汽车定价项目中使用一对多方法。在这里,我们将使用 pandas 的qcut创建价格类别。qcut有助于将数据划分为大小相似的区间。使用此函数,我们可以将我们的数据划分为价格类别——从低到高。以下截图显示了此价格离散化过程和检查案例在类别中的分布:

图 12.6 – 定价离散化
创建了类别后,为了允许数据泄露,我们将删除初始的价格变量。我们将编写一个循环,为每个价格类别构建模型。执行以下步骤:
-
将
price_class变量转换为哑变量。 -
对于每次迭代,在创建一个经过哑变量处理的定价类别名称后创建一个 DataRobot 项目。
-
对于每次迭代,我们删除正在建模的
price_class哑变量级别。这确保了没有泄露。 -
对于每次迭代,我们必须为目标变量哑变量构建模型。
-
创建项目后,每个项目的最佳模型被选中并存储在字典中:

图 12.7 – 创建一个单对多分类项目套件
此过程涉及创建具有一系列模型的项目,目标遍历所有价格类别。创建项目后,使用以Auto开头的所有项目的迭代选择每个目标类别的最佳模型,然后选择每个项目的最佳性能模型。这些最佳模型被放置在一个字典中。
有时建议(如果不是理想的情况),使用数据子集创建不同的项目。在选择了目标变量的所有案例后,必须为每个项目创建迭代创建随机数据子集。然而,在自动定价的情况下,我们无法探索这一点,因为外样本大小有限制。
A 燃料类型):
-
首先,创建并存储一个项目。
-
选择目标变量的案例(感兴趣的变量)。在这种情况下,变量是
燃料类型。在这里,选择了这个变量,并使用这个变量的不同级别来创建 DataRobot 项目。简单来说,这一步涉及,例如,选择所有将燃料类型设置为汽油的行作为一个子组。 -
如果需要,定义评估指标。在这里,我们可以修改我们在第六章中遇到的先进选项,即使用 DataRobot 进行模型构建。还可以选择并修改其他先进选项。
-
如果需要,为班级设置一个数据限制,使得该班级将取消选择(例如,如果该班级的行数少于 20)。这一步骤的重要性在于,某些变量级别可能具有非常低的频率,因此子组内的样本量很小。因此,从这些变量中创建模型成为了一个挑战。这一步骤是使用子组内案例计数来删除此类变量级别的最佳位置。
-
所有项目中的所有模型都被选中并存储在一个字典中。
在创建用于自动定价问题的模型因子时,一些步骤是显而易见的(参见图 12.8)。在这里,燃料类型被选为创建项目的基础特征。在这种情况下,只创建了两个项目:一个用于汽油汽车,另一个用于柴油汽车。现在我们已经创建了模型,下一步是收集每个燃料类型的最佳性能模型:

图 12.8 – 创建模型工厂
使用单对多类别分类模型和模型工厂相比,其有效性在于它们能够将模型拟合到目标变量的每个级别。这是自动完成的,并考虑了样本验证、所有预处理步骤以及模型训练过程。当数据基数和体积较高时,这些方法通常会优于典型的建模方法。
对于模型工厂,为感兴趣特征的各个级别创建了多个项目。为了评估这一点,从所有项目的字典中选择了每个项目的最佳性能模型。这个来自所有项目的最佳模型集存储在另一个字典对象中。然后,通过一个for循环遍历字典中的所有模型以提取模型的性能,如下面的截图所示:

图 12.9 – 使用模型工厂评估模型的性能
改善模型性能只是您应该使用一对多多类分类模型以及模型因素的原因之一。有时,了解驱动因素同样重要。可视化不同燃料类型的特征重要性可以展示驱动因素之间的有趣对比。这意味着不同的因素会影响不同燃料类型的定价。这可能会影响战略决策。如下面的截图所示,可以使用 Python API 通过利用 Seaborn 和 Matplotlib 的图表函数来绘制特征影响:

图 12.10 – 不同柴油和汽油汽车的特性影响
如我们所见,汽车燃料类型的特性影响存在一些差异。虽然 curb-weight似乎是一个重要的驱动因素,但其影响对柴油车辆来说相对更重要。同样,对于汽油车来说,这些汽车产生的动力,如engine_size和horsepower特征所典型化的,在确定价格方面比柴油车更重要。您已经可以看到这些初步发现对决策的影响以及如何将其应用于其他商业案例。使用特征重要性来检查多个模型也可以应用于一对多分类问题。
在本节中,我们使用 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
根据这种方法,以下截图显示了在程序化构建模型部分创建的autoproject_1如何部署。在这里,模型 ID 是best_model_1。我们将AutoBase Deployment标记为Base Automobile Price Deployment的描述:

图 12.11 – 程序化部署模型
部署过程可以迭代,以使更复杂的项目能够实现。例如,使用模型工厂,无论区分变量有多少级别,只需一个for循环,就可以将所有最佳模型部署到 DataRobot。对于每个最佳模型,都会创建一个部署,然后用于评分新数据。以下截图显示了用于汽车项目的模型工厂部署脚本,其中燃料类型是其区分变量:

图 12.12 – 从模型工厂部署模型
部署了模型后,可以对它们进行预测。要在开发环境中进行简单预测,我们可以使用DataRobot BatchPredictionJob.score_to_file方法。要进行预测,此方法需要模型 ID、预测数据和评分数据将存储的位置。在这里,我们将使用best_model_1对用于开发模型的同一模型进行评分,即df数据对象,以及位置路径,指定预测文件路径为./pred.csv。passthrough_columns_set参数指定将包含在预测中的原始数据集的列。由于此设置为'all',因此返回所有列,如下所示:

图 12.13 – 简单程序化预测
这些预测包括初始数据集的所有列,以及预测价格。在某些情况下,包括预测背后的理由是理想的。在这种情况下,应在作业配置中包含max_explanations参数。此参数设置每行数据应提供的最高解释数量。
摘要
DataRobot 为我们提供了一种独特的快速开发模型的能力。借助这个平台,数据科学家可以结合 DataRobot 的优势以及开放编程的灵活性。在本章中,我们探讨了获取用于程序化使用 DataRobot 所需凭证的方法。使用 Python 客户端,我们演示了数据摄取的方式以及如何创建基本项目。我们开始构建用于更复杂问题的模型。我们创建了模型工厂以及一对多模型。最后,我们展示了如何部署模型并用于评分数据。
使用 DataRobot 进行程序化操作的一个关键优势是能够从众多来源摄取数据,对其进行评分,并将它们存储在相关来源中。这使得进行端到端数据集评分成为可能。系统可以设置为定期进行模型评分。随之而来的是许多数据质量和模型监控问题。下一章将重点介绍如何在 DataRobot 平台上控制模型和数据的质量,以及如何使用 Python API。
第十三章: 模型治理和 MLOps
在前面的章节中,我们学习了如何构建、理解和部署模型。现在我们将学习如何治理这些模型,以及如何在运营中负责任地使用这些模型。在早期的章节中,我们讨论了理解业务问题的方法、模型将运行的系统以及使用模型预测的潜在后果。MLOps是由机器学习和DevOps组成的词汇。它由流程和实践组成,旨在高效、可靠和有效地在企业内部实现机器学习(ML)模型的生成。MLOps 旨在通过确保生产模型的输出质量良好并实现自动化,以确保持续满足商业价值和监管要求。它提供了一个集中式系统来管理所有生产中 ML 模型的整个生命周期。
MLOps 中的活动涵盖模型部署的所有方面,提供生产中模型的实时跟踪准确性,提供冠军挑战者流程,该流程使用实时数据持续学习和评估模型,跟踪模型的偏见和公平性,并提供一个模型治理框架,以确保模型在满足监管要求的同时继续产生业务影响。在第第八章中,模型评分和部署,我们讨论了在 DataRobot 平台上的模型部署。
此外,在第第八章中,模型评分和部署,我们广泛地讨论了在生产中监控模型方面的内容。鉴于模型治理在 MLOps 过程中的关键作用,在本章中,我们将介绍模型治理框架。模型监控的一个关键方面是确保模型没有偏见,对所有受模型影响的人公平,这一点我们将在本章中探讨。之后,我们将更深入地探讨如何实现 MLOps 的其他方面,包括如何维护和监控模型。因此,我们将涵盖以下主要内容:
-
模型治理
-
解决模型偏见和公平性问题
-
实施 MLOps
-
生产中通知和更改模型
技术要求
本章的大部分内容需要访问 DataRobot 软件。示例使用了一个相对较小的数据集,Book-Crossing,由三个表格组成,其操作在第十章中已有描述,推荐系统。正如数据描述中将要涵盖的,我们将创建新的字段,除了在第十章中使用的字段外。
Book-Crossing 数据集
用于说明模型治理方面的示例与用于构建推荐系统的第十章,推荐系统中使用的示例相同。数据集基于蔡-尼古拉斯·齐格勒及其同事的 Book-Crossing 数据集(www2.informatik.uni-freiburg.de/~cziegler/BX/)。数据是在 2004 年 8 月至 9 月间对 Book-Crossing 社区进行的为期 4 周的爬取中收集的。
重要提示
在使用此数据集之前,本书的作者已通知数据集的所有者关于本书中对其使用的说明:
蔡-尼古拉斯·齐格勒,肖恩·M·麦克尼,约瑟夫·A·康斯坦,乔治·劳森(2005)。通过主题多样化改进推荐列表。第十四届国际万维网会议(WWW 2005)论文集。2010-2014 年 5 月,2005 年,日本千叶。
随后的三个表格,以.csv格式提供,构成了这个数据集。
-
用户:此表展示了用户的概况,使用匿名
User-ID并以整数形式呈现。还包括用户的Location和Age。 -
书籍:此表包含书籍的特征。其特征包括
ISBM,Book-Title,Book-Author,Year-Of-Publication和Publisher。 -
评分:此表显示了评分。每一行提供了一个用户对一本书的评分。
Book-Rating要么是隐式的0,要么是显式的1到10(越高,越受好评)。然而,在本项目的背景下,我们将仅关注用于模型开发的显式评分。该表还包括User-ID和ISBN字段。
此外,我们使用 Excel 创建了两个额外的字段,使用年龄和评分列。我们创建了RatingClass字段,该字段将评分超过7视为高评分,否则为低。同样,我们创建了AgeGroup字段;将 40 岁以上的年龄归类为四十岁以上,25 岁以下的年龄归类为二十五岁以下,否则被视为25 至 40 岁之间。最后,我们删除了缺失年龄列的数据行。
管理模型
采用 ML 管理的组织定义了一个框架,其中包含用于管理模型开发、生产和后期监控的 ML 工作流程的规则和控制。ML 的商业重要性已经确立。然而,只有一小部分投资于 ML 的公司实现了其好处。一些机构在确保 ML 项目的成果与其战略方向良好一致方面遇到了困难。重要的是,许多组织受到法规的约束,例如欧盟和欧洲经济区最近实施的通用数据保护条例,这些法规影响了这些模型及其输出的使用。企业通常需要引导其 ML 使用,以确保满足监管要求,并持续实现战略目标和价值观。
建立一个完善的治理框架可以确保数据科学家能够专注于他们角色的创新部分,即解决新问题。有了治理,数据科学家花在评估他们的模型为业务带来的商业价值、评估模型的生产性能以及检查是否存在数据漂移的时间就会减少。模型治理简化了所有生产模型的版本控制和变更跟踪过程。这始终是机器学习审计跟踪的关键方面。此外,还可以设置通知,当生产中的模型遇到异常和性能变化时,提醒利益相关者。当性能出现显著下降时,可以通过无缝的方式将生产中的模型与表现更好的挑战者模型进行交换。尽管这个过程可能需要其他利益相关者的审查和授权,但它比典型的数据科学工作流程要简单得多。
很明显,在整个过程中治理模型是一项复杂且耗时的任务。没有工具支持,数据科学团队很容易错过关键步骤。DataRobot 等工具使这项任务变得更容易,确保许多必需的任务自动完成。这种易用性有时也可能使团队在未思考的情况下使用这些工具。这同样也是危险的。因此,合理地结合使用 DataRobot 等工具和建立流程控制和审查是确保适当治理的必要条件。
DataRobot 的 MLOps 为组织提供了一个机器学习模型治理框架,有助于风险管理。使用模型治理工具,业务主管可以跟踪重要的业务指标,并确保持续满足监管要求。他们可以轻松评估生产中的模型性能,以确保模型适合使用。此外,在部署之前,模型的商业关键性已经通过治理得到定义。这确保了当模型对业务至关重要时,对模型进行的任何更改都需要在全面实施之前由利益相关者进行审查和授权。符合伦理的要求,机器学习模型的使用预期将能够实现公平的过程。因此,模型的输出应该消除任何形式的偏见。在本章的后续部分,除了 MLOps 的其他方面,我们还将探讨如何在开发阶段和在生产阶段减轻机器学习模型的偏见。
解决模型偏见和公平性
机器学习的一个关键特征在于它从过去学习以预测未来。这意味着未来的预测会受到过去的影响。一些训练数据集的结构可能会在机器学习模型中引入偏见。这些偏见基于人类系统中明显的不言而喻的不公平。众所周知,偏见会维持模型存在之前的偏见和不公平,可能导致意外的后果。一个无法理解人类偏见的 AI 系统,如果不仅仅是反映了,还可能加剧了训练数据集中存在的偏见。很容易理解为什么机器学习模型比男性同行更有可能预测女性的低工资。在类似的例子中,使用历史数据驱动的机器学习模型的信用卡公司可能会被引导向少数族裔背景的个人提供更高的利率。这种未经授权的关联是由训练数据集中固有的人类偏见引起的。在模型开发中包含带有偏见特征的无偏见特征是不公平的。一个公平的过程在预测个人信用时会考虑个人的支付历史,但基于其家庭支付历史进行预测时,可能会出现不公平的结果。
监督学习模型可能会特别不公平,因为某些数据存在循环依赖。例如,为了获得信用卡,人们需要信用历史,而要拥有信用历史,则需要信用卡。由于模型对信用评估至关重要,因此某些人几乎不可能获得信用卡。此外,关于某些子群体的数据有限,使他们更容易受到偏见的影响。这是因为这类群体训练数据的最小结果分布变化可能会扭曲该群体成员的预测结果。所有这些都指向了机器学习模型应该如何管理偏见并支持公平过程的程度。
许多行业——例如医疗保健、保险和银行——为了满足监管要求,采取具体措施防止任何形式的偏见和不公平。虽然解决人类偏见固有的挑战,但解决机器学习偏见相对容易。因此,作为机器学习治理的一部分,解决机器学习偏见在确保他们的产品不会放大对机器学习系统伦理方面的怀疑至关重要。
在解决潜在的未经授权的结果时,DataRobot 引入了偏见和公平监控与控制能力。此能力在模型开发期间进行选择和配置。让我们回顾一下,在 DataRobot 中如何解决偏见。与典型平台一样,我们上传数据,如前几章所述。在项目配置窗口(如图 13.1所示),我们打开高级选项和偏见和公平选项卡:
-
在此标签页中,我们定义受保护特征,如何建立和衡量公平性,以及目标变量。我们指定预测数据集中需要保护的字段。这些字段在
AgeGroup字段中被选中以进行保护(参见图 13.1)。在一些行业数据集中,必须选择诸如性别、种族、年龄和宗教等属性。这样,DataRobot 管理和展示用于衡量每个受保护字段中潜在模型偏差的指标:![图 13.1 – 在模型开发过程中配置偏差和公平性![图片]()
图 13.1 – 在模型开发过程中配置偏差和公平性
-
接下来,
RatingClass级别的High。这使能够测量目标变量这一级别的偏差。 -
比例性公平性、等比例公平性、预测平衡、真实有利率与真实不利率公平性,以及有利预测值与不利预测值公平性。 -
如果用户不确定要选择哪个指标,他们可以点击帮助我选择,这将呈现进一步的问题集。回答这些问题将展示一个公平性指标值的推荐,如图图 13.2所示:![图 13.2 – 公平性指标推荐
![图片]()
图 13.2 – 公平性指标推荐
在选择我们的指标时,因为我们非常关注模型在年龄组成员资格上的预测准确性相似,所以我们选择了如何衡量模型公平性的相等误差选项。由于我们的结果分布在高和低之间相对平衡,我们选择否回答有利目标结果是否只发生在极少数人口中?的问题。在此之后,DataRobot 建议真实有利率与真实不利率公平性。在整个过程中,平台提供了选项的描述,并展示了推荐指标以及其他指标的说明。
-
在图 13.3中点击
AgeGroupLight Gradient Boosting on Elastic Predictions模型,其得分低于默认阈值:

图 13.3 – 每个类别的偏差探索
根据这一结果,模型在预测25 至 40 岁类别中个体真实不利结果(低评级)的准确性低于其他两个类别。该类别的得分低于默认的 80%阈值。对于25 至 40 岁类别,应用了默认的 80%阈值。图 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 岁之间的群体似乎评价了比他们年长的对手更多的新书。
当模型偏差超过企业设定的阈值时,需要采取措施来管理这种不公平性。解决这种不公平性的选项包括删除可能导致偏差的特征、重新训练模型,或者改变模型以使其更符合伦理。大多数情况下,这些变化最终会影响模型的总体准确性。然而,在我们的例子中,Light Gradient Boosting on Elastic Predictions并不是我们表现最好的模型。DataRobot 在其偏差和公平性工具包中具有偏差与准确性排行榜比较功能(见图 13.6):
![图 13.6 – 偏差与准确性排行榜]
![img/B17159_13_06.jpg]
图 13.6 – 偏差与准确性排行榜
使用训练计划的Keras 残差 AutoInt 分类器是最准确模型,并且达到了伦理阈值。在这种情况下,这个模型可以被部署到生产环境中。需要注意的是,基于神经网络的模型目前通常不被许多监管机构接受,但这种情况在未来可能会改变。
预计涉及评估 ML 模型偏差和公平性的流程将集成到数据科学工作流程中,以确保模型结果支持公平的过程。随着关于道德 AI 的对话在各个行业变得更加普遍,这一点变得更加重要。在探讨了确保模型公平的方法之后,我们现在将进入下一节,讨论部署公平模型、监控生产中的模型性能以及实施 MLOps 的其他方面。
实施 MLOps
通过其 MLOps 套件,DataRobot 提供了能力,不仅使用户能够在生产中部署模型,还能治理、监控和管理生产中的模型。在之前的章节中,我们探讨了如何在平台上部署模型以及使用 Python API 客户端。MLOps 提供了一种自动化的模型监控能力,该能力跟踪生产中模型的健康状态、准确性和数据漂移。生产模型的实时自动化监控确保了模型具有高质量的输出。此外,当出现性能下降时,相关利益相关者会收到通知,以便采取行动。
在本节中,我们将关注本书第八章“模型评分和部署”中未涉及到的模型监控方面。我们探讨了如何检查部署服务的质量,以及通过服务健康和数据漂移能力,随着时间的推移,训练数据和预测数据之间底层特征分布的变化。随着时间的推移,包含目标变量的最新数据被引入到部署中。DataRobot 随后可以检查模型的初始预测并建立模型在生产中的实际准确度。DataRobot 还提供了在生产中切换不同模型的能力。本节重点介绍生产模型准确度的评估、设置通知以及在生产中切换模型。
如你现在所猜到的,数据科学团队的工作在模型部署后并没有结束。我们现在必须监控我们的模型。在参与有关模型监控的对话之前,我们需要控制个人可以对那些部署做什么。利益相关者的角色和责任是 MLOps 治理的重要方面。成功实施 ML 解决方案取决于对角色和利益相关者在 ML 模型生产生命周期中实际职责的明确定义。正如图 13.7所强调的,当部署与其他利益相关者共享时,每个利益相关者都会被赋予一个角色,该角色定义了他们对该部署的访问级别:

图 13.7 – 部署共享
要打开部署共享窗口(如图 13.7 所示),在模型部署后,选中右上角的部署操作按钮(三横线图标)。然后,选择共享。在这里,这个RatingClass Predictions部署与一个利益相关者共享,ben@aaaa.com。重要的是,这个人被赋予了用户的角色。拥有用户角色,这个利益相关者可以读写。实际上,他们可以查看部署,消费预测,查看部署库存,使用 API 获取数据,并将其他用户添加到部署中。所有者级别有额外的管理权限,可以执行业务关键操作,例如删除部署,替换模型,以及编辑部署元数据。最低的用户角色是消费者,它只允许利益相关者通过 API 路由消费预测。
生产模型监控确保模型在开发期间预期的高质量业务影响持续得到实现。这种质量的下降是生产数据分布变化或特征影响内生变量的程度变化的结果。例如,使用量的变化会影响客户流失,这是企业的一个重要变量。在假日期间,流失的预测会更高。如果企业没有预料到这种分布或数据漂移的变化,这种流失预测的波动会让他们感到担忧。同样,预测变量影响业务结果的程度也可能发生变化。一个例子是价格对购买倾向的影响。在大流行高峰期,个人在非必需品的购买上要保守得多。现在,想象一下在大流行之前为非必需品构建的购买倾向模型在生产中的准确性。很容易看出,模型的准确性将在生产中迅速下降,从而对业务绩效产生重大影响。这种情况下,需要监控模型部署后的性能。
在第八章“模型评分和部署”中,我们讨论了数据漂移,它检查训练集和生成集之间的分布变化,同时考虑到其特征重要性。在这里,我们的重点将转移到监控生产中变量对结果的影响。这种影响的变化可以通过监控生产模型的准确性来确定,这是 DataRobot 提供的一项功能。作为部署设置窗口的一部分,如图 13.8 所示,有一个准确性选项卡:

图 13.8 – 准确性设置部署窗口
准确性选项卡提供了对生产模型准确性的洞察。此功能使用户能够检查其生产模型随时间的变化性能。为了计算生产模型的准确性,需要提供实际结果。在上传实际结果后,为了生成准确性,需要完成一系列字段。这些包括实际响应和关联 ID字段,以及可选的是否采取行动和时间戳(参见图 13.9):

图 13.9 – 准确性设置功能
RatingClass。为了将其与先前的预测数据集链接,本例中的rowid被请求以启用此连接。需要注意的是,有时由于模型的预测结果,业务可能会采取行动,这最终可能影响结果。为了在计算准确性时考虑这种可能性,可选地请求是否采取行动和时间戳变量(参见图 13.10以选择这些特征):

图 13.10 – 生产准确性识别特征选择
在选择必填变量后,点击保存按钮。这启动了计算,之后打开准确性窗口,显示模型的生成准确性。生产模型的性能以瓷砖和图形时间序列的形式呈现。图 13.11展示了部署准确性窗口。选择了LogLoss、AUC、准确性、Kolmogorov-Smirmov和Gini Norm指标瓷砖。开始显示了在开发过程中模型对保留数据集的性能。看起来这个模型在生产中的表现比在训练中更好。通过自定义瓷砖,可以选择其他指标及其顺序。随时间变化的准确性图显示了模型准确性随时间的变化情况。图上最左边的绿色点表示在开发过程中模型对保留数据集的准确性:

图 13.11 – 随时间推移的生产模型性能评估
低。有一个选项可以更改正在探索的类别。需要注意的是,使用这些选项,可以监控模型在 AgeClass 保护变量不同级别上的准确性。这可以通过在 段属性 选项中选择 AgeClass,然后在 段值 字段中选择任一级别来实现。在当前场景中,生产准确性反映了数据漂移的情况,因此可以配置通知,以便在指标以对业务产生不利影响的方式偏离时通知利益相关者。在下一节中,我们将介绍这些通知,以及如何在部署中更改模型。
生产中的通知和更改模型
在本章中,我们讨论了模型商业影响可能衰减的原因以及如何在 DataRobot 平台上跟踪这种影响。在端到端预测过程完全自动化且人类干预有限的情况下,确保有系统通知利益相关者生产模型性能的任何重大变化变得至关重要。DataRobot 可以发送关于服务健康、数据漂移和准确性的重大变化的通知。这些通知可以在 部署 窗口中设置和配置:
-
从 设置 选项卡中选择 通知。如图 图 13.12 所示,提供了三个选项:发送所有事件的通知、发送关键事件的通知以及不发送任何通知。所有事件的通知通过电子邮件发送;所有部署更改都会发送给所有者:
![图 13.12 – 部署通知设置]()
图 13.12 – 部署通知设置
在 图 13.12 中,通知被设置为仅通知我有关关键部署活动。这种设置意味着当部署过程中发生关键活动时,利益相关者会被通知。
-
1:00。有选项可以设置通知在每小时到每季度监控周期之间发生。当复选框未选中时,通知被禁用:![图 13.13 – 监控通知设置]()
图 13.13 – 监控通知设置
-
过去 7 天的通知,意味着将前七天的数据分布与训练数据进行比较。 -
作为特征漂移指标,
0.2。一些特征可以通过使用0.45作为0.45的漂移值来排除在漂移跟踪之外,如果这些值被认为超过0.2。b. 当五个或更多低重要性特征出现显著漂移时,未能发送通知
c. 当一个或多个高重要性特征出现
0.45的漂移时,未能发送通知 -
与
AUC、Accuracy、Balance Accuracy、LogLoss和FVE Binomial等相关的通知。在这种情况下,选择了Logloss。b. 选择
percent变化。c. 然后为
每天的1:00设置规则。这些可以配置为每天到每季度之间的任何频率。 -
在此设置完成后,点击保存新设置按钮激活通知程序。然而,值得注意的是,任何有权访问部署的利益相关者都可以配置他们想要接收的通知。当模型的变化变得重要时,可能有必要在部署中替换模型。
生产模型的性能往往会随着时间的推移而下降。这引发了替换部署中模型的需求。在 MLOps 提供的服务中,DataRobot 提供了模型替换功能。要更改部署中的模型,您需要导航到部署概述窗口。从部署概述窗口右侧的操作按钮中选择替换模型选项(见图 13.14):
-
点击替换模型选项会显示一个粘贴 DataRobot 模型 URL请求。此 URL 是新模型可以找到的位置,当从排行榜打开时:![Figure 13.14 – Production model replacement
![img/B17159_13_14.jpg]
图 13.14 – 生产模型替换
-
当涉及到
准确度、数据漂移、错误、计划刷新和评分速度时。如图图 13.15所示,在这种情况下选择了数据漂移。 -
最后,点击接受并替换:
![Figure 13.15 – Selecting the rationale for model replacement
![img/B17159_13_15.jpg]
图 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 社区 GitHub:
github.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.comDataRobot 最近决定将所有文档发布在这个网站上。这包括 DataRobot 平台、API、教程和笔记本,以及术语表。现在这是查找所有 DataRobot 相关文档的默认网站。
对于机器学习(ML)方法、自动化机器学习(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,并使您的数据科学之旅更加高效。希望我们已经说服您,数据科学家的角色不仅仅是产生预测,而是帮助做出良好的决策。正如我们做的许多事情自动化了组织中许多角色的任务一样,我们也不应该害怕数据科学任务的自动化。我们希望这本书能为各行各业的数据科学家提供有用的想法。





























浙公网安备 33010602011771号