使用TensorFlowKafka和MemSQL进行实时机器学习

  ----如何构建一个简单的机器学习通道,进行流式处理分类,并支持SQL查询

  TensorFlow已经成为领先的机器学习库之一,与运行数据库相结合,为快速构建复杂的机器学习工作流提供基础。

  在这篇文章中,我们将探索一个使用数据集的机器学习工作流。总体目标是通过机器比较建议,一个人通过查看不同的人的配置文件直接选择与自己匹配的人。数据集来自Kaggle实验。

  作为工作流的一部分,我们将详细介绍如何使用MemSQLPipelines将来自Kafka的数据实时传输到数据库中。在摄取数据后,使用TensorFlow内置的TensorFlow算法来分类数据。最后,将看到机器如何确定匹配。

  下面的架构是由通过Kafka流式传输的训练和分类数据组成,并存储在持久的可查询的数据库中。在这种情况下,将使用MemSQL并利用Pipelines功能在流中在保留TensorFlow操作之前,将其保留到数据库中。

  在Kafka方面,我们设置了两个Kafka主题、分类和培训。原始培训和分类数据从这些Kafka主题流入MemSQL管道。在数据库方面,我们创建了一个名为speed_dating_matches的数据库,并在该数据库中创建了两个表,即dating_training和dating_results。

  dating_training是一个单行表,我们把训练评估的输出放在训练中

  dating_results是一个包含所有关于潜在日期的数据的表格,以及确定这个日期是否匹配。

  它们将来自Kafka主题的数据进行流式处理,使用该数据进行训练或分类,并将最终结果放在相应的表格中。

  速度约会信息包括在六个特征中分配100个优先点:吸引力,智力,趣味,共同兴趣,诚意和抱负。

  它还包括家乡的传记和兴趣信息、学习兴趣(数据来自大学生)、爱好电影、瑜伽、旅游和电子游戏等。

  训练数据是一组预定匹配,并且分类数据预测匹配的可能性。有了这些信息,我们可以看到在训练数据中匹配的人,并用我们自己的问题的答案看看我们可能匹配谁。

  从那里,我们可以提出更详细的问题,比如一般人在约会属性和兴趣方面寻找什么,以及一般人和我匹配的人有什么不同?

  CSV字段名称。CSV字段名称是将CSV读入Pandas数据框时将使用的名称。

  TensorFlow分类特征列。分类要素列是不能由离散数字表示的项目。诸如居住国、职业或母校等特征都是分类特征栏的例子。TensorFlow的一个重要功能是你不需要知道给定的类别有多少不同的值,它将为你创建向量。请参阅TensorFlow文档中TensorFlow线性模型教程的“基本分类特征列”部分。

  TensorFlow连续特征列。连续特征是可以用数字表示的任何东西。像年龄,工资和最高运行速度等特征都是可以使用连续特征栏来表示的事例。更多信息,请参阅TensorFlow线性模型教程的“基本连续特征列”部分。

  在这个例子中,速度约会数据对象被表示为由他们如何排列特征,完成传记信息和列出的兴趣组成的向量:

  在下图中,我们可以看到,训练数据被传递来训练线性分类器模型,分类数据通过TensorFlow模型,根据匹配的可能性输出0或1。

  有了这些基础设施,可以将自己的信息添加到组合中。在这种情况下,将个人的约会信息输入到分类工作流程中,并预测匹配的可能性。为了评估有效性,可以看看这些匹配是否有直接选择的项目。

  这个整体架构有许多优点。它支持通过Kafka简单地传输新数据,使用开箱即用的TensorFlow模型,并以一种可以用SQL轻松查询的格式保存数据。从根本上提供了将数据流式传输到MemSQL,并同时进行分类的功能。更多信息,请参阅TensorFlow文档中关于提供TensorFlow模型的文档。

  刘志红(Alice Liu).16年IT从业经验。曾在NTT DATA, Oracle,中钞造币集团,中国电信云计算分公司从事云计算等关联IT工作。拥有软件著作权1件。返回搜狐,查看更多

TAG标签: sql学习
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。