查看原文
其他

Sophon+Slipstream实现流式KMeans聚类预测

2017-10-13 Coda6 大数据开放实验室

随着数据规模和丰富度的不断提升,其价值越来越受到企业的重视。其中,机器学习在挖掘数据价值方面扮演着重要的角色,得到广泛应用。大数据概念的在各行各业的普及与深入,使机器学习拥有更多的创造价值的机会。

特别的,在广告推荐、商业预测方面,有效的机器学习应用将会带来非常直接的价值。由于推荐预测系统对数据时效性的敏感度较高,而且其数据处于连续实时且快速的变化,所以必须建立起流式的机器学习应用,从而对流式的数据进行实时的预测分析与处理,这对于商业分析与运营而言将十分关键。

为此,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结合可以支持多种流式机器学习。流式机器学习将方便基于实时数据的数据挖掘开发,不必等待批量数据就可以对实时数据做预测。在广告、工业、交通等具有实时预测需求的行业,二者工具的结合将有效推动智能行业应用的构建与建设。


往期原创文章

如何用discoverR算法库实现关联推荐

Search SQL:用于全文检索的SQL扩展(二)

Search SQL:用于全文检索的SQL扩展(一)

Guardian 5.0全新架构解析:大数据安全防御之盾(二)

Guardian 5.0全新架构解析:大数据安全防御之盾(一)

Rubik支持的OLAP Cube降维方法(一)

Transwarp Pilot: 让BI分析全面自助化

近实时的ETL工具--Transwarp Transporter

MBO: SQL优化之基于物化视图的优化

用Slipstream构建复杂事件处理应用

混合负载下的资源调度神器--Inceptor Scheduler

你应该知道的工作流调度平台——Transwarp Workflow

OLAP Cube可视化设计工具—Transwarp Rubik

TDH荣获TPC官方测试(TPCx-HS@10TB)最佳性能

利用Transwarp Guardian保障HDFS安全

关于StreamSQL中的Application隔离

如何让Kafka集群免受黑客攻击

Transwarp如何让Hadoop集群免受黑客攻击

大数据基础技术的未来演进趋势预测




大数据开放实验室由星环信息科技(上海)有限公司运营,专门致力于大数据技术的研究和传播。若转载请在文章开头明显注明“文章来源于微信订阅号——大数据开放实验室”,并保留作者和账号介绍。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存