导言
只有当业务方面的用户和应用程序能够从一系列来源访问原始和聚合数据,并及时生成数据驱动时,才能实现现代DataOps平台的真正价值。借助机器学习,分析师和数据科学家可以利用TensorFlow等技术,利用历史数据帮助制定更好的,数据驱动的业务决策:离线和实时。
在本文中,将学习如何使用TensorFlow(TF)模型进行预测和分类,使用StreamSets Data Collector 3.5.0 和StreamSets Data Collector Edge 中新发布的TensorFlow Evaluator *。
*注意:TensorFlow Evaluator 术语测试阶段的Technology Preview系列,在推出测试阶段之前不应该用于生产。
在深入了解细节之前,先了解一些基本概念。
机器学习
Arthur Samuel 将其描述为:“研究领域使计算机无需明确编程即可学习。”随着机器学习的最新进展,计算机现在能够进行预测,甚至比人类更好,它可以感觉、理解越来越多的问题。让我们首先回顾一下它解决了什么样的问题。
一般而言,ML分为两大类:
监督学习
“监督学习是学习功能的机器学习任务,它根据示例输入-输出对,将输入映射到输出。”
它涉及构建一个准确的模型,该模型可以预测历史数据被标记为这些结果的结果。
监督学习解决的常见业务问题:
二进制分类(学习预测分类值)
- 客户是否会购买特定产品?
- 这种癌症是恶性的还是良性的?多类分类(学习预测分类值)
- 给定的文本是否有毒,威胁或淫秽?
- 这种鸢尾花属植物,杂色或维吉尼亚的种类?回归(学习预测连续价值)
- 房屋的预测售价是多少?
- 明天在旧金山会有什么温度?
无监督学习
允许我们在很少或根本不知道输出是什么的情况下解决问题。它涉及构建模型,其中过去数据的标签不可用。在这些类型的问题中,通过基于数据中的变量之间的关系对数据进行聚类来导出结构。
无监督学习的两种常用方法是:K-means和DBSCAN。
*注意:Data Collector和Data Collector Edge中的TensorFlow评估器目前仅支持监督学习模型。
神经网络与深度学习
神经网络是ML算法的一种形式,可以学习和使用受人类大脑结构启发的计算模型。与其他ML算法(如决策树、逻辑回归等)相比神经网络已经被证明是高度准确的。
深度学习是神经网络的一个子集,它允许网络在嵌套层次结构中表示各种各样的概念。
Andrew Ng 在传统的人工神经网络的背景下描述了它。在他的题为“深度学习,自学习和无监督特征学习”的演讲中,他将深度学习的概念描述为:
“使用大脑模拟,希望:
- 使学习算法更好,更容易使用。
- 在机器学习和人工智能方面取得革命性的进步。
我相信这是我们迈向真正人工智能的最好机会。”
常见的神经网络和深度学习应用包括:
计算机视觉/图像识别/物体检测
语音识别/自然语言处理(NLP)
推荐系统(产品,配对等)
异常检测(网络安全等)
TensorFlow
TensorFlow是专为深度神经网络设计的开源ML框架,由Google Brain Team创建。TensorFlow支持Windows和Mac OS上的可扩展和便携式训练:在CPU、GPU和TPU上。截止今天,它是GitHub上最受欢迎和最活跃的ML项目。
Data Collector中的TensorFlow
通过引入TensorFlow评估程序,现在可以创建管道,可以在所包含的环境中提取数据/功能并生成预测或分类,而无需对作为Web服务提供和公开的ML模型启动HTTP或REST API调用。例如,Data Collector管道现在可以检测欺诈性事件,或者在数据通过各个阶段之前实时对文本执行自然语言处理,然后再存储到最终目标中,以便进一步处理或做出决策。
此外,使用Data Collector Edge,您可以在Raspberry Pi等设备上运行支持 TensorFlow ML的管道,以及在支持的平台上运行的其他设备。例如,检测高风险地区洪水等自然灾害,以防止损害有价值的资产。
乳腺癌分类
让我们考虑将乳腺肿瘤分类为恶性或良性的用例。(威斯康星州)乳腺癌是一种经典的数据集,可作为scikit-learn的一部分。要了解我如何在Python中使用此数据集训练和导出简单的TF模型(代码见GitHub)。正如你将注意到的,模型创建和训练保持在最低限度,并且只有几个隐藏层非常简单。要注意的最重要的地方是如何使用TensorFlow SavedModelBuilder * 导出和保存模型。
*注意:要在Data Collector或Data Collector Edge中使用TF模型,应使用TensorFlow SavedModelBuilder以您选择的受支持语言(如Python和交互式环境(如 Jupiter Notebook))导出/保存它们。
使用TensorFlow SavedModelBuilder 训练和导出模型后,只要将模型保存在Data Collector 或Data Collector Edge 可访问的位置,就可以在数据流管道中使用它进行预测或分类非常简单。
管道概述
在深入细节之前,我们先来看管道是怎样的?
管道细节
目录来源:
- 这将从.csv文件加载乳腺癌记录。(注意:此输入数据源可以很容易地替换为其他来源,包括Kafka,AWS S3,MySQL等)场转换器:
- 此处理器将转换模型使用的所有输入乳腺癌记录功能TensorFlow Evaluator *:
- 保存的模型路径:指定要使用的预训练TF模型的位置。
- 模型标签:设置为“提供”,因为元图(在我们的导出模型中)旨在用于服务。
- 输入配置:指定在训练和导出模型期间配置的输入张量信息。
- 输出配置:指定在训练和导出模型期间配置的输出张量信息。
- 输出字段:我们要存储分类值的输出记录字段。表达式计算器:
- 此处理器评估模型输出/分类值0或1(存储在输出字段TF_Model_Classification中)并创建一个新记录字段'Condition',其值分别为Benign或Malignant。流选择器:
- 该处理器评估癌症状况(良性或恶性)并将记录路由到相应的Kafka生产者。Kafka Producers:
- 输入记录以及模型输出/分类值有条件地路由到两个Kafka生产者进行进一步处理和分析。(注意:这些目的地可以很容易地用其他目的地替换,例如AWS S3,MySQL,NoSQL等,以便进一步处理和/或分析。)
*TensorFlow评估器配置
*注意:一旦TensorFlow Evaluator 生成模型输出,此示例中的管道阶段是可选的,并且可以根据用例的要求与其他处理器和目标互换。
管道执行
在预览(或执行)管道时,输入的乳腺癌记录通过上面概述的数据流管道阶段,包括服务我们的TensorFlow模型。发送给Kafka生产者的最终输出记录(如上所示)包括模型用于分类的乳腺癌特征,用户定义的字段TF_Model_Classification中的模型输出值0或1,以及由现场条件创建的相应癌症状况良性或恶性。
结语
这篇文章说明了在Data Collector 3.5.0 中使用新发布的TensorFlow Evaluator。一般而言,此评估程序将使您能够提供预先训练的TF模型,以生成预测和/或分类,而无需编写任何自定义代码。
长按订阅更多精彩▼