暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

博客 | 使用 CDSW 和运营数据库构建 ML 应用3:生产 ML 模型

Cloudera中国 2021-03-05
224
点击Cloudera中国 即可订阅!

本文转载自大数据杂货铺

在最后一部分中,我们将讨论一个演示应用程序,该应用程序使用 PySpark.ML 根据 Cloudera 的运营数据库(由 Apache HBase 驱动)和 Apache HDFS 中存储的训练数据来建立分类模型。然后,对该模型进行评分并通过简单的 Web 应用程序提供服务。有关更多上下文,此演示基于此博客文章如何将 ML 模型部署到生产中讨论的概念。


在阅读本部分之前,请确保已阅读第1部分和第2部分。第1部分:使用 PySpark 和 Apache HBase, 以及第2部分:使用 PySpark 和 Apache HBase


背景/概述

机器学习现已用于解决许多实时问题。一个大的用例是传感器数据。公司现在使用这种类型的数据实时通知消费者和员工。这些公司的另一个重要需求是,在实时提供更多数据时,可以轻松地改进其模型。


一种特定的用例是检测欺诈性的信用卡交易。例如,给定一笔交易,假设一个 ML 模型预测这是一次欺诈交易。在员工确认该交易实际上是欺诈之后,该员工可以让系统知道该模型做出了正确的预测,然后可以将该预测用作改进基础模型的附加训练数据。 


以此示例为灵感,我决定建立传感器数据并实时提供模型结果。结果,我决定使用开源的“占用检测数据集”来构建此应用程序。训练数据集代表办公室的传感器数据,并使用该数据构建模型来预测该房间是否有人居住。在接下来的几节中,我们将讨论训练数据模式,分类模型,批次分数表和 Web 应用程序。

在 HBase 和 HDFS 中训练数据

这是训练数据的基本概述:

如您所见,共有7列,其中5列是传感器读数(温度,湿度比,湿度,CO2,光)。占用率列表示模型是否被占用(1表示它已被占用,0表示它未被占用),这就是模型将要预测的内容。还有一个“日期”列,但是此演示模型不使用此列,但是任何时间戳都将有助于训练一个模型,该模型应根据一天中的时间考虑季节变化或 AC HS 峰值。


在此演示中,此训练数据的一半存储在 HDFS 中,另一半存储在 HBase 表中。该应用程序首先将 HDFS 中的数据加载到 PySpark DataFrame 中,然后将其与其余训练数据一起插入到 HBase 表中。这使我们可以将所有训练数据都放在一个集中的位置,以供我们的模型使用。

 

合并两组训练数据后,应用程序将通过 PySpark 加载整个训练表并将其传递给模型。 


建立模型

现在我们有了所有训练数据,我们将建立并使用 PySpark ML 模型。

该模型使用线性回归对房间是否被占用进行分类。完成此操作后,我们将使用 BinaryClassificationEvaluator() 和 TrainValidationSplit() 正确评估和拆分模型数据。完成此操作后,我们将使用HBase的训练数据对模型进行拟合。


该代码段最终为我返回了一个 ML 模型,其中给了我5组传感器输入,它将返回一个二进制数预测,其中1代表“已占用”,0代表“未占用”


创建和存储批次分数表

现在已经创建了一个简单的模型,我们需要对该模型进行评分。为此,我在 HBase 中创建了一个批次评分表。批处理得分表是一个表,其中存储了所有可能的传感器输入组合以及使用该模型对每个组合的预测。完成该预计算以便以ms延迟提供结果。我的应用程序使用 PySpark 创建所有组合,对每个组合进行分类,然后构建要存储在 HBase 中的 DataFrame。


HBase 可以轻松存储具有数万亿行的批处理得分表,但是为简单起见,此应用程序存储了25万个得分组合/行。该表可以大规模扩展到任何用例,这就是为什么 HBase 在此应用程序中具有优越性,因为它是分布式、可伸缩的大数据存储。

服务模型

为了使用此数据,我使用流行的 Flask 框架构建了一个非常简单的演示,用于构建 Web 应用程序。此 Web 应用程序基本上有两个目标。首先,通过实时流数据显示房间是否被占用。其次,添加一个功能,当用户确认占用预测正确时,将其添加到训练数据中。

 

为了模拟实时流数据,我每5秒在 Javascript 中随机生成一个传感器值。生成新数字后,Web 应用程序将在 HBase 的 Batch Score Table 中进行简单查找以获取预测。这个简单的查询是通过 PySpark.SQL 查询完成的,一旦查询检索到预测,它就会显示在Web应用程序上。


在演示应用程序中,还有一个按钮,允许用户随时将数据添加到 HBase 中的训练数据表中。以下是演示应用程序的简单屏幕录像。

如何运行此演示应用程序

现在,如果您想在 CDSW 中运行并模拟该演示应用程序,请按以下步骤操作:

为了查看 Web 应用程序,请访问 

http://<$CDSW_ENGINE_ID>.<$CDSW_DOMAIN>


结论与总结

此应用程序演示了如何利用 PySpark 来使用 HBase 作为基础存储系统来构建简单的 ML 分类模型。无论如何,该演示应用程序都有一些收获。

  1. 对于 HBase 中已经存在的数据,PySpark 允许在任何用例中轻松访问和处理。 

  2. 通过 PySpark,可以从多个来源访问数据

  3. 服务 ML 应用程序通常需要可伸缩性,因此事实证明 HBase 和 PySpark 可以满足该要求。


现在,任何数据科学家和数据工程师都可以直接在 HBase 数据上构建ML模型。使用第1部分和第2部分中的方法,“ hbase-connectors”现在可以轻松实现 python 访问以及强大的针对 HBase 数据的 Spark 功能。 自己尝试这个演示应用程序!GitHub Repo 链接。


原文作者:Manas Chakka

原文链接:https://blog.cloudera.com/building-a-machine-learning-application-with-cloudera-data-science-workbench-and-operational-database-part-3-productionization-of-ml-models/


Cloudera中国

更多资讯,点击阅读原文

长按扫码关注我们


文章转载自Cloudera中国,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论