奇异值分解(SVD)

news/2024/10/9 9:37:47/

1 奇异值分解(SVD)简介

Beltrami 和 Jordan 被认为是奇异值分解(Singular Value Decomposition,SVD)的共同开创者,二人于19世纪70年代相继提出了相关理论。奇异值分解主要解决的问题是数据降维。在高维度的数据中,数据往往是稀疏的,或者数据往往由几个重要的成分表达了大部分信息。因此,通过降维可以很好地化繁为简的解决问题,也可以降低数据的存储成本和运算成本。

奇异值分解有着比较广泛的应用,在图像处理、推荐系统中都有着比较重要的应用。

奇异值分解的基本原理

2.1 特征值与特征向量

对于eq?n阶方阵eq?A,若存在非零向量eq?%5Cbeta和非负值eq?%5Clambda,使得eq?A%5Cbeta%20%3D%5Clambda%20%5Cbeta,则eq?%5Clambda称为线性变换eq?A的特征值,eq?%5Cbeta称为特征值eq?%5Clambda的特征向量。

若方阵eq?A的所有特征值为eq?%5Clambda%20_%7B1%7D%2C%5Clambda%20_%7B2%7D%2C...%2C%5Clambda%20_%7Bn%7D,对应的一组特征向量为eq?%5Cbeta%20_%7B1%7D%2C%5Cbeta%20_%7B2%7D%2C...%2C%5Cbeta%20_%7Bn%7D

eq?S%3D%5Cbegin%7Bbmatrix%7D%20%5Clambda%20_%7B1%7D%20%26%20%26%20%26%20%5C%5C%20%26%20%5Clambda%20_%7B2%7D%20%26%20%26%20%5C%5C%20%26%20%26%20...%20%26%20%5C%5C%20%26%20%26%20%26%20%5Clambda%20_%7Bn%7D%20%5Cend%7Bbmatrix%7Deq?B%3D%5Cleft%20%28%5Cbeta%20_%7B1%7D%2C%5Cbeta%20_%7B2%7D%2C...%2C%5Cbeta%20_%7Bn%7D%20%5Cright%20%29

则有eq?AB%3DBS

eq?A为实对称阵时,存在单位正交向量eq?%5Cbeta%20_%7B1%7D%2C%5Cbeta%20_%7B2%7D%2C...%2C%5Cbeta%20_%7Bn%7D构成单位正交阵eq?B%3D%5Cleft%20%28%5Cbeta%20_%7B1%7D%2C%5Cbeta%20_%7B2%7D%2C...%2C%5Cbeta%20_%7Bn%7D%20%5Cright%20%29。对于正交阵eq?B%5E%7B-1%7D%3DB%5E%7BT%7D,从而eq?ABB%5E%7B-1%7D%3DBSB%5E%7B-1%7D%5CRightarrow%20A%3DBSB%5E%7B-1%7D%3DBSB%5E%7BT%7D

上式实际上是实现了将实对称阵eq?A对角化成eq?S

2.2 矩阵的秩

矩阵eq?A任意选取的行和列的形成eq?k阶矩阵,其行列式称为矩阵eq?Aeq?k阶子式。矩阵eq?A的不为零的子式的最大阶数称为矩阵eq?A的秩。

对于eq?m%5Ctimes%20n矩阵eq?A,其秩记为eq?rank%28A%29%3Dr

对于方阵,其秩等于大于0的特征值的个数。

这里的eq?r也等于后文中大于0的奇异值的个数。

2.3 矩阵分解

2.3.1 矩阵分解的概念

任意eq?m%5Ctimes%20n矩阵eq?A都可分解为三个矩阵的乘积,即eq?A%3DUSV%5E%7BT%7D    ... (1)式。

其中eq?Ueq?m%5Ctimes%20m的正交矩阵,eq?Seq?m%5Ctimes%20n的非负对角阵,eq?Veq?n%5Ctimes%20n的正交矩阵。eq?U被称为左奇异向量,eq?S称为奇异值,eq?V称为右奇异向量。

其中eq?U%3D%5Cbegin%7Bbmatrix%7D%20u_%7B11%7D%20%26%20u_%7B21%7D%20%26%20...%26u_%7Bm1%7D%20%5C%5C%20u_%7B12%7D%26%20u_%7B22%7D%20%26...%20%26u_%7Bm2%7D%20%5C%5C%20.%26%20.%20%26%20...%26%20.%5C%5C%20u_%7B1m%7D%26%20u_%7B2m%7D%20%26...%20%26%20u_%7Bmm%7D%20%5Cend%7Bbmatrix%7D_%7Bm%5Ctimes%20m%7Deq?S%3D%5Cbegin%7Bbmatrix%7D%20%5C%20%5Csigma%20_%7B1%7D%20%26%20%26%20%26%20%5C%5C%20%26%20...%20%26%20%26%20%5C%5C%20%26%20%26%20%5Csigma%20_%7Br%7D%26%20%5C%5C%20%26%20%26%20...%26%200%5Cend%7Bbmatrix%7D_%7Bm%5Ctimes%20n%7Deq?V%5E%7BT%7D%3D%5Cbegin%7Bbmatrix%7D%20v_%7B11%7D%20%26%20v_%7B12%7D%20%26%20...%26v_%7B1n%7D%20%5C%5C%20v_%7B21%7D%26%20v_%7B22%7D%20%26...%20%26v_%7B2n%7D%20%5C%5C%20.%26%20.%20%26%20...%26%20.%5C%5C%20v_%7Bn1%7D%26%20v_%7Bn2%7D%20%26...%20%26%20v_%7Bnn%7D%20%5Cend%7Bbmatrix%7D_%7Bn%5Ctimes%20n%7D,并且eq?%5Csigma%20_%7B1%7D%5Cgeqslant%20%5Csigma%20_%7B2%7D%5Cgeqslant%20...%5Csigma%20_%7Br%7D%5Cgeqslant%200

当如上进行矩阵分解后,我们选择奇异值eq?%5Csigma%20_%7B1%7D%2C%5Csigma%20_%7B2%7D%2C...%2C%5Csigma%20_%7Br%7D中的前eq?k个奇异值eq?%5Csigma%20_%7B1%7D%2C%5Csigma%20_%7B2%7D%2C...%2C%5Csigma%20_%7Bk%7D,对应的eq?U%2CV选择前eq?k列的元素,得到的eq?U_%7Bm%5Ctimes%20k%7DS_%7Bk%5Ctimes%20k%7DV_%7Bn%5Ctimes%20k%7D%5E%7BT%7D称为矩阵eq?A的截断奇异值分解

截断奇异值分解可以看作对数据eq?A的降维,即eq?A%5Capprox%20U_%7Bm%5Ctimes%20k%7DS_%7Bk%5Ctimes%20k%7DV_%7Bn%5Ctimes%20k%7D%5E%7BT%7D

2.3.2 奇异值分解的推导

对于矩阵eq?A奇异值分解,假设存在满足前述条件的eq?U%2CS%2CV,使得eq?A%3DUSV%5E%7BT%7D则有

eq?A%5E%7BT%7DA%3D%28USV%5E%7BT%7D%29%5E%7BT%7DUSV%5E%7BT%7D%3DVS%5E%7BT%7DU%5E%7BT%7DUSV%5E%7BT%7D%3DVS%5E%7BT%7DSV%5E%7BT%7D

由于eq?S为对角阵,因此eq?S%5E%7BT%7D 仍为对角阵,eq?S%5E%7BT%7DSeq?n%5Ctimes%20n阶对角阵。

eq?S%5E%7BT%7DS%3D%5Cbegin%7Bbmatrix%7D%20%5Csigma%20_%7B1%7D%5E%7B2%7D%20%26%20%26%20%26%20%5C%5C%20%26%20...%20%26%20%26%20%5C%5C%20%26%20%26%20%5Csigma%20_%7Br%7D%5E%7B2%7D%20%26%20%5C%5C%20%26%20%26%20...%20%26%200%20%5Cend%7Bbmatrix%7D_%7Bn%5Ctimes%20n%7D,不妨将其记为eq?S%5E%7B2%7D

eq?A%5E%7BT%7DA%3DVS%5E%7B2%7DV%5E%7BT%7D

由于eq?V为正交矩阵,eq?V%5E%7BT%7DV%3DE,因此将上式右侧同乘以eq?V,得到

eq?A%5E%7BT%7DAV%3DVS%5E%7B2%7D

由于eq?A%5E%7BT%7DA为实对称阵,一定存在一组非负特征值和对应的特征向量(单位正交向量),不妨记该eq?n个特征值为eq?%5Csigma%20_%7B1%7D%5E%7B2%7D%2C%5Csigma%20_%7B2%7D%5E%7B2%7D%2C...%2C%5Csigma%20_%7Br%7D%5E%7B2%7D%2C0%2C...%2C0eq?%5Csigma%20_%7B1%7D%5Cgeqslant%20%5Csigma%20_%7B2%7D%5Cgeqslant%20...%5Csigma%20_%7Br%7D%3E0)。对应的特征向量(单位正交向量)分别记为eq?v_%7B1%7D%2Cv_%7B2%7D%2C...%2Cv_%7Bn%7D

将特征值开方后得到eq?%5Csigma%20_%7B1%7D%2C%5Csigma%20_%7B2%7D%2C...%2C%5Csigma%20_%7Br%7D%2C0%2C...%2C0

eq?S%3D%5Cbegin%7Bbmatrix%7D%20%5C%20%5Csigma%20_%7B1%7D%20%26%20%26%20%26%20%5C%5C%20%26%20...%20%26%20%26%20%5C%5C%20%26%20%26%20%5Csigma%20_%7Br%7D%26%20%5C%5C%20%26%20%26%20...%26%200%5Cend%7Bbmatrix%7D_%7Bm%5Ctimes%20n%7Deq?V%3D%28v_%7B1%7D%2Cv_%7B2%7D%2C...%2Cv_%7Bn%7D%29

则正好找到了对应的eq?Seq?V,使得(1)式成立。

对于实对称阵eq?AA%5E%7BT%7D,其非零特征值与eq?A%5E%7BT%7DA的特征值相同,也为eq?%5Csigma%20_%7B1%7D%5E%7B2%7D%2C%5Csigma%20_%7B2%7D%5E%7B2%7D%2C...%2C%5Csigma%20_%7Br%7D%5E%7B2%7Deq?%5Csigma%20_%7B1%7D%5Cgeqslant%20%5Csigma%20_%7B2%7D%5Cgeqslant%20...%5Csigma%20_%7Br%7D%3E0),其余eq?m-r个特征值为0。对应的特征向量(单位正交向量)分别记为eq?u_%7B1%7D%2Cu_%7B2%7D%2C...%2Cu_%7Bm%7D

将特征值开方后得到eq?%5Csigma%20_%7B1%7D%2C%5Csigma%20_%7B2%7D%2C...%2C%5Csigma%20_%7Br%7D%2C0%2C...%2C0

同理,有eq?AA%5E%7BT%7DV%3DUS%5E%7B2%7D

eq?S%3D%5Cbegin%7Bbmatrix%7D%20%5C%20%5Csigma%20_%7B1%7D%20%26%20%26%20%26%20%5C%5C%20%26%20...%20%26%20%26%20%5C%5C%20%26%20%26%20%5Csigma%20_%7Br%7D%26%20%5C%5C%20%26%20%26%20...%26%200%5Cend%7Bbmatrix%7D_%7Bm%5Ctimes%20n%7Deq?U%3D%28u_%7B1%7D%2Cu_%7B2%7D%2C...%2Cu_%7Bm%7D%29

则正好找到了对应的eq?Seq?U,使得(1)式成立。

如此,求出了(1)式所需的eq?U%2CS%2CV,问题得解。

奇异值分解的步骤

3.1 计算奇异值

计算矩阵乘积eq?A%5E%7BT%7DA,求解eq?%5Cleft%20%7C%20%5Csigma%20E-A%5E%7BT%7DA%20%5Cright%20%7C%3D0,得到大于零的特征值eq?%5Csigma%20_%7B1%7D%5E%7B2%7D%2C%5Csigma%20_%7B2%7D%5E%7B2%7D%2C...%2C%5Csigma%20_%7Br%7D%5E%7B2%7D%28%5Csigma%20_%7B1%7D%5Cgeqslant%20%5Csigma%20_%7B2%7D%5Cgeqslant%20...%5Csigma%20_%7Br%7D%3E0%29

eq?S%3D%5Cbegin%7Bbmatrix%7D%20%5C%20%5Csigma%20_%7B1%7D%20%26%20%26%20%26%20%5C%5C%20%26%20...%20%26%20%26%20%5C%5C%20%26%20%26%20%5Csigma%20_%7Br%7D%26%20%5C%5C%20%26%20%26%20...%26%200%5Cend%7Bbmatrix%7D_%7Bm%5Ctimes%20n%7D,得到奇异矩阵。

3.2 求解右奇异向量

将特征值eq?%5Csigma%20_%7B1%7D%5E%7B2%7D%2C%5Csigma%20_%7B2%7D%5E%7B2%7D%2C...%2C%5Csigma%20_%7Br%7D%5E%7B2%7D代入eq?%28%5Csigma%20E-A%5E%7BT%7DA%29V%3D0,求解得eq?A%5E%7BT%7DA的特征向量,并将其单位化,记为eq?v_%7B1%7D%2Cv_%7B2%7D%2C...%2Cv_%7Bn%7D

eq?V%3D%28v_%7B1%7D%2Cv_%7B2%7D%2C...%2Cv_%7Bn%7D%29,得右奇异向量。

3.3 求解左奇异向量

将特征值eq?%5Csigma%20_%7B1%7D%5E%7B2%7D%2C%5Csigma%20_%7B2%7D%5E%7B2%7D%2C...%2C%5Csigma%20_%7Br%7D%5E%7B2%7D代入eq?%28%5Csigma%20E-AA%5E%7BT%7D%29U%3D0,求解得eq?AA%5E%7BT%7D的特征向量,并将其单位化,记为eq?u_%7B1%7D%2Cu_%7B2%7D%2C...%2Cu_%7Bm%7D

eq?U%3D%28u_%7B1%7D%2Cu_%7B2%7D%2C...%2Cu_%7Bm%7D%29,得左奇异向量。

矩阵的奇异值分解完成。

奇异值分解的实例

numpy模块中有自带的奇异值分解函数。

import numpy as np
# 创建矩阵A
A = np.array([[3, 0, 0, 0],[0, 0, 0, 4],[0, 5, 0, 0],[0, 0, 0, 2],[2, 0, 0, 0]])# 进行奇异值分解
U, S, V = np.linalg.svd(A)
# 打印结果
print("U:\n", U)
print("S:", S)
print("V:\n", V)
U:[[ 0.          0.         -0.83205029 -0.         -0.5547002 ][ 0.          0.89442719  0.          0.4472136   0.        ][-1.          0.          0.          0.          0.        ][ 0.          0.4472136   0.         -0.89442719  0.        ][ 0.          0.         -0.5547002   0.          0.83205029]]
S: [5.         4.47213595 3.60555128 0.        ]
V:[[-0. -1. -0. -0.][ 0.  0.  0.  1.][-1. -0. -0. -0.][-0. -0. -1. -0.]]

奇异值分解的总结

(1)奇异值分解的原理和步骤比较简单;

(2)奇异值分解非常适合对高维数据的处理;

(3)奇异值分解一种非常重要的降维技术,尤其是在图像处理和推荐系统中有着重要的应用;

(4)奇异值分解后的结果不易直观理解。


http://www.ppmy.cn/news/1508753.html

相关文章

“AI+Security”系列第2期(一):对抗!大模型自身安全的攻防博弈

近日,由安全极客、Wisemodel 社区和 InForSec 网络安全研究国际学术论坛联合主办的“AISecurity”系列第 2 期——对抗!大模型自身安全的攻防博弈线上活动如期举行。本次活动邀请了君同未来创始人兼 CEO 韩蒙、前阿里云高级安全专家郑瀚、ChaMd5 AI 组负…

【计算机网络】详解CA认证,预防中间者攻击!

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

提取含有特定字符的行和列grep函数(含有替换)

目录 ①grep提取含有特定字符的列 ②grep提取含有特定字符的行 R语言进行字符的替换和删减gsub,substr函数R语言进行字符的替换和删减gsub,substr函数_r语言数据框字符替换-CSDN博客 ①grep提取含有特定字符的列 在一个dataframe中,需要提…

flink web监控

作者:南墨 监控指标 进入Flink的原生页面,需要从yarn的原生页面的后台链接进入,如下图: 这里必须要用supergroup组的用户或者flink提交任务的用户(如果该用户是机机用户不能登录)才能够看到任务。 系统监…

MaxKB:基于 LLM大语言模型的知识库问答系统实操

1.MaxKB介绍 MaxKB 是一款基于 LLM(Large Language Model)大语言模型的知识库问答系统。MaxKB 的产品命名内涵为 “Max Knowledge Base”,为用户提供强大的学习能力和问答响应速度,致力于成为企业的最强大脑。与同类基于 LLM 的知…

【亲测有效!】ubuntu20.04和Centos7离线安装docker及nvidia-container-toolkit

【亲测有效!】ubuntu20.04和Centos7离线安装docker及nvidia-container-toolkit 一、Ubuntu20.04安装docker(1)查看当前系统版本号和名称(2)在镜像源进行源文件下载(3)命令行进行安装&#xff08…

GPT损失和是模型模型是否真的学会(困惑度)。

#加入输入如下,label 也就是输出希望是targets inputs torch.tensor([[16833, 3626, 6100], # ["every effort moves",[40, 1107, 588]]) # "I really like"]targets torch.tensor([[3626, 6100, 345 ], # [" effort moves yo…

面试实战题-数据结构与算法

数据结构与算法 求TopK 大根堆 解题思路:保持堆的大小为K,然后遍历数组中的数字,遍历的时候做如下判断: * 1. 若目前堆的大小小于K,将当前数字放入堆中。 * 2. 否则判断当前数字与大根堆堆顶元素的大小关系&#xf…