本文最初发表在 Medium 博客,经原作者 Ritwik Ghosh 授权,InfoQ 中文站翻译并分享。 Josh Wills 曾说过:数据科学家比任何软件工程师更擅长统计学,比任何统计学家更擅长软件工程。在当今世界,只要你随便询问一位技术人员,他都会告诉你,这个行业最热门的工作都与数据和机器学习有关。在机器学习和数据科学方面,已经有了大量资源和支持,统计学工具如 R 等编程语言和各种编程语言的库也在这些努力中诞生了。 现在,有志于机器学习的人不计其数。然而,市场上对机器学习工程师的需求仍然很大,因为最终谋求这一职位的人并不多。很多人放弃的原因是机器学习工程师职位背后的数学知识令人望而生畏。 尽管机器学习的普及已经促使 Python 和 R 产生了许多易于使用并得到广泛支持的库,如 Scikit-learn、TensorFlow 和 OpenCV 这样的库,这些库确实让每个人的工作变得更容易,因为它们提供了某种机器学习的捷径,似乎绕过了这类操作所需算法背后的数学。然而,机器学习背后的数学原理基本不变。 机器学习的概念主要得益于这四个数学分支:线性代数、微积分、统计学 和 概率论。在本文中,我们将大致了解这些数学分支在机器学习模型的生命周期中应用的原因和时机。 机器学习主要依赖于线性代数,线性代数用于求解线性方程组。它是利用矩阵和矩阵运算来完成的。任何机器学习模型的数据通常以向量和矩阵的形式存储,其中的值被认为是线性方程组的系数。 矩阵运算是首选方法,因为机器学习一般会处理大量数据,因此,通过各种矩阵运算来进行标量运算,如标量乘法和除法,以及向量之间的运算,都比较容易应用,而且速度快,方便快捷。 线性代数的知识对于决定数据应如何存储在矩阵中是很重要的。例如,一张图片可以存储在三个矩阵中,每个元素分别包含了矩阵中每个像素的红、绿、蓝三色值的强度。现在,由于使用了矩阵来应用线性代数,对这些像素进行操作变得非常容易。 微积分用来帮助机器学习算法提高预测的准确性。这是通过算法的优化过程来实现的。这是在微分的帮助下完成的。利用微分,我们可以通过考虑函数的梯度来求函数的极值。当一个函数有多个参数决定机器学习模型的预测结果时,就会用到多元微积分。它也有助于神经网络模型,在神经网络模型中,微分用来计算反向传播误差。 此外,在深度学习模型中,积分可以用来计算损失函数,还可以在连续值的概率分布中得出特定变量的期望值。 例如,经典的梯度下降法问题就是优化并找出球在碗中滚动的最低位置。这个问题可以通过简单的微分来解决。 当一个算法没有结论性的结果而只有一个概率分布时,我们就用概率来进行决策。算法可以输出值的范围以及这些值应为预期值或为真值的概率。这就是概率论的作用,决策是基于对变量的期望值的概率做出的。任何算法都不可能给出一个完全盲目且可靠的输出。因此,概率是用来决定灰色区域的结果。 例如,如果我们在一个样本上找出受帕金森氏病影响的人数和年龄,我们就会得到帕金森氏病患者年龄分布概率。现在,如果要求我们选择受影响最大的年龄,我们可以取一个年龄区间,在这个年龄区间中,受疾病影响的可能性最大。这种连续分布的决策过程就需要概率论。 统计学是用来从数据中得出结论的。各种统计学方法可以应用到一个数据上,得出不同的结论,从而更好地理解数据。这种理解可以是为了找出数据的均值、极值、范围,也可以是比较复杂的结论,如数据中的离群值作弊,数据给出的函数的阶数(degree),数据的各种参数之间的相关系数,某个参数与算法的预期输出的相关性等等。还有一些假设检验,如卡方检验(Chi-squared test)、z 检验、p 检验、方差分析等,这些检验是为了检验我们可能假设的有效性,并对给定的数据进行检验。
因此,我们可以看到,机器学习的每一点都严重依赖于数学。这就是为什么机器学习工程师需要对上文提到的数学部分有很强的掌握。 作者介绍: Ritwik Ghosh,博客写手,专注科技行业最热门话题。 原文链接: https:///analytics-vidhya/role-of-mathematics-in-machine-learning-f070e7cf6128 你也「在看」吗?👇 |
|