SVD分解

article/2025/9/26 22:35:08

一、SVD简介

        Singular Value Decomposition(奇异值分解,SVD)是一种重要的矩阵分解技术,可以将一个矩阵分解为三个矩阵的乘积。SVD的应用广泛,包括数据降维、矩阵逆运算、推荐系统等领域。

        给定一个矩阵A,SVD将其分解为以下形式:
A = UΣV^T

        其中,U和V是正交矩阵,Σ是对角矩阵。U的列向量称为左奇异向量,V的列向量称为右奇异向量。Σ的对角元素称为奇异值,通常按降序排列。在SVD中,奇异值代表原始矩阵的重要性,奇异值较大的对应的左右奇异向量所表示的特征对数据的贡献较大。

        SVD的应用中,常用到SVD的截断形式。通过保留较大的奇异值和对应的奇异向量,可以实现数据降维,提取出数据的主要特征。

        总的来说,SVD是一种强大的矩阵分解技术,可以在数据处理和分析中发挥重要作用,尤其在降维和特征提取方面。

二、特征值和特征向量

        在线性代数中,特征值和特征向量是矩阵的重要性质。对于一个n×n的方阵A,如果存在一个非零向量v和一个实数λ,满足 Av = λv,那么λ称为A的特征值,v称为对应于特征值λ的特征向量。特征向量是指在线性变换过程中,只发生拉伸或压缩,方向不发生改变的向量。特征值表示特征向量在该线性变换中的缩放比例。

特征值和特征向量的性质包括:

        1. 每个n×n矩阵至少有一个特征值和相应的特征向量(可以是复数)。

        2. 特征向量可以乘以一个非零常数而不改变关系。

        3. 特征向量对应的特征值不一定唯一,但是特征向量的方向是唯一确定的。

        4. 特征值的个数不超过矩阵的维度n。

        特征值和特征向量在多个领域有广泛应用,包括线性代数、物理学、工程学、数据分析等。在数据分析中,特征值和特征向量常用于降维、特征提取、主成分分析等任务,以帮助理解和处理数据。我们首先回顾下特征值和特征向量的定义如下:


                                                                Ax=λx


        给定一个n×n的矩阵A和一个n维向量x,如果存在一个实数λ,使得Ax = λx成立,那么λ被称为矩阵A的特征值,而x称为对应于特征值λ的特征向量。特征值和特征向量的定义表示,在矩阵A作用下,特征向量x只发生缩放而不改变方向,缩放比例由特征值λ决定。

        求出特征值和特征向量有什么好处呢?就是我们可以将矩阵A特征分解。如果我们求出了矩阵A的n个特征值λ1≤λ2 <...≤λn,以及这n个特征值所对应的特征向量{w1, w2,... wn},那么矩阵A就可以用下式的特征分解表示:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YaJ57-B5LmL5oSP5LiN5Zyo6YWSfg==,size_8,color_FFFFFF,t_70,g_se,x_16


        其中W是这n个特征向量所张成的n X n维矩阵,而Σ为这n个特征值为主对角线的n X n维矩阵。

        一般我们会把W的这n 个特征向量标准化,即满足||wi||2 = 1,或者说wi.Twi = 1,此时W的n个特征向量为标准正交基,满足W.TW = 1,即W.T = w-1,也就是说W为酉矩阵。
这样我们的特征分解表达式可以写成:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YaJ57-B5LmL5oSP5LiN5Zyo6YWSfg==,size_7,color_FFFFFF,t_70,g_se,x_16

        特征值分解只可以在方阵中进行处理,不能应用的非方阵中,如果我们要对非方阵进行特征分解,这是我们就要用到SVD。

三、SVD的定义

        SVD也是对矩阵进行分解,但是和特征分解不同,SVD并不要求矩阵为方阵。假设我们的矩阵A是一个m×n的矩阵,那么我们定义矩阵A的SVD为:

c87ff3d9efa749ce889621fba2553c67.png

        在SVD中,U是一个m×m的酉矩阵,Σ是一个m×n的矩阵,除了主对角线上的元素以外全为零,主对角线上的每个元素都称为奇异值,V是一个n×n的酉矩阵。酉矩阵是指其转置矩阵乘以自身得到单位矩阵,即U^TU = I,V^TV = I。下图可以很形象的看出上面SVD的定义:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YaJ57-B5LmL5oSP5LiN5Zyo6YWSfg==,size_20,color_FFFFFF,t_70,g_se,x_16

四、求解SVD矩阵

那么我们如何求出SVD分解后的U, Σ,V这三个矩阵呢?
        如果我们将A的转置和A做矩阵乘法,那么会得到n X n的一个方阵AT A。既然AT A是方阵,那么我们就可以进行特征分解,得到的特征值和特征向量满足下式:

9bd11876d6604d7db2ef3d5892a0814f.png

        是的,通过对矩阵A的转置矩阵AT与A相乘得到的矩阵AT A,我们可以求解出其n个特征值和对应的n个特征向量v。将AT A的所有特征向量组成一个n×n的矩阵V,这个V矩阵即可作为SVD公式中的V。

        如果我们将A和A的转置做矩阵乘法,那么会得到m x m的一一个方阵AAT。 既然AAT是方阵,那么我们就可以进行特征分解,得到的特征值和特征向量满足下式:

b52e06e909b24a3b8a934acdc5ba9921.png


        这样我们就可以得到矩阵AAT的m个特征值和对应的m个特征向量u了。将AAT的所有特征向量张成一个m x m的矩阵U ,就是我们SVD公式里面的U矩阵了。-般我们将U中的每个特征向量叫做A的左奇异向量。
        U和V我们都求出来了, 现在就剩下奇异值矩阵习没有求出了。由于乙除了对角线上是奇异值其他位置都是0 ,那我们只需要求出每个奇异值σ就可以了。 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YaJ57-B5LmL5oSP5LiN5Zyo6YWSfg==,size_20,color_FFFFFF,t_70,g_se,x_16

这样我们可以求出每个奇异值,进而求出奇异矩阵。

在上述中为什么A*A.T为U矩阵,而A.T*A为V矩阵?

原因如下: 

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YaJ57-B5LmL5oSP5LiN5Zyo6YWSfg==,size_13,color_FFFFFF,t_70,g_se,x_16

        进一步我们还可以看出我们的特征值矩阵等于奇异值矩阵的平方,也就是说特征值和奇异值满足如下关系:

                                                               04710341fe384c25809491b834f223cd.png

        这样也就是说,我们可以不用σi = Avi/u;来计算奇异值,也可以通过求出AT A的特征值取平方根来求奇异值。(奇异矩阵是从大到小排序)

五、求解实例

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YaJ57-B5LmL5oSP5LiN5Zyo6YWSfg==,size_19,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YaJ57-B5LmL5oSP5LiN5Zyo6YWSfg==,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YaJ57-B5LmL5oSP5LiN5Zyo6YWSfg==,size_20,color_FFFFFF,t_70,g_se,x_16

六、SVD性质

        对于奇异值,它跟我们特征分解中的特征值类似,在奇异值矩阵中也是按照从大到小排列,而且奇异值的减少特别的快,在很多情况下,前10%甚至1 %的奇异值的和就占了全部的奇异值之和的99%以上的比例。也就是说,我们也可以用最大的k个的奇异值和对应的左右奇异向量来近似描述矩阵。

        由于这个重要的性质,SVD可以用于PCA降维,来做数据压缩和去噪。也可以用于推荐算法,将用户和喜好对应的矩阵做特征分解,进而得到隐含的用户需求来做推荐。同时也可以用于NLP中的算法,比如潜在语义索引(LSI) 。

七、SVD用于PCA降维

        实际上SVD在PCA降维上只是使用了V矩阵(右奇异矩阵),其原因就是V矩阵(右奇异矩阵)是进行列压缩,而U矩阵(左奇异矩阵)是对行进行压缩,而PCA降维只需要减少特征从而进行降维,所以PCA只用到了SVD的V矩阵(右奇异矩阵)。具体解释可参照上文推导过程(右奇异矩阵的由来)。

八、SVD总结

        SVD作为一种基本算法,在许多机器学习算法中都扮演重要角色。特别是在大数据时代,SVD因其可并行化的特性而更加广泛应用。SVD的原理并不复杂,只需要基本的线性代数知识即可理解,实现也相对简单,因此值得仔细研究。

        然而,SVD的一个缺点是其分解出的矩阵在解释性方面较弱,有时候更像是一个黑盒子。尽管如此,这并不影响SVD在实际应用中的使用。SVD在数据处理、降维、特征提取等领域都发挥了重要作用。

        需要注意的是,在使用SVD时,我们也要考虑到其计算复杂度的问题,特别是对于大规模矩阵的处理。尽管SVD具有许多优点,但在实际应用中,我们也需要综合考虑算法的效率和性能,选择适合特定任务的算法和技术。


http://chatgpt.dhexx.cn/article/wCrtfrSK.shtml

相关文章

如何快速搭建个人网站(服务器配置篇)

关于服务器的购买和域名注册可以参考我的这篇博客 在使用之前&#xff0c;建议小白用户先下载一个Vmware 安装一个Ubuntu的虚拟环境学习一下linux的基础命令。 一、远程服务器的连接 服务器购买好了以后我们需要进行远程连接我们的服务器&#xff0c; 我个人推荐windows用…

在废旧手机里搭建个人服务器

点击跳转微信公众号原文链接 欢迎关注公众号&#xff0c;会不定时发些有趣的干货文章&#xff0c;以及一些记录性的技术文章&#xff01; 正文开始&#xff1a; 一、目的&#xff1a;给手机装上Linux系统&#xff0c;充当服务器使用 二、流程&#xff1a; 1、手机装好相关软件…

个人搭建网站的服务器选择

关于这方面之前一直准备分享一下心得&#xff0c;由于一直比较忙&#xff0c;各种想写的就各种耽搁了&#xff0c;今天给大家总结一下个人或小型企业站该如何选择网站服务器 首先&#xff0c;先弄清楚自己的需求和用途&#xff1a; 1、是建立一个静态页面还是动态页面&#xff…

如何利用云服务器搭建个人网站

去阿里云进入官网 aliyun.com 注册账号 小林同学在这里用阿里云演示&#xff0c;大家也可以去腾讯云、百度云注册等大型知名企业&#xff0c;步骤雷同&#xff0c;看个人喜欢 注册完&#xff0c;完善个人信息&#xff0c;进行实名认证 主页面 点击 最新活动 并找到 新手上路 和…

【Linux】零成本在家搭建自己的私人服务器解决方案

我这个人自小时候以来就特喜欢永久且免费的东西&#xff0c;也因此被骗过&#xff08;花巨款买了永久超级会员最后就十几天&#xff09;。 长大后骨子里也是喜欢永久且免费的东西&#xff0c;所以我不买服务器&#xff0c;用GitHubPage或者GiteePage搭建自己的静态私人博客&…

如何组装、搭建一台永久运行的个人服务器?

点击关注公众号&#xff0c;实用技术文章及时了解 来源&#xff1a;segmentfault.com/a/1190000021143144 一、前言 由于本人在这段时候&#xff0c;看到了一个叫做树莓派的东东&#xff0c;初步了解之后觉得很有意思&#xff0c;于是想把整个过程记录下来。 二、树莓派是什么&…

完全免费快速搭建个人www服务器

想拥有自己的web服务器吗&#xff1f;想把服务器放到自己家里吗&#xff1f;通过ADSL拨号也能建立个人的服务器吗&#xff1f;本文告诉你答案。 要建立自己的web服务器&#xff0c;需要两个最重要的工作&#xff1a; 1 让别人知道你的主机 目前访问Internet上主机的方式主要有…

用服务器建立个人网站

首先&#xff0c;我们需要购买云服务器和域名。 域名建议用.com后缀的&#xff08;一般五十左右&#xff09;&#xff0c;想要便宜的域名可以买.top等后缀的&#xff08;一般几块钱&#xff09;。 点击这里购买域名 三丰云服务器的话&#xff0c;根据自己的需要购买&#xf…

家庭宽带搭建个人服务器

家庭宽带搭建个人服务器 家庭宽带搭建个人服务器准备1.公网IP1.1光猫改桥接模式 2.一台PC主机 安装PVE系统1.下载PVE镜像文件2.制作U盘启动盘 PVE安装Centos1.创建虚拟机2.启动虚拟机 完成centos安装步骤即可 域名解析实现公网访问1.测试公网连接 家庭宽带搭建个人服务器 想必…

家用宽带搭建个人服务器(一)

本文主要详记从 安装电信宽带 到使用动态公网IP 访问家里电脑的 web服务 写在前头 以前不知道在哪看过家用宽带搭建个人网站这种文章&#xff0c;所以心里一直对这个事念念不忘&#xff0c;毕竟万物皆可薅&#xff0c;能免费就免费&#xff0c;要用有限的生命好好折腾一番 1.…

电脑搭建个人服务器

电脑搭建个人服务器 #一.准备工作二.设置Xampp三.安装宝塔面板 #一.准备工作 1.下载Xampp和kodbox.1.22 2.下载宝塔面板 二.设置Xampp 1.打开Xampp&#xff0c;找到安装路径下的&#xff0c;如图打开xampp-control.exe 2.打开页面 2.如果点击Apache的start开启不成功的话…

搭建个人云服务器

创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为服务器资源&#xff0c;并且申请PHP环境MySQL数据库作为程序运行环境。申请地址为&#xff1a; 注册地址&#xff1a;http://www.sinacloud.com/public/login/inviter/gaimrn-mddmzeKWrhKWvrICun2Z_eIlnf6Kqdg.ht…

【个人网站搭建】服务器、域名准备

【个人网站搭建】服务器、域名准备 用最简单的方式&#xff0c;带你上线自己的网站&#xff01;前言 建网站本身是一个很大的工程&#xff0c;涉及前端页面的搭建&#xff0c;网站数据的存储&#xff0c;还要购置服务器资源&#xff0c;域名等。我们要上线个人网站&#xff0…

家用宽带搭建个人服务器(二)

本文主要详记免费二级域名注册和免费DDNS解析 写在前头 近几年国内注册域名需要备案&#xff0c;域名解析服务商都陆续需要收费了&#xff0c;对于我这种想简单玩玩的人来说实在是太麻烦了(主要是费钱&#xff09;&#xff0c;花了点时间找到了免费域名注册和DDNS解析 本文基于…

【VMware】搭建个人服务器

文章目录 准备工作三种网络模式Bridged(桥接模式)定义设置 NAT(网络地址转换模式)定义设置 Host-Only(仅主机模式)定义设置 搭建服务器网络模式的选择在VMWare的网络编辑器中设置转发端口查看宿主机的ip地址使用ssh连接工具进行连接 Mac笔记本跑虚拟机总感觉别扭&#xff0c;通…

阿里云服务器搭建个人网站

文章目录 一、事先准备1、购买阿里云服务器2、购买域名,并进行备案 二、服务器的基本使用1、服务器配置2、远程连接 三、服务器的高级使用1、安装宝塔面板2、部署网站3、固定链接的设置4、为网站部署SSL证书(重点) 一、事先准备 1、购买阿里云服务器 https://www.aliyun.com/…

服务器搭建个人网站(阿里云服务器)

服务器搭建个人网站 一丶购买服务器 这里我选的是阿里云服务器&#xff0c;进入阿里云官网阿里云-上云就上阿里云 阿里云提供了几种服务器&#xff0c;云服务器ESC、轻量应用服务器&#xff0c;ESC更好一点儿&#xff0c;我选了轻量级应用服务器。购买好了之后&#xff0c;在…

搭建个人服务器

组建一个自己的服务器 一、服务器是什么&#xff1f;他的作用是什么&#xff1f;二、服务的分类&#xff01;三、域名是什么&#xff1f; 相信学习了一段时间的网页以后&#xff0c;都想自己做一个网站&#xff0c;体验一哈当站长的感觉&#xff0c;这里小佬弟今天就教大家搭建…

手把手教你搭建一台永久运行的个人服务器

No.1 树莓派是什么&#xff1f; 1. 用我的话理解2. 市面上的型号3. 树莓派 zero w4. 更多树莓派No.2 树莓派zero w安装系统 1. 准备2. 第一步下载系统镜像3. 使用 Win32DiskImager 往内存卡中写入镜像4. 修改 boot 分区的文件5. 组装我们的最小主机并连接6. 优化咱们树莓派的系…

个人服务器的选择

相信有很多小码农在学习技术和平时写Demo的时候&#xff0c;都需要一台个人服务器来看看效果。这里我就简单介绍一下如何去选择适合自己的服务器。 首先需求和用途&#xff1a; 主要考察空间大小 / 流量 / 连接数 / 数据库 / 流量 / 是否有其它特殊用途等。 如果你对服务器性能…