大数跨境
0
0

如何计算 SVD

如何计算 SVD 数据分析学习与实践
2024-11-25
0

最近,我开始研究推荐系统,尤其是协同过滤系统,其中使用了一种名为奇异值分解(SVD)的技术,将用户评分的输入矩阵分解为用户特征、特征-特征和item-特征矩阵三个矩阵。在应用之前,我想对背后的数学知识有一个直观的了解,因此开始了我为期一周的矩阵分解之旅。在学校时,我并不是那种数学大佬,所以我在很多 SVD 的教程中都迷失了方向,因为他们忽略了一些步骤,比如 计算行梯队形式、矩阵的 Null space 等,所以现在开始学习并深入研究 SVD 究竟是如何实现的,以及这三个矩阵是如何形成的,也就是给定的输入矩阵是如何分解成这三个矩阵的。在这个故事中,我将通过一个 SVD 的例子,用数学方法分解整个过程。

我们不满足计算矩阵的特征向量,而是矩阵转换单位正交基后依然是单位正交基。

根据 SVD 公式:

SVD 公式

  1. A 是输入矩阵
  2. U 是左奇异向量
  3. 是对角线矩阵(特征值)
  4. V 为右奇异向量

这三个矩阵的形状将是

  1. A - 矩阵
  2. U - 矩阵
  3. - 矩阵
  4. V - 矩阵

步骤 1

因此,第一步,我们需要找到矩阵 A 的特征值(观看下面提供的视频以了解特征值和特征向量),由于 A 可以是矩形矩阵,我们需要通过将 A 与它的转置相乘将其转换为正方形矩阵。在这里,为了便于计算,我将 A 假设 为 2 x 2 矩阵。

那么:

步骤 2

现在,我们有了一个正方形矩阵,可以计算 的特征值。我们可以通过计算 的行列式来计算,其中 lambda 是两个特征值。

解方程可得:

特征值:

步骤 3

计算出特征值后,就该计算每个特征值的两个特征向量了。因此,让我们先计算 10 的特征向量。

步骤 3.1

我们将 的值插入    矩阵:

为了找到特征向量,我们需要找到 AB = 0 的矩阵的 null 空间:

接下来,我们需要将矩阵还原成行梯形,以便轻松求解方程。让我们先来谈谈行梯形。

行梯形

如果矩阵满足以下规则,则称为行梯形矩阵。

  1. 矩阵每行的所有前导项均为 1
  2. 如果某列包含一个前导条目,则前导条目下面的所有条目都应为 0。
  3. 如果任意两行连续不为零,则上一行的前导项应出现在下一行前导项的左边。
  4. 所有只有零的行都应出现在矩阵的底部。

我们需要对行进行一些操作来缩小矩阵。这些操作称为基本行操作,这些操作需要遵循一定的规则,如下所示:

  1. 将矩阵中的一行与另一行互换。
  2. 将矩阵的一行乘以一个非零标量常数。
  3. 用矩阵的一行加常数乘以另一行,替换矩阵的一行。

有了上述规则,我们就可以开始将步骤 3.1 中的矩阵还原为行形式:

行1 + 行2

步骤 3.1 中提到的矩阵的行梯形

现在,我们可以如下求解 null 空间,以找到特征值 10 的特征向量:

得到这个向量后,我们需要将其转换为单位向量。转换的方法是将列值除以列值平方和的平方根。因此,在这种情况下,我们要这样做:

分母

因此,特征值的最终特征向量为:

转为 单位向量:

那么 特征值 10 对应 的特征值 为:

我们采取类似的步骤,得到特征值 40 的特征向量:

计算矩阵:

行梯队表格:

同理可得:特征值40 对应的特征向量为:

单位向量:

40 的特征向量

现在我们已经得到了两个特征向量,让我们把它们放在一起。

请注意, 中的对角线值总是按照降序排列的,因此向量也是按照相应的顺序排列的。如果你对 PCA 比较熟悉,那么主成分对应的是对角线顶端的 个元素,它们捕捉到的方差最大。值越高,说明该成分越重要,描述的方差越大。

步骤 4

现在我们有了 矩阵和 矩阵,现在是时候找到 了,我们只需将方程乘以两侧的 sigma(逆)和 V,即可得到 U 的方程。在这种情况下,由于 是正交矩阵, 的转置和逆转置是相同的,因此 转置 乘以 就成了单位矩阵,对角矩阵也是如此。

计算

接下来,我们需要用上述步骤将其转换为单位向量。

作为单位向量

接下来,我们将该矩阵与 相乘,因为它是对角矩阵,所以本身就是

现在,我们需要将其转换为单位向量,得到最终的 矩阵,好像多此一举。

这样,我们就计算出了 ,并将矩阵 分解为如下所示的三个矩阵。

SVD

结束语:

了解如何计算 SVD 以及理论上的理解有助于我更直观地了解其应用,如 PCA、协同过滤等。你也可以使用特征分解法来分解矩阵,但 SVD 相对于特征分解法的优势在于,SVD 甚至可以用于矩形矩阵。

注:如果有错误,请在下面的章节中评论,我将尽力纠正。这篇报道的目的是让大家了解计算方法,并让初学线性代数和 SVD 的人一站式了解所有不同的组成部分

感谢您的阅读。




【声明】内容源于网络
0
0
数据分析学习与实践
数据分析,数据科学,线性代数,统计学,AI,python,可视化,excel
内容 343
粉丝 0
数据分析学习与实践 数据分析,数据科学,线性代数,统计学,AI,python,可视化,excel
总阅读14
粉丝0
内容343