前言:前不久,有朋友在微信群曾向我提过这样类似的问题,当时回复比较简洁,面也比较单一,其实我们可以用一篇文章来好好的谈谈这个问题。随着大数据的火热,越来越多在校学生都开始涉猎这一块的知识,关注度比较高的或许就是大数据挖掘,相对于学生而言,既有数学建模的经历,也有应用数据的专业,只要踏实学下去,就业优势比较大。但很多朋友在从业以后,会遇到不少头痛的问题,其中就发现Data Mining在理论与实践中有很大的差异。
说明:此文在2月初首发于 大数据挖掘杂谈 小密圈。在 影响力与知识传播 和 付费 之间,我选择前者
一、身边的小故事
有这样一些朋友,逢人就恰恰而谈算法模型,随口打招呼的都至少是"矩阵,卷积神经网络,各种学术文献",你要是没接上话,他都开始怀疑你不是做数据挖掘和算法的。
遇到志同道合的朋友,他能够聊很久,从原理、到推导、甚至是调参,感叹西出阳关无故人!
但是在工作中,他们是孤独的,常常沉默寡言,很少关注平台业务和数据,和运营员、分析师、领导讲解模型总感觉话不投机半句多。
因为别人压根不知道他在说什么,而他也觉得别人总是谈业务场景太无趣。
在他眼里,这一切的业务、用户和产品,都只是一堆特征和数据,唯一有区别的就是结构化和非结构化,进入模型的黑盒子都一样,好坏全靠调。
总是怀着这样的心态,很难做出一个可以完整上线的业务模型,所谓的准确率一接触真实场景就败得一塌糊涂,只好仓促的下线继续优化。
百思不得其解,看过了很多文献、掌握了很多算法,推导了不少公式,却依然做不好一个模型,开始质疑了人生。
『原谅我虚构了一个故事』,如果这里面有你的一点影子,尽快让自己调整过来,我可不希望圈子内想从事大数据挖掘的朋友这么干。
二、理论与实践的差异性
接下来,我们就从这五个方面聊聊大数据挖掘在理论与实践中的差异。
2.1 数据获取和清洗的方式
『理论中』
在我以前参加的数学建模比赛和学术论文撰写过程中,涉及的数据很大一部分都来源于中国统计年鉴,有人口、经济、交通运输和教育等等。还有一部分来源于有限的抽样问卷调查,少数一部分来源于别的学术论文。
中国统计局
可以看得出来,有一些显著性特点:基本不需要数据清洗、结构化数据、数据量小。
很多时候数据的清洗借助一下Excel和SPSS就可以轻轻松松得到模型的特征向量数据。
所以大部分工作时间都花在构建数学模型上。
『实践中』
而在企业工作中,所有涉及大数据挖掘的业务场景,数据获取涉及的面会全的多,有平台业务数据、用户信息、埋点日志数据、爬虫数据、第三方授权数据和黑产数据等等。
这其中有结构化数据,更多是非结构化数据。
数据类型除了数值型,别的文本、字符串、图片、视频和语音也都称为数据(广义)。
因此,在大数据挖掘的过程中,很多工作量都会体现在数据的ETL过程。
每天几十G、几百G,甚至到T级别的数据量已经不能用传统的分析工具来做清洗了。
自然而然会普遍使用很多大数据生态圈的技术,比如Hive做数据查询和加工、Spark做复杂数据的解析和迭代计算。
所以,在第一个观点上,数据获取和清洗方式已经和以往的理论研究存在很大差异。
2.2 解决业务问题的思路上
『理论中』
在学术研究中,对于解决应用问题的建模思路上,重点会围绕着模型本身的思考。
"属于哪一类的模型?使用哪一种算法?找多少参考文献?做哪方面的参数优化?"
在一些参赛选手和文献作者的眼中,模型的难度性、复杂度和优化程度会是获奖和审核发表的关键。
而具体能够解决什么实际问题,不太是他们关系的重点,也就是说实用性不够高。
『实践中』
对于一个合格的大数据挖掘工程师,在面对一个新的业务场景需求去构建模型前。
一定会花很多的时间在于熟悉业务和分析用户上。
在他们看来,有经验的业务运营人员和分析师就是他们所谓的参考文献。
这种实际运营的经验,对用户细节的洞察度,才是解决好这个业务场景的关键,是构建业务场景模型的重中之重。
相反,在模型的使用上,他们会倾向于选择更擅长的,熟悉一个模型的来龙去脉去解决好实际问题,这才是建模的初衷。
所以,在第二个观点上,解决思路上也有很大差异。
2.3 算法和模型的认知上
『理论中』
在学术上,所解决的应用场景,很多时候都是针对具体类型的算法去构建模型,可能只是做一个预测股票的价格、分析季节与旅游人数的相关性、评估食品抽样方案的好与坏、寻找城市交通调度方案的最优解。
也就是说,面对的建模场景不是很复杂,算法在有些时候可以看作是一个模型,熟悉一种算法的应用就可以解决一类场景的问题。
『实践中』
而在企业工作中,每一次遇到的业务场景问题都是融合了很多细分的场景,每一个细分点都需要去单独构建一个算法,最终才能整合成一个完整的模型。
就拿分析电商平台的用户性别来说,在解决这样一个业务需求,就需要针对性细分用户的具体类型,有涉及新用户、老用户和潜在用户。
每一种类型的用户群体在电商平台的行为路径和购买偏好都存在很大差异,如果仅仅用一个分类算法和特征向量去解决业务问题,肯定会效果极差。
同样对于理财平台的用户投资分析,也需要去区分场景,未投资前、首次投资、二次投资和多次投资,每一种场景的用户数据有很大差异,比如活跃度、投资额、偏好产品等等。
还是这一句话,"好的模型是由多个算法结合起来,再考虑实际的业务规则去做一定的调整"。
所以,在第三个观点上,算法和模型的认知也有很大差异。
2.4 效果检验的流程上
『理论中』
在学术上,对于模型的好坏,都有所谓的严谨指标去衡量,具体会根据损失函数的最优策略去评估。
有平方损失函数、绝对损失函数、对数似然损失函数等等。
而在训练测试的流程中,同样也会有严谨的交叉验证,通过数学的方法,提前去预防抽样不稳定的情况。
对于数据的分布上,不管是离散型,还是连续型,具体的算法模型都会有对应的特征选择和分布类型。
所有的一切重重严谨的流程,只有一个目的,保证应用模型的线下效果好。而对于实际的好与坏判断,没人知晓,也没多少人去关心。
『实践中』
而在企业工作中,所有的优秀业务场景模型,都经历了线下评估、线上测试和效果跟踪与模型优化。
也就是说即使线下评估数据足够优秀,也并不能代表什么,更不能定义这是一个好模型,唯一作用只能为上线测试做数据支撑。
而同样,对于一个线下数据表现不足够好的模型,也不一定立刻否决它线上测试的效果。
也就是说,好的一个模型,不是一次就能够达到的。更多时候对于线上的测试和后期效果的跟踪依赖性很大。
就拿分析用户逾期风险模型来说,好与坏还需要经历很多个用户借款流程的完整周期,甚至是逾期时间在90天外的评估,或许是需要很多年才可以调整出一个优秀的用户逾期模型。
所以,在第四个观点上,如何定义一个好模型也有很大差异。
2.5 对待结果的责任上
『理论中』
在学术上,一些人的侧重点是在名和利上。
"比赛能不能获得好名次?能不能在一个核心期刊发表文章?"
对于模型效果不会关心,即使很差的模型,也没有人去实际验证,也不会给社会造成多大的不良影响,甚至不会丢饭碗。
做这件事的过程和得到的反馈比实际解决的效果重要得多!
『实践中』
而在企业工作中,做业务场景的模型往往需要有敬畏之心。
一个模型的好与坏,构建模型的人是应该对结果负责。
这其中有时候也会影响你个人价值是否得到体现,从而决定你是否升值加薪?还是被炒鱿鱼?
就拿做一个用户风险的分析模型来说,如果是误判了很多正常的用户,甚至是优质的用户,去评估他们为高风险用户,拒绝去发放活动奖励,甚至拒绝用户账号余额提现。
这背后模型造成的后果,可能是大批用户的投诉申告、贴吧、社交网站的各种舆论负面消息接踵而来。
所以,成为一个数据挖掘工程师,做一个业务场景模型,敬畏之心宁可有,不可无,这也是负责任的态度。
所以,在第五个观点上,对模型结果负责的态度上也有很大差异。
综上所有五个观点来看
在Data Mining的道路上,学术研究的理论很多时候与企业实践存在很大的差异性,望每个做大数据挖掘的朋友们,都敏记在心。
作者介绍:我是乐平汪二(微博ID:乐平汪二),一个充满大数据情怀的小学生,致力于分享自己所感所悟,为这个圈子贡献自己一份力量