这篇回答我想从
工业界的角度反推一下,我们需要的
数据科学家是如何被定义的。首先,
编程能力是数据科学家需要的基本技能。数据读取、整合、
建模分析和可视化的整个环节都需要用到这些工具。
在业界环境中,整个数据链大概分为5块:
(1)云端数据存储系统
比如亚马逊的云服务AWS,大数据可以用分布式存储在S3中。AWS更像是一个生态系统,里面有数据库,也可以在上面运行一些代码,比如实时从社交网站上爬取数据储存在云端数据库中。
谷歌云也有相应的存储和数据读取工具。
(2)安全门
读写数据都需要经过这道安全门,这个部分主要是由公司的IT部门建立的。安全门有3种限制访问权限的方式:
- IP地址:只接受从特定IP地址的访问
- 职能:比如只有头衔是数据科学家和数据工程师的人有权限
- 用户名密码
公司常常会同时使用上面3种方法,也就是有特定职能,从特定IP地址,通过用户名和密码访问。数据工程师会训练数据科学家穿越这重重安全门。这里对数据科学家的计算机要求并不高,只需要知道一些基本的Linux就可以,苦活累活都让工程师们包揽了。
(3)SQL客户端
数据科学家需要通过SQL从数据库中读取相应数据。根据数据库的不同,使用SQL的类型和语法也略有不同,但大体上非常相似。掌握基本的数据库读取操作是非常必要的。
(4)数据分析
现在使用最广的数据分析语言是R和Python,熟练使用至少其中一门语言几乎成为数据科学家的标配。当然,这些都只是工具,工具是解决问题的手段,而非目的。你必须要有一个能用来进行数据分析的工具,偏好因人而异,但你选择工具的时候最好考虑工具的灵活性和可扩展性。比如说,新的方法是不是能够用该工具实现?该工具是不是能够和其它工具结合实现新的功能(可重复报告,交互可视化,将结果转化成数据科学产品APP等)?该工具是不是容易整合到应用系统中大规模的使用(比如电商的推荐算法,搜索的广告优化,精准农业中的化肥量推荐等)?
(5)结果报告
大公司通常有自己的报表系统。如果你在小公司,可能需要自己写代码生成报表哦,这里会用到基于D3.js的交互可视化,Rmarkdown自动化报告以及Shiny应用。
另外一个重要的技能是分析建模,这个模块可以进一步细分成下面几个:
(1)具备基本的概率统计知识
能够熟练进行t检验,开方检验,
拟合优度检验,方差分析。能够清楚的解释Spearman秩相关和Pearson相关之间的区别。熟悉抽样,概率分布,实验设计相关概念。
(2) 了解贝叶斯统计(很快就能在白板上写下贝叶斯定理)
不是所有的应用数据科学领域都需要用到贝叶斯,即使你所处的行业用的很少,了解贝叶斯的基本概念也是很有必要的。
使用“贝叶斯”这个词的方式有很多。但其主要代表了一种解释概率的特别方式。用流行的术语表达,贝叶斯推断不外乎计算在某假设下事情可能发生的方式的数目。事情发生方式多的假设成立的可能性更高。一旦我们定义了假设,贝叶斯推断强制施行一种通过已经观测到的信息进行纯逻辑的推理过程。
频率法要求所有概率的定义都需要和可计数的事件以及它们在大样本中出现的频率联系起来。这使得频率学的不确定性依赖于想象的数据抽样的前提之上——如果我们多次重复测量,将会收集到一系列呈现某种模式的取值。这也意味着
参数和模型不可能有概率分布,只有测量才有概率分布。这些测量的分布称为抽样分布。这些所谓的抽样只是假设,在很多情况下,这个假设很不合理。而
贝叶斯方法将“随机性”视为信息的特质,这更符合我们感知的世界运转模式,结果也更容易解释。所以,在很多应用场景中,贝叶斯更加合适。
(3)机器学习相关技能
知道什么是有监督学习,什么是无监督学习。知道重要的聚类,判别和回归方法。知道基于
罚函数的模型,关联法则分析。常用的黑箱模型:随机森林,自适性助推,深度学习。在应用过程中还需要加强对模型中误差的来源分类的理解,知道相应误差的应对方法。当前存在的机器模型太多,理解模型误差可以帮助你有效的通过尝试少量模型找到足够好的那个。
------------------------------------------------------------------------------------------------------------------------------------
如果你想提升自己的职业技能或者和专业导师进行1对1的求职知道,欢迎扫码联系篱笆老师喔~
