当前位置:首页 期刊杂志

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

时间:2024-07-28

杜晓梦 北京百分点信息科技有限公司研发总监,博士

发展策略

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

杜晓梦 北京百分点信息科技有限公司研发总监,博士

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

分布式架构;大数据;建模

1 引言

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

2 百分点大数据商业建模基础架构

百分点大数据商业建模的基础架构基本分为业务需求层、模型层和数据管理层。进一步细分的话,数据管理层又可以细分成计算层、数据文件系统层以及操作系统层;模型层又可分成模型和可视化、分析工具以及接口层。从需求层来看,在大数据时代,企业和消费者的接触点变得越来越多,包括线下门店、精准广告、社交平台等接触点。企业要实现它的业务需求,首先要从这些接触点上采集消费者的数据,然后进行分析和挖掘,以满足不同业务部门的需求,这个是业务层或者需求层要解决的一些问题。

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

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

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

3 数据管理层和模型层

本文主要对数据管理层和模型层进行介绍(见图1、2)。数据管理层又可以进一步分成操作系统层、数据文件系统层和计算层3层。操作系统层是硬件之上第一层,大部分的公司有Linux、Unix、Windows这些系统,所有的建模工具、数据管理和处理都依赖于这些操作系统。在数据文件系统层,有HDFS分布式文件系统、消息队列、磁盘文件系统等,这一层和计算层是紧紧相连的。计算层提供数据的处理、计算的框架和方式,包括Hadoop、Spark、Storm计算框架。当然,也包括像Oracle和MySQL这种传统数据库提供结构化数据管理和处理的方法论。一些非结构化的数据库,如像Redis可以和Storm很好地结合,目前百分点的实时推荐架构就是这样做的。

图1 数据管理层

图2 模型库

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

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

4 百分点大数据商业建模的流程九宫格

接下来给大家介绍一下百分点大数据商业建模的流程九宫格(见图3)。

第一步,在任何大数据分析、建模之前,首先要做业务问题的定义。要定义清楚你想要分析什么东西,业务需要什么样的结果,如何去量化这个业务问题。业务问题定义是很重要的,它直接决定了模型的价值和意义所在,如果模型最后的结果不能回答最开始的业务问题,或者不能满足业务的需求,认为这个模型分析其实是失败的。

图3 大数据商业建模流程九宫格

第二步是数据的提取和理解,要针对一个已经定义清楚的一个业务问题去提取相关的数据。数据在哪里?去哪些数据库提取,去MySQL、SQLServer提取,还是去Greenplum提取,或者去HBase或Codis集群里提取?不同的数据库需要用到不同的工具和语言去做数据提取。对于数据的提取部分,一般大数据公司都会有专门的数据工程师去做。接下来到数据的理解部分,拿到数据之后千万不要马上进入到分析的环节去,先要做大量数据理解,包括描述性的统计分析、一些相关性分析、绘制大量的图表,例如散点图、残差图等,帮助我们建立对数据的理解,这一步非常关键。往往通过数据的理解,就能部分回答你的业务问题,或者说建立起一系列的假设。

第三步进入到数据预处理的环节。数据预处理会占据大概50%的时间,有一些大数据工程师或数据分析师认为拿来数据,只要尝试各种模型,就能解决这个业务问题,其实这种做法是不对的。通常来说,50%以上的时间需要花在数据的预处理部分,这也是大数据和小数据的一些差异。因为在大数据建模的领域,数据的噪音是非常大的。需要首先去做一些数据的清洗、降噪,例如补充缺失值,怎么去填充缺失值?是全用均值去填充?还是用模型预测值去填充?异常值要不要去除?怎么定义Outlier?这些都有相关的技术。需要做数据的集成,包括冗余的属性,冗余的维度,进一步在数据预处理时,还要做数据的变换,包括数据的平滑。要去做数据的规范化,数据量纲的统一,如果数据量纲差异太大的话,可能分析出来某个系数有的是0.0000几,那它的可读性是非常不好的。在数据预处理的部分,还要去做一些数据的规约,这个部分其实是要在海量数据中提取出有代表性的数据。因为如果这个数据太大的话,其实分析起来是浪费资源的。所以如果能用一些代表性的数据去分析,而不损失信息量的话,就是规约的目的。数据的规约包括数据离散化、抽样的技术等。这些都是数据预处理的技术,也是笔者认为在大数据建模的过程里最重要的一个环节。有一个说法叫Garbage In,Garbage Out,意思就是说,如果你不做任何数据的清洗加工,就直接进入模型的话,它其实是垃圾进入,然后出来的也会是垃圾,没有价值的结果。

第四步是模型算法选型。面对无数的模型算法,要选择哪个?其实是取决于你的数据情况,取决于你的业务问题。当然有大量可供选择的模型,例如在统计建模的领域有线性、非线性的回归,有时间序列的算法等。在机器学习领域,有分类、聚类、关联规则、神经网络等。在优化运筹领域,有线性、非线性规划,模拟退火、遗传算法等。但模型的算法不是越复杂越好,从经验来看,线性模型和逻辑回归能解决很多的问题。因此,能解释业务问题的模型就是好的模型,而不要盲目追求算法的复杂度。

第五步在模型算法选型之后,要做分析工具和语言的一个选型。通常会有一些熟知的工具,例说R、Python、Java、C++等,某个模型算法,例如分类,可以用R实现,也可以用Python,甚至可以直接用C++去写,这个其实取决于数据建模工程师的偏好,或者取决于分析团队负责人的偏好。一般来说,建议大家掌握2~3种工具,精通其中的一种。

第六步建模挖掘的部分,会利用模型算法选型决定的模型,利用分析工具选型决定的工具去进行建模的挖掘。大多数情况会尝试几种模型,然后对比单个模型效果,或者通过Bagging、Boosting方法去投票,做组合,提高准确率。前五步的功夫做足,真正的建模挖掘步骤反倒不会是多么困难的部分。

第七步进入到模型评估。模型评估其实也是一个非常重要的部分,什么样的模型才是好模型?评估模型优劣性的指标有很多种,比如说准确率、召回率。如果是统计模型,会用RSquare去评估模型对于方差的解释度;会用均方根误差,RMSE这个指标去评估模型的预测效果。模型的速度、健壮性也很重要,包括模型的扩展性,在数据量大的时候,能否保证运算的效率,也是需要评估的一个指标。另外,模型的可解释性,对于业务人员也是很重要的。有一些黑箱模型、神经网络等,它天生不具备像逻辑回归的可解释性。另外,笔者认为最重要的指标是模型的结果是否是可用的,是否回答了业务的问题,这个其实是评估模型的一个最重要的指标。

第八步,在通过了模型的评估之后,就要把这个结果可视化,需要用大量的图表去展示模型的结果,要让它的可读性变得很强,逻辑很清晰,结论很清楚,这样才能讲给业务人员听,让业务人员理解模型是怎么出来的,数据分析的结果如何支撑业务,如何回答业务问题。有些数据分析师不重视可视化,会认为模型预测准就好,其实可视化的过程也是帮助你总结的一个过程。

第九步,当模型通过了所有的评估、业务审核等,就要去做模型的部署,模型与企业现有的应用系统、生产系统,包括推荐、营销系统、CRM等对接,把这个模型投入到生产和业务中,让它切实发挥作用。

以上就是在大数据时代做数据建模流程的9个步骤。

5 大数据建模应用场景

分享一个应用场景,即如何通过大数据建模解决客户的业务问题。这个案例是某品牌手机新品上市营销的业务方案,帮它做了两件事情,第一件事情是老用户的营销,通过建模找到新品手机的目标人群(见图4);第二件事情是微博的营销,对于这一点做了以下3件事:

(1)帮它甄别这个行业比较有话语权的微博。

(2)帮它识别了网友中的意见领袖。

(3)帮它找到想买手机的用户。

这个项目的关键点,其实就是定义清楚业务问题。定义清楚一系列业务问题之后,选取一些建模的方法去实现,帮助它解决这些业务问题。例如,如何通过老用户建模分析找到新品手机的目标人群?

图4 老用户营销

首先,提取了这个品牌手机的电商旗舰平台及线下门店的用户历史交易数据,作为原始数据要做描述性的统计,之后做数据清洗和预处理。在数据清洗的过程中,发现了很多数据错误,需要和客户进行确认,决定修改的原则,并将对数据的修改记录下来,具体参见图5、6。

图5 数据概括

图6 数据问题概括

在数据清洗之后,运用关联规则模型度量这个新品手机和其他品类的相似性。主要步骤如下:

(1)选择满足最小支持度的商品项集。

(2)选择满足最小置信度的规则。

(3)选择提升度大于1的规则,不断迭代,找出所有满足要求的关联规则。

(4)选择满足最低KULC系数的规则。

(5)选择IR偏向的关联规则。

其中,筛选规则为:

●提升度>3(电视品类提升度>1)。

●未设置最小支持度。

●KULC:采取放宽KULC限制,同时设置最低不平衡度,再从中选取对当前rhs有利规则;P(KULC>0.5)规则非常少;当前设置>0.25。

●IR:在一定不平衡度基准以上进一步筛选偏向当前rhs的关联规则;绝大多数关联关系很不平衡;当前设置>0.5。

●置信度,当前筛选结果最小置信度达0.5,因此不再针对置信度进一步设置。

经关联规则模型得到如图7的结果,运用关联规则模型,找到和新品品类A最相近的细分品类B,将购买过B品类的用户作为再营销的重点老用户群体。

当然,也使用了其他的模型预测,例如购买概率的预测、协同过滤模型、产品生命周期的推测等。之后,建立用户特征的过滤,识别这个终端消费用户的购买频次、消费的品类、价格承受度,最后锁定目标人群,输出目标群体的营销列表,找到整个老用户群体里有可能去购买新品手机的用户群体,并做了基于购买概率的排序。

对于新品手机的微博营销方案,首先爬取了在新浪微博上行业相关的微博,通过关键词提取了所有博文的内容,包括评论内容、转发内容、用户信息等。进一步构建了3个模型,筛选出来用于微博营销新品手机的潜在目标用户。这3个模型分别是通过构建影响力指数模型去找到具有行业话语权的行业公众号、通过社会网络模型识别微博中的意见领袖,以及通过语义分析模型找到想买手机的人群,从而实施新品手机广告的转发和推荐。下面具体介绍一下这3个模型:

(1)影响力指数编制

首先,对微博公众号影响力指数进行了编制。基于此分类下的蓝V用户的微博影响力数据,综合利用AHP方法计算出不同行业在微博平台影响力的指标,然后找到这些最具有影响力的微博公众号或者蓝V的用户去做新品手机广告的触达,具体参见图8。

(2)社会网络分析

图7 关联规则结果

运用社会网络模型去找到这款手机的意见领袖。社会网络分析模型广泛地运用在这种具有网络特征的大数据分析中,例如通过计算节点的连接数去找到一个社交群体中的意见领袖和活跃分子等。同时,SNA模型还可以用来计算社交网络的密度,监控这个网络的健康度等,目前在舆情监控领域、电信网络的数据分析等都有比较广泛的应用。利用SNA模型,去找到微博中和手机相关的意见领袖,进行新品手机营销文章的推送,引发这个意见领袖的关注和讨论,从而带动大多数跟随者对某品牌新品手机的一个关注,这是第二个模型,具体参见图9。

图8 影响力指数编制

图9 社会网络分析

(3)文本挖掘模型

第三个模型是文本挖掘(见图10)。在文本挖掘模型中,首先建立了一系列的规则,例如在微博正文中含有“想买手机”、“挑选手机”等关键词的微博,针对规则对抓取的博文进行了标注和过滤,经过SVM分类模型的训练,把微博进行分类,最后筛选出可能会对某品牌手机感兴趣,或者近期有购买手机意愿的人群,由营销人员进行触达,推广这个新品的手机。

接下来看一下这几个模型一些应用的效果。首先第一部分,在老用户营销中,经过建模加权之后的结果,找到不同等级的目标,用户群体超过10万人。通过筛选之后进行短期的推送,效果比盲投广告提升了3倍。在微博营销中,通过3个模型,获取了超过10万人的目标用户群,经过运营人员进行触达,有超过1万人响应了新品手机微博的营销信息,最终通过这些大数据建模的方式找到这个营销的短名单,然后帮助这个品牌成功实现新品上市的营销推广方案。

最后跟大家分享的是,在大数据时代的商业建模需要做到的几个方面(见图11):

第一,好数据胜过复杂的模型,不用去太刻意追求模型的复杂度,往往线性回归和逻辑回归就能解释大部分的问题了。记得一位计量经济学教授说过这样的话:如果你不知道该用简单模型还是复杂模型,为什么不从简单的开始呢?

第二,要做好充分的数据预处理,做好数据的清洗、融合、集成、规约等,去了解业务,理解数据,切忌Garbage In,Garbage Out。所谓磨刀不误砍柴工,如果数据预处理准备的充分,接下来的数据挖掘也会非常地流畅。反之,如果没有做充分的数据预处理和描述性分析,就会对建模的结果产生怀疑,进而返工,浪费更多的时间。

图10 文本挖掘模型

第三,笔者认为需要大数据建模分析去解决业务问题的企业应该组建一个功能比较全面的数据科学团队。大数据建模往往需要群策群力。之前讲过,在大数据时代,建模已经演化成一个体系问题,基本不能由一个人来承担了。或者说,一个人需要掌握太多种技能才能应付整个建模流程。通常来说,数据科学团队里会有大数据提取工程师、建模算法工程师、数据可视化工程师、业务数据分析师、优化工程师等,是一个集团军作业、流水线作业的情况,而不是像小数据时代,通过一个人就能解决从数据的提取、加工、建模,到最后数据的分析结果展示这一系列的问题。

6 结束语

如果一个人能解决大数据建模这一系列的问题——能够和数据库进行底层的交互、能去做建模算法的挖掘、能做数据的优化、能做数据可视化等,集这些功能为一身的人才配称之为数据科学家,真正的数据科学家是非常稀有的。而目前没有集这些功能于一身的人的情况下,通常可以用群体的力量去解决在大数据时代遇到的数据挖掘问题。因此,笔者认为,企业去招一个全面的数据科学家,不如去组建一个功能比较全面的数据科学团队,大家各有所长,数据提取工程师去做和数据库的交互,算法工程师去做数据的挖掘,可视化做可视化的展现,调优的去做运营调优等,以集体的力量去解决企业在大数据时代遇到的商业建模的一些问题。

图11 大数据时代商业建模需要做到的几个方面

2016-06-20)

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!