当前位置: 首页 > news >正文

【机器学习】机器学习中用到的高等数学知识-1.线性代数 (Linear Algebra)

  • 向量(Vector)和矩阵(Matrix):用于表示数据集(Dataset)和特征(Feature)。
  • 矩阵运算:加法、乘法和逆矩阵(Inverse Matrix)等,用于计算模型参数。
  • 特征值(Eigenvalues)和特征向量(Eigenvectors):用于降维(dimensionality reduction)(如主成分分析 PCA(Principal Component Analysis))和理解数据结构。
  • 奇异值分解 (SVD):用于数据降维和矩阵近似。

向量和矩阵

向量

向量是线性代数中的一个基本概念,它是具有大小和方向的数学对象。向量在物理学、工程学、计算机科学和许多其他领域中都有广泛的应用。以下是向量的基本概念、性质和应用。

1. 向量的定义

向量可以用有序的数值集合来表示,通常写作 \mathbf{v}\vec{v}。在 n-维空间中,一个向量可以表示为:

\mathbf{v} = \begin{pmatrix} v_1 \\ v_2 \\ \vdots \\ v_n \end{pmatrix}

这里,v_1, v_2, \ldots, v_n​ 是向量的分量。

2. 向量的类型

向量可以根据其特征进行分类:

      位置向量的用途
         表示点的位置
:可以用位置向量确定一个点在空间中的具体位置。
         计算点间距离:两个点的距离可以通过它们的相对位置向量计算,例如 \|\mathbf{OP}_1 - \mathbf{OP}_2\|
         空间变换:位置向量可以用于描述平移、旋转等空间操作。

      示例
         若点 A 的坐标为 (3, 4),则其位置向量为:

                                                           \mathbf{OA} = \begin{bmatrix} 3 \\ 4 \end{bmatrix}

         若点 B 在三维空间中的坐标为 (1, -2, 5),则其位置向量为:

                                                        \mathbf{OB} = \begin{bmatrix} 1 \\ -2 \\ 5 \end{bmatrix}                                                    

       位置向量的使用使得我们可以将几何问题转化为向量运算,使得计算更为简洁和直观。

  • 零向量:是向量空间中的特殊向量,它的所有分量都为零。零向量通常用符号 \mathbf{0} 表示,在任意维度的向量空间中都存在。例如:
     

    在二维空间中,零向量为:

    \mathbf{0} = \begin{bmatrix} 0 \\ 0 \end{bmatrix}

    n-维空间中,零向量为:

    \mathbf{0} = \begin{bmatrix} 0 \\ 0 \\ \vdots \\ 0 \end{bmatrix}
    零向量的特点是无方向、无长度,它在向量加法中是单位元,添加到任何向量上都不会改变其值。
  • 单位向量:模(长度)为 1 的向量,通常用于表示方向,单位向量的符号通常为 \hat{i}, \hat{j}​, \hat{k} 或加上帽子符号的其它向量符号。下面是一些常见的单位向量示例:
     

    二维空间中的单位向量:
        沿 x-轴方向的单位向量:
                                                         \hat{i} = \begin{bmatrix} 1 \\ 0 \end{bmatrix}
        沿 y-轴方向的单位向量:
                                                        \hat{j} = \begin{bmatrix} 0 \\ 1 \end{bmatrix}
    三维空间中的单位向量
        沿 x-轴方向的单位向量:
                                                        \hat{i} = \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix}
        沿 y-轴方向的单位向量:
                                                        \hat{j} = \begin{bmatrix} 0 \\ 1 \\ 0 \end{bmatrix}
        沿 z-轴方向的单位向量:
                                                        \hat{k} = \begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix}

    任意向量的单位化: 对于任意非零向量 \mathbf{v},可以通过将它除以其模长 \|\mathbf{v}\| 来获得单位向量:

                                                       \hat{\mathbf{v}} = \frac{\mathbf{v}}{\|\mathbf{v}\|}

    例如,如果 \mathbf{v} = \begin{bmatrix} 3 \\ 4 \end{bmatrix},则它的模长为 5,单位向量为:

                                         ​​​  \hat{\mathbf{v}} = \frac{1}{5} \begin{bmatrix} 3 \\ 4 \end{bmatrix} = \begin{bmatrix} 0.6 \\ 0.8 \end{bmatrix}

    单位向量在多种计算中都很有用,尤其是表示方向,而不关注大小。

  • 位置向量(Position Vector):表示空间中一个点的位置的向量,它通常从坐标系的原点 O 指向该点 P,可以表示点的相对位置。位置向量是非常有用的工具,尤其在几何、物理学和工程中,用于描述物体的位置。
     

    位置向量的定义

    在二维和三维空间中,位置向量常以从原点到目标点的矢量形式表示。若点 P 的坐标为 (x, y)(x, y, z),则位置向量 \mathbf{OP} 为:

        二维空间中的位置向量: 若 P = (x, y),则位置向量为:

                                                       \mathbf{OP} = \begin{bmatrix} x \\ y \end{bmatrix}

        三维空间中的位置向量: 若 P = (x, y, z),则位置向量为:

                                                       \mathbf{OP} = \begin{bmatrix} x \\ y \\ z \end{bmatrix}

3. 向量的运算

向量之间可以进行多种运算,包括:

  • 向量加法:将两个相同维数的向量相加,对应分量相加。

    \mathbf{u} + \mathbf{v} = \begin{pmatrix} u_1 + v_1 \\ u_2 + v_2 \\ \vdots \\ u_n + v_n \end{pmatrix}
  • 向量减法:将两个相同维数的向量相减,对应分量相减。

    \mathbf{u} - \mathbf{v} = \begin{pmatrix} u_1 - v_1 \\ u_2 - v_2 \\ \vdots \\ u_n - v_n \end{pmatrix}
  • 数乘:将向量的每个分量乘以一个标量 k

    \mathbf{v} = \begin{pmatrix} kv_1 \\ kv_2 \\ \vdots \\ kv_n \end{pmatrix}

4. 向量的性质

向量具有以下重要性质:

  • 模(长度):向量的模可以通过以下公式计算:

    |\mathbf{v}| = \sqrt{v_1^2 + v_2^2 + \cdots + v_n^2}
  • 点积(内积):两个向量的点积是一个标量,计算方式如下:

    \mathbf{u} \cdot \mathbf{v} = u_1v_1 + u_2v_2 + \cdots + u_nv_n

    点积的结果可以用来判断两个向量的夹角关系,若 \mathbf{u} \cdot \mathbf{v} = 0,则两者正交。

  • 叉积(外积):仅在三维空间中定义,返回一个向量,计算方式为:

    \mathbf{u} \times \mathbf{v} = \begin{pmatrix} u_2v_3 - u_3v_2 \\ u_3v_1 - u_1v_3 \\ u_1v_2 - u_2v_1 \end{pmatrix}

    叉积的结果与两个向量均垂直,其大小等于两个向量夹角的正弦值乘以它们的模。

5. 向量的应用

向量在许多领域中有广泛的应用,包括:

  • 物理学:描述力、速度、加速度等物理量。
  • 工程学:在设计和分析中使用向量表示物体的位置和方向。
  • 计算机图形学:用于表示图形、模型和运动。
  • 机器学习:用于表示数据点和特征,进行分类和聚类。

6. 结论

向量是描述空间中大小和方向的基本工具,理解向量的性质和运算对于学习线性代数、物理学和工程学等领域至关重要。掌握向量的概念和应用能够为解决实际问题提供强有力的支持。


矩阵

矩阵是线性代数中的基本概念之一,它是一个按照矩形阵列排列的数值集合,通常用来表示线性方程组、线性变换、图像处理和其他许多数学和工程问题。以下是矩阵的基本概念、性质及应用。

1. 矩阵的定义

一个矩阵是由 m 行和 n 列的元素(通常是数字)组成的二维数组。矩阵通常用大写字母表示,例如 A,其形式为:

A = \begin{pmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{pmatrix}

这里,a_{ij}​ 是第 i 行第 j 列的元素。

2. 矩阵的类型

矩阵根据其特征可以分为几种类型:

  • 行矩阵:只有一行的矩阵。
  • 列矩阵:只有一列的矩阵。
  • 方阵:行数与列数相同的矩阵(例如 n \times n 矩阵)。
  • 零矩阵:所有元素均为零的矩阵。
  • 单位矩阵:对角线元素为 1,其他元素为 0 的方阵。

3. 矩阵的运算

矩阵之间可以进行多种运算,包括:

  • 加法:两个相同维数的矩阵可以相加,对应元素相加。

    C = A + B \Rightarrow c_{ij} = a_{ij} + b_{ij}
  • 减法:两个相同维数的矩阵可以相减,对应元素相减。

    C = A - B \Rightarrow c_{ij} = a_{ij} - b_{ij}
  • 数乘:矩阵中的每个元素都可以乘以一个标量 k

    B = kA \Rightarrow b_{ij} = k \cdot a_{ij}
  • 矩阵乘法:两个矩阵相乘,只有当第一个矩阵的列数等于第二个矩阵的行数时才能进行。设 Am \times n 矩阵,Bn \times p 矩阵,结果矩阵 C 将是 m \times p 矩阵。

    C = AB \Rightarrow c_{ij} = \sum_{k=1}^{n} a_{ik} b_{kj}

4. 矩阵的性质

矩阵有许多重要的性质,包括:

  • 转置矩阵:将矩阵的行和列互换,记作 A^T

    (A^T)_{ij} = a_{ji}
  • :方阵的对角线元素之和,记作 \text{tr}(A)

  • 行列式:方阵的一个标量值,反映了该矩阵的特性(如是否可逆),记作 |A|\det(A)

  • 逆矩阵:若矩阵 A 是可逆的,则存在一个矩阵 A^{-1},使得 AA^{-1} = A^{-1}A = I(单位矩阵)。

5. 矩阵的应用

矩阵在许多领域中有广泛的应用,包括:

  • 线性方程组:可以用矩阵表示和求解线性方程组。
  • 图形变换:在计算机图形学中,矩阵用于进行旋转、缩放和平移等变换。
  • 数据分析:在机器学习和统计学中,矩阵用于表示数据集和执行各种运算。
  • 网络分析:在图论中,邻接矩阵和权重矩阵用于表示网络结构。

6. 结论

矩阵是线性代数的核心工具,提供了一种有效的方式来表示和处理线性关系。掌握矩阵的基本概念、运算和性质对学习更高级的数学和应用至关重要。


矩阵运算

矩阵运算是线性代数的重要组成部分,广泛应用于计算机科学、物理学、统计学和机器学习等领域。主要的矩阵运算包括加法、减法、数乘、矩阵乘法、转置、求逆、以及行列式计算。以下是这些运算的简要概述和应用。

1. 矩阵加法和减法

  • 加法:两个矩阵相加,需要它们的维度相同。对应元素相加形成新的矩阵。

    例如,对于矩阵 A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}B = \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix},它们的和为:

    A + B = \begin{bmatrix} 1+5 & 2+6 \\ 3+7 & 4+8 \end{bmatrix} = \begin{bmatrix} 6 & 8 \\ 10 & 12 \end{bmatrix}
  • 减法:与加法类似,减法要求矩阵维度相同,对应元素相减。

2. 数乘(标量乘法)

一个矩阵的每个元素都与同一个标量(数值)相乘,称为数乘。若有矩阵 A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix},标量 c = 3,则:

cA = 3 \times \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} = \begin{bmatrix} 3 & 6 \\ 9 & 12 \end{bmatrix}

3. 矩阵乘法

矩阵乘法需要左矩阵的列数等于右矩阵的行数,得到一个新的矩阵。假设 Am \times n 矩阵,Bn \times p 矩阵,则 ABm \times p 矩阵,计算方式如下:

(AB)_{ij} = \sum_{k=1}^{n} A_{ik} B_{kj}

例如:

A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, \quad B = \begin{bmatrix} 2 & 0 \\ 1 & 2 \end{bmatrix}

AB = \begin{bmatrix} 1\cdot2 + 2\cdot1 & 1\cdot0 + 2\cdot2 \\ 3\cdot2 + 4\cdot1 & 3\cdot0 + 4\cdot2 \end{bmatrix} = \begin{bmatrix} 4 & 4 \\ 10 & 8 \end{bmatrix}

4. 矩阵转置

矩阵转置是将矩阵的行与列互换。对于 A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix},其转置 A^T 为:

A^T = \begin{bmatrix} 1 & 3 \\ 2 & 4 \end{bmatrix}

5. 矩阵求逆

对于方阵 A,如果存在一个矩阵 A^{-1} 使得 AA^{-1} = A^{-1}A = I(单位矩阵),则 A^{-1} 称为 A 的逆矩阵。矩阵求逆仅适用于方阵,且非所有方阵都有逆(只有行列式不为零的矩阵才有逆)。

6. 行列式

行列式是方阵的一个标量值,记为 \det(A),可以用于判断矩阵是否可逆(行列式不为零时矩阵可逆)。例如,对于 A = \begin{bmatrix} a & b \\ c & d \end{bmatrix},行列式 \det(A) = ad - bc

3x3 矩阵的行列式: 对于一个 3 \times 3 的矩阵 A = \begin{bmatrix} a & b & c \\ d & e & f \\ g & h & i \end{bmatrix},行列式为:

\text{det}(A) = a \cdot \text{det}\begin{bmatrix} e & f \\ h & i \end{bmatrix} - b \cdot \text{det}\begin{bmatrix} d & f \\ g & i \end{bmatrix} + c \cdot \text{det}\begin{bmatrix} d & e \\ g & h \end{bmatrix}

这就是通过展开法计算行列式。

Python 示例

使用 NumPy 库可以简便地实现这些矩阵运算:

import numpy as np# 创建矩阵
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = np.array([[2, 0], [1, 2]])# 矩阵加法
print("A + B =\n", A + B)# 矩阵减法
print("A - B =\n", A - B)# 数乘
print("3 * A =\n", 3 * A)# 矩阵乘法
print("A * C =\n", np.dot(A, C))# 矩阵转置
print("A^T =\n", A.T)# 矩阵求逆
try:A_inv = np.linalg.inv(A)print("A inverse =\n", A_inv)
except np.linalg.LinAlgError:print("A is not invertible")# 行列式
det_A = np.linalg.det(A)
print("det(A) =", det_A)

应用

矩阵运算在机器学习、数据科学、图像处理、物理模拟等领域极其重要,尤其在神经网络和线性回归等算法中被广泛应用。


特征值和特征向量

特征值和特征向量是线性代数中重要的概念,在许多科学与工程应用(例如数据降维、图像处理、推荐系统、自然语言处理等)中扮演关键角色。了解特征值和特征向量有助于理解数据中的模式,识别重要的方向和特征。

什么是特征值和特征向量?

假设有一个 n \times n 方阵 A,如果存在一个向量 \mathbf{v} 和一个标量 \lambda,使得:

\mathbf{v} = \lambda \mathbf{v}

那么 \mathbf{v} 就是矩阵 A 的特征向量,\lambda 就是对应的特征值。

解读:
  • 特征向量:在矩阵作用下保持方向不变的向量。
  • 特征值:是标量,表示在矩阵作用下特征向量的拉伸或缩放因子。

如何求特征值和特征向量?

  1. 特征值的求解:特征值的求解基于以下特征方程:

    \det(A - \lambda I) = 0

    其中 I是单位矩阵。通过解这个多项式方程,我们可以找到所有可能的特征值 \lambda

  2. 特征向量的求解:在找到特征值 \lambda 后,代入 \mathbf{v} = \lambda \mathbf{v} 并解线性方程组,可以找到对应的特征向量 \mathbf{v}

示例

假设有矩阵 A

A = \begin{bmatrix} 4 & 1 \\ 2 & 3 \end{bmatrix}

  1. 计算特征值:

    \det \begin{bmatrix} 4 - \lambda & 1 \\ 2 & 3 - \lambda \end{bmatrix} = 0

    展开行列式并解方程,得到特征值。

  2. 代入特征值解出特征向量。

矩阵的特征方程求解步骤如下:

步骤 1:定义矩阵和特征值

设有一个 n \times n 的方阵 A,其特征值定义为满足方程:

A \mathbf{x} = \lambda \mathbf{x}

其中,\mathbf{x} 是特征向量,\lambda 是特征值。

步骤 2:构造特征方程

将方程 A \mathbf{x} = \lambda \mathbf{x} 改写为:

A \mathbf{x} - \lambda \mathbf{x} = 0

这可以进一步表示为:

(A - \lambda I) \mathbf{x} = 0

其中,I 是单位矩阵,\lambda 是特征值。

为了有非零解 \mathbf{x},必须有:

\text{det}(A - \lambda I) = 0

这是特征方程。

步骤 3:展开行列式

计算 \text{det}(A - \lambda I),这是一个关于 \lambda 的多项式。对于 n \times n 的矩阵,展开行列式得到一个 n 次多项式:

\text{det}(A - \lambda I) = p(\lambda)

其中,p(\lambda) 是关于 \lambda 的特征方程。这个多项式的根就是矩阵 A 的特征值。

步骤 4:求解特征值

解方程 p(\lambda) = 0,得到特征值 \lambda_1, \lambda_2, \dots, \lambda_n​。

举个例子

考虑一个 2 \times 2 的矩阵:

\begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix}

构造特征方程:

A - \lambda I = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} - \lambda \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} = \begin{pmatrix} 1 - \lambda & 2 \\ 3 & 4 - \lambda \end{pmatrix}

求行列式:

\text{det}(A - \lambda I) = \text{det} \begin{pmatrix} 1 - \lambda & 2 \\ 3 & 4 - \lambda \end{pmatrix} = (1 - \lambda)(4 - \lambda) - 2 \times 3= (1 - \lambda)(4 - \lambda) - 6 = \lambda^2 - 5\lambda - 2

解方程:

\lambda^2 - 5\lambda - 2 = 0

使用求根公式:

\lambda = \frac{-(-5) \pm \sqrt{(-5)^2 - 4(1)(-2)}}{2(1)} = \frac{5 \pm \sqrt{25 + 8}}{2} = \frac{5 \pm \sqrt{33}}{2}

因此,特征值为:

\lambda_1 = \frac{5 + \sqrt{33}}{2}, \quad \lambda_2 = \frac{5 - \sqrt{33}}{2}

这是矩阵 A 的特征值计算过程。
 

使用求根公式来解二次方程的过程是基于二次方程的标准形式和求解方法。二次方程的标准形式为:

ax^2 + bx + c = 0

其中,a、b、c 是常数,且 a ≠ 0。

求根公式的推导

二次方程的求根公式是通过配方或者使用判别式来得到的。具体步骤如下:

步骤 1:标准化二次方程

首先将二次方程写成标准形式:

ax^2 + bx + c = 0

然后,除以 a(假设 a \neq 0):

x^2 + \frac{b}{a}x + \frac{c}{a} = 0

步骤 2:完成平方式

接下来,我们需要通过配方来将方程转化为平方形式。首先,左边部分是一个完全平方式,因此我们将常数项移到右边:

x^2 + \frac{b}{a}x = -\frac{c}{a}

然后在等式两边加上 \left(\frac{b}{2a}\right)^2

\frac{b}{a}x + \left(\frac{b}{2a}\right)^2 = -\frac{c}{a} + \left(\frac{b}{2a}\right)^2

这时左边已经是一个完全平方式:

\left(x + \frac{b}{2a}\right)^2 = \frac{b^2}{4a^2} - \frac{c}{a}

简化右边:

\left(x + \frac{b}{2a}\right)^2 = \frac{b^2 - 4ac}{4a^2}

步骤 3:解出 x

对两边开平方:

x + \frac{b}{2a} = \pm \frac{\sqrt{b^2 - 4ac}}{2a}

最后,解出 x

x = -\frac{b}{2a} \pm \frac{\sqrt{b^2 - 4ac}}{2a}

这就是二次方程的求根公式:

x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}

特征值和特征向量的几何意义

特征向量指示矩阵变换作用下保持方向的“固有”方向,而特征值则表示这种“固有”方向的缩放程度。例如:

  • 数据降维:在主成分分析(PCA)中,我们选择数据协方差矩阵的特征向量(即主成分)来保留主要信息。
  • 图像压缩:在图像处理中的奇异值分解(SVD)中,我们可以通过保留矩阵的主要特征向量来减少数据维度。

Python 实现示例

以下代码使用 numpy 库来求矩阵的特征值和特征向量:

import numpy as np# 定义矩阵 A
A = np.array([[4, 1], [2, 3]])# 计算特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(A)print("特征值:", eigenvalues)
print("特征向量:\n", eigenvectors)

应用场景

  1. 主成分分析(PCA):用于数据降维和特征提取。
  2. 图像处理:特征值分解帮助从图像数据中提取信息。
  3. 稳定性分析:在物理学、工程学中,特征值可用于判断系统的稳定性(例如,控制系统的稳定性与特征值的正负相关)。
  4. 推荐系统:在矩阵分解中,特征值和特征向量帮助识别潜在的用户偏好模式。

特征值和特征向量提供了数据内在结构和变化方向的重要信息,因此在机器学习和数据分析中不可或缺。


奇异值分解 (SVD)

奇异值分解(Singular Value Decomposition, SVD)是一种在矩阵分解和数据分析中非常有用的工具,广泛应用于数据降维、噪声过滤、推荐系统、图像压缩等多个领域。

什么是奇异值分解?

对于任意一个 m \times n 的矩阵 A,可以将它分解为三个矩阵的乘积:

TA = U \Sigma V^T

其中:

  • U 是一个 m \times m 的正交矩阵,称为左奇异向量组成的矩阵。
  • \Sigma 是一个 m \times n 的对角矩阵,称为奇异值矩阵,其中的元素为非负实数,且按照降序排列。这些非零的对角元素就是矩阵 A 的奇异值。
  • V^T 是一个 n \times n 的正交矩阵,称为右奇异向量组成的矩阵。

奇异值分解的结构使得我们可以对矩阵 A 进行有效的压缩和分析。

假设我们有一个 A 矩阵:

 A = \begin{pmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{pmatrix}

步骤 1:计算 A^T AA A^T

为了计算 U\SigmaV,首先需要计算 A^T AA A^T,它们分别的特征值和特征向量会帮助我们求出奇异值和奇异向量。

  1. 计算 A^T A:

 A^T = \begin{pmatrix} 1 & 3 & 5 \\ 2 & 4 & 6 \end{pmatrix}

          然后计算:

 A^T A = \begin{pmatrix} 1 & 3 & 5 \\ 2 & 4 & 6 \end{pmatrix} \begin{pmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{pmatrix} = \begin{pmatrix} 35 & 44 \\ 44 & 56 \end{pmatrix}

  1. 计算 A A^T:

 A A^T = \begin{pmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{pmatrix} \begin{pmatrix} 1 & 3 & 5 \\ 2 & 4 & 6 \end{pmatrix} = \begin{pmatrix} 5 & 11 & 17 \\ 11 & 25 & 39 \\ 17 & 39 & 61 \end{pmatrix}​​

步骤 2:计算特征值和特征向量
  1. 计算 A^T A 的特征值和特征向量:

    • A^T A 的特征值即为矩阵 A 的奇异值的平方。
    • 特征向量对应着右奇异向量。
  2. 计算 A A^T 的特征值和特征向量:

    • A^T 的特征值也与矩阵 A 的奇异值相关。
    • 特征向量对应着左奇异向量。
步骤 3:求解奇异值和奇异向量

假设计算出的特征值和特征向量为:

  • 特征值(奇异值的平方):
    • 7.7224 和 0.2776
  • 奇异值(取平方根):
    • \sigma_1 = \sqrt{7.7224} \approx 2.78
    • \sigma_2 = \sqrt{0.2776} \approx 0.53

然后,得到右奇异向量 V 和左奇异向量 U(通过对 A^T AA A^T 的特征向量进行标准化得到)。

步骤 4:构造矩阵 U\SigmaV
  1. 左奇异向量矩阵 U: U 的列由 A A^T 的特征向量组成。假设计算出以下特征向量:

    U = \begin{pmatrix} -0.2298 & 0.8835 & 0.4082 \\ -0.5247 & 0.2406 & -0.8189 \\ -0.8189 & -0.4016 & 0.4082 \end{pmatrix}
  2. 奇异值矩阵 \Sigma:

    \Sigma = \begin{pmatrix} 2.78 & 0 \\ 0 & 0.53 \\ 0 & 0 \end{pmatrix}
  3. 右奇异向量矩阵 V: V 的列由 A^T A 的特征向量组成。假设计算出以下特征向量:

    V = \begin{pmatrix} -0.4046 & 0.9147 \\ -0.9147 & -0.4046 \end{pmatrix}
步骤 5:重构矩阵 A

         通过 U\Sigma V^T,我们可以验证分解的正确性,恢复原矩阵 A

总结

奇异值分解的关键步骤包括:

  • 计算 A^T AA A^T
  • 求解它们的特征值和特征向量。
  • 奇异值是特征值的平方根,右奇异向量来自 A^T A 的特征向量,左奇异向量来自 A A^T 的特征向量。
  • 通过这些步骤,我们可以得到 U\SigmaV 矩阵,从而得到矩阵 A 的奇异值分解。

这个过程在实际应用中可以使用数值计算方法(如通过SVD算法的库函数)来计算。

SVD 的计算方法

  1. 计算矩阵的特征值和特征向量:我们可以通过 A A^TA^T A 的特征值和特征向量来构造 UV 矩阵。
  2. 构造奇异值矩阵:特征值的平方根便是奇异值,将这些奇异值排列在 \Sigma 矩阵的对角线上。

SVD 的几何意义

  • 矩阵 A 的奇异值表示的是矩阵在不同方向上的拉伸或缩放程度。
  • 奇异值较大的方向表示数据中的主要模式,而较小的奇异值方向则表示噪声或不重要的模式。因此,在数据降维中,我们可以保留最大的奇异值所对应的分量,从而获得矩阵的低秩近似。

SVD 的应用

  1. 数据降维:在主成分分析(PCA)中,我们可以使用 SVD 提取出数据的主成分,从而减少数据维度。
  2. 图像压缩:SVD 可以用于对图像进行压缩,通过保留最大的奇异值所对应的主成分来保持图像的大部分信息。
  3. 推荐系统:在协同过滤推荐系统中,SVD 用于用户和物品的隐式特征分解,可以帮助识别用户偏好。
  4. 噪声去除:通过丢弃小奇异值分量,我们可以从数据中去除噪声,提取出主要模式。

Python 示例

以下代码展示了如何使用 NumPy 进行奇异值分解:

import numpy as np# 定义矩阵 A
A = np.array([[3, 1, 1], [-1, 3, 1]])# 进行奇异值分解
U, S, Vt = np.linalg.svd(A)# SVD 分解结果
print("U 矩阵:\n", U)
print("奇异值(对角矩阵的对角元素):\n", S)
print("V 转置矩阵:\n", Vt)# 重构矩阵 A(通过 U * S * Vt)
S_matrix = np.zeros((U.shape[0], Vt.shape[0]))
np.fill_diagonal(S_matrix, S)
A_reconstructed = U @ S_matrix @ Vt
print("重构后的矩阵 A:\n", A_reconstructed)

应用示例:图像压缩

在图像压缩中,我们可以通过 SVD 提取最重要的奇异值分量来降低数据量。例如,若图像被表示为矩阵,SVD 分解后,保留最大的奇异值对应的前几列,可以保留图像的主要特征,同时去除冗余信息。

总结

奇异值分解提供了一种强大的方法来分析数据的主成分结构,有助于降维、数据压缩和模式识别。在实际应用中,SVD 尤其在高维数据处理中被广泛使用,比如文本数据、图像数据和推荐系统等。

相关文章:

【机器学习】机器学习中用到的高等数学知识-1.线性代数 (Linear Algebra)

向量(Vector)和矩阵(Matrix):用于表示数据集(Dataset)和特征(Feature)。矩阵运算:加法、乘法和逆矩阵(Inverse Matrix)等,用于计算模型参数。特征值(Eigenvalues)和特征向量(Eigenvectors)&…...

无插件H5播放器EasyPlayer.js网页web无插件播放器选择全屏时,视频区域并没有全屏问题的解决方案

EasyPlayer.js H5播放器,是一款能够同时支持HTTP、HTTP-FLV、HLS(m3u8)、WS、WEBRTC、FMP4视频直播与视频点播等多种协议,支持H.264、H.265、AAC、G711A、MP3等多种音视频编码格式,支持MSE、WASM、WebCodec等多种解码方…...

Idea中创建和联系MySQL等数据库

备注:电脑中要已下好自己需要的MySQL数据库软件 MySQL社区版下载链接: https://dev.mysql.com/downloads/installer/ 优点: 1.相比与在命令行中管理数据库,idea提供了图形化管理,简单明了; 2.便于与后端…...

【pytest】pytest注解使用指南

前言:在 pytest 测试框架中,注解(通常称为装饰器)用于为测试函数、类或方法提供额外的信息或元数据。这些装饰器可以影响测试的执行方式、报告方式以及测试的组织结构。pytest 提供了多种内置的装饰器,以及通过插件扩展…...

在Unity中使用Epplus写Excel

Overview 本文旨在帮助你快速入门,该库发展多年内容庞大(官方文档写的极好:https://github.com/EPPlusSoftware/EPPlus/wiki),有些功能在Unity环境可能你永远都不会使用. 官方的一个Demo: https://github.com/EPPlusSoftware/EPPlus.Samples.CSharp 如果你只有读的需求,可以…...

初识算法 · 模拟(2)

目录 前言: Z字形变换 题目解析 算法原理 算法编写 数青蛙 题目解析 算法原理 算法编写 前言: ​本文的主题是模拟,通过两道题目讲解,一道是Z字形变化,一道是数青蛙。 链接分别为: 1419. 数青蛙…...

【Java面试】—— 创建线程池的两种方式(执行流程、拒绝策略)(详细)

目录 一、ThreadPoolExecutor(推荐)(重点) 1、参数 2、执行流程 3、常用方法 4、任务拒绝策略 二、Executors(不推荐) 1、常用方法 2、存在的问题 一、ThreadPoolExecutor(推荐)(重点) 1、参数 使用指定的初始化参数创建一个新的线程池对象 public Thread…...

Docker在微服务架构中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 Docker在微服务架构中的应用 Docker在微服务架构中的应用 Docker在微服务架构中的应用 引言 Docker 基本概念 1. 容器 2. 镜像 3…...

苹果ASA归因对接以及API接入

一、归因概要 广告归因,目的是用于衡量广告带来的激活用户的成本以及后续进一步的用户质量表现。 Apple Ads 广告平台是基于 App Store(站内广告),同时属于自归因平台(通常称为 SAN)。这两个因素&#xff…...

Git常用操作学习

目录 Git基础概述 1.1 什么是Git? 1.2 Git的优点Git工作流程 2.1 集中式工作流程 2.2 功能分支工作流程 2.3 Git Flow工作流程克隆仓库 3.1 使用git clone 3.2 克隆特定分支分支管理 4.1 创建分支 4.2 切换分支 4.3 合并分支 4.4 删除分支提交和推送更改 5.1 查看状…...

2.5D视觉——Aruco码定位检测

目录 1.什么是Aruco标记2.Aruco码解码说明2.1 Original ArUco2.2 预设的二维码字典2.3 大小Aruco二维码叠加 3.函数说明3.1 cv::aruco::detectMarkers3.2 cv::solvePnP 4.代码注解4.1 Landmark图说明4.2 算法源码注解 1.什么是Aruco标记 ArUco标记最初由S.Garrido-Jurado等人在…...

【PSQLException: An I/O error occurred while sending to the backend.】

PSQLException: An I/O error occurred while sending to the backend. java项目定时任务执行耗时很长的sql语句(很多条sql,从很多表中,很多数据中查询,处理)总之,耗时很长(PG数据库)。报错I/O error,Caused by : java.net.SocketTimeoutException: Read time out场景…...

图像基础算法学习笔记

目录 概要 一、图像采集 二、图像标注 四、图像几何变换 五、图像边缘检测 Sobel算子 Scharrt算子 Laplacian算子 Canny边缘检测 六、形态学转换 概要 参考书籍:《机器视觉与人工智能应用开发技术》 廖建尚,钟君柳 出版时间:2024-…...

【Elasticsearch】01-ES安装

1. 安装 安装elasticsearch。 docker run -d \--name es \-e "ES_JAVA_OPTS-Xms512m -Xmx512m" \-e "discovery.typesingle-node" \-v es-data:/usr/share/elasticsearch/data \-v es-plugins:/usr/share/elasticsearch/plugins \--privileged \--networ…...

网络性能测试

一、iperf网络性能测试工具 测试udp丢包率 在服务器启动 iperf 服务端 iperf -p 9000 -s -u -i 1参数说明: -p : 端口号 -s : 表示服务端 -u : 表示 udp 协议 -i : 检测的时间间隔(单位,秒) 在客户端,启动 iperf 客户端 iperf -c xxx.xxx.14…...

docker:docker: Get https://registry-1.docker.io/v2/: net/http: request canceled

无数次的拉镜像让人崩溃: rootnode11:~/ragflow/docker# more rag.sh #export HTTP_PROXYhttp://192.168.207.127:7890 #export HTTPS_PROXYhttp://192.168.207.127:7890 #export NO_PROXYlocalhost,127.0.0.1,.aliyun.com docker compose -f docker-compose-gpu-C…...

esp32c3开发板通过micropython的mqtt库连MQTT物联网消息服务器

MQTT介绍 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息协议,旨在设备之间进行通信,尤其是在网络条件较差的情况下。MQTT v3.1.1 和 MQTT v5 是该协议的两个主要版本。 MQTT v3.1.1: 优点&#xff…...

OceanBase 升级过程研究(4.2.1.6-4.2.1.8)

模拟业务 使用benchmark加载10仓数据模拟业务场景 升级方法 使用滚动升级方式来进行OB升级。该方法前提是OB集群必须满足官方规定的高可用架构(如果 Zone 个数小于 3,滚动升级时则无法构成多数派), 滚动升级的原理就是轮流完成每个ZONE的升级工作,由于…...

ubuntu下怎么设置机器程序开机自启?

在 Ubuntu 中,可以通过多种方法设置程序或脚本在系统启动时自动运行。以下是几种常见方法: 方法 1:使用 crontab crontab 是一个定时任务管理工具,可以用来设置程序在开机时自动运行。 1. 打开终端,编辑当前用户的 …...

Cesium 相机系统

Cesium 的相机系统是其 3D 地球渲染引擎的重要组成部分,它控制用户在虚拟地球上的视图和交互体验。Cesium 的相机系统具备灵活性和强大的功能,允许开发者自定义视图、导航和交互方式。以下是 Cesium 相机系统的主要特点和功能: 1. 相机的基本…...

数据结构(基本概念及顺序表——c语言实现)

基本概念: 1、引入 程序数据结构算法 数据: 数值数据:能够直接参加运算的数据(数值,字符) 非数值数据:不能够直接参加运算的数据(字符串、图片等) 数据即是信息的载…...

ZYNQ程序固化——ZYNQ学习笔记7

一、ZYNQ启动过程 二、 SD卡启动实操 1、对ZYNQ进行配置添加Flash 2、添加SD卡 3、重新生成硬件信息 4、创建vitis工程文件 5、勾选板级支持包 6、对系统工程进行整体编译,生成两个Debug文件,如图所示。 7、插入SD卡,格式化为 8、考入BOOT.…...

labview使用报表工具从数据库导出数据

之前写了一篇labview从数据库导出数据到excel电子表格,但是是基于调用excel的activeX控件,有时候会有一些bug,就比如我工作机就无法显示方法,后面大哥指点才知道没有的原因是excel安装不完整。像我的工作机就没有这个选项。就需要…...

#define定义宏(2)

大家好,今天给大家分享两个技巧。 首先我们应该先了解一下c语言中字符串具有自动连接的特点。注意只有将字符串作为宏参数的时候才可以把字符串放在字符串中。 下面我们来讲讲这两个技巧 1.使用#,把一个宏参数变成对应的字符串。 2.##的作用 可以把位…...

CentOS网络配置

上一篇文章:VMware Workstation安装Centos系统 在CentOS系统中进行网络配置是确保系统能够顺畅接入网络的重要步骤。本文将详细介绍如何配置静态IP地址、网关、DNS等关键网络参数,以帮助需要的人快速掌握CentOS网络配置的基本方法和技巧。通过遵循本文的…...

基于vue框架的的网上宠物交易管理系统46sn1(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表 项目功能:用户,宠物分类,宠物信息 开题报告内容 基于Vue框架的网上宠物交易管理系统开题报告 一、研究背景 随着互联网技术的飞速发展和人们生活水平的提高,宠物已成为许多家庭的重要成员。宠物市场的繁荣不仅体现在实体店的遍地开…...

MySQL数据库:SQL语言入门 【2】(学习笔记)

目录 2,DML —— 数据操作语言(Data Manipulation Language) (1)insert 增加 数据 (2)delete 删除 数据 truncate 删除表和数据,再创建一个新表 (3&#xf…...

MySQL深度剖析-索引原理由浅入深

什么是索引? 官方上面说索引是帮助MySQL高效获取数据的数据结构,通俗点的说,数据库索引好比是一本书的目录,可以直接根据页码找到对应的内容,目的就是为了加快数据库的查询速度。 索引是对数据库表中一列或多列的值进…...

路径规划——RRT-Connect算法

路径规划——RRT-Connect算法 算法原理 RRT-Connect算法是在RRT算法的基础上进行的扩展,引入了双树生长,分别以起点和目标点为树的根节点同时扩展随机树从而实现对状态空间的快速搜索。在此算法中以两棵随机树建立连接为路径规划成功的条件。并且&…...

数据科学与SQL:如何计算排列熵?| 基于SQL实现

目录 0 引言 1 排列熵的计算原理 2 数据准备 3 问题分析 4 小结 0 引言 把“熵”应用在系统论中的信息管理方法称为熵方法。熵越大,说明系统越混乱,携带的信息越少;熵越小,说明系统越有序,携带的信息越多。在传感…...

网站开发交接资料/人教版优化设计电子书

一、容器生命周期 Init C(初始化容器)只是用于 Pod 初始化的,不会一直随着 Pod 生命周期存在,Init C 在初始化完成之后就会死亡。一个 Pod 可以有多个 Init C,也可以不需要 Init C。Init C 是依次执行的,第一个执行成功后才可以执…...

网站实施过程/2021年网络营销考试题及答案

思路&#xff1a;搜一下&#xff0c;还想多了&#xff0c;记得以前做过把一个数搞成几个数的相加组合&#xff0c;然后这题无非就是多了个组合的个数<m的&#xff0c;那么只要多加一个条件&#xff0c;当num>m的时候也return掉就好了。 //#include <bits/stdc.h> #…...

在线上传单页网站/seo优化工具

矩阵的LU分解 > A 单位下三角矩阵 * 上三角矩阵 将矩阵的LU分解用于非方阵 > 在另一个情况下 &#xff0c;如果A是6x4的矩阵> 处理方法一致。 举例 > 将U化为 单位上三角矩阵 > 引入对角矩阵 D > 综上 A L * D * U 举例 A 执行高斯消元法 > …...

网页怎么绑定wordpress/卖友情链接赚钱

水晶报表9.2 VB6.0&#xff0c;以Text控件为例 1 DimobjCRApp AsNewCRAXDRT.Application 水晶报表应用程序对象2 DimobjCRReport AsNewCRAXDRT.Report 报表对象3 DimoSection AsCRAXDRT.Section 报表节对象4 DimmyTextObject AsTextObject5 省略若干代码&#xff0c;…...

展示型网站制作公司/百度问答seo

郑重承诺&#xff1a;林哥团队15年分析经验&#xff0c;为大家做推荐&#xff0c;只为能和大家分享自己看好的比赛。希望大家多多关注&#xff0c;底部扫码添加好友&#xff0c;获取更多推荐。公推雷霆VS红队红队赢指没有命中&#xff0c;红队仅以两分优势险胜雷霆赢球输指。NB…...

秦皇岛网站建设价格/百度站长工具抓取诊断

对于很多玩抖音的作者来说&#xff0c;瓶颈期就在于你创作的内容&#xff0c;没人看&#xff0c;粉丝只有那么几个几十个&#xff0c;怎么涨都涨不上去。 下面&#xff0c;我会给大家提供几个涨粉的思路&#xff0c;在内容为王道的自媒体时代&#xff0c;最重要和最核心的当然…...