当前位置: 首页 > 科技观察

在数据收集器中使用TensorFlow进行实时机器学习

时间:2023-03-21 21:07:18 科技观察

DataOps平台的真正价值只有在业务用户和应用程序可以访问来自各种数据源的原始数据和聚合数据并及时生成数据驱动的见解时才会出现,可以实现。借助机器学习(MachineLearning),分析师和数据科学家可以实时使用历史数据并使用TensorFlow(TF)等技术,为数据驱动型业务做出更好的线下决策。在本文中,您将了解如何通过StreamSetsDataCollector3.5.0和StreamSetsDataCollectorEdge中发布的TensorFlowEvaluator*使用TensorFlow模型进行预测和分类。在深入细节之前,让我们先了解一些基本概念。机器学习(MachineLearning)亚瑟·塞缪尔(ArthurSamuel)将其描述为:“赋予计算机学习能力而无需明确编程的研究领域。”随着机器学习领域的发展,现在计算机的预测能力已经超过了人类,感觉它可以解决任何问题。我们先回顾一下机器学习解决了什么样的问题。一般来说,机器学习分为两大类:监督学习“监督学习是学习一种函数的机器学习任务,该函数根据输入输出实例将输入映射到输出。”——维基百科(Wikipedia)。它涉及建立一个准确的模型,当历史数据被标记为特定结果时,该模型可以预测结果。通过监督学习解决的常见业务问题:二元分类(学习预测分类值)——客户会购买特定产品吗?-癌症是恶性的还是良性的?多类分类(学习预测分类值)——一段给定的文本是病毒式的、威胁性的还是淫秽的?-这是山鸢尾、蓝旗鸢尾或北美鸢尾的一种吗?回归(学习预测连续值)——待售房屋的预测价格是多少?-旧金山明天的温度是多少?无监督学习无监督学习使我们能够在对输出结果知之甚少或一无所知的情况下解决问题。它涉及创建模型,其中以前的数据标签不可用。在这类问题中,结构是根据数据中变量之间的关系通过聚类数据得出的。无监督学习的两种常见方法是K均值聚类和DBSCAN。注意:DataCollector和DataCollectorEdge中的TensorFlowEvaluator目前仅支持监督学习模型。神经网络和深度学习神经网络是一种机器学习算法,它学习和使用受人脑结构启发的计算模型。与决策树、逻辑回归等其他机器学习算法相比,神经网络具有更高的准确率。AndrewNg在传统人工神经网络的背景下描述了深度学习。在题为“深度学习、自学习和无监督特征学习”的演讲中,他将深度学习的思想描述为:“利用对大脑结构的模仿,希望:-使学习算法更好、更易于使用;-机器学习和人工智能的革命性进步;我相信这就是我们走向真正人工智能的方式。”常见的神经网络和深度学习应用包括:计算机视觉/图像识别/对象检测语言识别/自然语言处理(NLP)推荐系统(产品、婚介等)异常检测(网络安全等)TensorFlowTensorFlow是一个开放的为深度神经网络设计的源机器学习框架,由谷歌大脑团队开发。TensorFlow支持在Windows和Mac操作系统(包括CPU、GPU和TPU)上进行可扩展和便携的训练。它是迄今为止GitHub上最受欢迎和最活跃的机器学习项目。DataCollector中的TensorFlow随着TensorFlowEvaluator的引入,您现在可以创建管道(pipelines)以获取数据或特征并在受控环境中生成预测或分类,而无需发起请求作为Web服务和HTTP或RESTAPI调用已发布的机器学习模型。例如,DataCollector管道现在可以检测欺诈交易或实时对文本执行自然语言处理,因为数据在存储在最终目的地以供进一步处理或决策之前经过各个阶段。此外,借助DataCollectorEdge,您可以在RaspberryPi和在受支持平台上运行的其他设备上运行已经启用的TensorFlow机器学习管道。例如,检测高风险地区发生洪水等自然灾害的概率,以防止人们财产受到损失。乳腺癌分类让我们考虑将乳腺癌肿瘤分类为恶性或良性的示例。乳腺癌是一个经典的数据集,可以用作scikit-learn的一部分。要了解如何在Python中使用此数据集训练和导出简单的TensorFlow模型,请查看我在GitHub上的代码。正如您将看到的,模型创建和训练保持在最低限度,并且非常简单,只有几个隐藏层。需要注意的最重要方面是如何使用TensorFlowSavedModelBuilder*导出和保存模型。*注意:要在DataCollector或DataCollectorEdge中使用TensorFlow模型,您应该首先使用TensorFlow的SavedModelBuilder在您选择支持的开发语言(例如Python)和交互式环境(例如JupiterNotebook)中导出并保存模型.使用TensorFlow的SavedModelBuilder训练和导出模型后,只要将模型保存在DataCollector或DataCollectorEdge可访问的某个位置,就可以在数据流管道中使用它进行预测或分类。管道概述在深入了解细节之前,先看看管道的样子:管道详细信息目录源:-这将从.csv文件加载乳腺癌记录数据(注意:此输入数据源可以很容易地替换为其他源,包括Kafka、AWSS3、MySQL等);字段转换器:-该处理器将模型使用的所有输入乳腺癌记录特征数据从字符串类型转换为浮点类型(mean_radius、mean_texture、mean_perimeter、mean_area、mean_smoothness、mean_compactness、mean_concavity、mean_concave_points、mean_symmetry、mean_fractal_dimension、radius_error、texture_error,perimeter_error,area_error,smoothness_error,compactness_error,concavity_error,concave_points_error,symmetry_error,fractal_dimension_error,worst_radius,worst_texture,worst_perimeter,worst_area,worst_smoothness,worst_compactness,worst_concavity,worst_concave_fractal_points,worstsymmetry);TensorFlowEvaluator*:-模型保存路径:指定要使用的预训练TensorFlow模型的位置;-模型标签:设置为“服务”,因为元图(在我们导出的模型中)将在服务中使用。详情参见tag_constants.py和相关的TensorFlowAPI文档;-输入配置:指定在训练和导出模型时配置的输入张量信息(参见Trainmodelandsave/exportitusingTensorFlowSavedModelBuildersection);-OutputConfiguration:指定在训练和导出模型时配置的输出张量信息(参见Trainmodelandsave/exportitusingTensorFlowSavedModelBuilder部分);-OutputField:我们要保存分类值的输出记录字段;表达式评估器:-该处理器将模型输出或分类值评估为0或1(存储在输出的字段TF_Model_Classification中)并创建一个新的记录字段“Condition”,其值分别为Benign或Malignant;StreamSelector:-该处理器评估癌症状态(良性或恶性)并将记录发送给相应的Kafka生产者;KafkaProducers:-输入记录和模型输出或分类值有条件地发送给两个Kafka生产者进行进一步处理和分析;*TensorFlowEvaluatorConfiguration注意:一旦TensorFlowEvaluator产生模型输出,本例中使用的流水线阶段是可选的,可以根据用例的需要与其他处理器和目标互换。管道执行在预览管道上,乳腺癌数据记录的输入经历了上述数据流管道过程,包括为我们的TensorFlow模型提供服务。发送给Kafkaproducer的最终输出记录数据(如上图)包括模型用于分类的乳腺癌特征,用户自定义字段TF_Model_Classification中模型输出值为0或1,以及ExpressionEvaluator创建的Condition字段指示相应的癌症状况是良性还是恶性。总结本文说明了如何在DataCollector3.5.0中使用新发布的TensorFlowEvaluator。通常,此估算器将允许您提供预训练的TensorFlow模型来生成预测和分类,而无需编写您自己的任何代码。