大数据文摘作品
编译:文明 修竹 高宁 天培
数据科学家需不需要有扎实的数学基础呢?
随着越来越多优秀开源项目的涌现,各类数据科学工具都实现了“半自动化”,数据分析的背后数学原理似乎不再是数据科学家的必备技能。
而在近期,诸如谷歌Cloud AutoML之类的人工智能自动化平台也不断趋于成熟,甚至让人可以不用编程就能建立机器学习模型(点击阅读《谷歌重磅:不用写代码也能建模调参,Cloud AutoML要实现全民玩AI》)。
这么看来,数据科学家确实不再需要扎实的数学基础了?
著名数据科学论坛KDnuggets的网红博主 Tirthajyoti Sarkar表示,当然不是啦,强烈反对!
为什么数据科学依旧离不开数学?我们又需要会哪些数学知识?让我们听这位大咖一一道来。
声明
首先,我不是一名IT工程师,我在半导体领域工作,更确切的说是高功率半导体领域。作为一名技术开发工程师,我的日常工作内容主要涉及半导体物理,硅制造过程的有限元模拟,以及电子电路理论。当然,这其中会涉及一些数学,但令人难过的是,我并没有用到过数据科学家们所需要的那些数学。
我有不少朋友在IT行业工作,我也目睹了不少传统IT工程师充满激情的学习或者参与到令人激动的数据科学和机器学习/人工智能领域。我现在涉足这个领域是为了学习一些这行所需要的技术,希望把这些技术应用在半导体装置或工艺设计领域。但当我开始通过自学深入了解这些令人激动的内容时,我很快发现我在大学里学的那些基础的数学知识,我已经记不清了。
虽然我拥有美国一所著名大学的电气工程博士学位,但在没有复习一些必须的数学知识的前提下,想要牢固的掌握机器学习或者数据科学技术还是有一些困难。我必须要说的是IT工程师工作内容和长期的培训使得他们远离了应用数据领域。他们虽然每天处理大量的数据和信息,却并没有对这些数据建立严谨的模型。通常,由于巨大的时间压力,他们工作的重点是“立即处理完当前需求然后处理下一个”而不是科学性的深度挖掘这些数据。遗憾的是,数据科学永远是一门科学,而仅仅有数据是远远不够的。
这些工具和技术包括了,模拟物理或信息过程从而探寻潜在动力学过程,严格地评价数据来源的质量,训练人们从信息流中识别隐藏模式的识别能力,或者理解模型的局限性。这些内容都是科学过程中的标志。
应用科学或者应用工程学课程中通常包含这些内容,一些相似领域中的高水平研究工作中也包含了这些内容。遗憾的是,即便是工作超过十年的传统IT工程师(开发运营,数据库或者QA/测试)都缺乏对这些知识的学习。原因很简单,用不到。
变革的时代
现在不一样了!
在大多数情况下,拥有完美的SQL查询知识,清晰的商业需求,以及一定的RDBMS知识就足够完成提取-转换-装载(ETL)循环的工作,这就是一名IT工程师在公司中所产生的价值。但如果有人突然开始问你一些奇怪的问题,例如,你怎么知道人工生成的测试数据是否足够随机?你怎么知道下一个数据点是否分布在3-sigma的范围内?遇到这些问题,你该怎么办?或者,仅是隔壁计算机科学的研究生偶尔的打趣–计算机进行任何有意义的数学运算的数据表(即:矩阵)的运算负荷会随矩阵大小(行或者列)的增加呈非线性增长,也会让IT工程师感到困惑和恼火。
数据成为了风口上的话题,这些问题出现的频率越来越高,也越来越紧急。
主管、技术经理以及决策者们已经不再满足传统ETL工具给出的干巴巴的表格描述了。他们想要看到表格下面隐藏的模式以及列与列之间的相关关系。他们希望得到完整的描述和推论统计,这些描述和统计可能有助于预测建模,并扩展出远远超出数据集所包含数据范围的投射能力。
今天的数据必须讲述一个故事、或者唱一首美妙的歌。但是,要听懂它优美的旋律,你必须精通音乐的基本音符,而这些音符就是数学。
不再啰嗦,让我们来找出问题的症结所在。一名普通的IT工程师要跨入商业分析、数据科学或者数据挖掘领域,他必须学习或复习哪些基本的数学知识。接下来,我将给出我的观点。
基础代数,函数,集合理论,绘图,几何学
让我们从最基础的内容开始。现代数学的大厦是建立在一些基本内容如集合论、泛函分析以及数论等内容上的。从应用数学学习的角度看,我们可以通过一些简明的模块来简化这些基本内容的学习(没有特别的顺序):
a) 集合论基础,b) 实数和复数及其基本属性,c) 多项式函数、指数、对数、三角恒等式,d) 线性和二次方程,e) 不平等、无穷级数、二项式定理,f) 排列组合,g) 绘图、笛卡儿坐标系和极坐标系、圆锥曲线论,h) 基础几何定理、三角形的性质。
微积分
当年牛顿想要解释天体运行的规律,但他却没有一个足够好的数学工具来描述他提出的物理概念。在英格兰的城市爆发瘟疫的期间,他搬到了他在乡下的农场,在这里,他提出了现代数学的一个分支–微积分。从那以后,微积分被认为是任何分析研究学科如理论科学、应用科学、工程学、社会科学和经济学等通往高等教育的大门。
毫不意外的,微积分的概念和应用出现在数据科学和机器学习中。涉及的重要概念包括:
a) 单变量函数的极限、连续性以及可微性,b) 中值定理、不定型以及L’Hospita规则,c) 最大值和最小值,d) 乘积和链式法则,e) 泰勒级数,f) 积分计算的基本和平均价值定理,g) 定积分和广义积分的计算,h) Beta和Gamma函数, i) 双变量函数的极限、连续性和偏微分,j) 常微分和偏微分方程基础。
线性代数
一个长期没有联系的猎头突然在领英上加你好友?淘宝突然向你推荐一种超好吃的饼干?网易云音乐为你推荐了最符合你口味的小众歌曲?
学习了线性代数基础后,你就有了学习科技行业的核心内容所需的数学知识储备,这种感觉是不是很愉快?
所需学习的必要内容如下(排序不分先后且可能有遗漏):
a) 矩阵和向量的基本性质–标量乘法、线性变换、转置、共轭、秩以及行列式,b) 内积和外积,c) 矩阵乘法规则以及各种算法,d) 矩阵的逆,e) 特殊矩阵–方阵,单位矩阵,三角矩阵,稀疏矩阵和稠密矩阵的概念,单位向量,对称矩阵,Hermitian矩阵,反Hermitian矩阵和酉矩阵,f) 矩阵分解的概念/矩阵LU分解,Gaussian/Gauss-Jordan消元法求解Ax = b的线性方程组,g) 向量空间,基,极化,正交性,标准正交,线性最小二乘,h) 奇异值分解,i) 特征值,特征向量,对角化。
还有一篇很好的文章推荐–《线性代数可以让你实现什么?》(链接:https://medium.com/@jeremyjkun/here-s-just-a-fraction-of-what-you-can-do-with-linear-algebra-633383d4153f)
统计和概率
“只有死亡和税收是永远不变的,其他一切都遵从正态分布。”
在关于数据科学的讨论中,无论怎么强调要扎实掌握统计学和概率学基本概念的重要性都不为过。实际上,许多该行业的从业都者认为机器学习就是统计学习。我从著名的《统计学习基础(An Introduction to Statistical Learning)》开始了我第一个机器学习MOOC课程,几乎瞬间我就意识到我在这门学科上存在不少概念空白。为了弥补这些空白,我开始学习其他有关基本统计学和概率学的MOOC课程,并研读相关主题的文章或观看视频。这门学科范围很广,因此针对性的学习计划是掌握大部分基本概念的关键。我尽量把它们一一列取出来,但是我也有些担心,毕竟这不是我擅长的领域。
1. 数据摘要和描述性统计,集中趋势,方差,协方差,相关性;2. 概率:基本概念,期望,概率微积分,贝叶斯定理,条件概率;3. 概率分布函数——均匀分布,正态分布,二项分布,卡方分布,t分布,中心极限定理;4. 采样,度量,误差,随机数; 5. 假设检验,A/B测试,置信区间,p值;6. 方差分析;7. 线性回归;8. 幂,效应量,检测手段;8. 研究性学习和试验计划。
最优化理论,算法分析。
这些话题跟应用数学领域的传统话语没什么不同,它们大多是相关的并广泛应用到多个专业领域研究——理论计算机科学,控制理论或运筹学。然而在机器学习实践中,对这些强大技术有基本掌握是非常有用的,值得在这里一提。
比如,几乎所有的机器学习算法/技术目的都是在特定约束条件下,使得某种估计误差最小化。这是一个最优化问题,通常用线性规划或类似的技术解决。另一方面,这些技术在帮助理解计算机算法的时间复杂度上效果显著,因为当算法应用到大型数据集时,时间复杂度就非常重要了。在这个大数据时代,通常人们期望一名数据科学家可以提取、转换和分析数十亿条记录,他或她必须非常谨慎的选择合适的算法,因为不同算法会导致最终性能的天壤之别。一般的理论和算法性质可以在计算机科学课上学习,但是要理解时间复杂度是如何分析和计算的(比如针对给定大小的数据集,该算法需要运行多长时间?),就必须要熟悉基本的数学概念比如动态规划或者递归方程。熟悉数学归纳法的证明技术也非常有用。
后记
看到有这么多数学知识要学,是不是有点望而却步了?觉得自己要重新上一遍大学了?不用担心,你可以根据需要边做边学,但最重要的是保持思想的开放。不慌不慌,这些主题你也许大多已经在大学学过,也可能是第一次接触,不过当你学完后,你一定可以慢慢听到数据中隐藏的“旋律”。到那时,你就已经朝着成为数据科学家的方向迈出了一大步。
原文链接:
https://www.kdnuggets.com/2017/12/mathematics-needed-learn-data-science-machine-learning.html