算法笔记【2】-SVD奇异分解及在最小二乘求解上的应用

news2024/11/20 15:35:28

文章目录

    • 一、什么是SVD分解
    • 二、SVD分解的步骤
    • 三、SVD分解的应用领域
    • 四、用SVD求解最小二乘表达式

一、什么是SVD分解

奇异值分解(Singular Value Decomposition,简称SVD)是一种重要的矩阵分解技术。它可以将一个矩阵分解为三个矩阵的乘积,即A = UΣVT,其中U和V是正交矩阵,Σ是一个对角矩阵,对角元素为从大到小排列的特征值。
在这里插入图片描述

二、SVD分解的步骤

这里以一个例子来讲解SVD分解的步骤,假设有矩阵A如下,我们对其进行进行SVD分解。
A = [ 0 1 1 1 1 0 ] (1) A =\begin{bmatrix} 0 & 1 \\ 1 & 1 \\ 1 & 0 \end{bmatrix} \tag{1} A= 011110 (1)

  • 对于给定的m×n矩阵A,计算ATA得到一个n×n的对称矩阵C。
    C = A T A = [ 0 1 1 1 1 0 ] [ 0 1 1 1 1 0 ] = [ 2 1 1 2 ] (2) C = A^TA =\begin{bmatrix} 0 & 1 & 1\\ 1 & 1 & 0 \end{bmatrix} \begin{bmatrix} 0 & 1 \\ 1 & 1 \\ 1 & 0 \end{bmatrix} = \begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix} \tag{2} C=ATA=[011110] 011110 =[2112](2)

  • 对C矩阵进行特征值分解,得到特征值向量V组成的矩阵和对应的特征值λ。
    V = [ 1 2 1 2 1 2 1 2 ] (3) V = \begin{bmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \end{bmatrix} \tag{3} V=[2 12 12 12 1](3)
    对应的特征值:λ1=3,λ2=1。具体如何求特征向量和特征值可以参考《线性代数》的课本。

  • 将特征值按从大到小的顺序排列,并对应生成对角矩阵Σ。
    Σ = [ 3 0 0 1 0 0 ] (4) Σ = \begin{bmatrix} \sqrt{3} & 0 \\ 0 & 1 \\ 0 & 0 \end{bmatrix} \tag{4} Σ= 3 00010 (4)

  • 计算AAT,并将结果进行特征值分解,得到特征值λ和对应的特征向量组成的矩阵U。
    U = [ 1 6 1 2 1 3 2 6 0 − 1 3 1 6 − 1 2 1 3 ] (5) U = \begin{bmatrix} \frac{1}{\sqrt{6}} & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{3}} \\ \frac{2}{\sqrt{6}} & 0 & -\frac{1}{\sqrt{3}} \\ \frac{1}{\sqrt{6}} & -\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{3}} \end{bmatrix} \tag{5} U= 6 16 26 12 102 13 13 13 1 (5)
    对应的特征值:λ1=3,λ2=1,和C=ATA的特征值一致。

三、SVD分解的应用领域

  1. 图像压缩
    在图像处理中,SVD分解常被用于图像压缩。通过对图像矩阵进行SVD分解,可以得到较低秩的近似矩阵,从而减少存储空间和传输带宽。这种方法在JPEG2000等图像压缩算法中得到广泛应用。
  2. 推荐系统
    SVD分解在推荐系统中也有重要的应用。通过对用户评分矩阵进行SVD分解,可以将用户和物品映射到一个隐空间中,并预测用户对未评分物品的喜好程度。基于SVD的协同过滤算法在Netflix Prize竞赛中取得了很大成功。
  3. 数据降维
    SVD分解可以将高维数据降维到低维,保留数据的主要特征。这在机器学习和数据挖掘任务中非常有用,可以提高计算效率并减少存储需求。例如,在主成分分析(PCA)中,SVD分解被广泛用于实现数据降维。

四、用SVD求解最小二乘表达式

一般情况下,线性方程的表达式为:
A x = b Ax = b Ax=b
其中A为m×n的系数矩阵,x为n×1的未知向量,b为m×1的矩阵。线性方程可分为三种情况:
1.m = n,方程组和未知数的个数相等,理论上存在唯一解;
2. m < n,方程组数小于未知数的个数,理论上存在无数解;
3. m > n, 方程组数大于于未知数的个数,即为超定方程,一般情况下无解,所以一般是求其最优解。这也是我数学建模过程中最常用到的线性模型。我们知道求最优解可通过常规最小二乘法来求解:
x = ( A T A ) − 1 A T b x = (A^TA)^{-1}A^Tb x=(ATA)1ATb
此方式确实常用,但需要注意到的是,求解过程需要对ATA求逆,在矩阵A不满秩的情况下,ATA是奇异矩阵,无法求逆。而通过SVD求解的优点是不需要复杂的求逆运算,且可处理ATA为奇异阵不可逆的情况
具体的,A = UΣVT,所以Ax=b可以表示为:
U Σ V T x = b UΣV^{T}x = b UΣVTx=b
两边同时左乘UT得:
Σ V T x = U T b ΣV^{T}x = U^{T}b ΣVTx=UTb
现在令y=VT x, b’=UT b,则:
Σ y = b ′ Σy = b' Σy=b
展开可以表示为:
在这里插入图片描述
所以展开矩阵得:
y i = b i ′ λ i , i = 1 , 2 , . . . , n y_i= \frac{b'_i}{λ_i},i=1,2,...,n yi=λibi,i=1,2,...,n
根据y=VT x,可以反解得到x:
x i = Σ y i , i = 1 , 2 , . . . , n x_i= Σy_i,i=1,2,...,n xi=Σyi,i=1,2,...,n
至此,解算完毕。

  • 代码找时间补^_^ 。

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

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

相关文章

高斯过程回归 | 高斯过程回归(Python)

高斯过程(Gaussian Processes,GP)是一种强大的非参数化模型,通常用于回归和分类任务。 它允许我们以一种灵活的方式建模数据的不确定性,并在小样本情况下表现出色。 高斯过程是一种用于建模函数的分布的非参数方法。 在高斯过程回归中,咱们试图建立一个连续的随机函数,…

光学仿真|优化汽车内部照明体验

当我们谈论优化人类感知的内部照明时&#xff0c;我们实际上指的是两个重点领域&#xff1a;安全性和驾驶员体验。如果内部照明可以提供尽可能最佳的体验&#xff0c;驾驶员则能够更好地应对颇具挑战性或意外的驾驶状况&#xff0c;并且减轻疲劳感。除了功能优势外&#xff0c;…

做外贸的你是不是也怕遇到麻烦的客户

最近遇到两个客户&#xff0c;可以说还未开始真正的沟通&#xff0c;就已经心里开始打怵&#xff0c;打怵的原因也无非是各种理由上的不匹配。 当我们觉得一件事情不可能做成的时候&#xff0c;那么不能做成的原因就会不断的涌现出来&#xff0c;进而会让我们自己在谈判的时候…

20.3 OpenSSL 对称AES加解密算法

AES算法是一种对称加密算法&#xff0c;全称为高级加密标准&#xff08;Advanced Encryption Standard&#xff09;。它是一种分组密码&#xff0c;以128比特为一个分组进行加密&#xff0c;其密钥长度可以是128比特、192比特或256比特&#xff0c;因此可以提供不同等级的安全性…

【Unity实战】手戳一个自定义角色换装系统——2d3d通用(附项目源码)

文章目录 每篇一句前言素材开始切换头型添加更改颜色随机控制头型和颜色新增眼睛同样的方法配置人物的其他部位设置相同颜色部位全部部位随机绘制UI并添加点击事件通过代码控制点击事件添加颜色修改的事件其他部位效果UI切换添加随机按钮保存角色变更数据跳转场景显示角色数据 …

计算机考研 | 2009年 | 计算机组成原理真题

【计算机组成原理2009年真题43题-10分】 某计算机的CPU主频为500MHz&#xff0c;CPI为5(即执行每条指令平均需5个时钟周期)。假定某外设的数据传输率为0.5MB/s&#xff0c;采用中断方式与主机进行数据传送&#xff0c;以32位为传输单位&#xff0c;对应的中断服务程序包含18条…

Spring MVC的常用注解(设置响应篇)

目录 1.返回静态页面 2.返回数据 3.返回HTML代码片段 4.返回json 5.设置状态码 6.设置Header &#xff08;1&#xff09;.设置 Content-Type &#xff08;2&#xff09;.设置其他Header 推荐先看前篇博客Spring MVC的常用注解&#xff08;接收请求数据篇&#xff09; 接收…

火山引擎 ByteHouse:只需 2 个方法,增强 ClickHouse 数据导入能力

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 作为企业数字化建设的必备要素&#xff0c;易用的数据引擎能帮助企业提升数据使用效率&#xff0c;更好提升数据应用价值&#xff0c;夯实数字化建设基础。 数据导…

基于SpringBoot+Vue实现前后端分离的旅游网站系统

大家好✌&#xff01;我是Dwzun。很高兴你能来阅读我&#xff0c;我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结&#xff0c;还为大家分享优质的实战项目&#xff0c;本人在Java项目开发领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#x…

【网络安全 --- 任意文件上传漏洞靶场闯关 6-15关】任意文件上传漏洞靶场闯关,让你更深入了解文件上传漏洞以及绕过方式方法,思路技巧

一&#xff0c;工具资源下载 百度网盘资源下载链接地址&#xff1a; 百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可享受免费存储空间https://pan…

【LeetCode刷题日志】88.合并两个有序数组

&#x1f388;个人主页&#xff1a;库库的里昂 &#x1f390;C/C领域新星创作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏✨收录专栏&#xff1a;LeetCode 刷题日志&#x1f91d;希望作者的文章能对你有所帮助&#xff0c;有不足的地方请在评论区留言指正&#xff0c;…

markMan(马克鳗)前端标注工具

马克鳗一款很好用的标注、测量工具&#xff0c;前端必备神器。当需求给我们的原型没有标注颜色&#xff0c;尺寸数据&#xff0c;我们就可以用马克鳗自己标出来。 1.进入官网进行下载 官网网址&#xff1a;http://www.getmarkman.com/ 功能演示&#xff1a; 打开markMan需要拖…

企业金蝶KIS软件服务器中了locked勒索病毒怎么办,勒索病毒解密

最近一段时间&#xff0c;网络上的locked勒索病毒又开始了新一波的攻击&#xff0c;给企业的正常生产生活带来了严重影响。经过最近一段时间云天数据恢复中心对locked勒索病毒的解密&#xff0c;为大家整理了以下有关locked勒索病毒的相关信息。近期locked勒索病毒主要攻击金蝶…

Xamarin.Forms更改AndroidManifest.xml导致错误:没有兼容的代码在线程上运行

想在APP中加一个打开摄像头的功能&#xff0c;按照该博主的方法&#xff1a;https://blog.csdn.net/zhenweied09/article/details/82287761 设置好后&#xff0c;再运行就出现上图的错误&#xff0c;于是查找原因&#xff0c;定位到是更改AndroidManifest.xml文件导致的&#…

用软件模拟IPC的RTSP流,对接烟火识别算法服务,做实时的烟火检测、人员入侵检测、抽烟检测等算法

最近在研发烟火识别的算法&#xff0c;想要检验算法集成到视频分析服务之后的效果&#xff0c;发现线上的摄像机很难发现火情&#xff0c;有的很长时间都不会有检测的结果&#xff0c;于是我就需要用已经被检验过的视频文件&#xff0c;模拟一路IPC的RTSP流&#xff0c;来测试烟…

Spring@Lazy是如何解决构造函数循环依赖问题

Spring实例化源码解析之循环依赖CircularReference这章的最后我们提了一个构造函数形成的循环依赖问题&#xff0c;本章就是讲解利用Lazy注解如何解决构造函数循环依赖和其原理。 准备工作 首先创建两个构造函数循环依赖的类&#xff0c;TestA和TestB&#xff0c;代码如下&am…

MFC 重绘Button按钮,使用png、jpg图片贴图

使用MFC实现Button按钮实现png和jpg贴图功能&#xff0c;底部有实现代码的工程链接&#xff0c;免费下载 此工程使用了第三方库GDI 实现文件如下&#xff1a; CGdiPlusBitmap.h GdipButton.cpp GdipButton.h MemDC.h 一、在启动cpp里面增加GDI初始化与释放 Gdiplus::Gdiplus…

“2024中国信息通信展览会”促进全球通信领域交流合作的重要桥梁

2024中国国际信息通信展览会&#xff08;PT展&#xff09; China International PT Expo 时间:2024年9月25-27日 地点:北京.国家会议中心 主办单位&#xff1a; 工业和信息化部 协办单位&#xff1a; 中国通信标准化协会 中国通信企业协会 中国电信 中国移动 中国联通…

【Java每日一题】——第四十三题:编程用多态实现打印机.。分为黑白打印机和彩色打印机,不同类型的打印机打印效果不同。(2023.10.30)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

[Unity][VR]透视开发系列4-解决只看得到Passthrough但看不到Unity对象的问题

【视频资源】 视频讲解地址请关注我的B站。 专栏后期会有一些不公开的高阶实战内容或是更细节的指导内容。 B站地址: https://www.bilibili.com/video/BV1Zg4y1w7fZ/ 我还有一些免费和收费课程在网易云课堂(大徐VR课堂): https://study.163.com/provider/480000002282025/…