本文由 「AI前线」原创,原文连接: 从底层到应用,那些数据人的必备技能
编辑|Natalie
AI 前线导读:“谨以此文献给对数据有热情,想长期从事此行业的年轻人,但愿对大家有所启发,并快速调整思路和方向,让本身的职业生涯有更好的发展。 根据数据应用的不一样阶段,本文将从数据底层到最后应用,来谈谈那些数据人的必备技能。”前端
新年礼物双手奉上!在 AI 前线公众号内回复关键字“携程 2017”能够下载携程技术中心精心整理的《携程技术 2017 年度合辑》迷你书 PDF,内容涵盖了携程技术中心微信公众号在 2017 年发布的技术干货,覆盖架构、大数据、前端、安全、运维、云计算、数据库等领域,也包含了 2017 年八场携程技术沙龙上的干货内容。python
从底层到应用,那些数据人的必备技能面试
大数据平台算法
目前很火,数据源头,各类炫酷新技术,搭建 Hadoop、Hive、Spark、Kylin、Druid、Beam~,前提是你要懂 Java,不少平台都是用 Java 开发的。sql
目前不少企业都把数据采集下来了,对于传统的业务数据,用传统的数据是彻底够用的,但是对于用户行为和点击行为这些数据或者不少非结构化的数据,文本、图像和文本类的,因为数据量太大,不少公司都不知道怎么进行存储。数据库
这里面要解决的是实时、近实时和离线的大数据框架如何搭建,各数据流之间如何耦合和解耦,如何进行容灾、平台稳定、可用是须要重点考虑的。编程
个人感受是:最近两三年中,这块人才仍是很稀缺的,由于大数据概念炒做的这么厉害,不少企业都被忽悠说,咱们也来开始进入大数据行业吧。进入的前提之一就是须要把数据存储下来,特别是不少用户行为方面的数据,对于业务的提高比较明显的,若是你能很好的刻画用户,那么对你的产品设计、市场营销、开发市场都是有帮助的。现阶段,不少公司都要作第一步:存储更多的数据。这也是这块人员流动性比较高的缘由,都被高薪挖走了。跨域
和传统的 SQL 不一样的是,针对大数据量的非结构式数据,咱们所想的就是:用最廉价的成本存储数据同时可以达到容灾、扩展性高、高性能、跨域,从目前来看,分布式已经被证实是个很好的一个方式。安全
另外,云端会是个很好的方向,不是每一个公司都养得起这么多这么贵的大数据平台开发人员和运维人员 OPS,从事这个行业的咱们要有很好的危机意识,及时贡献出本身的价值,积极主动的学习新技术、不然就可能被淘汰了。服务器
此外,花点钱把数据托管给云服务提供商是对于创业公司或者一些传统的企业来讲是个很好的思路,这样可以最快速的肯定数据对你的价值是什么,而不用采购这么多的服务器、雇佣这么多的运维人员和网站开发人员。
说了以上这些,主要是想给将来会从事这块的人或者想存储数据的公司一点方向。我本身不作这块,体会不深,你们看看就行。
这块工做最被吐槽的一点就是:Hive 速度好慢,SQL 查询好慢,集群怎么又挂掉了,hadoop版本升级后,怎么数据跑出来不对了等等。
所以,在这个领域内工做,须要有强大的攻坚能力,而且还须要有快速定位和解决 bug 的能力,由于有不少工具都是开源的。由于是开源的,因此大家懂得,各类坑爹,甚至出现没法向下兼容的状况,因此须要强大的 Java 开发能力。
若是想在这块作的很好,还须要有整个系统架构的设计能力、比较的强的抗压能力和解决问题的能力、资源收集的能力,能够打入开源社区,这样就能够随时 follow 最新的潮流和技术。
数据仓库 -ETL
确实作仓库的人很辛苦,单单 Oncall 就会让人望而却步。有不少数据库工程师,晚上睡觉的时候常常被 Oncall 电话吵醒,由于数据流程出问题,须要第一时间去排查,是哪一个数据源出问题,而且要当即解决,不然整个数据流程都会受到影响。
若是数据流程受到了影响,你就可能会被大领导一言不合叫到办公室说:我要的数据怎么尚未准备好,个人业务报表今天怎么没有发出来。
经过上面这个情景,咱们能够知道:这是个很重要的岗位,由于数据流程很重要,决定了数据从源头杂乱无章的情况,经过 ETL 以后变成了整齐的数据,这些整齐一致性的数据可让你很方便地把各业务的统计结果计算出来,而且可以统一口径。要否则就会变成有几个部门,就有几种统计结果,到时候 A 部门说业务增加了 5%,B 部门说业务涨了 10%,OMG,到底信谁。
至少在如下几点上,我以为数据仓库人员应该要作好:
a、数据字典的完整性,用的人都但愿可以清晰的知道这个字段的逻辑是什么。字段要保持很好的一致性,不要一样一个字段在不一样表里有不一样的定义。
b、核心流程的稳定性,不要让天天订单主表可以使用的时间很不稳定,有的时候很早,有的时候要中午才出来,若是不稳定就会致使使用数据的人对你很没有信心。
c、仓库版本迭代不要过于频繁,要保持不一样版本之间的兼容性。不要作好了仓库 1.0,很快就把原来的推倒重来,变成了 2.0。在数据仓库中须要考虑到延续性,主表的变更不要太频繁,不然使用的人会很是痛苦,好不容易才用习惯了 1.0 的表结构,没办法这么快进行切换。简单地说,要能向下兼容。
d、保持各业务逻辑的统一性,不要出现一样的业务逻辑,同一个组别的人统计出来的结果不一样。缘由在于共同的逻辑没有落地成通用的东西,因此致使每一个人写法不一样。这点其实须要特别注意。
针对以上,这个岗位的技能要求是:不要成为仅仅会写 SQL 的人,如今工具都很发达,若是你的技能很单一的话,那么可替代指数是很是高的,而且你自身也没有什么成就感。这里并非说会写 SQL 的人很 low,只是说应该多学一些技能,不然会很危险。
仓库人员应该要经常思考,如何进行架构设计是最合理的,你要考虑是否须要字段冗余、行存储仍是列存储、字段如何扩展最有效,热数据和冷数据如何拆分等,因此须要有架构思惟。
技能上,除了 SQL 熟练以外,还须要知道如何写 Transform,MapReduce,由于有不少业务逻辑用 SQL 实现起来很是复杂,可是若是你会其余脚本语言,那么就能给你提供便利,让你的效率提高不少。另外好的仓库人员须要写 Java 或者 Scala,经过写 UDTF 或者 UDAF 来提高你的效率是颇有必要的。
数据仓库人员也应该经常考虑自动化和工具化方面的事情,须要很好的工具或者模块的抽象能力,动手实现自动化的工具来提升整个组织效能。针对常常碰到的数据倾斜问题,须要很快定位问题并进行优化。
说完了数据存储这块,接下来是数据应用的几个关键职位,在此以前,我想说数据应用的一个最关键的前提是:数据质量、数据质量、数据质量!!在每次阐述你的观点、分析结论或者用算法的时候,都须要先检查,源头数据正确性,不然任何结论都是伪命题。
数据可视化
这是个很炫的工做,最好是能懂点前端,好比 js。数据可视化人员须要有很好的分析思惟,不能为了炫技而忽视对业务的帮助程度。由于我对这个岗位客串的很少,因此没有特别深刻的感悟,不过我以为这个岗位须要有分析的能力,才能把可视化作好。
另一方面来讲,作数据应用的人都应该懂点数据可视化,要知道观点表达的素材顺序是:图片>表格>文字,一个可以用图片来阐述的机会千万别用文字来描述,由于这样更易于让别人理解。要知道,给大领导讲解事情的时候,须要把大领导设想成是个“数据白痴”,这样才能把一件事情说的比较生动。
数据分析师
如今对数据分析的需求是很大的,由于你们都想着说:数据有了,可是能作些什么呢?这就须要有数据分析师,对数据进行分析和挖掘,而后作数据应用。
对数据分析师吐槽最多的是:你分析出来的不就是正常的业务逻辑吗,还须要你分析什么?或者是你分析的结论不对,跟咱们的业务逻辑不符合。特别是:ABTest 的结果和当初设定的预期不相符合的时候,分析师会经常被拉过去说:分析一下,为何个人 AB 实验结果不显著,里面确定有缘由的。
不少时候,宝宝的内心苦啊,你说这个转化率降低了,从数据上能够看出哪一个细分渠道降低了,至于为何客户不下单,咱们得去用户去,不少时候,数据上也体现不出来为何,只能告诉你现状是什么。
若是你一直在写分析报告,给结论中,持续周而复始,没有直接在业务中体现成绩的时候,数据分析师们该醒醒了,你该想一想这个是你要的岗位吗?
对于数据分析师的定位:我的认为,成为优秀的数据分析师是很是难的,如今市面上也没有多少优秀的分析师。数据分析师的技能要求,除了会数据分析、提炼结论、洞察数据背后的缘由以外,还须要了解业务,懂算法。
只有这样,当面对一个业务问题时,数据分析师们才能够针对问题抽丝剥茧,层层递进去解决问题,再根据定位的问题进行策略的应对,好比是先作上策略进行测试仍是应用算法进行优化,用算法用在哪一个场景上,能不能用算法来解决问题。
一个优秀的数据分析师,是个精通业务和算法的全能数据科学家,不是那个只会遵从业务的需求而进行拉数据、作报表、只作分析的闲杂人等。咱们都说分析要给出结论,优秀分析师的结论就是一个能解决问题的一揽子策略和应对措施,同时不少需求是分析师去主动发现并经过数据来挖掘出来的。
从上述描述中,能够看到对数据分析师的要求是:会写 sql 拉数据,精通业务、会数据洞察、精通算法,主动性强,要求仍是很高的。
若是你一直只是忙于应付平常分析需求,热衷于写华丽的报告,那么你要记得,你很危险,由于会有一堆人在那里质疑你存在的价值,特别是小公司。由于数据人员的薪资是个不小的支出。
大部分不落地的分析都是伪分析,有一些探索性的可行性研究能够不考虑落地,可是其余的特定业务需求的分析都须要考虑落地,而后经过实践来反推你的做用,如此反复,才能慢慢的给你价值的确定,同时提高你的分析技能,也只有这样才能证实你做为分析师、数据落地者的价值。
数据挖掘 / 算法
这块的话,通过这三年的摸爬滚打,感触蛮多的。体会比较深的吐槽主要有如下几点:
不少时候,不一样的场景对准确率的要求是不一样的,因此在必定合理的场景下和业务进行力排众议是必要,不要惧怕让业务吐槽,更多的时候管理好他们的预期。
有些场景下,推荐的价值在于『长期复购率』,因此不要每次都盯着 ABTest 的转化率来讲事,让客人的费力度下降也是颇有前途和前景的。一个智能的产品会让客人用起来爱不释手,虽然在这一次的转化中没有明显的差异,可是观察长期复购率才能体现价值。特别是要区分:高频和低频产品。频次比较低的产品就特别难体现出短时间价值。
对于这个岗位的技能要求来讲,没有要求你必定要从零开始实现全部的算法,如今有不少现成的算法包进行调用。最基本的要求是,你要知道每一个场景会用到哪一个算法,好比分类场景,经常使用的分类算法就有 LR/RF/Xgboost/ET 等等,此外,你还要知道每一个算法的有效优化参数是什么、模型效果很差的时候怎么优化。还须要有算法的实现能力,语言方面能够用Scala/python/R/Java 等。咱们常说:工具不重要,重要的是你玩工具,不是工具玩你。
另外针对有监督式学习算法,算法工程师最好有很好的业务 sense,这样在 feature 设计的时候才能更有针对性,设计的 feature 才有可能有很好的先验性。
深度学习(NLP,CNN,语音识别)
这块我没具体商用过,只是动手实践过。我的感受商业化是重点吧,特别是你们都在观望说你的 chatbot 颇有用啊,但是 siri 作了这么久,最后反响也通常。
如今客服机器人又很火,你们又在一通吐槽说,这个上下文理解的太差了,机器人的语义识别作的怎么这么差。谁作谁知道,对于中文的语义识别,难度比国外的难多了,由于中文的一种否认说法有太多种变体,你不知道咱们会说哪一种。
另外,经常有人吐槽说,你这个 CNN 这么复杂,我线上须要知足 100ms 内返回,搞的这么复杂,实时调用怎么整,确定来不及了,最后只能考虑 offline 预测了。经常说这话的人,是不会本身写底层代码的,不少时候我以为:不是你没有解决问题的办法,而是你没有去思考怎么解决问题,心智决定了你的产出。
总体来讲,这块对我的的综合素质要求是很高的。若是你只是想简单利用现成的 Model,提取中间层的特征,而后再套用其余的机器学习模型进行预测的话,倒也能很好的解决一些现实中的公司应用,好比 yelp 的图片分类。
不过,严格来讲,这个不算是作深度学习的人,由于真正玩 DL 的人,是须要本身动手建模型,调参数,改 symbol 的,因此他们的编程能力是很强的,这点上,我一直都高山仰止。特别是一些创业公司,对于这个岗位的编程能力要求很高。若是你面试创业公司后没有下文了那就表示:你很优秀,可是不必定适合咱们公司,由于咱们要找的编程能力很强的人。
这块我不专业,因此就点到为止,不说太多。我的认为,在这块上须要有比较强的算法改造和优化能力,尽可能的提升算法预测的速度,同时不断的提升算法的外延性提升精度,目前整个行业也都是朝着好的方向在发展。若是有不少人看到这块行业开出来的高工资,记得和招聘上的要求核对一下,本身哪块技能须要补充。这样你才能成为人中之凤。
对于将来,一片光明,对于将来,甚是期待,对于将来,一切可能。
作个总结:
以上说了这么多,唠叨了这么多,其实核心就是:如何用数据创造价值,若是你没有用数据创造价值的能力,那么就只能等着被数据淹没,被数据拍死在职场上,早早到达职业的天花板。
体现数据价值的层面上,越往数据应用层靠拢,对数据产生价值的要求就越高,从事这块领域的人要经常自省是否有好的商业 Sense,毕竟在工业界,没人关心你是否比传统的 baseline提升了一个百分点,他们关心的是你提升了一个百分点以后,对公司的价值是什么。
而越往底层那块,倒也没有强制要求和业绩绑定在一块儿,更多的是从流程上进行约定,对于这块的价值体现,主要从技术层面上的创新为主,你若是解决了现存架构的问题,那么你就能够成为一个大牛,因此多学学编程吧,别太约束本身,故步自封。
接下来,咱们的新年礼物第三弹来了!(别问我第一弹的书和第二弹的阅码在哪里~)这里与你们分享《携程技术 2017 年度合辑》迷你书,这是携程技术团队第一次尝试把携程的技术文章整理成册,分享给技术圈的小伙伴们。《携程技术 2017 年度合辑》的内容来自携程技术中心微信公众号在 2017 年发布的文章,共 66 篇,25 万多字。涵盖了架构、大数据、前端、安全、运维、云计算、数据库等领域,也包含了 2017 年八场携程技术沙龙上的干货内容。
这些文字背后,是携程近 3000 位技术人的支持,他们在平常繁忙的工做之余,将本身在一线中的实践经验、踩过的坑毫无保留地分享出来。你也能够将它当作是一本案例集锦。
但愿这本小书,能带给你些许启发和帮助,在成长路上少走一些弯路。也但愿在新的 2018 年,每一天,每一滴一点的进步,让每一位技术小伙伴都能成为更好的本身。
关注“AI 前线”微信公众号,在对话框回复“携程 2017”,便可免费下载本书的完整 PDF。
做者简介
潘鹏举,携程酒店研发部 BI 经理,负责酒店服务相关的业务建模工做,主要方向是用机器学习帮助业务创造价值。
更多干货内容,可关注AI前线,ID:ai-front,后台回复「AI」、「TF」、「大数据」可得到《AI前线》系列PDF迷你书和技能图谱。