微信号:infoqchina

介绍:有内容的技术社区媒体

北大美女博士:如何将大数据建模在商业领域玩转得风声水起

2016-05-05 08:02 杜晓梦
从学界到业界,这是一位数据科学总监的转型。这位女博士,除了扎实的专业知识,还有过人的颜值与才华……小Q慨叹,上天不公啊!

本文是4月25日大数据杂谈群分享的内容。

关注“大数据杂谈”公众号,点击“加群学习”,更多大牛一手技术分享等着你。

分享人——杜晓梦,百分点数据科学总监,也是大数据应用产品线的负责人,北大本硕博,博士专业是营销建模。


美女博士还会玩乐队,这个键盘有点酷。小Q可以去当主唱吗?

今天分享的主题是《基于分布式架构的大数据商业建模》。

今天给大家主要分享两个部分:第一个部分会给大家介绍一下百分点基于分布式架构的大数据建模实践。在这一部分我会主要讲一下建模的技术架构、一些技术、工具以及大数据建模的流程9宫格。第二个部分我会给大家介绍一下大数据建模的应用场景,以及百分点做过的一个真实企业建模相关的应用场景。

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

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

这张图是百分点大数据商业建模的一个基础架构图,它基本分成三层,分别是业务需求层模型层数据管理层进一步细分的话,

  • 需求层

  • 数据管理层:细分成计算层、数据文件系统层以及操作系统层。

  • 模型层:模型和可视化、分析工具以及接口层。

1
需求层分析

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

在小数据的时代,我们需要考虑的往往只有需求和模型设计本身,我们需要考虑输入变量是离散的还是连续性的变量,要用线性的模型还是要用非线性的模型就够了。

当然小数据时代,也会用到一些建模的工具,比如说SaaS,比如说SPSS等,会去跑一个模型,然后分析系数的显著性,得出分析的结果。但是在大数据时代,这种方式其实是不太有效的。建模变成了一个体系的问题,它需要从整个需求层到模型层,到数据管理层进行一个综合的考虑。

我们以一个典型业务层的需求,比如说个性化定价为例。

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

所以说在大数据的时代,建模演化成一个要结合这几层去考虑的整体问题。其实需求层在大数据和小数据的时代,变化不太大,差异不太大,它都是解决这些企业不同业务部门的需求。

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

2
数据管理层分析

首先我们看到数据管理层其实又可以去进一步分成操作系统层、数据文件系统层计算层三层。

操作系统层其实是硬件之上第一层,大部分的公司有Linux、Unix、Windows这些系统,所有的建模工具、数据管理和处理都依赖于这些操作系统。在数据文件系统层,有HDFS分布式文件系统,有消息队列,有磁盘文件系统等,这一层和计算层其实是紧紧相连的。

在计算层的方面,我们提供数据的处理、计算的框架和方式,包括一些Hadoop、Spark、Storm这些计算框架。当然,也包括像Oracle和My SQL这种传统数据库提供结构化数据管理和处理的方法论。一些非结构化的数据库,比如像Redis可以和Storm很好的结合,目前百分点的实时推荐架构就是这样做的。

3
模型层分析

模型层其实又可以细分成模型和可视化、分析工具层以及接口层。模型和可视化层解决不同的业务应用场景的问题,这里面会有各种统计模型、机器学习的模型,运筹学、优化学的模型、经济学的模型等等。要去实现这些模型,就要去选择合适的分析工具。

例如在客户运营领域里面有RFM模型,用于分析客户的价值度。这个模型可以是用R语言实现,也可以用Python、Java、C++等工具实现。我们还有一些常用的算法,比如说因子分析、聚类分析、决策树等,我们既可以用Weka,也可以用SaaS进行实现。包括一些当需要集成一些可视化组件的时候,可以通过一些Processing的工具。

所以分析工具也是需要选型的,不同的数据分析师可能会根据自己的偏好去钻研某一个到两个数据分析工具,例如R和Python。数据接口层,我们通过分析工具,利用数据管理层提供的API进行模型实现。

大多数时候我们会借助一些现有的工具,比如说RHadoop,比如说Python Hadoop Streaming等。当然我们也会因为性能问题和工具无法提供的功能,而借助各个系统的API封装实现自己的模型,这个时候就可能会用到C++和Java等这些编程语言去实现。

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

这一部分非常想跟大家做一个详细的讨论,这九个格子里的内容分别拆出来讲都能各自讲一个小时到半天左右,有的能讲一个月……所以我在这里只是跟大家做一些大体的介绍。

1
业务问题的定义

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

2
数据的提取和理解

要针对一个已经定义清楚的一个业务问题去提取相关的数据。数据在哪里?去哪些数据库提取,去MySQL,SQL Server提取,还是去Greenplum里提取,还是去HBase或Codis集群里边提取。不同的数据库需要用到不同的工具和语言去做数据提取。对于数据的提取部分,一般大数据公司都会有专门的数据工程师去做。

进一步到数据的理解部分,拿到数据之后千万不要马上进入到分析的环节去,先要做大量数据理解,包括描述性的统计分析,包括一些相关性分析,包括绘制大量的图表,例如散点图、残差图等,帮助我们建立对数据的理解,这一步也是非常关键。往往通过数据的理解,就能部分回答你的业务问题,或者说建立起一系列的假设。

3
数据预处理

我们认为数据预处理会占据大概50%的时间,有一些大数据工程师或数据分析师认为拿来数据,只要尝试各种模型,就能解决这个业务问题,其实我们认为是不对的。50%以上的时间需要花在数据的预处理部分,这也是大数据和小数据的一些差异。

因为在大数据建模的领域,数据的噪音是非常大的。需要首先去做一些数据的清洗、降噪,例如补充缺失值,怎么去填充缺失值?是全用均值去填充?还是用模型预测的值去填充?异常值要不要去除?怎么定义Outlier?

这些都有相关的技术。需要做数据的集成,包括冗余的属性,冗余的维度,进一步在数据预处理时,还要做数据的变换,包括数据的平滑。要去做数据的规范化,数据量纲的统一,如果数据量纲差得太多的话,可能分析出来这个系数有的是0.0000几,那它的可读性是非常不好的。

在数据预处理的部分,还要去做一些数据的规约,这个部分其实是要在海量数据中提取出有代表性的数据。因为如果这个数据太大的话,其实分析起来是浪费资源的。所以如果能用一些代表性的数据去分析,而不损失信息量的话,就是规约的目的。

数据的规约包括数据离散化,抽样的技术等。这些都是数据预处理的技术,也是我个人认为在大数据建模的过程里最重要的一个环节。有一个说法叫Garbage In,Garbage Out,意思就是说,如果你不做任何数据的清洗加工,就直接进入模型的话,它其实是垃圾进入,然后出来的也会是垃圾,没有价值的结果。

4
模型算法选型

面对无数的模型算法,要选择哪个?其实是取决于你的数据情况,取决于你的业务问题。当然有大量的可供选择的模型,例如在统计建模的领域有线性、非线性的回归,有时间序列的算法等。在机器学习领域,有分类、聚类、关联规则、神经网络等。在优化运筹领域,有线性、非线性规划,模拟退火、遗传算法等。

其实我想跟大家分享的是,模型的算法不是越复杂越好,从我们的经验来看,线性模型和逻辑回归能解决很多的问题。所以说能解释业务问题的模型就是好的模型,而不要盲目追求算法的复杂度。

5
分析工具和语言的选型

通常会有一些熟知的工具,例说R、Python、Java、C++等,某个模型算法,例如分类,可以用R实现,也可以用Python,也可以直接用C++

去写,这个其实取决于数据建模工程师的偏好,或者取决于分析团队负责人的偏好。一般来说,建议大家掌握2-3种工具,精通其中的一种。

6
建模挖掘

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

7
进入到模型评估

模型评估其实也是一个非常重要的部分,什么样的模型才是好模型?评估模型优劣性的指标有很多种,比如说准确率、召回率。如果是统计模型,会用R Square去评估模型对于方差的解释度;会用均方根误差,RMSE这个指标去评估模型的预测效果。模型的速度、健壮性也是很重要的,包括模型的扩展性,就是在数据量大的时候,能否保证运算的效率,也是需要评估的一个指标。

另外模型的可解释性,对于业务人员也是很重要的。有一些黑箱模型,神经网络等,它天生不具备像逻辑回归的可解释性。另外,我们认为最重要的指标是模型的结果是否是可用的,是否回答了业务的问题,这个其实是评估模型的一个最重要的指标。

8
结果可视化

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

9
模型的部署

模型与企业现有的应用系统、生产系统,包括推荐、营销系统、CRM等对接,把这个模型投入到生产和业务中,让它切实发挥作用。

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

应用场景

我们如何通过大数据建模解决客户的业务问题。

这个案例是某品牌手机新品上市营销的业务方案,我们帮它做了两件事情,第一件事情是老用户的营销,通过建模找到新品手机的目标人群。第二件事情是微博营销,对于这一点我们又做了三件事:1)帮它甄别这个行业比较有话语权的微博,2)帮它识别了网友中的意见领袖,3)帮它找到想买手机的用户。

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

 我们首先提取了这个品牌手机的电商旗舰平台及线下门店的用户历史交易数据,作为原始数据,去做一些清洗和预处理。然后提取了用户的行为特征,去识别这个终端消费用户的购买频次,消费的品类,价格承受度等。然后运用协同过滤模型,去做度量这个新品手机和其他品类的相似性。

当然,我们也使用了其他的模型预测,例如购买概率的预测,产品生命周期的推测等等。之后,去建立用户特征的过滤,最后锁定目标的人群,输出目标群体的营销列表,找到整个老用户群体里有可能去购买新品手机的用户群体,并做了基于购买概率的排序。对于新品手机的微博营销方案,首先我们爬取了在新浪微博上行业相关的微博,通过关键词提取了所有博文的内容,包括评论内容、转发内容、用户信息等。

进一步我们构建了三个模型,筛选出来用于微博营销新品手机的潜在目标用户。这三个模型分别是通过构建影响力指数模型去找到具有行业话语权的行业公众号、通过社会网络模型识别微博中的意见领袖,以及通过语义分析模型找到想买手机的人群,从而实施新品手机广告的转发和推荐。下面我具体介绍一下这三个模型:

首先我们做了微博公众号影响力指数的编制。基于这个分类下的蓝V用户的微博影响力数据,综合利用AHP方法计算出不同行业在微博平台影响力的指标,然后我们找到这些最具有影响力的微博公众号或者蓝V的用户去做新品手机广告的触达。第二是运用社会网络模型去找到这款手机的意见领袖。

社会网络分析模型广泛地运用在这种具有网络特征的大数据分析中,例如通过计算节点的连接数去找到一个社交群体中的意见领袖和活跃分子等。

同时SNA模型还可以用来计算社交网络的密度,监控这个网络的健康度等,目前在舆情监控领域、电信网络的数据分析等都有比较广泛的应用。我们利用SNA模型,去找到微博中和手机相关的意见领袖,进行新品手机营销文章的推送,引发这个意见领袖的关注和讨论,从而带动大多数跟随者对某品牌新品手机的一个关注,这是第二个模型。

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

我们看一下这几个模型一些应用的效果。

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

最后我想跟大家分享的是,在大数据时代的商业建模要做到以下三点

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

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

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

我们认为,如果一个人能解决大数据建模这一系列的问题,能够和数据库进行底层的交互,又能去做建模算法的挖掘,能做数据的优化,能做数据可视化,集这些功能为一身的人才配称之为数据科学家,真正的数据科学家是非常稀有的。

而当我们没有集这些功能于一身的人的情况下,通常可以用群体的力量去解决我们在大数据时代遇到的数据挖掘问题。所以我们认为,企业去招一个全面的数据科学家,不如去组建一个功能比较全面的数据科学团队,大家各有所长,数据提取工程师去做和数据库的交互,算法的工程师去做数据的挖掘,可视化做可视化的展现,调优的去做运营调优等,以集体的力量去解决企业在大数据时代遇到的商业建模的一些问题。

延展阅读(点击标题):

大数据杂谈 

ID:BigdataTina2016


▲长按二维码识别关注

InfoQ垂直公众号,

专注大数据和机器学习,

分享前沿技术,交流深度思考。

关注加入社区,

跟美女编辑一起入群学习!

 
InfoQ 更多文章 年前挖的坑都填了吗?技术债务偿还计划 程序员VS武林高手:技术为外功,思维乃内力 腾讯游戏大数据服务场景与应用(附PPT) 偷师饿了么:怎样用HTTP/2优化iOS APP网络层次架构? 作为高颜值的女程序员是一种怎样的体验?
猜您喜欢 观点 :数据分析是一种艺术,写给数据分析师的几点建议 如果你做的事情毫不费力,那就是在浪费时间 JavaScript学习笔记:取数组中最大值和最小值 欢迎大家来到后端技术小黑屋 Linux内核测试套件LTP初探-服务器篇