在机器学习的世界里,数学不仅是一个工具,更是构建模型和做出战略决策的基石。对于想要在数据科学和人工智能领域发展职业生涯的人来说,掌握数学概念并将其应用于未来的工作中至关重要。
机器学习的核心在于数学,它帮助创建能够从提供的数据中学习的机器学习算法,形成准确的预测。这些预测可能简单到从一组图像中分类猫和狗,或者复杂到根据过去的购买记录推荐客户可能感兴趣的产品。深入理解机器学习算法背后的数学原理,将帮助选择适合数据科学和机器学习项目的合适算法。
一旦理解了为什么使用数学,会发现它更有趣。这将帮助理解为什么选择一个机器学习算法而不是另一个,以及它如何影响机器学习模型的性能。
作为数据科学专业人士,拥有可视化数据的能力是最有用的技能之一,而扎实的线性代数基础使这一点成为可能。如果能够将一些概念和算法可视化为向量和矩阵,而不是将数据视为数字列表和数组,那么这些概念和算法将更容易理解。
线性代数是数据科学和机器学习的强大后盾。在使用库(如R或Python)训练机器学习模型时,幕后发生的事情大多是矩阵操作。当今最受欢迎的深度学习库TensorFlow本质上是一个优化的(即快速可靠的)矩阵操作库。Python机器学习库scikit-learn也是如此。
向量是一个既有大小又有方向的对象。向量通常以两种方式表示——作为有序列表,例如x = [x1, x2, ..., xn]
,或者使用“帽子”符号,例如x = x1^i + x2^j + x3^k
,其中^i, ^j, ^k
代表三个垂直方向(或轴)。
向量中元素的数量是向量的维度。例如,x = [x1, x2]
是二维(2-D)向量,x = [x1, x2, x3]
是三维(3-D)向量,以此类推。向量的大小是从原点到其尖端的距离。对于一个n维向量x = [x1, x2, ..., xn]
,其大小由sqrt(x1^2 + x2^2 + ... + xn^2)
给出。
单位向量是距离原点正好1单位的向量。例如,向量[1, 0]
和[0, 1]
是单位向量。
1. 向量加法/减法:两个向量的元素对应相加/相减。数学上表示为x + y = [x1+y1, x2+y2, ..., xn+yn]
。
2. 标量乘法/除法:向量的元素对应乘以/除以标量值。数学上表示为c * x = [cx1, cx2, ..., cxn]
。
3. 向量乘法或点积:两个向量的元素对应相乘。也称为两个向量的点积。两个向量的点积返回一个标量量。数学上表示为x · y = x1*y1 + x2*y2 + ... + xn*yn
。几何上,点积可以表示为||x|| * ||y|| * cos(θ)
,其中θ是两个向量之间的夹角。两个垂直向量的点积为0。点积可以用来计算两个向量之间的夹角,公式为cos(θ) = (x · y) / (||x|| * ||y||)
。这个点积的简单性质在数据科学应用中被广泛使用。
基向量:向量空间V的一个基向量定义为向量空间V的一个子集(v1, v2, ..., vn),它们是线性独立的并且张成向量空间V。因此,如果(v1, v2, ..., vn)是向量空间V中的向量列表,那么这些向量形成向量基,当且仅当向量空间V中的每个v都可以唯一地表示为v = c1*v1 + c2*v2 + ... + cn*vn
。
张成:两个或更多向量的张成是通过改变标量并加和它们所能得到的向量集合。
线性组合:两个向量的线性组合是缩放向量的和。
线性相关:如果一组向量中的任何一个或多个向量可以表示为其他向量的线性组合,那么这组向量被称为线性相关。
线性独立:如果一组向量中的任何一个向量都不能表示为其他向量的线性组合,那么这些向量被称为线性独立。
矩阵是用于执行数值计算的经过时间考验的强大数据结构。简而言之,矩阵是按行和列存储的值集合,即:
行:行是水平的。矩阵A有m行。每一行本身是一个向量,因此它们也被称为行向量。
列:列是垂直的。矩阵A有n列。每一列本身是一个向量,因此它们也被称为列向量。
元素:元素是矩阵中的单个值。对于给定的矩阵A,第i行第j列的值表示为A_ij。
维度:行和列的数量。对于m行和n列,维度是(m × n)。
方阵:行数等于列数的矩阵,即m = n。
对角矩阵:对角线上的元素以外的所有元素都是零的方阵,即A_ij = 0(i ≠ j)。
单位矩阵:对角线上的所有元素都是1的对角矩阵,即A_ij = 1(i = j)。
矩阵加法/减法:两个矩阵的元素对应相加/相减。数学上表示为A + B = [A_ij + B_ij]
。
矩阵乘法/除法:矩阵的元素对应乘以/除以标量值。数学上表示为c * A = [c * A_ij]
。
矩阵乘法或点积:两个矩阵的元素对应相乘。即输出矩阵的第(i,j)元素是第一个矩阵的第i行和第二个矩阵的第j列的点积。数学上表示为(AB)_ij = A_i * B_j
。
并非所有的矩阵都可以相互乘。对于矩阵乘法AB要有效,A的列数必须等于B的行数。即对于两个维度为(m × n)和(o × p)的矩阵A和B,AB存在当且仅当m = p,BA存在当且仅当o = n。矩阵乘法不是交换的,即AB ≠ BA。
矩阵逆:矩阵A的逆是一个矩阵,使得AA^-1 = I(单位矩阵)。
矩阵转置:矩阵的转置产生一个行和列互换的矩阵。数学上表示为A^T_ij = A_ji
。
任何变换都可以几何地可视化为n维空间的扭曲(它可以是压缩、拉伸、旋转等)。空间的扭曲可以被可视化为构成坐标系的网格线的扭曲。空间可以以几种不同的方式扭曲。然而,线性变换是一种特殊的扭曲,具有两个独特的属性:
直线保持直线并且彼此平行
原点保持固定
考虑一个线性变换,其中原始基向量移动到新的点(其中i和j分别是坐标系统中沿x方向和y方向的单位向量)。这意味着i从(1,0)移动到(1,-2),j从(0,1)移动到(3,0)在线性变换中。这个变换简单地在y方向上拉伸空间三个单位,同时在x方向上拉伸空间两个单位,并且顺时针旋转60度。可以将i和j落地的两个向量结合起来,写成一个单一的矩阵,即:
如所见,这些向量构成了矩阵的一列(因此通常被称为列向量)。这个矩阵完全表示了线性变换。现在,如果一个人想要找到任何给定向量v在这种变换后会落在哪里,只需要将向量v与矩阵L相乘,即v_new = L.v。将这个矩阵视为描述变换的函数是方便的,即它以原始向量v作为输入,并返回新向量v_new。以下图形表示线性变换。
正式地,如果一个变换满足以下两个属性,那么它是线性的: