在过去的几个月里,我一直和一些人交流,他们已经开始切入数据科学领域并积极使用机器学习(ML)技术来探索统计规律、或构建完善的数据驱动产品。然而,我发现很多情况下统计分析结果不尽人意的原因是是缺乏必要的数学直觉和知识框架。这就是我决定写这篇博客的主要原因。
最近兴起了许多易于使用的机器学习和深度学习的安装包,如scikit-learn,weka,tensorflow,r-caret等。机器学习理论是横跨统计、概率、计算机科学和算法等相关领域,可以用来构建智能应用程序。虽然机器和深度学习有着无限前景,但就这些技术而言,透彻的数学理解对掌握内部运算和获得较好的效果是非常有必要的。
为什么要强调数学?
毫无疑问机器学习中数学是重要的,例如你需要:
1. 选择合适的算法,包括考虑精度、训练时间、模型的复杂性、参数和数量特征;
2.选择参数设置和验证策略;
3.通过了解偏差方差权衡来识别拟合不足与过度拟合;
4.估计正确的置信区间和不确定性。
需要具备数学基础:
到底需要具备多少数学知识才能理解机器学习这个交叉领域的技术呢?这个问题没有统一的答案,通常是因人而异的。机器学习的数学公式和理论研究正在进行中,研究人员也正在研发更多的先进技术,所以回答这个问题是不太容易的。下面我将从以下方面阐述我认为成为机器学习科学家/工程师所需的最低数学水平以及每个数学概念的重要性。
1. 线性代数:在ML中,线性代数到处都是。主成分分析(PCA)、奇异值分解(SVD)、矩阵的特征分解、LU分解、QR分解/因式分解、对称矩阵,正交化和正交化、矩阵运算、投影、特征值和特征向量、向量空间和规范这些都是理解机器学习及其优化方法所必需的。线性代数令人惊奇的是,有很多在线资源。 我一直说传统的课堂正在死亡,因为互联网上有大量的资源。我最喜欢的线性代数课程是MIT(Gilbert Strang教授)课程。
2. 概率理论与统计学:机器学习与统计学领域是有很多相似的地方。实际上,有人最近将机器学习定义为“在Mac上统计数据”。 机器学习需要基本统计和概率理论的综合知识,如概率规则和公理、贝叶斯定理、随机变量、方差和期望、条件和联合分布、标准分布(伯努利,二项式,多项式,均匀和高斯)、矩生成函数、最大似然估计(MLE)、先验和后验、最大后验估计(MAP)和抽样方法。
3. 多元微积分:主要领域包括微积分、偏导数、向量值函数、梯度方向、Hessian矩阵、雅可比矩阵、拉普拉斯和拉格朗日分布。
4. 算法和复杂度优化: 这些在评估计算的效率和可扩展性,或利用稀疏矩阵时,显得非常重要。 需要知识包括数据结构(二叉树,散列,堆,堆栈等)、动态规划、随机和线性算法、图形、梯度/随机下降和原对偶方法。
5. 其他:包括上述四个主要领域未涵盖的其他数学主题。它们包括实分析和复分析(集合和序列、拓扑、度量空间、单值和连续函数、限制、柯西内核、傅里叶变换),信息理论(熵,信息增益),函数空间和Manifolds流形。
一些机器学习爱好者是数学新手, 对于初学者,你不需要掌握很多数学知识才能开始机器学习。
机器学习的重要好比人的学习一样,人的学习促进科技的进步,机器学习带动人工智能的快速发展,人工智能、大数据和云计算,需要科谱的同学,别忘了多智时代哟!