[开源]PredictionIO的推荐引擎打造,及大规模多标签分类探索

基于PredictionIO的推荐引擎打造,及大规模多标签分类探索-CSDN.NET
http://www.csdn.net/article/2015-04-10/2824454

尹绪森:Use PredictionIO to build your own recommendation engine & MLlib 最新成果


[开源]PredictionIO的推荐引擎打造,及大规模多标签分类探索_第1张图片

**Intel研究院工程师 尹绪森 **
尹绪森在本次Meetup上主要分享了两个话题——使用PredictionIO来打造一个推荐引擎以及MLlib的最新成果。
PredictionIO
尹绪森首先介绍了PredictionIO,他表示,推荐系统打造过程中,除下Spark,系统还需要其他组件,而PredictionIO就是基于Spark一个完整的端到端Pipeline,让用户可以非常简单的从零开始搭建一个推荐系统。


[开源]PredictionIO的推荐引擎打造,及大规模多标签分类探索_第2张图片

整个Pipeline流程如图所示,其中Spark是整个管道的核心,整个Pipeline主要分为以下几步:

(可选)PredictionIO使用Event Server来导入数据并存储到HBase中;
随后这些数据进入一个基于Spark的PredictionIO Engine,PredictionIO Engine可能包括一个用于导入数据的Data Source,一个用于数据处理ETL等的Data Preparator;同时,一个推荐系统可能包括多个算法,因此数据需要放到不同的Algorithm中做training;
在做完training之后生成模型,这里用户可以根据需求来编写持久化方法,确定数据储存的位置,是本地文件系统亦或是HDFS;
有了这些model之后,下一步需要做的是serving以响应用户的请求,接受用户的一些查询从而生成结果。

如上所述,一个完整的Pipeline中同时存在多个组件,比如:HBase,为EventServer存储event;Spark,用于数据或者模型的处理;HDFS,用于存储模型;Elasticsearch,用于元数据的处理。而对于用户来说,使用PredictionIO来构建Pipeline只需要实现4个部分:

Data Source and Data Preparator
Algorithm
Serving
Evaluation Metrics

Engine
在PredictionIO中,Engine是一个比较核心的部分。在这里,尹绪森通过两个用例来讲述:
Engine A:Train predictive model

[开源]PredictionIO的推荐引擎打造,及大规模多标签分类探索_第3张图片

数据从Event Server读取=》通过Data Source后形成TrainingData=》通过Preparator处理后形成PreparedData=》发送到不同的Training模块(Algorithm & model)进行训练。
Engine B:Respond to dynamic query
[开源]PredictionIO的推荐引擎打造,及大规模多标签分类探索_第4张图片

Mobile App向Engine提交查询(输入)请求,随后会发送到3个Training模块(Algorithm & model),生成结果并通过用户自定义的算法将3个结果进行整合,从而产生一个Predicted Results,并交由Serving呈现在Mobile App。
最后,尹绪森通过实际代码讲解了如何使用PredictionIO打造一个基于Spark的Pipeline。
Recent news of MLlib
[开源]PredictionIO的推荐引擎打造,及大规模多标签分类探索_第5张图片

尹绪森表示,在之前版本,Spark的各个组件(比如MLlib、Graphx、Core)相对独立,而在1.3发布后,当下已经有了一个融合的趋势,更加方便用户使用。最明显的变化就是MLlib和Spark SQL,其中SparkSQL把SchemaRDD封装成新的DataFrame API,同时基于MLlib和SQL发展出一个MLPackage,它与DataFrame一起提供了更方便的API为用户使用;而MLlib则与Spark Streaming一起提供了online training的能力,但是目前online training只有3个算法;最后,在1.3发布后,MLlib中添加了很多新的算法,其中多个都是基于GraphX实现,这主要因为很多算法都适合用图来表示,比如LDA(Latent Dirichlet Allocation)。
[开源]PredictionIO的推荐引擎打造,及大规模多标签分类探索_第6张图片

分享最后,尹绪森综述了MLlib近期的几个主要更新,其中包括Streaming-wised training、Feature extraction/transformation、LDA on top of GraphX、Multi-logistic regression、Block matrix abstraction、Gaussian Mixture、Isotonic Regression、Power iteration clustering、FPGrowth、Stat、Random forest以及ML package和 DataFrame,并表示ML package和DataFrame是近期最重要的两个变化。

你可能感兴趣的:([开源]PredictionIO的推荐引擎打造,及大规模多标签分类探索)