开智讲座】肖凯:数据科学家是如何炼成的

导读

为什么说数据科学家是21世纪最性感的职业?

「找一个爱好沉下去,这辈子就很容易度过了。」

而数据科学就是肖凯老师的那一辈子的爱好。

周末肖凯老师讲座部分内容和答疑,特呈现给观众。

周日肖凯老师的开智第十八讲《数据科学家是怎样炼成的》大获成功。读过讲座预告,相信你一定非常好奇具体讲座内容。现在小编特整理了部分讲座内容与肖凯老师对微信公众号后台提交的问题的解答。如果希望脑洞大开,了解全部精彩内容,请加入「开智社群」。


数据科学家是福尔摩斯的同行,试图凭借手中的数据回答三个难题:发生了什么?为什么发生?未来会如何?——肖凯

如何走上数据科学之路

肖凯老师并不是一开始就遇上了一辈子热爱的事业,甚至有点相见恨晚。说起与数据结缘,也是来之不易。

肖凯老师讲座摘选

我的职业轨迹有点乱,称得上是一个布朗运动。我上大学的专业是会计,会计和数据打交道,但这种互动是非常僵化的。我并不喜欢这种方式。让我真正喜欢上数据,是受到一部美剧的影响:《数字追凶》。剧中的天才每一集都会用不同的数学方法解决难题。看完它我就想,哪里可以找到这种酷炫的工作,能做那么多有趣的事呢?有一种受到召唤的感觉。


后来我拿到一个经济学硕士的文凭,在一家很小的公司做外汇数据的分析,基本上就是拿 excel 做些简单的描述统计。为了响应那种召唤,我开始复习大学数学。之后到一所大学的经济系做讲师,学习的时间就更多了,因为我得备课。教书的那几年非常有用,因为教一门课才能使你真正的理解它。

之后离开了学校,跑到一个研究所里面呆着,研究所是搞水利的,和刘慈欣算半个同行(人家是水电工程师),所里头的事很无趣但所幸空闲尚多。对于时间上的安排,我总记得刘慈欣作品中的一句话,找一个爱好沉下去,这辈子就很容易度过了。所以出于对数据的兴趣,我不断的折腾,自娱自乐。捣鼓 linux,也折腾 R 语言。

后来为了记录我的这些兴趣,就找了一个托管博客平台。博客的主题是数据科学,希望把它作为一个记录、积累、交流和宣传的平台,将逻辑、统计思维、数据和计算机工具融为一炉,使我们对身边的数据形成更为深刻的理解。

这个博客从 2012 年开始写起,从简单的 R 语言入门到复杂点的模型算法,至今积累了大约 200 多篇稿子。写博客的最大好处就是培养了记录的习惯,其次就是在网络上留下些痕迹,能和同道中人产生交流。2012 年之后应邀参加了好几次统计之都办的 R 会议,见到各路高手。2012 年下半年时候,下定决心要离开所谓的「舒适生活圈」,进入真正的数据江湖冒险。

《英雄志》里面,沉毅木讷的伍定远一直到 35 岁才跳出公门、踏入江湖,由此获得一系列的奇遇、成长和体验,这番际遇感同身受,让人感慨。

自从进入职业的数据圈子后,感觉幸福得像花儿一样,工作内的八小时和工作外的八小时,基本上都在做同一类的事情。不断的学新的东西,用数据解决实际问题。当把兴趣和工作合二为一之后,很容易体会到心流。只希望在有涯的人生时间里,能达到自身修炼的极致,成为数据领域的专业余者,也就是数据科学家。

Q
A
&

问:肖凯老师,有没有哪些数据分析工作失败经验值得和大家分享?

答:我有两条失败经验值得分享一下,我刚开始做数据工作的时候,有时候是直接把原始数据扔到算法里头跑,这是不大对的。和专业领域结合的特征工程是非常重要的一环,初学者往往忽视。第二个经验是拿到的数据需要检查,有时候数据质量有问题,有时候数据根据不相关,强行进算法跑,没意义。

问:在数据科学的学习中,如何善用社区力量来提升学习效果?如何逐步从学习者成长为社区的贡献者?作为非统计、计算机等专业的数据科学研习者,与专业出身的竞争力如何体现?

答:一般来讲呢,当你还是小白的时候,很多问题社区里已经有答案了,你只需要搜索就行了,如果书上也没有,社区也搜索不到,你就可以发贴问人了,问对了人可以节约很多时间。

从学习者到社区贡献者需要一段时间的,也不困难,当你过了小白阶段,你就可以去解答小白的问题了,你就成为贡献者了。

至于非统计、计算机专业的同学,和专业人员的竞争是体现在差异化上。如果你是医学,你懂别人不懂,如果你是商科,你懂别人不懂。就像之前发的那个图,专业领域的知识也是很有用的。如果不理解专业知识,很多模型的特征都抽取不出来。

问:你日常工作所涉及的数据处理环节,数据挖掘技术的瓶颈在哪里?是算法层面的局限大些还是硬件条件更容易拖后腿。

答:硬件只要有资金就可以买,而且现在并行化技术已经用的比较广泛了,所以硬件这部分不算严重的瓶颈。算法这部分会麻烦一些,有不少算法还没有被并行化,或者说需要很大的人力去并行化。在开源社区的努力下,算法的速度和并行能力都在不断提高。我个人认为瓶颈的地方在于人才。缺乏合适的人才。

数据科学家教你挑西瓜

三十而立,厚积薄发。那么问题来了,数据科学家如何理解数据科学?

肖凯老师讲座摘选

关于数据科学最著名的定义来自于 Drew Conway 的一幅文氏图。他的观点强调数据科学是三类知识的融合,包括计算机、统计理论、专业领域的知识。

[The Data Science Venn Diagram]

我个人认为对数据科学最精炼的定义是:

Data Science is the art of turning data into actions ,这句话来自 The Field Guide to Data Science。

数据科学的特点在于跨界:

  • 思维⽅式的跨界:融合各种学科的思维范式,例如统计的演绎推断和机器 学习的归纳。

  • 技术⼯具的跨界:前后台⼯具和数据分析工具的全面使用。

  • 业务能力的跨界,商业问题—数据洞察—解决方案—数据产品的全面了解。

数据科学家也是历史学家,他们会构建一些模型,希望这个水晶球能对现象的本质进行表述,或者从数据中归纳出模式。他们会从历史中挖掘蛛丝⻢马迹,描述历史现象,解释历史现象的相互关系,并推测历史未来的走向。

数据科学的核心是模型(model),要了解这一概念,我们可以试着构造一个模型,来判断一个未切开的西瓜甜不甜。

  • 准备 N 个西瓜;

  • 设计 M 个变量或指标(特征工程),重量、花纹、茎叶的新鲜程度、卖家的位置、买的时间……,切开前记录这些指标,记为 X ;

  • 切开后测试糖分,划定阈值后打分(0表示不甜,1表示甜),记为 Y;

  • 使用其中一部分数据,结合机器学习中的分类算法对X和Y的关系进行建模。

  • 用剩下另一部分数据,检查模型的效果。

  • 把模型的逻辑写成一个 APP 放到应用市场上,持续收获数据,改进模型。

类似模型的选择原则在实际工作或日常生活中如何应用?模型的选择在工作中的运用自然不用说,像银行信用卡发放之前的用户资格审核、邮件系统的垃圾邮件自动分类,等等,都在运用数据,建立模型,从而提高了工作效率,减轻工作人员的负担。

我们日常的生活经历其实也是观察到的数据,规则就是决策树。看到下雨了,就拿伞出门,这就是一个简单的决策树。只不过观察到的经验多半不会自己记录下来。对自己的生活进行数据建模,我有过一些做法,例如,买个血压计,每天同一时间测血压,观察时间序列。未来各种随身设备越来越多,也会越来越方便,数据越来越多,分析也就越来越重要了。

Q
A
&

问:关于建模我有个疑问,我在大学做的是数学建模,并没有涉及过多的数据建模,请问大学中的数学建模对统计建模有什么帮助么?如果想学,应该从何处入手进行衔接?

答:数据建模和数学建模有区别也有交叉,数学建模多半会包括规划问题,最优化,线性回归,数据源比较简单。数据建模主要是做分类预测比较多,数据源比较复杂。学数学建模是很有帮助了,因为很多模型的道理是相通的。我觉得可以从最优化入手,慢慢去看一些机器学习的课程,例如 coursera 上的课。

问:小白在面对各种数据的时候,可能遇到的问题是模型很多,但是不知道用哪个,看着就晕了,肖凯老师有什么建议?

答:有书上专门说过模型选择的问题,我简单讲几个原则。不同模型有不同的应用场景。如果你需要更强的预测能力,多用黑盒模型,如果你需要更强的解释能力,多用白盒模型。这是第一条。

如果你的数据比较少,样本少,变量也少,多用白盒,如果数据比较多,可以用黑盒。如果时间比较充足,都可以尝试,不过要讲一个顺序。先用白盒建立 baseline,再用黑盒看提升多少。基本上就这几个原则。

问:如果想通过文本挖掘研究人们的心理,比如对某个事物和某项政策的喜恶,这样的话肖老师觉得应该选择什么样的模型?

答:这个是属于情绪挖掘的主题,提供一个简单的框架吧。你可以将情绪分为简单的两类,正面和负面。首先将人的发言文本进行一般性的特征抽取,然后人工标注这段话是正面还是负面。这样转化为一个二分类问题,再喂到机器学习里面去。当然这两步工作量都很大。

数据科学家在忙什么?

数据科学家这么厉害,他们每天的工作状态如何,平时都在干什么?

肖凯老师讲座摘选

从职业主线来看,和数据相关的职业(仅限商业公司)有四大类:

  • 产品:侧重于底层数据框架搭建,数据报表开发,数据产品开发,例如淘宝数据魔方的开发,这类工作需要很强的软件开发背景。

  • 模型:侧重于对数据的研究,用统计理论或机器学习的方法对数据进行分析建模,例如广告的点击率分析建模,这类工作需要丰富的统计理论和模型算法知识。

  • 美学:侧重于对数据的创作,用web技术进行数据可视化或者制作信息图,例如《卫报》的数据网站,需要很强的可视化能力和前端技术。

  • 价值:侧重于研究数据的商业价值和战略规划,强调对专业领域的业务理解和交流沟通,例如咨询公司发布的商业分析报告,需要广泛的业务知识和商业敏感度。

数据科学家的技能分布是一个宽而深的T型技能分布,他可能会在某方面(如对于模型)了解得比较深,对其他方面的技能也有相当的掌握。一个有趣的说法是,数据科学家,就是那些比统计学家更懂计算机,比程序员更懂统计的人。

在商业公司中,除了日常工作,所有的数据工作均以项目形式展开。以本人接触到的项目为例,基本包括以下几方面:

  • 项目讨论和规划。主要是得明确业务问题能否做,怎么做。确定了业务问题之后,需要将这个业务问题翻译成数据问题。

  • 项目准备。这是最为繁琐也最容易出错的地方。需要和数据仓库的同事配合取得必要的数据,探索理解数据的业务意义,评估数据质量,根据项目需要对数据进行整理转换,做大量的特征工程的工作。

  • 项目实施,即数据建模。选择尝试不同的模型算法,从数据中得到需要的结果,然后从不同方面评价效果怎么样。

  • 项目结束,交付结果。确定模型如何部署,并实施部署工作。这种部署就是模型的应用,多数情况下是将结果回写到数据库中。同时结果交付给需求方,写最终的项目报告,归档所有文件。

  • 阅读文献。在比较空闲的时间,或者遇到难题的时候,都需要去找巨人的肩膀依靠一下。

  • 其他相关的工作。包括培训新员工,布置工作计划,做紧急的数据需求等。

Q
A
&

问:继续数据科学家每天都在做什么这个话题,您能否谈一谈你在进入职业数据圈以后,从事的项目情况以及如何通过数据科学产出解决方案?

答:我所在是一个电商公司,说一个典型的项目吧。零售业总会面临客户流失的问题,所以这个业务问题就是:希望怎么解决减少流失率。

那么先定义了流失这个概念,然后以每个客户为样本,整理收集了他所有在网站上的销售、浏览等数据,作为X,再将他未来一段时间是否流失作为Y,构建一个分类模型。之后是将取数窗口平移一个时间单位,得到新的一批待预测数据,用模型预测他们未来的流失概率,将这个概率算出来,人群分组之后,给到业务方一起讨论,对某一组人进行针对性的营销干预活动。

问:在《穷查理宝典》中芒格提到一句话

「你们必须在头脑中拥有一些模型,用这些模型组成的框架来安排你的经验,包括见接的和直接的!」

刚才听您说的关于模型的选择原则在实际工作中有应用过吗?到底如何将模型应用到日常生活?这里指的是对数据科学有兴趣但是学习比如数学不好的人。

答:生活经历就是观察到的数据嘛,规则就是决策树。看到下雨了,就拿伞出门,这就是一个简单的决策树。只不过,我们观察到的经验多半不会自己记录下来,一个是记录设备问题,另一个是数据可能不是同质的。

对自己的生活进行数据建模,我有过一些做法,例如买个血压计每天同一时间测血压,观察时间序列。再比如收支记账,画个分布图。哈哈。这个自我计量的思路已经不罕见了。在未来各种随身设备越来越多,也会越来越方便,数据越来越多,分析越来越重要了。

问:使用 python 和 R 语言, 如何分工?如果自己捣腾数据科学, 计算机的最低配置得是怎样?

答:这两个工具还是有点不一样的,R 的统计功能会多一些,比 python 多一些统计相关的包。另外画图会比 python 方便点。个人感觉是这样。而 python 在通用性上会好很多,处理网络、文本会用它。机器学习的包 python 也很不错。如果是自己玩,计算机最低配置没有太高要求。内存可以大一点。如果后面想玩深度学习可以弄个好显卡。

问:我是从事战略规划工作的,看您提到的数据类职业的第四种——价值类型,深以为然。请问,除了业务知识与商业敏感,在数据分析技能上有着哪些提高的学习路径?

答:看来这位朋友关心的是数据价值方面的提高。最近我看过有一篇文章,提到数据转化为价值的几个思路,这个网址贴出来,权作回答吧:http://codingvc.com/the-value-of-data-part-3-data-business-models/ 这里谈到了三种价值转换方式:

  • data is the product or service

  • data helps drive revenue

  • data helps improve profit margins

如何修炼成数据科学家

人人都在谈大数据,如何成为数据科学家?剖析职业技能,肖凯老师有自己的一套武林秘籍。

肖凯老师讲座摘选
  • 工具:剑宗。理论不用起来就是王语嫣的学院派。从理论层到应用层,需要掌握各种工具。这类工具用得熟了能事半功倍,例如R、Python、SQL、hadoop这类。学习工具和学习语言一样,多读多写,模仿揣摩,就可以运用自如。不过迷信工具是没有太大意义的。没有最好的工具,只有最合适的工具。如果你是独孤求败,可以玩玄铁剑;如果你是东方不败,可以玩绣花针。

  • 经验:实战。有内力有剑法,就需要下山历练了。对战最强悍的对手,才能让你人剑合一。通过做项目,在工作中解决难题,才是长进最快的方式。

说到如何修炼,两个字:自学

「知识与耐心,是击败强者的唯一方法。」(语出Spartacus.S03E01)

  • 通过阅读来学习。包括了阅读经典的理论教材、代码、论文、学习公开课。

  • 通过牛人来学习。包括同行的聚会、讨论,大牛的博客、微博、twitter、RSS。

  • 通过练习来学习。包括代码练习题,参加kaggle比赛,解决实际工作中的难题。

  • 通过分享来学习。包括自己写笔记、写博客、写书、翻译书,和同伴分享交流,培训新人。


Q
A
&

问:以我目前的项目为例,我们对招生数据进行分析,但重点还是集中在报表呈现,使用一些数据分析工具,比如 QlikView 之类。您觉得此类 BI 报表与数据科学还有多大距离?

答:正如在讲座介绍里说的,数据有几个层面的作用,一个是告诉已经发生过什么,也就是 BI 报表需要解决的问题,如果这个问题没有完美解决,也没有必要往其它方向着急。其实,通过一些简单的报表工具,甚至说 excel,加上一些专业理解,已经可以解决很多的问题。只有当数据量很庞大,即样本和变量都很多了,需要理解变量之间的关系了,就这个阶段,才有必要考虑建立模型。

问:现在实际使用的模型是否大多为依赖标注的监督学习模型?实际当中无监督和半监督的方法用的多吗?

答:无监督的多半用于第一步探索,像聚类那种。多半是使用有监督的方法。当然由于有些标注非常昂贵和稀缺,深度学习这种无监督的方法也非常流行了。

成为人群中的离群点

异常值是数据中的漂泊者,人作为离群点就是「离经叛道」。

数据中有个重要概念——异常值。把所有数据都看作一维数轴上的点,大部分店可能聚集在一段区域中,而异常值则远远离开大众,是一个孤独的漂泊者。用术语说,异常值是数据中个别远离大多数据的极端值。异常值可能仅仅是一个噪声,也可能包含巨大的信息价值。如何才能发现它呢?还需要依赖统计分布,最常见的分布就是正态分布。


正态分布又称为高斯分布,它的意思很简单,大部分数据点都在平均值左右,不会太远,或者说,出现太远的点的机会比较低。

人的很多指标都是正太分布,例如身高,姚明很少,潘长江也不多。医院经常会用正态分布来判断问题,例如人体的血压,我们都希望自己不是一个离群点。人的智商也服从正态分布,富有创造性的天才就是离群点。

在中国的环境下,离群点往往容易被认为是离经叛道。所以人人都往中央靠,不希望自己成为离群点。

Q
A
&

问:肖老师怎么看 overfit 问题。特别是数据量大了之后。

答:在数据量还比较大的时候,overfit 不会是问题,只需要留足够样本进行检验即可。根据检验的结果来调整模型参数,防止参数进入到 overfit 的区间。现在基本上每个成熟的算法都会有防止 overfit 的参数可以控制了。以线性模型为例,就有正则化方法。以 SVM 为例就有 C 参数控制。以神经网络为例就有提前停止作为控制。

问:现在心理学和认知神经科学真是遇到了前所未有的危机——不能重复。《Nature》上用了个更难听的词:p-hacking。甚至都开始上纲上线,质疑心理学家的伦理道德了。除了传统的假设检验和统计功效估计,肖老师从数据科学的角度,有没有什么好建议?从数据科学的方法或理论高度,改善一下心理统计学的窘境?

答:P 值本身是没有罪的,只是不能被滥用。因为 P 值的使用还是有一些前提,当这些前提不满足还强些用它,这就是使用者的问题。当前提不满足的时候,现代的数据方法也提供了备选,例如互信息之类,用来判断变量有没有作用的方法。

问:现在实际使用的模型是否大多为依赖标注的监督学习模型?实际当中无监督和半监督的方法用的多吗?

答:无监督的多半用于第一步探索,像聚类那种。多半是使用有监督的方法。当然由于有些标注非常昂贵和稀缺,深度学习这种无监督的方法也非常流行了。

结语:说算法谈人生

数据做久了,总有些胡思乱想……

脑洞1

「数据分析研究就象养小孩,涉及很多清理和维护工作,但这些工作往往被忽视,也得不到什么掌声。」(语出 Introduction to Data Technologies)

脑洞2

「所有的模型都是错的,但有些是有⽤的。」(语出 GeorgeBoX)

脑洞3

所有的数学模型都是对真实世界的⼀种近似,否则就需要研究⼤量过于细节的因素。近似是有⽤的,就是因为它可以得到误差在可接受范围内的解。⽣活中的现实很难和书上的理论完全匹配,与其纠结于理论的不完美,不如先将近似的解拿到⼿里试试再说。

脑洞4

机器学习是通过数据来找模式,人类也是不断观察新的事物,不断学习其中的规律,持续在自己的大脑中建立模型,或者称之为三观。但是有的人过度拟合,有的人拟合不足。

脑洞5

随机梯度下降算法是一种贪婪算法,像大多数的⼈眼光一样,只能看到几步远,所以生活中全局最优很难达到。解决的办法是,引入随机性,尽量多尝试,尽可能地多走几步,到山的那一边去,往往会向最优解靠拢。

在集成学习方法里面,有一种称之为提升算法,它是使用一系列的学习器叠加来完成任务,后一个学习器要考虑的是修正前一个前学习器产生的错误。正所谓弃我去者,昨日之日不可留。通过不断试错,反复迭代,知错能改,你总能够找到不错的路。

寄语

找一个爱好沉下去,这辈子就很容易度过了。

谢谢大家!❖

联系开智讲者
肖凯:数据科学家与机器学习专家

资深 R 语言用户,R 语言领域的实战专家,历年中国R语言社区大会演讲者。「数据科学中的 R 和 Python」博客博主,周周坚持写,多年积累。造福了中国广大数据科学爱好者。 著有《数据科学与 R 语言》、《 R 语言与 Bioconductor 生物信息学应用》以及《数据科学中的 R 语言》。

微博: @xccds
博客:数据科学中的 R 和 Python