数据科学工作流程和所需技能
数据科学工作流程
具体的数据科学的工作流,包括运维和分析两个部分。每个同学的兴趣不一样。有的同学可能喜欢做运维,就是运行和维护一个大数据系统,有的同学,比如经管的同学,可能就希望对数据有一些基本的分析处理,发现里面的故事。这些都在大数据的工作流里头。
大数据的工作流,可以用到各行各业,包括政府,金融,物流,比如京东物流,媒体,比如抖音,零售,比如拼多多,教育,比如学而思。我们的同学去学而思,做数据科学,大家猜他们预测什么?他们预测家长会不会续费,很准很准的。然后,我们的同学去中国电信、中国移动、中国联通。他们做的数据科学的项目是预测客户投诉。他们想理解用户为什么投诉,能不能够别投诉我。医疗方面,现在医疗大数据太火了。
在这些行业的数据科学工作,主要分三个阶段:
第一个阶段就是数据采集和存储。比如有传感器,把这个数据采集上来。采集上来之后,要合并:有很多表要关联。然后要存储,比如大数据就需要分布式存储。分布式存储的话,我们有 Hadoop。我们把数据存到它里头。
第二个阶段是分析,这包括数据整理、清洗和探索。数据这么多,我们怎么从中间发现这个故事呢?我们首先把数据弄干净了,就是进行清洗,然后做一些计算。比如说有的时候,我们要给它做log转换。你本来看不出什么规律,但是log了以后,可能就发现规律了还有一些转换能够帮助后面的分析,比如说把一些字符串转成有顺序的类别值,
数据整理、清洗和探索是很重要的,是我们数据工程师要干的活。这些工作重要,是因为你最后的模型好不好,很大程度取决于你的数据质量。大家发论文常常是在网上弄个公开的数据集,然后跑一跑。但到了现场,你拿到一个真实的数据,这时候前面这些整理、清洗、探索的工作,要花掉你大量的精力。但它们也是极有意义的,因为你在这个过程中,你就熟悉它了,就能够从中发现故事了。如果你就天天看着这个表,不去处理它,不去画图分析它,是没有感觉的。
第三个阶段是应用,就是确定我的问题是什么,我到底想用它干啥。我要预测明年的股价,还是要预测它有什么异常?确定你的目标,确定你的问题,然后用合适的算法,来处理它,最后把结果可视化地呈现出来。
所以,采集存储、分析、应用,这三个阶段。前面偏工程师方向,要运行和维护这些数据采集和处理的系统;后面偏分析师方向,注重应用。像我们经管的同学,做分析师都是特别好的。工程师和分析师在实际工作中是互相融合的。工程师要知道分析师想分析啥,然后进行数据收集和处理;分析师要知道工程师是怎么弄的,才有数据分析。
数据科学家的基本技能
我们下面看数据科学家的基本技能。一个大数据工程师,或数据科学家,应该有产品开发的知识,这样可以接产品开发,也要学一些数学的东西,比如最优化、贝叶斯概率推断、统计学。编程方面,R语言一般是小数据,Python也很常用。大数据就是python,或者Spark。Spark支持三种语言。你可以用java编程,也可以用scala编程,还可以用python编程。最后,因为我们要做一些模型,所以就要用到机器学习。现在比较流行的还有深度学习。掌握这些算法。
这门课会给大家分成两部分讲:数据工程和数据分析。前一部分偏工程,讲系统,包括 Hadoop、Spark、Kafka、ZooKeeper;后一部分讲分析师,讲分析,包括数据可视化、故事怎么分析、EDA(探索性的数据分析)。我们用的编程语言主要是Python。所以大家看,我们分两部分:这边是工程,那边是分析。工程方面,你要维护数据系统,开发各种数据应用。分析方面,我们掌握最基本的数据分析方法,包括统计学的分析、假设检验。
工程方面
我们首先看工程方面。工程方面,大家可以看到有四个台阶,分别对应的其实就是咱们在企业里面的职业发展路线。
首先,最基本的就是数据管理。管理数据一般是在后台。比如用 Python、SQL 跟数据打交道。因为数据往往存在数据库里,所以我们需要管理数据库。在各种数据库中,有一种大数据的数据库叫 Hadoop,后面会给大家讲解它。在数据的管理中,我们主要是对数据进行查询和操作。
其次,是运维。运维是对一个大数据系统的运行和维护,主要是一些管理工作。比如硬件和软件的搭建、安装和调试;在系统运行过程中的一些维护,比如说发现异常了,要做故障排除和系统恢复。
然后,是开发大数据系统。比如基于开源系统进行开发,加上一些自己需要的功能和特性,或者完全自己开发一套。大数据系统通常都需要几万台机器同时工作,所以它很自然的就是一个分布式系统。
最后,一个特别厉害的职位就是架构师。她要对整个大数据系统的架构来进行设计,让它能够高性能的维护和运行。这就要有几十年的经验才能够扛得住了。
因为我们这门课是基础课,所以只简单介绍前面两部分的基础内容。具体来说,Python、SQL 都是很重要的。Excel 我们不会教大家,但是大家是应该学学 Excel 的,因为Excel 能够实现很强大的功能。然后数据库,如 mySQL。还有 NoSQL 数据库,如 HBase。我们还会给大家介绍分布式存储和计算系统 Hadoop、Spark。然后就是一些数据系统,如 Kafka、flume、flink、Hive。这些都是做数据收集、存储和管理的。大家如果想要走这个方向的话,可以自己拿台电脑搭一搭,因为这些软件都是可以自己搭的。你可以在实验室找台没有人用的电脑,就在上面搭就行。然后系统的研发方面,你可以用 Scala、Java、Python编程。然后你要分析客户的需求。架构设计的要求就比较高了。一般来说我们刚开始找工作的时候,不会让大家去做架构师的,都会让大家先做一段时间测试。然后慢慢的转开发,然后慢慢的做设计,最后才去做架构师。这个要积累个几年,但是路大概是这样子的。大家现在就可以根据自己的兴趣来选择了。
分析方面
下面是分析。前面工程方面的工作是要设计和维护大数据系统。分析工作是用这个大数据系统来分析我们的数据,得到数据的洞察。分析方面的技能要求包括下面四个方面。
首先,是一些基本的数据管理的工作,因为我们要用这个系统。
然后,是做运营的报表。运营报表里面有两种数据,一种是 KPI(关键性能指标)数据。比如咱们是一个电商,KPI 数据就是我上个月卖了多少货?销售额多少?因为它们是我们的关键性能指标,就是我这个公司的目标。另一种是一些基本的数据分析。比如说我的库存,发货时间,客服满意度。这些都是基本数据分析。
在报表的工作中,沟通表达方面的工作非常重要。我们应聘过去当一个数据分析师,如果每天就坐在电脑前面,又不说话,那么老板是不是第二天就可能觉得自己亏了,想把我们裁掉?但是,如果我们每天给他出一个 PPT,把我们从数据中发现都故事做出可视化的图,给他演示,分析情况,提出建议,那么老板就会觉得自己又多了一双睿智的眼睛,就会特别开心,对不对?肯定给我们加工资。我们要离职的话,他还舍不得,要挽留我们,是这样吧?所以沟通表达方面的工作特别重要。这跟我们研究生面试有一些类似。大家有没有发现,有的同学在面试的时候,给她一张纸,她能 15 分钟说个不停,老师就会觉得这个同学的沟通能力肯定没问题,但也有的同学,问他一个问题,他一个单词给你回答了,然后就站在那里,看着老师,老师就得努力想出下一个问题,否则就会陷入尴尬。这就不是好的沟通,是吧?写论文也类似:不管我们是写小论文还是写大论文,最后老师看到的应该是一个故事。它有血有肉,从标题开始就吸引人,中间表达非常简洁,思路清晰,直到最后的结论,一气呵成。这就是一篇表达得非常好的论文。
其次是进行定性分析或定量分析。比如我们定性地分析风险。比如和老板说:我发现这里有问题,去年这个产品还能卖 200 万,今年怎么只能卖 100 万了。这是一个问题。然后我分析了,觉得原因是这样,因此,我们下面要不要做这样的调整?这就是定性分析。它是一种战略分析。
我们更应该进行定量分析。定量分析可以建立数学模型,也可以进行统计的假设检验。这里有一些基本的模型,比如回归模型。也包括各种机器学习模型,如决策树。它们也能提供量化的分析和预测结果。
我们下面举两个定量分析模型的例子。
第一个例子是决策树。决策树这个模型很有意思。顾名思义,老板拿着这个模型呢,就知道怎么做决策了。比如我给各位同学提供一个选课的决策树模型。大家拿到这个决策树模型后,就按照它,首先看上课时间是上午、下午,还是晚上;如果是下午或者晚上的话,就不选了,因为太困;如果是上午,就继续看:作业多不多?如果不多的话,就不选了,因为太没有挑战了;如果作业很多,就接着看考试难不难?如果不难,就不选了,因为没意思。所以,你就会发现:决策树模型给了我们一系列的“如果-否则”(if else)判断,最终获得决策的结果,比如选不选这个课。我们通过分析我们的数据,就可以训练一个这样的模型,给老板提供决策的工具。
第二个例子是购物篮分析。购物篮分析是我们经常做的一个分析。顾名思义,就是分析用户们购物篮里面的商品:是不是有某种商品老是跟另外一种商品在一起?比如说,买牛奶的人是不是还经常买面包。有了这个发现之后,如果有个人买了牛奶,那么我们就给他推荐面包。这时那个顾客是不是就特别高兴?啊!我本来就要买面包的,但差点忘了,谢谢你把面包推荐给我,否则我后面还得跑一趟。这就是购物篮分析在电商中的应用。它在其他地方也有应用。比如说,我们分析各种交通事故,发现摩托车事故总是跟摩托车进入非机动车道在一起出现。这时候我们就会觉得它们可能有一些联系,那么就可以进一步研究它,分析它们的关联,然后有针对性地进行调整,比如限制摩托车进入非机动车道,以减少未来事故的发生。
最后是人工智能。人工智能有基于规则的,也有基于数据的。最近非常火的深度学习是基于大数据的,因为它要求的数据量非常大。可以说没有大数据,就没有深度学习。
上面就是分析方向的基本内容。对这些方面的内容,比如人工智能,有专门的课程讲授,所以本课程并不深入讲解,但是大家理解,它也是一种数据科学。分析的话,你学了Python,就可以自己编程分析了。SQL、Excel,都可以用。分析这种运维的报表,KPI(关键性能指标)。做数据分析。还有沟通能力,即我们不仅要懂,还能让别人知道我懂。你怎么让别人知道你懂?你要能说出来。说出来很重要。然后进行洞察,营销分析,特定业务的问题分析,战略分析,PPT演示。这些都特别重要。在算法模型方面,像统计检验、回归、决策树、购物栏分析、人工智能,等等。未来十年,数据分析工程师要求的还是比较多的,为什么呢?因为很多行业、工作都需要数据分析,所以岗位自然就多了。然后,机器学习工程师涉及到算法,需要的人数肯定少一些。最后是人工智能专家。因为人工智能的模型越来越复杂,所以需要的人也就更少了。现在对数据科学家的需求很旺盛,为什么?因为到处都有数据,都想分析。再往上,我们可以做机器学习工程师、人工智能专家。
三种职业
我们下面总结数据科学的三种职业。
第一种是分析师。分析师有三个典型的工作。她就像个侦探。首要任务是收集各种各样的数据。拿到数据之后,可能有些数据质量不高,我们就要清洗它,并做必要的修复;然后再做分析。
第二种是科学家。科学家就不是简单的对数据清洗清洗、分析分析了,而是要独立地研究和解决问题。这就是我们读研究生的意义。大家一定要理解,我们读研究生,不是说完成老师布置的任务就完事了,而是要明白,老师让你干某件事,其实是要锻炼你的独立研究和解决问题的能力,这种能力,是我们三年以后,走上工作岗位的时候,面试的时候,面试官唯一要看的。因为我们干的具体的那个工作,有很大可能,和我们面试的岗位将要进行的工作,是完全不同的。比如说我们在研究生期间研究了三年的微服务的异常检测,然后在找工作的时候,面试 10 个岗位,可能都配不上微服务方面的运维工作,但这没关系:我们在自己干过的工作中,通过发现和解决问题,获得的能力,在各种工作岗位上都用得上。这时候面试官看着你的简历,然后问你相关的情况,你能清楚地表达出来,细节完整,逻辑严密,面试就过了。这就是读研究生的意义。然后呢,科学家要有定量分析的能力。这就是科学家和分析师的区别。
第三种是大数据工程师。她是要去开发和维护大数据平台的,而大数据平台是一个分布式系统。比如阿里云的大数据平台,你要能够把它跑起来,能够编译、安装和部署,进行集群的维护、扩展和管理。
Index | Previous | Next |