首页 > 编程语言 >降维算法: 奇异值分解SVD

降维算法: 奇异值分解SVD

时间:2023-03-12 12:33:27浏览次数:47  
标签:SVD 矩阵 降维 算法 分解 文档 数据

动动发财的小手,点个赞吧!

1. 为什么降维

总所周知,在低维下,数据更容易处理,但是在通常情况下我们的数据并不是如此,往往会有很多的特征,进而就会出现很多问题:

  1. 多余的特征会影响或误导学习器
  2. 更多特征意味着更多参数需要调整,过拟合风险也越大
  3. 数据的维度可能只是虚高,真实维度可能比较小
  4. 维度越少意味着训练越快,更多东西可以尝试,能够得到更好的结果
  5. 如果我们想要可视化数据,就必须限制在两个或三个维度上

因此,我们需要通过降维(dimensionality reduction)把无关或冗余的特征删掉。

  • 现有降维方法:

2. SVD 概述

奇异值分解(Singular Value Decomposition)简称SVD,主要作用是简化数据,提取信息。

利用SVD实现,我们能够用小得多的数据集来表示原始数据集。这样做,实际上是去除了噪声和冗余信
息。当我们试图节省空间时,去除噪声和冗余信息就是很崇高的目标了,但是在这里我们则是从数据中
抽取信息。基于这个视角,我们就可以把SVD看成是从有噪声数据中抽取相关特征

  • SVD是如何从这些充满着大量噪声的数据中抽取相关特征呢?

SVD的公式:

这个公式中, U 和 V 都是正交矩阵,即:

原始数据集A是一个m行n列的矩阵,它被分解成了三个矩阵,分别是:

这个公式用到的就是矩阵分解技术。在线性代数中还有很多矩阵分解技术。矩阵分解可以将原始矩阵
表示成新的易于处理的形式,这种新形式是两个或多个矩阵的乘积。

不同的矩阵分解技术具有不同的性质,其中有些更适合于某个应用,有些则更适合于其他应用。最常
见的一种矩阵分解技术就是SVD。

  • Example

  • Example

3. SVD 的应用

3.1. 信息检索

最早的SVD应用之一就是信息检索。利用SVD方法为隐形语义索引(Latent Semantic Indexing,LSI)或者隐形语义分析(Latent Semantic Analysis,LSA)。

在LSI中,一个矩阵是由文档和词语组成的。当我们在该矩阵上应用SVD时,就会构建出多个奇异值。这些奇异值代表了文档中的概念或主题,这一特点可以用于更高效的文档搜索。在词语拼写错误时,只基于词语存在与否的简单搜索方法会遇到问题。简单搜索的另一个问题就是同义词的使用。这就是说,当我们查找一个词时,其同义词所在的文档可能并不会匹配上。如果我们从上千篇相似的文档中抽取出概念,那么同义词就会映射为同一概念。 这样就可以大大提高文档搜索的效率。

3.2. 推荐系统

SVD的另外一个应用就是推荐系统。也是目前SVD最主要的一个应用简单版本的推荐系统能够计算项或者人之间的相似度。更先进的方法则先利用SVD从数据中构建一个主题空间,然后再在该空间下计算其相似度。

本文由mdnice多平台发布

标签:SVD,矩阵,降维,算法,分解,文档,数据
From: https://www.cnblogs.com/swindler/p/17207977.html

相关文章

  • 字符串匹配之KMP算法中的pnext表
    pnext表的分析上篇我们提到了最后是构建一个pnext表,记录着每个字符匹配需要移动的长度的位置信息,接着上篇的内容,我们来分析下pnext表的构造。还是举个栗子:ababcabcacb......
  • Qz学算法-数据结构篇(排序算法--冒泡、选择)
    排序算法排序的概念排序也称排序算法(SortAlgorithm),排序是将一组数据,依指定的顺序进行排列的过程分类排序的分类:内部排序:指将需要处理的所有数据都加载到内部存储器中进......
  • m通信系统中基于相关峰检测的信号定时同步算法的FPGA实现
    1.算法描述       定时同步方法主要分为基于数据辅助和非数据辅助两类。前者是在发送有效数据前发送一段具有某种特征的训练或导频符号,接收端根据符号特征建立同步......
  • 数据结构与算法2
    树的术语及定义          实现  节点与引用,程序         ......
  • 对排序算法稳定性的理解
    之前上课提到排序算法的稳定性,知道大体是个什么意思,但是具体的意义依旧不清楚,因此记录一下。定义 排序之后让相同的值维持相同的次序意义 与具体需求有关,如果只是单纯......
  • 算法探索_缺失的第一个正数
    问题描述:给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例 1:输入:[1,2,0]输出:3示例 2:输入:[3,4,-1,1]输出:2示例 3:输入:[7,8,9,11,12]输......
  • 算法探索_搜索旋转排序数组
    问题描述:假设按照升序排序的数组在预先未知的某个点上进行了旋转。(例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个......
  • 系统架构设计师考试知识点整理-4:死锁问题、银行家算法、管程与线程
    死锁问题1.死锁是指多个进程之间相互等待对方的资源,而在得到对方资源之前又不释放自己的资源所造成的循环等待的现象。2.死锁产生的根本原因在于系统提供的资源少于并发进程......
  • 每日算法 230311
    题目面试题17.05.字母与数字难度中等153给定一个放有字母和数字的数组,找到最长的子数组,且包含的字母和数字的个数相同。返回该子数组,若存在多个最长子数组,返回左端......
  • 线性回归算法
    1.算法原理y=w*x+b+εloss=Σ(w*xi+b-yi)2w'=w-lr*(loss对w求偏导)      #梯度下降算法b'=b-lr*(loss对b求偏导)       #梯度下降算法 2.......