专栏名称: InfoQ
有内容的技术社区媒体。
目录
相关文章推荐
51好读  ›  专栏  ›  InfoQ

Spark技术在京东智能供应链预测的应用

InfoQ  · 公众号  · 科技媒体  · 2017-03-22 08:00

正文

请到「今天看啥」查看全文


基础数据加工层: 在这一层主要通过Hive对基础数据进行一些加工清洗,去掉不需要的字段,过滤不需要的维度并清洗有问题的数据。

核心业务层: 这层是系统的的核心部分,横向看又可分为三层:特征构建、预测算法和预测结果加工。纵向看是由多条业务线组成,彼此之间不发生任何交集。

  • 特征构建:将之前清洗过的基础数据通过近一步的处理转化成标准格式的特征数据,提供给后续算法模型使用。

  • 核心算法:利用时间序列分析、机器学习等人工智能技术进行销量、单量的预测,是预测系统中最为核心的部分。

  • 预测结果加工:预测结果可能在格式和一些特殊性要求上不能满足下游系统,所以还需要根据实际情况对其进行加工处理,比如增加标准差、促销标识等额外信息。

预测结果输出层: 将最终预测结果同步回京东数据仓库、MySql、HBase或制作成JSF接口供其他系统远程调用。

下游系统: 包括下游任务流程、下游Web系统和其他系统。

预测系统核心介绍
预测系统核心层技术选型

预测系统核心层技术主要分为四层:基础层、框架层、工具层和算法层。

基础层:

HDFS用来做数据存储,Yarn用来做资源调度,BDP(Big Data Platform)是京东自己研发的大数据平台,我们主要用它来做任务调度。

框架层:

以Spark RDD、Spark SQL、Hive为主, MapReduce程序占一小部分,是原先遗留下来的,目前正逐步替换成Spark RDD。 选择Spark除了对性能的考虑外,还考虑了Spark程序开发的高效率、多语言特性以及对机器学习算法的支持。在Spark开发语言上我们选择了Python,原因有以下三点:

  • Python有很多不错的机器学习算法包可以使用,比起Spark的MLlib,算法的准确度更高。我们用GBDT做过对比,发现xgboost比MLlib里面提供的提升树模型预测准确度高出大概5%~10%。虽然直接使用Spark自带的机器学习框架会节省我们的开发成本,但预测准确度对于我们来说至关重要,每提升1%的准确度,就可能会带来成本的成倍降低。

  • 我们的团队中包括开发工程师和算法工程师,对于算法工程师而言他们更擅长使用Python进行数据分析,使用Java或Scala会有不小的学习成本。

  • 对比其他语言,我们发现使用Python的开发效率是最高的,并且对于一个新人,学习Python比学习其他语言更加容易。

工具层:

一方面我们会结合自身业务有针对性的开发一些算法,另一方面我们会直接使用业界比较成熟的算法和模型,这些算法都封装在第三方Python包中。我们比较常用的包有xgboost、numpy、pandas、sklearn、scipy和hyperopt等。

  • Xgboost:它是Gradient Boosting Machine的一个C++实现,xgboost最大的特点在于,它能够自动利用CPU的多线程进行并行,同时在算法上加以改进提高了精度。

  • numpy:是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多(该结构也可以用来表示矩阵)。

  • pandas:是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。

  • sklearn:是Python重要的机器学习库,支持包括分类、回归、降维和聚类四大机器学习算法。还包含了特征提取、数据处理和模型评估三大模块。

  • scipy:是在NumPy库的基础上增加了众多的数学、科学以及工程计算中常用的库函数。例如线性代数、常微分方程数值求解、信号处理、图像处理和稀疏矩阵等等。

算法层:

我们用到的算法模型非常多,原因是京东的商品品类齐全、业务复杂,需要根据不同的情况采用不同的算法模型。我们有一个独立的系统来为算法模型与商品之间建立匹配关系,有些比较复杂的预测业务还需要使用多个模型。我们使用的算法总体上可以分为三类:时间序列、机器学习和结合业务开发的一些独有的算法。

1. 机器学习算法主要包括GBDT、LASSO和RNN :

GBDT:是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终答案。我们用它来预测高销量,但历史规律不明显的商品。

RNN:这种网络的内部状态可以展示动态时序行为。不同于前馈神经网络的是,RNN可以利用它内部的记忆来处理任意时序的输入序列,这让它可以更容易处理如时序预测、语音识别等。

LASSO:该方法是一种压缩估计。它通过构造一个罚函数得到一个较为精炼的模型,使得它压缩一些系数,同时设定一些系数为零。因此保留了子集收缩的优点,是一种处理具有复共线性数据的有偏估计。用来预测低销量,历史数据平稳的商品效果较好。

2. 时间序列主要包括ARIMA和Holt winters :

ARIMA:全称为自回归积分滑动平均模型,于70年代初提出的一个著名时间序列预测方法,我们用它来主要预测类似库房单量这种平稳的序列。

Holt winters:又称三次指数平滑算法,也是一个经典的时间序列算法,我们用它来预测季节性和趋势都很明显的商品。

3. 结合业务开发的独有算法包括WMAStockDT、SimilarityModel和NewProduct等:

WMAStockDT:库存决策树模型,用来预测受库存状态影响较大的商品。

SimilarityModel:相似品模型,使用指定的同类品数据来预测某商品未来销量。







请到「今天看啥」查看全文