“学习机器学习算法背后的数学有何意义?难道我们不能依靠Python和R中现成的库来构建模型吗?”
这个问题我听到过无数次,尤其是在那些对数据科学充满热情的人群中。这种误解太过普遍,以至于导致了许多数据科学家的错误预期。
事实上,主要有两个原因导致了这种误解: 1. 数学知识通常较为复杂,尤其对于那些非技术背景的人来说,这无疑增加了难度。 2. 存在大量的库可以帮助完成各种机器学习任务,这使得许多人认为没有必要深入学习数学知识。
然而,事实并非如此。成为一名合格的数据科学家,你需要掌握机器学习算法背后的数学原理。这是无法绕过的一步。无论是招聘者还是经验丰富的机器学习专家都会认同这一点。
接下来,我们将探讨如何有效地学习这些数学知识。我们会详细介绍机器学习所需的各类数学领域,包括线性代数、概率等。
主要讨论内容: 1. 数据科学与机器学习之间的数学差异 2. 如何调整学习方法 3. 机器学习中的线性代数 4. 机器学习中的多元微积分 5. 机器学习中的概率 6. 机器学习中的统计
许多渴望进入数据科学领域的人经常会问:数据科学与机器学习之间有什么区别?更重要的是,这两种领域在数学上的侧重点有何不同?
我经常遇到的问题包括: - 在机器学习中何时应该使用概率? - 在数据科学中何时应该使用多元微积分? - 在数据科学中何时应该使用线性代数?
尽管数据科学和机器学习有许多共同点,但在数学上的侧重点仍存在细微差别。下面的图表展示了我对这一问题的看法:
虽然数据科学和机器学习有很多重叠之处,但它们的主要关注点却大相径庭。这种差异通常是以下问题的根源。
在数据科学中,我们的主要目标是探索和分析数据,提出假设并验证这些假设。这些步骤通常是为了揭示数据中隐藏的模式,这些模式可能在初次查看时并不明显。因此,我们严重依赖统计和概率的概念来进行假设检验。
相比之下,机器学习更侧重于线性代数的概念,因为它是所有复杂过程的基础。另一方面,多元微积分涉及数值优化,这是大多数机器学习算法的核心驱动力。
数据科学通常被视为机器学习的前提条件。我们需要确保输入到机器学习算法的数据是干净的,并且根据所采用的技术进行适当的准备。如果你希望实现端到端的工作流程(数据科学 + 机器学习),最好掌握数据科学和机器学习所需的数学知识。
如果你一直重复过去的行为,你将得到相同的结果。借用爱因斯坦的一句话:“做同样的事情并期望不同的结果是疯狂的。”
许多希望学习机器学习的人会犯一个错误,那就是采用与学生时代相同的学习方法。他们试图通过纸笔研究定理和推导。这种方法虽然在某些情况下有用,但并不是21世纪学习新概念的最佳方式。
那么,我们应该如何在不陷入传统学习方式的情况下学习数学?
数据科学和机器学习中的数学不仅在于处理数字,更在于理解现象及其背后的原因,以及如何通过不同的方法达到我们想要的结果。
简而言之: - 我们应该更关注对任何给定表达式的直觉和几何解释; - 这有助于我们理解这些复杂公式的含义; - 不需要手动进行繁琐的计算,使用计算库如NumPy等来完成这些任务更为高效。
现在,让我们转向另一个问题:为什么我们需要学习这些数学分支,以及如何通过直观的方法学习它们。
有人认为线性代数是21世纪的数学。确实,线性代数是机器学习和数据科学的基石,它在未来几年将对各个行业产生深远影响。
正如之前所述,线性代数是所有机器学习算法生成结果的基础平台。那么,为什么线性代数如此重要?
线性代数是联立方程组的基础。例如,如果我们有两个线性方程: [ begin{cases} 2x + y = 5 x - y = 1 end{cases} ]
求解x和y很容易,对吧?
通过将第一个方程乘以-2,然后将两个方程相加,我们可以消除x并求出y的值,再求出x的值。
问题是,这种操作需要人类的直觉。机器无法模拟这种直觉,它们只能理解和处理特定表示形式的数据和规则。
为了更好地理解数据科学或机器学习中的类比,每个方程代表数据集中的一个观察值。左侧表示独立输入变量,右侧表示目标变量。
数据集通常包含成百上千的观察值,甚至上百万。因此,手动找到x和y的最佳值是不可行的。这就是线性代数发挥作用的地方。从广义上讲,线性代数是一种系统化的表示方式,计算机可以理解,所有线性代数运算都是基于系统的规则。
通过矩阵运算(规则集),我们可以瞬间求出x和y的值。这就是为什么线性代数在数据科学和机器学习中成为必需的重要原因。
许多有志于成为数据科学家和机器学习专家的人往往不清楚在何处应用多元微积分。正如我在文章开头提到的,这是一个非常普遍的问题。
如果你立刻想到梯度下降,那么你是正确的!不过,你可能还需要进一步扩展你的知识。
多元微积分,尤其是偏微分,用于对给定函数(主要是凸函数)进行数学优化。我们为什么要这样做呢?
我们知道我们计算了某个函数(成本函数或优化函数)的偏导数。但这有什么用呢?
很多人计算了偏导数却不知道为什么这么做!我们需要立即纠正这个错误。
让我们考虑梯度下降的情况。我们知道梯度下降的成本函数为: [ J(theta) = frac{1}{2m} sum{i=1}^{m} (htheta(x^{(i)}) - y^{(i)})^2 ]
我们计算m(斜率)和c(截距)的导数: [ frac{partial J(theta)}{partial m} ] [ frac{partial J(theta)}{partial c} ]
为什么只用偏导数呢?我们可以计算积分或其他运算。这是因为偏导数给出了成本函数相对于m和c的变化率。
你知道我们还可以用向量的方式来表示这些单独的偏导数吗? [ nabla J(theta) = left( frac{partial J(theta)}{partial m}, frac{partial J(theta)}{partial c} right) ]
这便是偏导数的向量表示。我相信你们很多人都见过这种表达方式,但未必理解其含义。这种表示方式称为雅可比向量。
下面是几个学习多元微积分的好资源。我将再次强调,重点在于直觉,而不仅仅是理论和规则。
机器学习所需的概率概念虽然基本,但仍需要直觉。常用的概念包括伯努利分布、高斯分布、概率密度函数、累积密度函数等。这些用于假设检验,因此对概率的理解非常重要。
你会发现许多数据科学家,甚至是有经验的新手,都无法解释著名的alpha值和p值的实际含义。他们常常被当作外行人,甚至不敢提问。
但概率中最有意思的部分是贝叶斯定理。我们从高中开始就遇到过这个定理。
贝叶斯定理的公式为: [ P(A|B) = frac{P(B|A)P(A)}{P(B)} ]
我们通常通过输入数字并计算答案来解决这个问题。但你有没有想过贝叶斯定理到底告诉我们什么?后验概率是什么意思?为什么我们要一开始就计算它?
让我们通过一个例子来理解: - 假设我们有一个朋友鲍勃,我们认为他是一个内向的人,不善于交友。 - 布尔是一个悠闲的人,喜欢交朋友。 - 有一天,鲍勃和布尔成为了朋友。
贝叶斯定理中的P(B|A)表示他们成为朋友的概率: [ P(Bob是朋友|Bob内向) ]
现在,看一下左边和我们之前建立的例子,分子代表鲍勃是内向的P(A)和布尔是朋友的概率P(B|A)。计算结果是: [ P(Bob是朋友) ]
这正是我们在学校里做的,对吧?我将进一步扩展它,你知道这个新值意味着什么?
许多自称了解贝叶斯定理的人会被困在这里。这个新值实际上是关于我们对鲍勃的信心。换句话说,这是我们对鲍勃的新看法和P(A)的新值。
如果我们继续观察鲍勃多次,我们最终会更好地了解鲍勃的真实性格。
我知道你在想什么——这看起来像我们在梯度下降和其他优化算法中做的事情。我们假设一些随机参数,观察预测值和真实值,然后相应地调整参数。
朴素贝叶斯算法的工作原理与此相似,只是简单地假设所有输入特征都是独立的。为了全面理解这一现象,我们需要深入研究贝叶斯网络或概率图形模型。这些模型本身非常强大,我可能会在另一篇文章中讨论它们。
这是我们在本文中较为熟悉的话题之一。统计是机器学习的基础,因此在这里进行讨论。
每当讨论统计数字时,我们脑海中总会浮现一些熟悉的概念: - 集中趋势测量 - 数据散布 - 分布 - 假设检验等
这些概念中的大多数都相当基础。除了最后一个,我看到许多经验丰富的机器学习专家对p值和alpha值有着错误的直觉。这些概念在我们的机器学习模型(如线性和逻辑回归)的功能中起着重要作用。
我知道你可能会好奇——现在谁还在用线性模型?
实际上,大多数组织更看重模型的可解释性,而不是准确性。集成模型往往缺乏这种可解释性,因为它们更侧重于功能,并广泛应用于数据科学竞赛(而非行业)。
坦白说,我曾是那些被这些花哨算法吸引的人之一,更愿意直接跳到它们。结果,我的预测模型表现不佳。
机器学习不仅仅是建立预测模型,而是利用现有的统计工具从给定数据中提取尽可能多的信息。
机器学习的数学是一个常被忽视或误读的基本方面。在本文中,我们讨论了数据科学和机器学习所需的数学之间的区别,并学习了一些关于为什么以及在何处需求数学的指示。
本文由SHAROON SAXENA撰写,原文来自segmentfault。
· 爱数据每周免费直播 ·
直播主题:人人都能懂的机器学习
直播内容: - 生活中的机器学习实例 - 从行业发展到职业选择,为什么要学习机器学习? - 机器人与机器学习的区别 - 什么是机器学习? - 如何摆脱学习陷阱,成为机器学习高手?
直播时间:5月31日10:00准时直播
以上就是改写后的文章,确保内容的准确性和可读性,同时避免与原文过于相似。