基本思路
Sophon+Slipstream实现流式KMeans聚类预测
随着数据规模和丰富度的不断提升,其价值越来越受到企业的重视。其中,机器学习在挖掘数据价值方面扮演着重要的角色,得到广泛应用。大数据概念的在各行各业的普及与深入,使机器学习拥有更多的创造价值的机会。
特别的,在广告推荐、商业预测方面,有效的机器学习应用将会带来非常直接的价值。由于推荐预测系统对数据时效性的敏感度较高,而且其数据处于连续实时且快速的变化,所以必须建立起流式的机器学习应用,从而对流式的数据进行实时的预测分析与处理,这对于商业分析与运营而言将十分关键。
为此,Transwarp提供了Sophon+Slipstream的流上机器学习解决方案。其中,Sophon是TDH生态中的深度学习与机器学习平台,Slipstream是强大的SQL流处理引擎。Sophon负责实现算法模型训练,Slipstream提供事件驱动引擎,支持机器学习应用运行于事件驱动模式,因此能够将二者组合实现流式机器学习的开发。
本文将介绍如何利用Sophon以及Slipstream对流数据实现KMeans聚类预测。
1. 利用Transwarp Sophon的客户端Midas对样本数据进行机器学习模型训练,并将模型训练结果导出为Json格式。
2. 接着在Transwarp Slipstream中,将上述模型导入系统,然后启动流处理,对当前进入系统的实时数据进行实时预测。
3. 预测的结果可以持久化在Inceptor或Hyperbase表中,以便后续查询。或者也可直接送入Kafka中,进行实时展示。
上述模型预测的全过程,只需要用户进行拖拽式的建模以及SQL语句编写,并不涉及复杂编程,即可完成实时预测的功能开发。下面将介绍在Sophon和Slipstream中的具体操作。
用Sophon训练模型
我们利用Sophon的客户端Midas对样本数据进行KMeans算法模型训练。
首先将数据读入模块拖拽入流程设计面板中并编辑其相关参数,即设置待训练的样本数据,然后引入KMeans模型算法算子,最后通过“写入Json文件”算子,将训练好的模型以Json文件导出并存储在HDFS的/tmp/kmeans.json中。
下图提供了整个过程的完整流程,以及模型导出算子的配置。
用Slipstream做流式预测
下面开始在Slipstream中利用kmeans.json模型进行KMeans聚类预测。
在Kafka中创建名为unlabeled的topic。用于接收Producer生产的数据。
./kafka-topics.sh --create --zookeeper tw-node3228:2181 --topic unlabeled --partitions 1 --replication-factor 1 |
接着在Slipstream中创建以Kafka为源的Input stream--unlabeled,以及用于接收预测结果的Inceptor Text表--kmeans_predict。
create stream unlabeled(id int, c1 double, c2 double) tblproperties("topic"="unlabeled","kafka.zookeeper"="172.16.3.228:2181","kafka.broker.list"="172.16.3.230:9092"); create table kmeans_predict(id int, c1 double, c2 double, predict int); |
启动stream,利用Sophon中训练好的模型kmeans.json,以流数据中的c1和c2字段为特征属性进行聚类预测。结果保存在kmeans_predict表中。
insert into kmeans_predict select *,kmeans_predict(c1,c2,cast("/tmp/kmeans.json" as string)) from unlabeled; |
其中,该语句中的kmeans_predict函数是预置在Slipstream中的用于实现流式KMeans算法预测的函数,该函数是这样定义的:
kmeans_predict(col1, col2, ... coln, model_path)
col1,...,coln代表每个元素的特征属性,model_path是训练好的模型的存放路径。
接着,启动Kafka Producer(以kafka-console-producer为例)向Kafka集群发送数据。
bin/kafka-console-producer.sh --broker-list tw-node3230:9092 --topic unlabeled 6,2.2,3.3 7,5.4,4.5 8,10.2,3.4 9.4.2,6.8 10,2.4,9.7 |
随后在Slipstream中用SELECT访问kmeans_predict结果表,查看对Producer发布的流数据进行聚类后的结果。
select * from kmeans_predict; |
以上便完成了对流式数据的机器学习模型预测。
总结
Sophon除了KMeans之外还支持多种常见算法的流式预测,与Slipstream结合可以支持多种流式机器学习。流式机器学习将方便基于实时数据的数据挖掘开发,不必等待批量数据就可以对实时数据做预测。在广告、工业、交通等具有实时预测需求的行业,二者工具的结合将有效推动智能行业应用的构建与建设。
往期原创文章
Guardian 5.0全新架构解析:大数据安全防御之盾(二)
Guardian 5.0全新架构解析:大数据安全防御之盾(一)
近实时的ETL工具--Transwarp Transporter
混合负载下的资源调度神器--Inceptor Scheduler
你应该知道的工作流调度平台——Transwarp Workflow
OLAP Cube可视化设计工具—Transwarp Rubik
TDH荣获TPC官方测试(TPCx-HS@10TB)最佳性能
大数据开放实验室由星环信息科技(上海)有限公司运营,专门致力于大数据技术的研究和传播。若转载请在文章开头明显注明“文章来源于微信订阅号——大数据开放实验室”,并保留作者和账号介绍。