微信扫描登录
或者
请输入您的邮件地址来登录或者创建帐号
提 交取 消
GITBOOK.CN需要您的浏览器打开cookies设置以支持登录功能

基于分布式架构的大数据商业建模实践

本篇文章整理自百分点数据科学总监杜晓梦4月19日在『ITA1024大数据精英群』里的分享实录:基于分布式架构的大数据商业建模实践。

enter image description here

大家晚上好,我是杜晓梦,来自百分点集团,很高兴“ITA1024” 和“百分点大数据学院”牵头举办此次活动。非常感谢ITA的团队能够提供这么好的一个机会给大家做一次分享。我分享的主题是《基于分布式架构的大数据商业建模》。

首先,我做一下自我介绍,我是百分点数据科学总监,也是大数据应用产品线的负责人,本硕博都是在北大念的,博士专业是营销建模。今天给大家主要分享一下百分点基于分布式架构的大数据建模实践,主要讲一下建模的技术架构、一些技术、工具

百分点基于分布式架构的大数据建模实践

我们看到大数据时代的到来,数据的量,数据的源都发生了剧烈的变化,这种变化引发了变革。开源运动的进一步发展,为这场变革提供了催化剂。下面我们就重点讨论一下我们的商业建模的技术架构是如何应对这种变化的。

enter image description here

这张图是百分点大数据商业建模的一个基础架构图,它基本分成三层,分别是业务需求层、模型层和数据管理层。进一步细分的话,模型层又可以分成模型和可视化、分析工具以及接口层。数据管理层又可以细分成计算层、数据文件系统层以及操作系统层。

从需求层来看,在大数据的时代,企业和消费者的接触点变得越来越多,包括线下门店、精准广告、社交平台等接触点。企业要实现它的业务需求,首先要从这些接触点上采集消费者的数据,然后去进行分析和挖掘,以满足不同业务部门的需求,这个是业务层或者说需求层要解决的一些问题。

在小数据的时代,我们需要考虑的往往只有需求和模型设计本身,我们需要考虑输入变量是离散的还是连续性的变量,要用线性的模型还是要用非线性的模型就够了。当然小数据时代,也会用到一些建模的工具,比如说SaaS,比如说SPSS等,会去跑一个模型,然后分析系数的显著性,得出分析的结果。但是在大数据时代,这种方式其实是不太Work的,建模变成了一个体系的问题,它需要从整个需求层到模型层,到数据管理层进行一个综合的考虑。

我们以一个典型业务层的需求,比如说个性化定价为例。首先要考虑用什么模型。在模型层,要将商品进行分类,还要去结合统筹学和优化的模型去对这个问题进行分析。在分析工具上面,可能会用Python去进行数据的清洗,可能会选用R进行数据的建模,会考虑这个模型的实时性会有多高,它的数据量多大,它是单机就能跑?还是说要上分布式的架构?如果是上分布式的话,要用Hadoop还是要用Spark,要用Rhadoop去调用数据,还是要用SparkR去进行分析,进一步地,需要有数据管理层的分布式架构去进行支撑。

所以说在大数据的时代,建模演化成一个要结合这七层去考虑的整体问题。其实需求层在大数据和小数据的时代,变化不太大,差异不太大,它都是解决这些企业不同业务部门的需求,比如说销售有销售的需求,例如销量预测,个性化定价,库存优化。营销有营销的一些业务需求,例如如何定位目标人群,通过哪些渠道去触达消费者,营销投放的ROI怎么样等等。这些需求在大数据时代和小数据时代没有特别大的差异,只不过是在大数据时代,我们能够利用去进行分析的数据更广泛了,变成了多源异构的数据,所以数据分析方式也要跟着去发生变化。

模型层和数据管理层

enter image description here

首先我们看到数据管理层其实又可以去进一步分成操作系统层、数据文件系统层和计算层三层。操作系统层其实是硬件之上第一层,大部分的公司有Linux、Unix、Windows这些系统,所有的建模工具、数据管理和处理都依赖于这些操作系统。在数据文件系统层,有HDFS分布式文件系统,有消息队列,有磁盘文件系统等,这一层和计算层其实是紧紧相连的。在计算层的方面,我们提供数据的处理、计算的框架和方式,包括一些Hadoop、Spark、Storm这些计算框架。当然,也包括像Oracle和My SQL这种传统数据库提供结构化数据管理和处理的方法论。一些非结构化的数据库,比如像Redis可以和Storm很好的结合,目前百分点的实时推荐架构就是这样做的。

enter image description here

模型层其实又可以细分成模型和可视化、分析工具层以及接口层。模型和可视化层解决不同的业务应用场景的问题,这里面会有各种统计模型、机器学习的模型,运筹学、优化学的模型、经济学的模型等等。要去实现这些模型,就要去选择合适的分析工具。例如在客户运营领域里面有RFM模型,用于分析客户的价值度。这个模型可以是用R语言实现,也可以用Python、Java、C++等工具实现。我们还有一些常用的算法,比如说因子分析、聚类分析、决策树等,我们既可以用Weka,也可以用SaaS进行实现。包括一些当需要集成一些可视化组件的时候,可以通过一些Processing的工具。

所以分析工具也是需要选型的,不同的数据分析师可能会根据自己的偏好去钻研某一个到两个数据分析工具,例如R和Python。数据接口层,我们通过分析工具,利用数据管理层提供的API进行模型实现。大多数时候我们会借助一些现有的工具,比如说RHadoop,比如说Python Hadoop Streaming等。当然我们也会因为性能问题和工具无法提供的功能,而借助各个系统的API封装实现自己的模型,这个时候就可能会用到C++和Java等这些编程语言去实现。以上就是模型层和管理层进一步的一个细分。