数据人之苦,你造吗?

谨以此文献给所有数据从业苦逼之人

前言:

谨以此文献给所有数据从业苦逼之人,如有中伤之处,请自行戴好盔甲,以防中伤过深。同时也以此文献给后期对数据热情,想长期从事此行业的年轻人,希望对你们有所启发,并快速的调整思路和方向,以对自己的职业生涯有更好的发展。

最近听到一些段子,挺有意思的,先分享给大家,写清了数据分析人员的很多真实写照(此段子非我原创,来源于qq群@路西法):

一:新招进公司,做大数据分析师,好嗨森,入职第一天老板给了张50M的excel表说:“瞧,你看我们有100多万条用户信息呢,这么大的数据,来个大数据分析下!”

二:还没从震惊中恢复过来,业务部又神补一刀:“我们准备跟星巴克合作,来预测下明年多少人喝咖啡,几千万的大项目,预测不准公司要亏很多钱的,你加油哈”

三:好想把“我要是未卜先知为啥不去炒股来给你打工”这句话甩在业务部脸上,就被IT一句:“哥们你可来了,那失散到天涯的数据有娘啦!”噎了回来。

四:终于把数据拼起来开始分析,发现好有规律啊,好工整啊,隐隐感到有坑,去业务部一问才知道,全是被经销商篡改操纵的数据,人家都有简便操作的顺口溜了,一读发现顺口溜还朗朗上口

五:没有四的困扰了,这下终于是全真实数据!全部没有规律了!喜极而泣,擦干泪仔细一看发现80%的记录缺失,10%记录不全,5%记录出错……

六:整完数据开始统计,然而领导觉得只做加减乘除太简单了,有没有有深度的方法(解读:需要纠正的是,有用为先,花哨次子,这种说法不太合理

七:简单了就做个模型吧,然而检验值还没讲完领导表示太复杂搞不懂,能简单点不(解读:这个是解读能力的问题,跟领导没关系)

八:改来改去已很多遍了!我已不太记得领导唠叨了什么,总之又听到一句:“再改一下,看看其他维度深入分析分析”,然后默默新建一个文件:《分析报告V16-8版》

九:输出结果和业务部的认知差不多,被评价为:“我们都知道了吗,做跟没做一样吗

十:输出结果和业务部的认知差很多,被评价为:“这个与业务经验完全不同,肯定是数据的问题,我们都十多年经验了,快回去检查数据,上次我去见XXX客户人家就不是这样的!一定是你错了!

此段子一出,群里都炸开了锅,各位数据从业人员开始不断的煽风点火,各种数据背锅,各种吐槽,说尽了数据分析师的各种的辛酸苦辣。上面提到的一些问题,我做分析师的时候也经常碰到过,我现在找到了一些规避这些问题的方法,在下文中,我会提出微薄的建议和意见,希望对大家有所帮助。

当然,我也希望借此能够并号召所有的数据从业者都能够在数据应用实践上能够深入思考并且有所突破,以此在正确的轨道上更好的发挥出数据的价值,从而让数据从业者有更大的前途和钱途,不在拘泥于每天的抱怨和自怨自艾中。

数据之苦

进入正文,数据人之苦最苦的是:有好处想不到你,出了问题都是数据人的错,这句话的意思就是你做好是应该的,做得不好你就得承担责任。这种痛苦完全命中了马云蜀黍对离职的两点看法:心累(得不到价值肯定)、钱少(没业绩肯定哪来的升职加薪)。区分不到数据流程的不同阶段,数据人之苦又有所区分侧重不同,说一下我的个人浅见。

根据数据应用的不同阶段,我的划分方法如下,从数据底层到最后应用:

1、大数据平台

目前很火,数据源头,各种炫酷的新技术,搭建hadoop,hive,spark,kylin,sparkstreaming,druid~,目前很多企业都把数据采集下来了,还有很多企业都不知道怎么进行存储数据。

这里面要解决的是实时、近实时和离线的大数据框架如何搭建,各数据流之间如何耦合和解耦并且如何进行灾难备份都是需要重点考虑的。

所以我的感觉是:未来的三四年中,这块人才还是很稀缺的,因为大数据概念炒作的这么厉害,很多企业都被忽悠的说,我们也来开始挑战大数据行业吧。所以挑战的前提之一就是需要把数据存储下来,现阶段,很多公司都要做第一步:存储数据。传统的SQL,针对大数据量的非结构式数据,我们所想的就是:用最廉价的成本存储数据,所以分布式是很有前途的。另外,云端会是个很好的方向,不是每个公司都是养得起这么多这么贵的的大数据平台开发人员和运维人员OPS,DBA的,所以我们要有很好的危机意识,及时贡献出自己的价值。所以花点钱让云服务提供商是个很好的思路。说了以上这些看法,主要是想对未来会从事这块的人一点方向,追上潮流是很重要的,选择某些未来潮流和这块工作最被吐槽的一点就是:Hive速度好慢,SQL查询好慢,你的集群怎么老是挂掉,hadoop版本升级后,怎么数据跑出来不对了;

在这个领域内工作,需要有强大的攻坚的能力,并且还需要有快速定位和解决bug的能力,因为有很多工具都是开源的。因为是开源的,所以你们懂得,各种坑爹,甚至出现无法向下兼容的能力,所以你需要的是强大的加班能力和Java开发的能力。这块机能就看你们自己对号入座了。

如果想在这块做的很好,就需要有整个系统架构的设计能力并且比较的强的抗压能力和解决问题的能力,以及资源收集的能力,可以打入开源社区,这样就可以随时follow最新的潮流和技术。

2、数据仓库-ETL

常见被吐槽的就是:

a、数据字典呢?这个字段是什么意思?我们用数据的人最痛苦的莫过于此,看到了表名和字段,可是你也只能脑补说这个字段的业务含义是什么?

b、DW设计和维表设计的不合理,怎么找个数据这么难的?为什么生产上的表在仓库里面没有呢?

c、我明明只要取一个集团的订单统计数据,还要我去join 3张表?这个仓库做的是什么东西啊。我的报表要新增一个维度,怎么排期要半个月?

d、我要取个数据,怎么要排队半个月?

这个是我有时候吐槽的点,确实仓库的人做的很辛苦的,单单Oncall就会让人望而却步,有很多数据库工程师晚上睡觉的时候经常被Oncall电话吵醒,因为数据流程出问题了,所以需要第一时间去排查,哪个数据源出问题了并且要立即解决问题,否则整个数据流程都会受到影响。如果数据流程受到了影响,你就可能会被大领导一言不合叫到办公室说:我要的数据怎么还没有准备好,我的业务报表今天怎么没有发出来。

所以通过这个对话,我们可以知道:这个职业是个很重要的职业,因为数据流程很重要,决定了数据从源头杂乱无章的情况,通过ETL之外变成了整齐的数据,这些整齐一致性的数据可以让你很方便的把各业务的统计结果计算出出来,并且能够统一口径,要不然就变成了有几个部门就有几种统计结果,到时候A部门说业务增长了,B部门说业务下降了。

这么重要的部门为什么会受到这么大的挑战呢,就是因为经常他们的工作内容虽然很重要,但是经常看不到什么产出。也跟我们开头说的:这个是很重要的工作,你做好了是应该的,做不好就面临了各种挑战、挑刺。不过,既然拿了公司的钱就应该在这个岗位上都应该把事情做到极致。至少在以下几点上,我觉得数据仓库人员做好是无可厚非的:

a、数据字典的完整性,用的人都希望能够清晰的知道这个字段的逻辑是是什么。字段的一致性很好的,不要同样一个字段在不同表的定义还是不同的。何况,我们也没有要求字段的命名要完全一致,我们就因为历史遗留问题,人员的流动性,导致同样一个表的相同字段,在不同的目的地表上,字段不一样,一个是驼峰形,另一个是下划线形,所以SQL逻辑在HIVE上和SQL上需要做大量的改动,用起来非常痛苦。

b、核心流程的稳定性,不要说每天订单主表能够使用的时间很不稳定,有的时候很早,有的时候要中午才出来,如果不稳定就会导致使用数据的人对你很没有信心。

c、仓库版本迭代不要过于频繁,要保持稳定性。不要你做好了仓库1.0,很快就把原来的推倒重来,变成了2.0。所以在数据仓库中需要考虑到延续性,主表的变动不要太频繁,否则使用的人会非常痛苦,好不容易才用习惯了1.0的表结构,没办法这么快进行切换。简单的说,要能向下向上兼容。

d、保持各业务逻辑的统一性,不要出现说同样的业务逻辑,同一个组别的人统计出来的结果不同。原因在于共同的逻辑没有落地成通用的东西,所以导致每个人写法不同。这点其实需要特别注意。

针对以上想法,我对这个岗位的技能要求是:不要成为仅仅会写SQL的人,我觉得现在工具都很发达,如果你的技能很单一的话,那么你的可替代指数是非常高的。

仓库人员应该要常常思考,表结构之前如何进行架构设计师最合理的,所以需要有架构思维。另外技能上,我觉得除了SQL熟练之外,还需要知道如何写Transform,MapReduce,因为有很多业务逻辑实现用SQL实现起来非常负责,但是如果你会写程序,那么就能给你提供便利,让你的效率提升很多。另外最好的仓库人员需要写Java或者Scala,通过写UDTF或者UDAF来提升你的效率是很有必要的。

数据仓库人员也应该常常考虑自动化和工具化方面的事情,它需要很好的工具或者模块的抽象能力,动手实现自动化的工具来提高整个组织效能。针对经常碰到的数据倾斜问题,需要很快定位问题并进行优化。

接下来是数据应用的几个关键职位,待我一一道来,但是在进入被吐槽之前,我想说数据应用的一个最关键的前提是:数据质量、数据质量、数据质量!!在每次阐述你的观点或者利用用算法的时候,都需要先检查,数据源的数据正确性,否则任何结论都是伪命题。

接下来继续说数据应用的岗位的吐槽点:

3、数据可视化

这是个很炫的工作,最好是能懂点前端,比如js。数据可视化人员需要有很好的分析思维,不能为了炫技而忽视对业务的帮助程度。因为我对这个岗位客串的不多,所以没有特别深入的感悟,不过我觉得这个岗位需要有分析的能力,然后才能把可视化做好。

另外一方面来说,做数据应用的人都应该懂点数据可视化,要知道图片>表格>文字,一个能够用图片来阐述的机会千万别用文字来描述,因为这样各易于让别人理解。要知道,给大领导讲解事情的时候,需要把大领导设想成是个数据白痴,这样才能把一件事情说的比较生动。

所以对这个岗位的吐槽多在于:你搞这么炫的图标干哈?有什么用。

4、数据分析师

现在对数据分析的需求是很大的,因为大家都想着说:数据有了,但是能做些什么呢?这就需要有数据分析师,对数据进行分析和挖掘,然后做数据应用。

对数据分析师吐槽最多的是:你做的什么狗屎,你分析出来的不就是正常的业务逻辑吗!!!还需要你分析什么。还有一个就是段子里面说的:你分析的结论不对,跟我们的业务逻辑不符合。特别是:ABTest的结果和当初设定的预期不相符合的时候,分析师会常常被拉过去说:分析一下,为什么我的AB实验结果不显著,里面肯定有原因的。

很多时候,宝宝的心里苦啊,你说这个转化率下降了,从数据上可以看出哪个细分渠道下降了,至于为什么下降了,我们得去用户去,很多时候,数据上也体现不出来为什么,只能告诉你现状是什么。

如果你一直在写分析报告,给结论中,但是在持续周而复始,没有直接在业务中体现成绩的是,数据分析师们好好醒醒,距离你们被辞退已经不远了。

对于数据分析师的定位:我个人认为要求是很高的,一般人是成为不了优秀的数据分析师的。数据分析师的技能要求除了会数据分析、提炼结论、洞察数据背后的原因之外,还需要了解业务,懂得算法,这样如果面对一个业务问题,数据分析师们可以针对问题抽丝剥茧,然后层层递进去解决问题,然后再根据定位的问题进行策略的应对,是先做上策略进行测试还是应用算法进行优化,用算法用在哪个场景上。

所以一个优秀的数据分析师是个精通业务和算法的全能数据科学家,不是那个只会听从业务的需求而进行拉数据、做报表、只做分析的闲杂人等。我们都说分析要给出结论,优秀分析师的结论就是一个能解决问题的一揽子策略和应对措施,同时很多需求是分析师去主动发现并通过数据来挖掘出来的。

从上述描述中,可以看到对数据分析师的要求是:会写sql拉数据,精通业务、会数据洞察、精通算法,主动性强。所以这种人要求是很高的。

如果你一直只是忙于应付日常分析需求,热衷于写华丽的报告,那么你要记得,你很危险,因为会有一堆人在那里质疑你存在的价值,特别是小公司,因为数据人员的薪资是个不小的支出。大部分不落地的分析都是伪分析,有一些探索性的可行性研究可以不考虑落地。但是其他的特定业务需求的分析都需要考虑落地,然后通过实践来反推你的作用,如此反复,才能慢慢的给你价值的肯定同时提升你的分析技能,也只有这样才能证明你作为分析师、数据落地者的价值。

5、数据挖掘/算法

这块的话,经过这三年的摸爬滚打,感触蛮多的。体会比较深的吐槽点主要有以下几点:

1)、首先,业务或者产品的各种怀疑,因为他们觉得,用规则就很好了,还用算法和挖掘干什么,花这么长时间研究算法,结果做出来的效果还达不到他们的要求;

记得我们在好几次的项目中,都用规则版本作为baseline,然后来对比说算法比规则提升了多少,以此来打脸业务。不过更多的时候,我们采用了规则+算法的上线做法,因此来提高模型的效果,建议大家也多尝试试一下这种做法,来弥补算法在某些场景的缺陷。

2)、你的准确率怎么这么低?!这个是我们常常被挑战的点。记得有一次我们做了一个模型,随机准确率万分之三,模型结果是precision 10%,recall 10%,从结果上看,效果也还算可以了。可以某大领导说,你们的准确率怎么这么低。我最后只差翻白眼了,不过还是很耐心的解释说,因为随机准确率太低导致的。我们还可以继续优化,把PR再次进行提高。这个苦应该是很多人都体会到过的。

3)、你的准确率可以到99%。这个和2类似,只是每个人都会先来问我说,你的算法准确率能做到99%或者100%吗。因为如果没有这个准确率,我们没法支持。

这个时候,宝宝心里的苦有人知道吗。最后我们的应对措施是:你计算一个盈亏平衡的点出来给我们,我们根据随机和简单规则作为baseline,来看我们模型能到达到多少。按照经验法则,如果准确率提升了一倍,那么recall大概会下降一半左右甚至更多,所以如果一个随机准确率是15%的项目,业务要我们强制提升到准确率90%,这个时候我们一般性就说没法达到目标。

而且很多时候,不同的场景对准确率的要求是不同的,所以在一定合理的场景下和业务进行据理力争是必要,不要害怕让业务吐槽,更多的时候管理好他们的预期。

4)、你的推荐有价值吗?你不推荐客人也会下那个产品的订单的。有些场景下,推荐的价值在于『长期复购率』,所以不要每次都盯着ABTest的转化率,让客人的费力度降低也是很有前途和前景的。就是你要说服别人的是:一个很智能的产品会让客人用起来爱不释手,虽然在这一次的转化中没有明显的差别,但是观察长期复购率才能体现价值。特别是要区分:高频和低频产品。像频次这么低的旅游产品就特别难体现出短期价值。

对于这个岗位的技能要求来说,没有要求你一定要从零开始实现所有的算法,现在有很多现成的算法包进行调用。最基本的要求是你要知道每个场景会用到哪个算法,比如分类场景,常用的分类算法就有LR/RF/Xgboost/ET等等,你要知道每个算法的有效优化参数是什么,模型效果不好的怎么优化基本就可以开始动手实践了。此外、还需要有算法的实现能力。

另外针对有监督式学习算法,算法工程师最好有很好的业务sense,这样在Feature设计的时候才能更有针对性,设计的feature才有可能或者很好的先验性。

6、深度学习(NLP,CNN,语音识别)

这块我没具体商用过,只是动手实践过。个人感觉商业化是重点吧,特别是大家都在观望说你的chatbot很有用啊,可是siri做了这么久,最后也反响一般。现在客服机器人又很火,可是大家又在一通吐槽说,这个上下文理解的太差了,机器人的语义识别做的怎么这么差。谁做谁知道,对于中文的语义识别,难度比国外的难多了,因为中文的一种否定说法有太多种变体,你不知道我们会说哪种。另外,常常有人恩吐槽说,你这个CNN这么复杂,我线上需要满足100ms内返回,你搞的这么复杂,我实时调用怎么整,肯定来不及了,最后只能考虑offline预测了。

整体来说,这块对个人的综合素质是很高的。如果你只是想简单利用现成的Model,然后提取中间层的特征,然后再套用其他的机器学习模型进行预测的话,倒也能很好的解决一些现实中的公司应用,比如yelp的图片分类。不过,严格来说,这个不算是做深度学习的人,因为真正玩DL的人,是需要自己动手建模型,调参数,改symbol的,所以他们的变成能力是很强的,这点上,我一直都高山仰止。

因为我也不是特别专业,所以就点到为止,不说太多。我个人认为,在这块上需要有比较的算法改造和优化能力,尽量的提高算法预测的速度,同时不断的提高算法的外延性提高精度,目前整个行业也都是在朝着好的方向在发展吧。

对于未来,一片光明,对于未来,甚是期待,对于未来,一切可能。

做个总结吧:

以上说了这么多唠叨了这么多,其实核心就是:如何用数据创造价值,如果你没有用数据创造价值的能力,那么就只能等着被数据淹没,被数据拍死在职场上,你也就早早的到达职业的天花板上。

体现数据价值的层面上,越往数据应用层靠拢,对数据产生价值的要求就越高,从事这块领域的人要常常自省是否有更好的商业Sense,毕竟在工业界,没人关心你是否比传统的baseline提高了一个百分点,他们关心的是你提高了一个百分点之后,对公司的价值是什么

而越往底层那块,倒也没有强制要求和业绩绑定在一起,更多的是从流程上进行约定,对于这块的价值体现,主要从技术层面上的创新为主,你如果解决了现存架构的问题,那么你就可以成为一个大牛,所以多学学编程吧,别太约束自己,故步自封。

来源:知乎 作者:wpppj 本文由作者授权发布
链接:https://zhuanlan.zhihu.com/p/24913366

本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。

(1)
上一篇 2017-02-16 07:00
下一篇 2017-02-20 08:00

相关文章

关注我们
关注我们
分享本页
返回顶部