过去的几个月中,有几人联系我,诉说他们对尝试进入数据科学的世界,以及用机器学习的技术去探索统计规律并构建无可挑剔的数据驱动型产品的热忱。然而,我发现一些人实际上缺乏必要的数学直觉和知识框架去得到有用的结果。这便是我决定写这篇博文的主要原因。最近涌现出了很多易于使用的机器学习和深度学习的软件包,例如 scikit-learn, Weka, Tensorflow 等等。机器学习理论是统计学、概率学、计算机科学以及算法的交叉领域,是通过从数据中的迭代学习去发现能够被用来构建智能应用的隐藏知识。尽管机器学习和深度学习有着无限可能,然而为了更好地掌握算法的内部工作机理和得到较好的结果,对大多数这些技术有一个透彻的数学理解是必要的。
逻辑回归和神经网络的代价函数的计算方法
为什么要重视数学?
机器学习中的数学是重要的,有很多原因,下面我将强调其中的一些:
1. 选择正确的算法,包括考虑到精度、训练时间、模型复杂度、参数的数量和特征数量。
2. 选择参数的设置和验证策略。
3. 通过理解偏差和方差之间的 tradeoff 来识别欠拟合与过拟合。
4. 估计正确的置信区间和不确定度。
你需要什么水平的数学?
当你尝试着去理解一个像机器学习(ML)一样的交叉学科的时候,主要问题是理解这些技术所需要的数学知识的量以及必要的水平。这个问题的答案是多维的,也会因个人的水平和兴趣而不同。关于机器学习的数学公式和理论进步正在研究之中,而且一些研究者正在研究更加先进的技术。下面我会说明我所认为的要成为一个机器学习科学家/工程师所需要的最低的数学水平以及每个数学概念的重要性。
1. 线性代数:我的一个同事 Skyler Speakman 最近说过,「线性代数是 21 世纪的数学」,我完全赞同他的说法。在机器学习领域,线性代数无处不在。主成分分析(PCA)、奇异值分解(SVD)、矩阵的特征分解、LU 分解、QR 分解、对称矩阵、正交化和正交归一化、矩阵运算、投影、特征值和特征向量、向量空间和范数(Norms),这些都是理解机器学习中所使用的优化方法所需要的。令人惊奇的是现在有很多关于线性代数的在线资源。我一直说,由于大量的资源在互联网是可以获取的,因而传统的教室正在消失。我最喜欢的线性代数课程是由 MIT Courseware 提供的(Gilbert Strang 教授的讲授的课程):http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/
2. 概率论和统计学:机器学习和统计学并不是迥然不同的领域。事实上,最近就有人将机器学习定义为「在机器上做统计」。机器学习需要的一些概率和统计理论分别是:组合、概率规则和公理、贝叶斯定理、随机变量、方差和期望、条件和联合分布、标准分布(伯努利、二项式、多项式、均匀和高斯)、时刻生成函数(Moment Generating Functions)、最大似然估计(MLE)、先验和后验、最大后验估计(MAP)和抽样方法。
3. 多元微积分:一些必要的主题包括微分和积分、偏微分、向量值函数、方向梯度、海森、雅可比、拉普拉斯、拉格朗日分布。
4. 算法和复杂优化:这对理解我们的机器学习算法的计算效率和可扩展性以及利用我们的数据集中稀疏性很重要。需要的知识有数据结构(二叉树、散列、堆、栈等)、动态规划、随机和子线性算法、图论、梯度/随机下降和原始对偶方法。
5. 其他:这包括以上四个主要领域没有涵盖的数学主题。它们是实数和复数分析(集合和序列、拓扑学、度量空间、单值连续函数、极限)、信息论(熵和信息增益)、函数空间和流形学习。
一些用于学习机器学习所需的数学主题的 MOOC 和材料是(链接经过压缩):
- 可汗学院的线性代数(http://suo.im/fgMNX)、概率与统计(http://suo.im/CqwY9)、多元微积分(http://suo.im/xh6Zn)和优化(http://suo.im/1o2Axs)
- 布朗大学 Philip Klein 的「编程矩阵:计算机科学应用中的线性代数(Coding the Matrix: Linear Algebra through Computer Science Applications)」:http://codingthematrix.com
- 得克萨斯大学的 Robert van de Geijn 在 edX 上的 Linear Algebra – Foundations to Frontiers:http://suo.im/hKRnW
- 戴维森学院 Tim Chartier 的新课程 Applications of Linear Algebra;第一部分:http://suo.im/48Vary,第二部分:http://suo.im/3Xm3Lh
- Joseph Blitzstein 的 Harvard Stat 110 lectures:http://suo.im/2vhVmb
- Larry Wasserman 的书《All of statistics: A Concise Course in Statistical Inference》,下载:http://suo.im/v9u7k
- 斯坦福大学的 Boyd 和 Vandenberghe 的关于凸优化的课程:http://suo.im/2wdQnf
- Udacity 的 Introduction to Statistics 课程:http://suo.im/1enl1c
- 吴恩达授课的 Coursera/斯坦福大学的机器学习课程:http://suo.im/1eCvp9
这篇博文的主要目的是给出一些善意的关于数学在机器学中的重要性的建议,一些一些必需的数学主题以及掌握这些主题的一些有用的资源。然而,一些机器学习的痴迷者是数学新手,可能会发现这篇博客令人伤心(认真地说,我不是故意的)。对于初学者而言,你并不需要很多的数学知识就能够开始机器学习的研究。基本的吸纳觉条件是这篇博文所描述的数据分析,你可以在掌握更多的技术和算法的过程中学习数学。
【本文是51CTO专栏机构机器之心的原创译文,微信公众号“机器之心( id: almosthuman2014)”】