首页 > 编程语言 >这是我见过最通俗易懂的SVD(奇异值分解)算法介绍

这是我见过最通俗易懂的SVD(奇异值分解)算法介绍

时间:2024-10-13 21:33:20浏览次数:10  
标签:特征值 特征向量 SVD 矩阵 通俗易懂 算法 分解 奇异

线性代数是机器学习领域的基础,其中一个最重要的概念是奇异值分解(SVD),本文尽可能简洁的介绍SVD(奇异值分解)算法的基础理解,以及它在现实世界中的应用。

SVD是最广泛使用的无监督学习算法之一,它在许多推荐系统和降维系统中居于核心位置,这些系统是全球公司如谷歌、Netflix、Facebook、YouTube等的核心技术。

简单来说,SVD是将一个任意矩阵分解为三个矩阵。所以如果我们有一个矩阵A,那么它的SVD可以表示为:

A是矩阵,U是的正交矩阵,是的非负对角矩阵,是的正交矩阵。

U也被称为左奇异向量,S为奇异值,V为右奇异向量。

带维度的奇异值分解:

用矩阵表示奇异值分解:

 

我们通常将具有较大特征值的向量排列在前,而较小特征值的向量则排在后面。

特征值与向量的对应关系:

与特征值分解相比,奇异值分解可以应用于非方阵。在SVD中,U和 V 对于任何矩阵都是可逆的,并且它们是正交归一的,这是我们所喜爱的特性。虽然这里不进行证明,但我们可以告诉你,奇异值比特征值在数值上更稳定。

为了更好地理解,我们通过一个例子演示SVD。

假设我们有非方阵A:

我们计算矩阵与转置矩阵的乘积,有:

 

求解的特征值和特征向量:

 

 

求解的特征值和特征向量:

 

奇异值是正特征值的平方根,即5和3。因此非方阵A的SVD分解为:

SVD分解证明

最后一个方程等价于求矩阵的特征向量,我们只需将所有特征向量放入一个矩阵中,矩阵S则是包含特征值的对角矩阵。

SVD的另一种表述

SVD降维

SVD应用

1.图像降维
2.特征脸
3.降低噪声

结论

我真的觉得奇异值分解(SVD)被低估了。它是线性代数中一个非常重要的基础概念,而且它的应用非常酷!相信我,我们看到的只是 SVD 众多用途中的一小部分。有什么问题,欢迎讨论!

原文链接:这是我见过最通俗易懂的SVD(奇异值分解)算法介绍

标签:特征值,特征向量,SVD,矩阵,通俗易懂,算法,分解,奇异
From: https://www.cnblogs.com/rainbow70626/p/18463031

相关文章

  • 【算法】动态规划:从斐波那契数列到背包问题
    【算法】动态规划:从斐波那契数列到背包问题文章目录【算法】动态规划:从斐波那契数列到背包问题1.斐波那契数列2.爬楼梯3.零钱转换Python代码4.零钱兑换II5.组合数dp和排列数dp6.为什么动态规划的核心思想计算组合数的正确方法代码实现为什么先遍历硬币再遍历金额可以......
  • 【算法】树状数组
    1.算法简介先来看一个很现实的问题:就拿[luogu]P3372【模板】线段树1这道题为例。按常规做法,应该是用普通线段树+\(lazytag\)即可,但这样做代码较长,达到了\(118\)行。而如果用树状数组去做,只用\(63\)行就能搞定,用时更短,代码也很好理解。以下是数据对比:很明显,在两......
  • 【算法】莫队
    1.算法简介莫队算法有很多种:普通莫队,带修莫队,回滚莫队,树上莫队,二维莫队,莫队二次离线。莫队算法主要用于解决支持快速插入,删除贡献的区间优化问题。具体的,对于要求解贡献的区间\([l,r]\)来说,我们可以把以前求解过的区间\([L,R]\)的贡献保留下来,并通过移动\(L,R\),同时插入,......
  • 算法复杂度
    一.复杂度的概念算法编写成可执行程序后,需要耗费时间空间资源,衡量一个算法的好坏是从时间和空间两个维度衡量。时间复杂度衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间。二.时间复杂度算法的时间复杂度是一个函数T(N),他定义了该算法运行的时间,时......
  • 代码随想录算法训练营 | 198.打家劫舍,213.打家劫舍II,337.打家劫舍III
    198.打家劫舍题目链接:198.打家劫舍文档讲解︰代码随想录(programmercarl.com)视频讲解︰打家劫舍日期:2024-10-13想法:dp[i]到第i个房子时能偷的最多的钱;递推公式:是上上一栋房子的dp[i-2]加上这栋房子的钱nums[i]大还是上一家邻居偷的钱dp[i-1]的大;初始化因为有i-2;所以初始化......
  • C/C++贪心算法
    C++中的贪心算法一、基本概念贪心算法(又称贪婪算法,GreedyAlgorithm)是指,在对问题求解时,总是做出在当前看来是最好的选择,不从整体最优上加以考虑,所做出的仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题能产生整体最优解......
  • Mysql(2)—SQL语法详解(通俗易懂)
    一、关于SQL1.1简介SQL(StructuredQueryLanguage,结构化查询语言)是一种用于管理关系型数据库的标准编程语言。它主要用于数据的查询、插入、更新和删除等操作。SQL最初在1970年代由IBM的研究人员开发,旨在处理关系数据模型。MySQL支持SQL,用于对数据库进行查询、更新和管理。......
  • 基于Spring Boot+Vue的医疗健康的便民服务平台系统的设计与实现(协同过滤算法、实时聊
    ......
  • day05-Lambda、方法引用、算法、正则表达式
    day05-算法和数据结构一、Arrays类接下来我们学习的类叫做Arrays,其实Arrays并不是重点,但是我们通过Arrays这个类的学习有助于我们理解下一个知识点Lambda的学习。所以我们这里先学习Arrays,再通过Arrays来学习Lamdba这样学习会更丝滑一些_.1.1Arrays基本使用我们先认识一下Arr......
  • 基于牛顿拉夫逊算法优化长短期记忆网络结合注意力机制(NRBO-LSTM-Attention)(多输入多
    文章目录效果一览文章概述部分源码参考资料效果一览文章概述基于牛顿拉夫逊算法优化长短期记忆网络结合注意力机制(NRBO-LSTM-Attention)(多输入多输出)(多输入多输出)MATLAB完整源码和数据纯手工制作,代码质量极高,注释清晰,excel数据,方便替换1.data为数据集,10个......