本文在Creative Commons许可证下发布
观点一、数据科学家不是计算机科学家
首先,因为他们不需要具备计算机科学家那样完整的计算机理论知识体系;其次,数据科学家需要更好地理解随机过程、实验设计及抽样,这些通常是统计学家擅长的领域。但是,数据科学家需要熟悉计算复杂度、算法设计、分布式架构和编程(R、SQL、No-SQL、Python、Java和C++)。还需要熟悉软件开发生命周期和精简架构以进行代码开发和团队协作。
数据科学家还应该成为一两个应用领域内的专家。有可以分享的成功经验以及量化成功的指标。有商业洞察力,并能评估数据科学解决方案给客户带来的投资回报率。这就需要在某个横向领域内具备几年的业务经验和培训(运筹学、面向大规模数据集的应用统计学、计算机科学、工程学或者侧重于分析学科的MBA学位)。还少不了善于沟通。
因此,可以说分析师名称只是适合于一个较为初级的角色。
在纵向上讲,在某个细分的领域有深厚的技术知识:
1、计算机科学家,熟悉所有排序算法的计算复杂度;
2、统计学家,精通特征值、奇异值分解及其数值稳定性和最大似然估计的渐进收敛性;
3、软件工程师,在编写Python代码(包括图形库)方面并将其应用于API开发和网络爬虫技术方面有多年经验;
4、数据库专家,在数据建模、数据仓库、图形数据库、Hadoop和No-SQL方面专业知识过硬;
5、预测建模师,具有贝叶斯网络、SAS软件、支持向量机方面的专业知识。
然而,深厚的行业专业知识对于数据科学家的成功是绝对必要的。在一些领域,如股票市场套利、网络广告套利等,如果不了解其复杂的商业模式,生态系统,周期和泡沫,以及繁杂的行规,就会注定失败。
因此,我认为数据科学家在横向上讲应该是业务分析师、统计学家、计算机科学家和领域专家的混合体。即包括计算机科学、统计学、数据库、机器学习、Python方面的知识。所提到行业知识还具有以下特点:
1、六西格玛概念;
2、在处理大型、复杂、混乱的数据集方面有成功的经验以及衡量成功的标准;
3、能够识别和确定真正需要解决的问题中所需要的数据集(外部的和内部的),所需要的数据库结构和指标方面;
4、深入掌握:计算复杂度、良好的采样与实验设计、健壮的统计学交叉验证、现代数据库设计以及编程语言(R、脚本语言、Mapreduce概念、SQL)
5、掌握高级Excel功能和可视化技术
6、能够创造实用工具,具备创新的思维
需要指出的是实际工作中有一块很重要的工作就是参与数据库设计和数据收集过程,识别那些对于价值发现最为有用的指标和外部数据源。健壮的交叉验证、置信区间和方差技术是提高精确度,衡量和量化不确定性的不二法宝。
最后,实际工作中会用到3种主要的分析学方法:描述性分析、预测性分析和规范性分析。每种分析方法以不同的方式给机构带来商业价值。
观点二、自己的实践
从事工作——网络协议设计及实现;量化生活——固定收益证券投资
1、基于GNU/Linux,802.11 RFCs,802.16 RFCs;使用 C,Python,wireshark, ns3
2、基于windows10 pro,使用Excel,Matlab,SAS,R
数据库的数据分析、数据挖掘技术,应该抓住数据分析和建模这条主线,两条线专业代码实现就是C+Python;对于我从事的行业而言,数据库技术还是得看Oracle