想要成为一名数据科学家,需要具备哪些技能呢?
数据科学已经进入了稳定生产的成熟期,数据科学家所需的技能也在与时俱进。不仅是追求更高效的机器学习模型,在当下,推动数据科学与商业结合、促进二者的化学反应比以往都重要。
在DataIku于德国柏林举办的“数据分析学和数据科学”论坛上,业内人士针对当下“有利于定义并建立创造价值的工作流的技能”这一问题进行了探讨。
数据科学独角兽Unsplash/Andrea Tummon
那么想要成为一名数据科学家,需要具备哪些技能呢?事实上,并不是只有博士学位才能让一个人成为数据科学专家。要成为数据科学家,你需要对数据抱有热情,还要拥有善于分析的头脑。那么,你需要什么技能呢?
关于这一问题已经有了许多的文章和观点,数据科学似乎已经被炒作过头了。当然,这样的炒作的有必要的,比如说它可以鼓励分析学的竞争,亦或是推动信息技术、市场营销等传统部门发展。
德国电信公司的数据学家Dominik Haitz (2019)曾经写过一篇好文。在这篇文章中,他提出了四大类技能:
“第三次技术革命中数据科学家的技能组合”,Dominik Haitz
1. 数据与算法工具箱:数据科学家应掌握统计学和机器学习方面的基础知识。我尤其喜欢“算法工具箱”这个词,掌握算法工具箱就意味着你可以自如地运用算法,能够快速应对各种问题。
2. 软技能:这是一项非常重要的技能。根据我的经验,数据科学家可能经常要应对相关人员的各种“感觉”。“理解”这些感觉需要一定的软技能。
3. 商业思维:商业思维技能在Dominik Haitz的技能组合中占据核心位置(见上图)。这项技能关系到一个数据科学项目能够创造多少商业价值。
4. 软件工程技能:如果只在自己的笔记本电脑上运行数据科学模型,会有什么效果?要想建立有效的数据科学工作流,必须对软件工程的工作原理有大致了解。
事实上,后面两项技能非常重要,因为这些技能常常被讨论“如何成为数据科学家”的炒作文章所忽略,而它们在实际的日常工作中又非常重要。
从简单到复杂
对于机器学习及其对商业价值的影响而言,“从简单到复杂”这个概括有些过于简单了。Civis Analytics的首席数据科学家,Skipper Seabold曾讨论过“数据科学的信任危机”问题。他指出,数据科学家们倾向于关注机器学习算法和验证训练计划等具体问题,却忽略了对商业需求的理解。
对于数据科学家来说,适当地了解其所属公司的商业模式和盈利模式是更为重要的,因为只有这样他们才能为以下常见情况做好准备:
· 商业运行中出现了问题,或者是发现了潜在的隐患。
· 企业希望数据科学家设计出数据科学“独角兽”。
· 企业希望数据科学家为其增加价值或者创造新的价值。
因此,价值可以代表不同的含义。增加/创造价值可能意味着数据科学家通过洞察数据改变了企业的运营流程,也可能意味着他们推动了“数据驱动文化”的发展。
但在大多数情况下,企业希望能通过数据科学家的项目增加收入或是利润,抑或两者兼得。公司并不在乎机器学习模型的细节,它只希望证明这个模型是能够创造价值的。
那么,为什么不专注于能够自动创造价值的、的机器学习技术呢?我们可以从两个方面来认识数据科学:系统复杂度和建模难度。系统复杂度涵盖了商业流程、依赖关系和信息技术基础设施这三方面的复杂度,而建模难度关注的是怎样在数据层面解决问题或者将其转化为数学问题。数据科学项目的系统复杂度和建模难度会对一些要素产生影响,而这些要素关系到项目能否成功以及能否获得认同。
从系统复杂度及建模难度两个方面了解数据科学
1. 可理解性:不具备数据科学背景知识的人能否理解你的解决方案呢?项目的复杂程度决定了人们是否能理解你的创新之处。
2. 可测试性:你的解决方案是否经得起检验?大多数简单项目都能通过二选一简单测试得到检验,而其他比较复杂的项目测试就比较困难了,例如检验一个物流流程是否已经达到了状态。
3. 可信度:这一要素实际上是与上面两个因素密切相关的。如果人们无法理解你的方案,而你也无法证明你的方案是更好的/能带来商业增值的,他们就“无法信任你”。
4. 问题界定:随着项目复杂程度的增加,表述问题本身都会成为问题——这是因为复杂程度越高,人们对事物的看法也就越难统一。
具体来说,在项目开始时,也许通过计算就可以解决问题了,比如说概率的计算(购买概率等)。简单的方案更易于被人们接受,数据科学家也可以通过简单的方案加深对这一问题的理解,而且测试也会变得更容易,比如说,通过二选一测试就能证明某个数据科学方法能够为公司创造价值。
接下来的方案可以变得更复杂,比如说,增加更多参数,或者运行更复杂的机器学习模型。由于这一项目在阶段已经取得了大家的信任,数据科学家此时已经为它的成功打下了坚实的基础。
让独角兽成为现实
现在,一个新的数据科学软件——独角兽软件已经完成了开发和测试,真正的工作开始了:让你的独角兽获得生命。此时,思考软件的特性是非常重要的。软件应具备以下特性:
1. 稳定性:软件要有一定的容错性,不会出现意外的运行状况。
2. 可维护性:软件应易于更新、修改和修复。
3. 可扩展性:软件的运行必须平稳流畅,不受外界因素的影响(如数据量等)。
4. 再现性:输入相同的信息,必须得出相同的结果。
的代码中只有一小部分用于处理实际的数据科学问题(见下图)。大部分代码处理的都是数据收集、有效性、特征抽取、IT系统配置或者与IT基础设施交互方面的任务。
数据科学独角兽的工作:数据科学软件只是IT基础设施的一部分,只有一小部分的代码能真正参与到软件的工作中。
因此,对于软件工程技术,数据科学家需要掌握的包含以下技能:
1. 学习一门程序语言及其基本概念:无论学R语言、Python还是Java都没有关系。重要的是熟悉一门程序语言并掌握其概念。把它当做你的一门课程去学习就好了。
2. SQL(结构化查询语言)和数据仓库:SQL是每个数据科学项目的基础,也是一项重要的技能。熟悉数据仓库的概念,了解不同的数据库。学习数据库的自动查询。
3. 版本控制:数据科学软件会不断迭代,从简单到复杂,到拥有自己的特色。如果学会了一种版本控制框架,比如Git,你就能记录版本的迭代,并且将代码和知识与你的同事分享。
4. “命令行”:数据科学家会经常需要配置服务器或者更新程序包。了解常用的命令行是非常有用的。
5. 其他能帮助理解如何建立成功的数据科学工作流的实用工具:Docker(用于控制环境)和Jenkins(用于自动运行代码),以及其他有趣技术,如云服务(亚马逊AWS、Google云计算平台、微软Azure)和Kubernetes等。
保持独立,保持求知欲
一个人是没有办法掌握所有知识的。建议大家学习那些感兴趣的技能,这有两个好处:让你保持动力,使你与众不同。保持与外界的联系,多参加些论坛。柏林等城市甚至为有抱负的数据科学家们举办晚宴(比如AI Guild)。
,要永远对新知识保持开放的心态,不要放弃你的求知欲,因为——出色的数据科学家都有一个共同点:他们都有难以想象的求知欲。