今天与大家分享一位友人的文章,希望能解决一些数据新人心中的困惑,以便将数据科学的概念形成一个框架,为进一步深入研究打下基础。 编辑于 -03-11
@杨滔,曾任阿里巴巴集团高级数据挖掘专家,F团首席科学家,拥有数据科学领域坚实的理论基础,以及丰富的大数据实战经验。独创的商品推荐算法获取两项专利,主导研发的智能选品系统在淘宝网获得广泛应用。奥克兰大学机器学习博士,悉尼科技大学博士后。机器学习算法ALH创始人,发表一本专著,国际刊物发表十二篇论文,第十四届亚太数据挖掘会议最佳论文亚军奖得主。
“如何成为一名卓越的数据科学家?”是我们讨论的主题。
所谓卓越,不是那些纸上谈兵、喜欢“3V”、“4D”、“大时代”的理论家,也不仅是一名手脚利索的码农去实现别人脑袋中的逻辑。
所谓卓越,是只专注最有挑战的问题,并且能将问题解决掉的能力。
卓越的数据科学家,不仅需要建立收集数据原材料的合理机制,还需要用数据材料提炼价值,并且将数据创造价值的过程标准化、自动化。出色的数据科学家是多面手,不仅需要理解业务问题,还需要将业务问题转化为数据科学问题,并且让计算机可以持续从数据中学习, 最终建立一套完整的智能系统。一言以蔽之,数据科学家的核心职责是设计“业务、数据、算法”三位一体的闭环体系。
在数据科学家的工作流程中,“设计”是关键词。数据科学家工作中最核心的部分是设计,而不是操作。许多文章给工程师列出数据科学家的修炼清单,告诉我们数据科学家需要擅长Hadoop, Spark, C++,也需要懂统计学,计算机科学……这个清单没人能真正完成,真正完成的人不是数据科学家,是神。
现实中,完整实施一个数据科学项目需要一个团队,其中不仅包括数据科学家,还包括业务专家、数据库专家、算法专家和系统专家。在这个团队中,数据科学家的核心角色是设计出一个将业务、数据、算法串联起来的闭环体系,其他团队成员则基于数据科学家设计的蓝图将数据解决方案转化为解决业务问题的智能系统。
这个数据科学闭环体系包括七个步骤,我称之为“数据科学七剑”。
第一剑,问题定义
根据我的经验,80%以上的数据科学项目失败在问题定义这个环节。我经常看到,客户的问题是,“我有这么多数据,到底能怎么用?”、“这个业务问题数据模型能发挥作用吗,还是靠人去解决更有效?”真正需要回答这些问题的数据科学家,需要具备抽象的能力,将那些看似零散的业务问题抽象为通用的数据科学问题。回答这些问题的数据科学家,还需要具备出色的沟通能力,能将复杂晦涩的机器逻辑转化为简单、清晰的通俗逻辑。
以银行风控业务为例,不同的业务场景往往对风控模型的需求是截然不同的。对于大客户信贷审批,数据模型没有实际作用,因为大客户审批的工作量完全可以由业务人员来承担,并且大额审批一定是靠人决策。即使一个富翁请了10个保姆去打理花园和厨房,也仍会让自己老婆去管理房产证。但是,在小微商户的信贷业务的贷后管理中,数据模型便可以发挥举足轻重的作用,银行没有大量人力去在贷后的每一个月都去派业务人员进行大量企业的贷后风险管理。
而在公安大数据应用中,数据模型的可解释性远大于预测的准确性。你不能因为安全模型给本拉登打分为99分就将他枪毙,总需要一些客观的根据(数据)。公安数据模型最大价值就是从大量原始数据中缩小范围,提供可解释的关键数据。这些关键数据,正是公安中的证据。
第二剑,数据准备
巧妇难为无米之炊。数据科学家需要非常关注数据源,而不是别人加工后的数据。只有通过原始数据的复杂加工处理,数据科学家才能获得真正有价值的信息。
在电商网站中,成交量最多的关键字商品往往没有什么特别价值,但是,一个关键字商品如果在最近几天拥有大量浏览却很少被购买,才正是说明了这里有市场需求未被满足这一关键信息。一个贷款客户最近半年交易流水数据的汇总信息往往意义不大,而是变化趋势和支出/收入比例有更大信息价值。一部电影是否符合你的胃口,不仅取决于你长期的兴趣,更取决于你最近的经历变化。
有经验的数据科学家可以凭借业务经验、直觉和逻辑推理提炼出大量具有预测意义的“数据特征”,同时可以将数据特征的抽取方式总结成一套算法体系,让计算机系统去自动提取特征。数据科学家负责设计特征抽取机制,借助经验与算法的协作,来不断丰富原始数据到关键数据的提炼机制。
第三剑,算法调优
机器学习学术领域每天都有大量的算法被发明出来,然而大部分发明在实践中是没用的。学者坐在自己的办公室里,守着那些有限的公开数据不断调试算法,直到那些小小的可爱的公开数据向炼丹手屈服。有句话说的好,“Notoriously torture the data until it confessed”,不断给数据上刑直到它屈服。许多算法无法应用,主要因为没在真实数据中练兵。真实的数据往往极其复杂,需要简单强壮的算法去征服它们。
所谓好算法,就是不浪费数据。能最大化数据价值的算法,是基于不同数据结构而发挥数据价值的。换句话说,不同的数据结构和不同的算法确实存在匹配关系,没有最好的算法,只有最适合的算法。例如,决策树算法效率非常高,也易于解释,但却不适合在高维度数据中做建模。而即使预测能力非常强的GBDT算法,在文本挖掘中也难显示其威力。
最近兴起的深度学习算法,也并不是万能钥匙。深度学习技术可以让特征工程自动化,于是数据科学家再不用花大量时间去抽取特征。然而,深度学习算法一般都有许许多多参数。于是乎,深度学习算法表示,呵呵,我们不过是把你们用来抽特征的时间,拿来调参数了。(这只是个玩笑,你懂得。)
第四剑,知识发现
知识发现是所有数据科学步骤中最关键也最容易被忽略的一个环节。所谓知识发现,是以最简单的方式呈献给数据专家以外的普通人,数据中有什么规律或细节可以影响我的决策。
《大数据时代》作者告诉我们,大数据的最大价值就是预测。然而,未来真的可以预测吗?
许多人以为香港有名的风水大师可以未卜先知。如果你问他们预测风水的秘诀是什么?如果他们肯对你敞开心扉,他们会说,且只说一条——“我有许多房产中介的朋友”。
美国知名手机价格预测公司最终被eBay高价收购。如果你问他们,价格预测的秘诀是什么?它们会告诉你,预测错了,我们为消费者提供包销服务。的数据科学家也许会告诉你,有时候他们要故意把算法调笨一些,因为预测错了,消费者买得会更多。这让许多团购网站的营销负责人都去向投了简历。
在我看来,大数据的价值不是预测,是发现——发现那些宏观的规律让人获取新的洞见,发现那些微观的细节便于快速决策。在人最关注的问题上,人很难放手交给机器去做决策,人更希望机器是重大决策的辅助者。
第五剑,效果分析
许多时候,评估一个模型的效果比开发一个模型更难。难道模型的好坏不就是直接看结果吗?不一定。从数据模型的结果到实际决策中,有许多步骤。每个步骤都可能影响最终决策的效果。
两个不同的量化交易策略算法,哪个效果更好,决定因素可能是谁的网络信号更强,而不是算法本身,因为实际效果更好的算法有可能因为网络信号问题而不能高频应用。
《大数据时代》告诉我们,大数据重要的是关联关系,不是因果关系。根据这个逻辑,一个数据科学家通过关联分析发现,历史数据显示一个飞机上同时有两个人携带炸弹的概率为0。为了避免遇到恐怖袭击,他带着炸弹上了飞机,安心的一觉睡到了目的地。
在许多数据科学项目的实践中,通过详细的模型效果分析得到的因果关系至关重要。为了保证商业目标的实现,业务人员和数据科学家往往需要对模型进行灵活的应用。
我经常看到,许多模型在没有离线测试之前便上线进行AB测试,拿用户当小白鼠,这将直接对业务造成负面影响。并且,许多数据科学家宣称自己开发的模型为业务带来了商业价值,但因为没有模型对比分析,他并不了解实际上可能有许多更好的模型能为业务带来更大价值,因而对比分析是模型上线前的必须环节。
完整的模型效果分析,往往是模型优化最重要的环节。数据科学家在效果分析中往往需要回答几个问题:
(1) 最适合评估解决特定业务问题的模型效果衡量指标是什么?
(2) 模型上线测试前,模型的离线测试效果是否理想?
(3) 模型的计算效率如何,是否可以在海量数据中跑通?
(4) 模型的业务逻辑是什么?
(5) 模型在不同数据样本之间的效果是否有显著差异,这意味着什么?
只有基于效果分析的结果,数据科学家才可以更加客观地去选择最适合解决当前问题的模型,并且评估模型效果是否可以满足业务需求,以及模型在什么情况下最能发挥作用等直指业务核心的问题。
第六剑,线上部署
数据科学家需要将算法与系统有机结合。对于数据科学家,最大的悲剧不是模型不好用,而是好用的模型无法部署上线。许多完美的模型,直到开发完成后才发现,因模型运算效率太低而根本无法上线适应大规模使用。这真是数据科学家最大的悲剧。
一个实用的机器学习算法往往没有太多参数。面临海量数据,许多有太多参数的算法,真是费机器。对于想推广云服务的商家来说,最好的营销方案,可能不是打广告,而是去发表一个拥有无数参数的算法。你还可以这样理解,任何算法,参数足够多的时候,都是“深度学习”。
把模型部署上线前,数据科学家需要严格定义模型的输入和输出,并且让模型的上下游系统与模型无缝对接。机器学习的结果,往往需要和多个系统对接,彼此之间的完美配合是让算法发挥效力的重要前提。
数据科学产品的直接用户是谁?是机器。数据科学家产出的模型,可以作为一个又一个计算机系统的能量块,让这些系统产生智慧,并在与人的交互中迭代更新。
第七剑,模型更新
当数据改变了,数据科学家是否需要无休止的重新披甲上阵?对于数据科学家,最尴尬的事莫过于:模型开发好了,模型需要应用的业务场景却改变了。传统的评分卡模型是数据科学家基于经验开发完成的,并且每一次模型更新都需要数据专家团队重新开发和部署。
最出色的数据科学家可以从数据中提炼价值,但他们会让数据价值的挖掘过程并不一直依赖于他们自己的持续耕耘。数据科学家是机器的导师,真正优秀的导师一定是“授机器以渔,而非授机器以鱼”。数据科学家只应该负责设计机器学习算法并将其部署上线,让机器应该具备直接从数据中自动学习,并且根据数据的变化动态调整模型的能力。
数据科学家需要设计“监控算法”,以持续监控模型效果的变化、模型逻辑的变化以及数据本身的变化,从而让模型实现自动更新。并且,数据科学家设计的模型在不同应用场景分别学习后,机器便得到了普世智慧,这一技巧可以让算法在新问题中也可以很好的发挥作用。
“问题定义——数据准备——算法调优——效果分析——模型部署——模型更新”是数据科学家工作的七个基本步骤。这数据科学七剑的有机配合,才能使数据价值最大化。并且,数据科学闭环体系意味着当模型需要更新时,问题往往也需要被重新定义,而这个重复的过程往往能带来解决当前问题以外更大的知识发现。
以上,是数据科学家“七剑”的开篇。以后围绕“七剑”,斩到哪,写到哪。