查看原文
其他

数据科学家必备技能(硬件篇)

叉烧ZBayes CS的陋室 2022-08-08

往期推荐:

深度学习1-数学基础

浅谈知识图谱-KG


本文在我的知乎专栏“数学·数据·计算机”已经更新,欢迎关注。

“大数据”的价值在现在这个大环境下不言自明,想在数据类行业分一杯羹的人比比皆是,然而很多人其实并不清楚这个领域。一般而言,数据领域主要分为3个方面,数据分析师,数据科学家,数据架构师。数据分析师重在利用简单的统计方法分析业务,简而言之重业务;数据科学家重在利用复杂的算法,如机器学习等,解决一些目前看来有一定难度的问题,需要有具体的业务问题,但其实有一定的科研性质;数据架构师则偏向技术,搭建大数据平台以实现更为高效的数据分析与挖掘。目前,铺垫盖地的新闻推送都在提机器学习、神经网络,其实都算数据科学家的领域,很多人扎堆其中,那么,在成为一名数据科学家,需要什么技能呢?今天我先来给大家介绍一下硬件技能,即具体在知识上、技术上需要掌握的内容。

相对完备的数学知识

无论学习中的浅层算法,如支持向量机、决策树,还是深度学习,BPNN,CNN,RNN等,尽管现在已经被各领域进行包裹形成组件和包,但是个人还是建议了解其中的原理,因为通过原理能够发现不同方法的优缺点,在进行方法的选择时,原理和特性能够提供很好的决策支持,而了解这些原理的基础,就是数学知识。

众所周知,数学是一门非常让人害怕的学科。现在缩小一下范围,其实目前该领域需要的基础知识只是数学的冰山一角。微积分,线性代数与矩阵理论,概率论,数理统计,最优化方法,数值分析,信息论,多元统计分析这几方面。目前我的领域(自然语言处理)还需要一定的随机过程,图论,时间序列分析等,供参考。

我之前在学深度学习时,写过一篇关于数学基础的文章,推荐大家也看看。

编程基础

为什么代码要叫做语言,因为这是和计算机交流的工具,正如用中文和中国人交流,英文和英国、美国等人交流一样,数据科学中大量的复杂计算都需要通过计算机进行计算,所以编程成为数据科学中不可或缺的技能(别和我提SPSS之类的,我问一个问题,要做1000次线性回归,你还用SPSS?)

推荐的语言是Python和R。

对R而言,非常适合入门,语法门槛比较低,免费开源,统计分析变成十分方便,而在可视化上也有一定的优势,R语言做出的图十分精彩,但是缺点是语言的风格和现在很多主流的计算机语言差别较大,要转难度略高,文本处理、内存管理都不太好,运行速度较慢。

Python同样免费开源,门槛比R高,但是作为一种胶水语言,可移植性和拓展性,和大量的编程语言非常类似,包也很丰富,代码规范,社区也比较活跃,非常适合新手学习,在数据方面也有很多资源,相比之下个人更推荐Python。他的缺点是运行速度不算太快,中文材料比较匮乏,Python2有一定的中文编码问题,推荐直接开始学习Python3,虽然很多资源目前只支持到Python2,但是个人看来短期其实就会开始转,类似numpy、pandas之类的都在近期提到了停用python2的想法或者措施。

当然的,Java,C++甚至javascript,都凭借他们的优点在数据领域占得一席之地,大家也可以选择,但是个人认为上面两种是目前的主流,更加适合学习。

数据库知识

有了数学基础,有了编程,问题来了,数据怎么存,数据库就是负责管理这大规模的数据的,主要负责数据的存、取、增、删、改、查,另外还有权限管理等功能。简单地,sql server、mysql都比较合适,非常适合入门,比较粗暴的,excel也是不错的数据存储方式,但是SQL类数据库和excel都有一个比较大的问题,行和列都有限制(大家可以

搜搜,行列都是有极限的,虽然极限很大),在大规模数据下,数据的行列都比较多,此时推荐用CSV的存储方法,存起来其实就和纯文本类似,但是能保持一定的结构化,存取十分方便,Python有接口继续处理。


常用的机器学习算法及其实现

数据科学,当然离不开机器学习相关的算法,一般而言分为监督学习和无监督学习,当然目前又有了迁移学习、强化学习等新的领域,但是基本的监督学习和无监督学习仍是必要的,一个是理论基础,另一个是思想,其实很多迁移学习和强化学习都是基于监督学习和无监督学习产生的。推荐几本书,《统计学习方法》李航,监督学习写的非常详细,《机器学习》周志华,闻名遐迩的西瓜书,推荐的原因是这本书广度很够,言外之意,深度不足,可以查阅更多网络资料进行补充,能把这两本书吃透理论基本就没问题,在实现上,《机器学习实战》挺不错,算法讲解+不调用包的算法实现,十分详细,学习的时候是一个不错的资料,但是具体的应用,调包可能会更好,在不同的场景中使用,生搬硬套上面的代码可能会出错,与之对应的,推荐《Python机器学习》塞巴斯蒂安的,是基于Python3的,机器学习算法基本用sklearn实现,照着做比较好,但是前提,还是尽量懂原理。

数据结构

这是最近才知道的一个不可或缺的东西,说白了就是算法的设计,了解数学方法,将数学计算翻译为代码,其实会出现各种各样的问题,例如边缘问题、复杂度问题,大数据存储计算问题等,只有了解数据结构,才能高效地将数学计算翻译为代码,算法不够高效,有时计算时间就是3个月和3天的区别。

具体怎么学呢,一方面,基础知识储备,常见的数据结构的书籍即可,另一方面,看一些计算机类的算法书,如《算法笔记》等,练习上,leetcode推荐,其实很多面试都会考,所以大家也得十分注意。

数据可视化

图的直观性让很多信息能够被更直接地传播,在进行复杂的计算后,图表能够方便进行进一步分析,发现其中的规律。目前,除了柱状图、折线图、散点图、饼图之外,还有大量其他的变式,气泡图,雷达图,k线图,热力图,桑基图等等,为了方便进行分析和结果展示,可谓无所不用其极。那么具体的可视化工具有哪些呢?常见的编程语言其实都提供了绘图的工具,python有matplotlib,matlab有plot等命令,R有ggplot等,而拓展的,web端有ECharts,D3等,还有第三方工具,如tableau,当然的少不了常用而且简单的excel。


上面就是从我的视角里面看到的一些做数据科学必备的硬件,至少应该是必要条件,不会有些工作很难完整执行,当然团队有分工,每个人有自己的工作,但是技能在手,天下我有,不用依赖别人就能把一些事做好,不是一件很帅的事吗?下一期谈谈软件,敬请期待!



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存