数据科学 — 数学(一)(机器学习)
介绍
数据科学是一门跨学科的领域,结合了统计学、计算机科学和领域知识,以从数据中提取有价值的信息。数学在数据科学中起着至关重要的作用,以下是数据科学中一些关键的数学基础。
- 线性代数:矩阵和向量—线性代数是数据科学的基础,特别是在机器学习和数据分析中。矩阵和向量用于表示和操作数据集;矩阵分解—如特征值分解和奇异值分解(
SVD
),这些技术在降维和数据压缩中非常重要。 - 微积分:导数和积分—微积分用于优化算法,尤其是梯度下降法,这是训练机器学习模型的核心技术;偏导数和多变量微积分—在复杂模型中,涉及多个变量的优化问题需要用到这些概念。
- 概率与统计:基本概率—包括概率分布、期望值和方差,这些是理解随机过程和不确定性的重要工具;统计推断—如假设检验、置信区间和贝叶斯统计,用于从样本数据中推断总体特征。
- 最优化:线性规划和非线性规划—用于解决资源分配和决策问题;凸优化—许多机器学习算法的基础,通过优化目标函数来找到最佳参数。
数学—符号注释
符号 | 解释 |
---|---|
大写字母代表矩阵(Matrix ) |
|
小写字母代表矢量 | |
矩阵(Matrix ) |
|
矩阵(Matrix ) |
|
向量 |
|
矩阵(Matrix ) |
|
矩阵(Matrix ) |
|
矩阵(Matrix ) |
|
向量 |
|
实数集,例如0,−0.642,2,3.456 |
|
二维向量集 | |
n 维向量集 |
|
向量 |
|
向量的L1-norm |
|
向量的L2-norm |
|
将向量 |
方程组
线性代数
一种常用的系统建模机器学习方法称为:“线性回归”。线性回归是一种监督式的机器学习方法,假如你已经收集了许多输入、输出数据,你的目标是发现它们之间的关系。例如,你想预测风力涡轮机的电力输出。如果你只有一个特征,X
轴上显示的是风速,Y
轴上显示的是输出功率,这里的数据点代表风速和功率输出的实际测量值。显然,线性回归的目标是找到最接近这些数据点的线。对于这样的模型,假设这种关系是线性的,它可以用一条线建模。例如,风速以每秒5
米的速度吹来,那么我预测风力涡轮机的功率输出降为1500
千瓦。现在这个模型并不完美,你可以看到实际数据分散在模型的线条上,但它做的不错,这里的模型是线性方程:
但在机器学习问题中,你需要考虑更多的特征。在预测涡轮机的功率输出时,包括风速、温度,为了包括新的输入,需要更改方程:
以此类推,你有1
,则依此类推,包含
同时求解所有这些方程的权重
这里有一个权重向量
句子系统
组合句子为你提供信息的方式与组合方程为你提供信息的方式非常相似。换句话说,句子系统的行为很像方程组,让我们从一些句子系统的例子开始。假设你只有一只狗和一只猫,而且 它们都只有一种颜色。你会得到一些信息,你的目标是尝试弄清楚每种动物的颜色。因此,这是带有句子的系统1
:“狗是黑色的,猫是橙色的”。带有句子的系统2
:“狗是黑色的,狗是黑色的”。最后,带有句子的系统3
:“狗是黑色的, 狗是白色的”。每个句子都有一个信息。因此,诸如狗是黑色的,狗是白色或不允许的句子,它们分别包含两条信息。系统的目标是用这些简单的句子尽可能多地传达信息。请注意这些系统有很大的不同。特别是,第一个句子系统包含两个句子和两条信息。这意味着该系统包含的信息与句子一样多,这就是所谓的完整系统。 第二个句子系统的信息量要少一些,因为它有两个句子,但它们完全一样。 因此,尽管该系统包含两个句子,但它只携带一条信息,这些句子 它是重复的,因此该系统被称为冗余。最后一个句子系统,句子相互矛盾的。这是因为狗不可能同时是黑白的,记住我们有一条狗,它只能有一种颜色。因此,该系统被称为矛盾系统。 系统携带的信息越多,对您就越有用。当系统冗余或相互矛盾时,它被称为单一系统。当一个系统完整时,它被称为非单一系统。简而言之,非单一系统是一个承载与句子一样多的信息的系统。因此,它是信息量最大的系统,而单一系统的信息量不如非单一系统。句子系统可以包含两个以上的句子。实际上,它们可以随心所欲地携带。以下是一些包含三个句子的系统的示例。 在这个新示例中,您有三只动物,并且再次尝试确定它们的颜色。第一个系统有句子:“狗是黑色的,胡萝卜是橙色的,鸟是红色的”。第二个系统句子:“狗是黑色的,狗是黑色的,鸟是红色的”。第三个系统句子:“说狗是黑色的,狗是黑色的,狗是黑色的”。“狗是黑色的,狗是白色的,鸟是红色的”。因此,第一个句子系统是完整的,因为它使用三个句子传递三条不同的信息,因此它是完整且非单一的。 请注意,第三个系统比第二个系统更冗余。是否可以衡量系统的冗余程度?答案是肯定的,它叫做等级。
线性方程组
例如,如何将方程10
。 而且0
,因为10
。另一个解是0
且10
的点4
且6
;12
。因此,这个方程的解包含点
请注意,直线方程2
个单位。这两个方程组与坐标平面平行的两条直线相关联,平行线永远不会相遇,所以这两个方程没有解。
奇异/非奇异矩阵
线性代数中最重要和最基本的对象之一—“矩阵”。矩阵有许多非常重要的属性。由下图所示,如果你取
线性依赖性和独立性
无需解线性方程组即可分辨矩阵是否是奇异/非奇异矩阵,首先让我们回顾一下句子系统,如果第二句与第一句包含相同的信息,则句子系统是单一的。同理第二个方程与第一个方程包含相同的信息,则方程式奇异的。这是线性依赖的概念。如下图所示,看到两个对应的线性方程组。重点关注一下右边的方程组,第二个方程是第一个方程的倍数,所以这个方程组是奇异的,你看一下相应的矩阵,第二行是第一行的两倍,意味着第二行可以从第一行获得,因此第二行依赖于第一行,这种依赖,我们把它称为线性依赖。
相比之下,在左边的非奇异系统中,第二个方程不是第一个方程的倍数。没有常数可以将第一个方程相乘得到第二个方程。这就是为什么系统是非奇异的。每个方程告诉你完全不同的东西。因此,在相应的矩阵 中,也会发生同样的事情。没有一行是另一行的倍数。我无法取一个数字然后将一行完全乘以该数字得出另一行。意味着行是线性独立的。你可以想象,同样的事情发生在列和行上,人们可以定义行之间和列之间的线性依赖,它们决定了矩阵的奇异/非奇异性。
例如,下图四个矩阵:
- 第一个矩阵:第一行乘以三加上第二行乘以二等于第三行,因此行是线性相关的,该矩阵是奇异矩阵。
- 第二个矩阵:第一行中减去第二行,则得到第三行,因此这些行是线性依赖关系,该矩阵是奇异矩阵。
- 第三个矩阵:所有行没有关系,因此行是线性独立的,该矩阵是非奇异矩阵。
- 第四个矩阵:第一行乘以二等于第三行,因此行是线性相关的,该矩阵是奇异矩阵。
行列式
让我们看一下这么两个矩阵:a,b,c,d
,假设存在一个常数k
,其第一行乘以常数k
等于第二行,则该矩阵是奇异的。则k
,则得出
非奇异矩阵具有非零行列式;它们是非零的,奇异矩阵的行列式为零。总而言之,元素为a、b、c
和d
的矩阵的行列式为
接线性方程组行梯形和秩
矩阵的秩
跟着我一起看看如何定义和计算秩。秩是机器学习中的一个很好的应用(图像压缩)。看看下面这张图片,它非常清晰,但它也占用了大量存储空间,因为每个像素都必须存储为一个数字。你能否使用更少的空间存储这张图片或者稍微模糊一点的版本。答案是肯定的。即矩阵的秩。事实证明,像素化图像是矩阵,矩阵的等级与存储相应图像所需的空间量有关。这张特别的图片秩为200
,相当高。有一种非常强大的奇异值分解(SVD
)技术, 它可以降低矩阵的秩,同时尽可能少地对其进行更改。你可以看到此处,将排名第200
的图像缩减秩为1、2、5、15
和50
的图片。请注意,秩为15
和50
的图像与原始图像非常相似,但占用的存储空间要少得多。
所以回想一下,在句子系统中,有一个关于系统携带多少信息的概念,让我们看一看三种句子系统。系统1
:“狗是黑色的,猫是橙色的”;系统2
:“狗是黑人,狗是黑人”;系统3
:“狗和狗会注意到”。系统1
有两个句子,它们携带两条信息;系统2
也有两个句子,但它们是一样的。因此,这个系统只携带一条信息;系统3
有两个句子,但它没有关于动物颜色的信息。因此,它携带的信息为零。回想一下,你的目标是确定颜色!因此,句子系统携带的信息量被定义为系统的秩。系统1
的秩为2
、系统2
的秩为1
、系统3
的秩为0
。现在,让我们回到前面的三个方程组。正如你已经看到的,第一个系统有两个方程,每个方程都为表格带来了一些新的信息。这就是为什么你可以将解缩小到一个点。第一个方程缩小到一条直线,第二个方程将它们缩小到系统有两条信息的点。系统的秩就是这样定义的。所以秩是2
,第二个系统有两个方程,第二个方程与第一个方程相同。因此,该系统实际上只携带一条信息,即第一个方程。这就是为什么你可以将解范围缩小到一条线的原因。因此,第二个系统的秩定义为1
,最后第三个系统有两个方程。但是它们不携带任何信息,系统携带0
条信息,其秩定义为0
。现在来定义矩阵的秩,而矩阵的秩被定义为相应方程组的秩。因此,与第一个系统对应的矩阵秩为2
。第二个系统对应的矩阵秩为1
,第三个系统对应的矩阵秩为0
。现在,矩阵的秩与其解空间之间存在一种特殊的关系。
回想一下,当常数为零时,每个矩阵的解空间是方程组的解集。首先回想一下解只有0
,因为一个点的维度为0
。对于第二个解,一组解是某条线,一条线的维度为1
。解空间的维度为1
。对于第三个来说,每个2
。请注意,第一个矩阵是非奇异矩阵,另外两个矩阵是奇异矩阵。当且仅当矩阵具有满等级,即秩等于行数时,矩阵才是非奇异的。这等于说,如果一个方程组携带的信息与其所拥有的方程一样多,则方程组是非奇异的,因此,第一个解空间的维度为0
,因此秩为2
,而第二个的解空间为维度1
,因此秩为1
。第一个矩阵是非奇异矩阵, 第二个矩阵是奇异矩阵。
行阶梯形形式
行阶梯形形式:这为您提供了有关矩阵的大量信息,并且可以通过简单的行运算获得。如下图所示,这三个矩阵的行阶梯形形式是右边的。为了计算这个矩阵的行阶梯形形式,其中矩阵包含元素5、1、4
和-3
,您需要执行以下操作。想法是去掉左下角的4
。首先将每一行除以最左边的非零系数,得到包含元素1、0.2、1
和-0.75
的矩阵。现在,为了删除左下角的4
,保持第一行不变,但从第二行中减去第一行,得到包含0
和-0.95
项的行。我们成功地让左下角得到了一个零,这正是我们想要的。现在,作为最后一步,用第二行除以最左边的非零系数,以便在右下角得到一个1
。现在矩阵是行阶梯形形式。如果你对奇异矩阵执行此操作会怎样?如果你尝试对包含5、1、10
和2
项的矩阵执行此操作,让我们看看会发生什么。第一步是将每行除以最左边的系数,这样你就会得到包含1、0.2、1
和0.2
项的矩阵。现在,为了消除左下角的那个1
,你可以做的是取底行,减去顶行,得到的是0,0
。这是新的底行。现在让我们看看第二行除以最左边的非零系数时会发生什么。这是不可能的,因为你会用0
除以0
,这是未定义的。你要做的是让这个成为行阶梯形形式。最后,对于非奇异的矩阵元素0、0、0,0
你能做的不多,因为你不能用最左边的系数除每一行,那些系数是零。相反,你只能说这是行阶梯形形式。总之,这是矩阵,这是行阶梯形形式。这是一个与秩非常有趣的联系。看第一个。它的对角线上有两个 1
,它的秩是2
。下一个在对角线上有1、1
,它的秩是1
。第三个在对角线上有零个1
,它的秩是0
。这实际上就是联系。矩阵的秩是行阶梯形形式对角线上1
的数量。这是一种计算秩的简单方法。此外,请注意,第一个是非奇异的,第二个是奇异的,第三个是奇异的。当且仅当行阶梯形形式只有1
而没有0
时,矩阵才是非奇异的。
现在你已经了解了a、b
和c
,第二个方程只有变量b
和c
,第三个方程只有变量c
。可以在与系统相对应的矩阵中执行完全相同的行操作,以获得右侧的矩阵,现在对角线上有1
,对角线下方有0
。这是矩阵的行阶梯形式。
这是行阶梯形式矩阵的一般形式,这里有两个不同的例子。在这里,星号代表数字,可以是零也可以是非零,这并不重要。矩阵可能有也可能没有全是零的行。但是,如果有,它们需要放在底部。此外,请注意,每个非零行都有一个最左边的非零项。这些被称为枢轴。每一行都有一个特定的主元,并且有一个关于主元的规则,即每个主元都必须严格位于上一行主元的右侧。换句话说,如果你站在一个主元处并查看上面的所有主元,它们都必须严格位于其左侧。现在,正如你之前所见,行阶梯形式对于矩阵的秩非常有用。它实际上是主元的数量。左侧矩阵的秩为5
,右侧矩阵的秩为3
。在左侧,你看到一个行阶梯形式矩阵。现在你可以做一些修饰,将第一行除以三,将第二行除以一,或者它们的含义相同,将第三行除以-4
,得到一个如下图所示的矩阵。显然,星号现在是不同的值,但重要的是,枢轴现在是1
,并且它们位于相同的位置,因为除以1
会将零变成非零,或将非零变成零。一般来说,允许使用不同于1
的枢轴。我们将采取额外的步骤,除以枢轴中的首项,以使枢轴为1
。这在秩方面没有数学差异。它是相同的秩,并且与我们通过除以首项系数来求解方程组的方式更一致。
简化的行阶梯形式,这只是一个步骤。假设您正在解决这个系统1、0.2
和1
。最后,再进行一些操作,我们将得到度量,对角线上为1
,其他地方为0
。为什么这是与上述系统相对应的矩阵?因为你可以把方程组1001
个元素的矩阵。回想一下,中间矩阵称为行阶梯形式。最后一个称为简化行阶梯形式,是与求解系统相对应的形式。从行梯形矩阵到简化行梯形形式的方法很简单,就是使用对角线中的每个元素来消除上方所有非零元素。例如,在这里你想去掉右上角那个讨厌的0.2
。在这种情况下,你可以保持底行不变,从第一行中减去第二行的0.2
,这样你就得到了0
,从第一行中减去0.2
得到第[1,0]
行,这就是你的新行,矩阵的一行,这就是简化行阶梯形式。所简化的行梯形矩阵通常看起来是这样的。
这里有两个例子。第一条规则是它必须是行梯形。此外,每个主元必须是1
,主元上方的任何数字都必须是0
,这是主要区别。它与行梯形属性相同,即矩阵的秩实际上是主元的数量。左边的这个矩阵的秩为5
,右边的矩阵的秩为3
。这是从行梯形矩阵转换为简化行梯形矩阵的一般方法。假设你有一个矩阵,这些是主元,它们可以不是1
,第一个1
乘以3
,第二个1
乘以2
,第三个1
减4
,得到右边这个主元为1
的矩阵。现在,得到简化行梯形矩阵,你所要做的就是用每一个1
清除它上面的任何数字。例如,如果在1
上面有一个5
,你所要做的就是将1
所在行乘以5
,然后从前一个数字中减去1
。这里有一个小例子。假设这是矩阵的行梯形矩阵,我们要把它变成简化行梯形矩阵。首先要去掉第一行中的2
,为此我们可以从第一行中减去第二行的2
来去掉它,这会改变一些数字,但至少会把它变成零。现在,我们去掉负5
,将第三行乘以5
并将其添加到第一行,这样就去掉了-5
。现在要去掉那个4
,将第三行乘以4
并从第一行中减去。乘以4
,再从第一行中减去,这样就得到了矩阵的简化行阶梯形式。
高斯消除算法
如下图所示,假设有以下方程组:
回想一下,当你了解矩阵的奇异性时,你会忽略方程右侧的常数值。这些方程的常数为:0
。
Step |
Description |
Computing Graph |
---|---|---|
步骤一 | 首先,根据方程组的系数创建一个矩阵。矩阵的右侧添加一列,该列包含常数值:1、-2、-1 ,称为增广矩阵,这里可以用增广矩阵来求解方程组。回想一下,为了完成消元法,您需要在矩阵的对角线上反复找到一个称为枢轴的元素。 |
|
步骤二 | 首先,您需要将第一行的枢轴变为1 。由于枢轴当前为2 ,因此将行乘以1 ,并且行中的其他每个值也除以2 。将 |
|
步骤三 | 接下来您要使用行运算将主元以下的所有值设置为0 。我将从第2 行中的2 开始。主元是1 ,您要取消的值是2 。如果从第2 行中减去2 倍第1 行,您将得到主元下方的0 。完成此行运算后,您将得到一个新的行:0、3、3、-3 ,然后使用它来更新第2 行。 |
|
步骤四 | 同样,由于枢轴是1 ,因此选择行操作。您只需从第3 行中减去第1 行的4 倍即可抵消枢轴。完成此行操作将为第3 行生成一组新的值。 |
|
步骤五 | 第一列是1 ,后面跟着两个0 。您可以继续处理第二列和第二个基准点。沿对角线移动,新的基准点是3 。与之前一样,您需要将基准点设置为1 ,然后将基准点下方的值设置为0 。由于新的基准点是3 ,因此将行乘以1/3 即可将基准点设置为1。再次,更新方程组以匹配矩阵中的新值。 |
|
步骤六 | 现在你需要将第三行的第二个元素变为0 。由于你的枢轴已经是1 ,从第3行中减去第2 行的3 倍将抵消3 并得到0 。完成此操作将得到新行,即0,0,-5,0 。再次,更新方程组以匹配矩阵中的新值。 |
|
步骤七 | 将对角线上的-5 作为最终的枢轴。与之前一样,您需要将枢轴设置为1 ,因此将第三行除以-5 。因此,第3 行的最终值将是0、0、1、0 。再次更新方程组。请注意,矩阵为行阶梯形。对角线全为1 ,对角线下方只有0 。 |
|
步骤八 | 从最后一行的枢轴开始,然后取消其上方的1 。枢轴是1 ,您需要取消1 ,因此行操作将是第二行减去第三行。经过此行操作后,第二行的新值将为0、1、0、-1 。 |
|
步骤九 | 接下来,在第一行中取消1/2、0、1/2 。现在,你将得到以下矩阵,其中包含更新后的方程组 |
|
步骤十 | 最后重复该过程,在这种情况下,您将第2 行的1 行。您就完成了这个矩阵。请注意,其对角线上全为1 ,而其他所有位置上全为0 。再次更新方程组以表示矩阵,得到了方程的解,其中 |
请注意,增广矩阵的平方部分在对角线上只有1。这样的矩阵称为单位矩阵,通过使用高斯消元法将矩阵简化为这种形式,您就解了原始方程组。现在让我们讨论奇异情况。如果矩阵是奇异的,高斯消元法会起作用吗?您已经知道,如果矩阵是奇异的,那么在简化行阶梯形式中,您将得到一行全为0。高斯消元法的整个目的是找到方程组的解。但是,如果你找到一行0,你就知道你的矩阵是奇异的,没有解。也就是说,你仍然可以确定你的矩阵是矛盾的,没有解,还是有无数个解。
要做到这一点,你只需要查看常数列。如果零行中的常数值也是0
,则该行只是表示:0
,这个等式就是正确的。所以这个系统有无数个解。
如果方程组稍有变化,如下图所示,第三个方程等于10
,结果会怎样?在行减少之后,您将得到以下矩阵,其中第三行中的常数值变为4
。现在最后一行表示:0
,但右边等于4
。这意味着系统没有解。
回顾一下,如果你在行轴形式中找到一整行0
,并且该行中的常数为0
,则系统有无穷多个解。但是,如果该常数不为0
,则系统没有解。高斯消元法的回顾,首先,通过将常数添加到右侧的新列来创建增广矩阵。接下来,获取简化行阶梯形式的矩阵。最后,完成回代以找到右侧的值。完成回代以找到变量的值。
向量代数
在很多情况下,特征和目标之间的关系是非线性的。神经网络是用于表示非线性的强大的机器学习模型之一。神经网络最令人惊奇的一点是,在底层,它们实际上只是一大堆线性模型。你可能见过像这样表示的神经网络,它们有垂直方向的层,即神经元,它们都通过这样的线连接起来。你可以这样想这个图所表示的内容:左边的这一层代表你对网络的输入,也就是你的特征。1
表示您位于顶部的第一个神经元中,同样,向下移动也是如此。当然,您通过每个神经元传递的1
,以表示这些操作发生在网络的第一层。这是因为接下来发生的事情是将这些1
现在是包含前一层的所有a
向量的矩阵,即2
,以指示它们属于第二层。然后,当您向前传播通过网络的每一层时,所有这些都会重复,将前一层的输出乘以一组权重,添加偏差项,并应用激活函数,直到获得最终输出。您无需写下无数个小线性方程来表示神经网络,而是将每层的输入和输出表示为向量、矩阵和张量进行操作,并计算您的机器学习结果。
向量及其特性
向量是只有一列的数组。事实证明,向量可以看作是平面或高维空间中的箭头。向量的两个非常重要的组成部分是大小和方向。向量只是一个元组。它可以有(4, 3)
的向量位于平面中,并且正是指向水平坐标为4
和垂直坐标为3
的点的箭头。您可以在更高维度的空间中拥有向量。例如,在3D
中,坐标为(4, 3, 1)
的向量位于空间中,并且是指向相对于x、y
和z
轴的坐标(4, 3, 1)
的点的箭头。
有许多表示向量的符号,让我们展示一个为
让我们使用该向量符号将L1
和L2
范数的定义推广到具有n
个总分量的任何向量。一般而言,L1
范数是所有分量绝对值的总和。L2
范数是向量所有平方分量总和的平方根。
Operator操作
就像数字可以相加或相减得到其他数字一样,向量也可以相加或相减得到其他向量。这可以通过非常自然的方式完成。如果你想要添加两个向量,例如向量(4, 1)
,向量(1, 3)
,你只需将坐标相加即可得到坐标为(5, 4)
的向量。这是一个很好的几何解释。恰好是向量
向量(1, 3)
和(4, 1)
之间的差值也按分量取为(3, -2)
。也就是说,这个向量看起来并没有什么特别之处,除非你平移它,它与通过连接点(1, 3)
和(4, 1)
获得的向量精确匹配。这是向量和与差的一般定义。
假设有两个向量
例如,向量(1, 5)
与向量(6, 2)
有多大差异?一种判断方法是通过它们差异的L1
范数。这是分量绝对值的总和(8
)。另一种判断方法是通过它们差异的L2
范数。
在机器学习中,了解向量之间的距离非常有用,因为很多时候你想计算数据点之间的不同相似性,而这些度量非常有用。您可以在向量中执行的另一个非常有用且简单的操作是将它们乘以标量。例如,如果向量为(1, 2)
,并且您想将其乘以标量3
以获得向量(3, 6)
。从图形上讲,意味着将向量(1, 2)
拉伸3
倍。
如果标量为负怎么办?这里发生的情况是,向量再次被拉伸,但也会反射原点。例如,如果向量再次为(1, 2)
且标量(-2, -4)
。这也符合预期,与逐项乘积相对应。
再次考虑一个