奇异值分解(SVD)

news2024/11/25 2:48:23

1 奇异值分解(SVD)简介

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

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

2 奇异值分解的基本原理

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的秩。

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

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

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

2.3 矩阵分解

2.3.1 矩阵分解的概念

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

其中eq?Um*m的正交矩阵,eq?Sm*n的非负对角阵,eq?Vn*n的正交矩阵。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 奇异值分解的步骤

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,得左奇异向量。

矩阵的奇异值分解完成。

4 奇异值分解的实例

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.]]

5 奇异值分解的总结

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2036031.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是流批一体?怎样理解流批一体?

目录 一、流式处理与批量处理概述 1.流式处理 2.批量处理 3.流批一体的定义 二、流批一体的关键特点 三、流批一体的技术实现 四、应用场景 五、实施流批一体的考虑因素 流批一体听起来很简单,但内涵却十分复杂。它包含了计算语义、编程模型、API、调度、执行、shuf…

Halcon玩转机器视觉专栏特殊声明

欢迎来到 PaQiuQiu 的空间 本文为【Halcon玩转机器视觉专栏特殊声明】,方便大家更合理的订阅! 📢 ~特殊声明~ 鉴于很多童鞋在订阅专栏过程中,对于专栏中涉及到的资料(比如中文学习手册)和源码(C#联合Halco…

背包九讲(动态规划)

文章目录 01背包问题题目描述解题思路:上代码:思路2:二维代码:优化代码: 完全背包问题题目描述:解题思路:二维代码:优化代码: 多重背包问题题目描述:解题思路…

有趣的rce漏洞复现分析(1)

目录 eval长度限制突破 第一种方法 第二种方法 无字母数字webshell之命令执行 php7 php5 eval长度限制突破 php eval函数参数限制在16个字符的情况下,如何拿到webshell呢 首先,我们还是先把环境搭好(此次的所有漏洞环境我都部署在Ubu…

MySQL的索引事务和JDBC编程

目录 索引 查看索引 创建索引 删除索引 底层数据结构(这个很重要哦,面试容易问) 事务 事务的使用 事务的基本特性 并发执行事务可能产生的问题 MySQL提供的四种事务隔离级别 JDBC编程 JDBC的来源(一定要了解&#xff…

[WUSTCTF2020]颜值成绩查询

打开题目 输入1 输出 输入1会提示学号不存在 输入1/**/or/**/11#,过滤了空格。 1/**/order/**/by/**/3# 存在 1/**/order/**/by/**/4# 不存在 绕过 爆破表名 -1/**/Union/**/Select/**/1,2,group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/tabl…

8.1.数据库基础技术-数据库基本概念

数据库基本概念 数据库系统概述三级模式两级映射概念模式内模式外模式三级模式两级映像练习题 数据库设计练习题 数据库系统概述 数据:是数据库中存储的基本对象,是描述事物的符号记录。 数据的分类:文本、图形、图像、音频、视频。 数据库…

Unity动画模块 之 2D IK(反向动力学)

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正​ 1.什么是IK 反向动力学 IK(Inverse Kinematics)是一种方法,可以根据某些子关节的最…

C++初阶:内存管理详解

✨✨小新课堂开课了,欢迎欢迎~✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C:由浅入深篇 小新的主页:编程版小新-CSDN博客 1.C/C内存分布 我们先来看下面一段代码和相…

Haproxy简介及配置详解

一、Haproxy简介 官网: 企业版网站: https://www.haproxy.com 社区版网站: http://www.haproxy.org github: https://github.com/haprox Haproxy是法国人Willy Tarreaus开发的一款开源软件,能够提供高性能、负载均衡以及基于HTTP和TCP应用个代理&…

微信自动回复的设置

如何在微信上高效回复客户,提供良好的用户体验是很重要的。 但常常因为一人管理太多号,消息回复不过来;同时太多客户咨询,手忙脚乱;回复的话术让人感到不专业。 没关系,小编有办法。给大家分享几个小技巧…

【聚类算法】

聚类算法是一种无监督学习方法,用于将数据集中的数据点自动分组到不同的类别中,这些类别也称为“簇”或“群”。聚类的目标是让同一簇内的数据点尽可能相似,而不同簇之间的数据点尽可能不相似。聚类算法广泛应用于多种领域,如数据…

NASA:ARCTAS_AircraftRemoteSensing_P3B_AATS14_Data

ARCTAS P-3B Aircraft AATS14 Data 简介 ARCTAS_AircraftRemoteSensing_P3B_AATS14_Data 包含在 "从飞机和卫星观测对流层成分的北极研究"(ARCTAS)任务期间通过 P-3B 飞机上的艾姆斯 14 通道机载跟踪太阳光度计(AATS14&#xff0…

初始化React Native项目

node 版本 高于16版本会出现错误 Error: error:0308010C:digital envelope routines::unsupported (Node.js v19.4.0) openssl 3.0版本与node 版本不一致冲突 react-native 初始化项目版本为 镜像使用淘宝镜像源 npx nrm use taobao npx react-native0.67 init FirstApp …

vue 中使用 lodash Debounce防抖不生效

需求&#xff1a;搜索按钮增加防抖功能 代码1 <template><el-button type"primary" icon"el-icon-search" click"searchClick">搜索</el-button> </template><script> import { debounce } from "lodash&q…

使用Nvm切换nodeJs高版本之后,使用npm install一闪而过

先说现象,最近又有几个项目接手,其中有一个使用NVM切换至高版本node后,出现如下症状; 没有任何提示,然后翻看文件目录,node_modules目录没有创建,同时在全局 npm config set prefix 设置的目录下 多了一个 pgn的快捷,指向项目目录。 使用百度或者chart-gtp,搜索到的答案…

VSCODE ESP-IDF 内置 JTAG 接口断点单步调试笔记

环境配置 下载VSCODE之后&#xff0c;安装VSCODE的ESP-IDF插件。 还可安装c/c与python的语言插件 进行配置&#xff1a;ctrlshiftP 打开配置选项&#xff0c;输入ESP-IDF:Configure ESP-IDF extension 根据情况选择即可&#xff1a; 点击“Configure Tools” 出现…

echarts多条折线图,横轴相同问题

this.curveList [ { value: "5", collectTime: "13.14", signalName: "数据深" }, { value: "1", collectTime: "13.23", signalName: "数据深" }, { value: "20", collectTime: "13.14", s…

以一道面试题来探讨测试用例设计的六大思路

有这样一个面试题&#xff1a;在一个Web测试页面上&#xff0c;有一个输入框&#xff0c;一个计数器&#xff08;count&#xff09;按钮&#xff0c;用于计算一个文本字符串中字母a出现的个数。请设计一系列测试用例用以测试这个Web页面。 有经验的测试人员可能会问面试官&…

博途PLC FOR+CASE语句组合应用

CASE语句的使用可以参考下面文章链接&#xff1a; 1、CASE语句和定时器组合使用注意事项 CASE语句和定时器组合使用注意事项(SCL代码)_plc定时器可以放在case语句里面吗-CSDN博客文章浏览阅读283次。本文介绍了在使用CASE语句进行状态机流程控制时&#xff0c;如何结合定时器…