降维(Dimensionality Reduction)
我们假设数据能够在低维空间被表示
高维数据在低维空间的表示是更加高效的。
SVD 示例
r 表示保留的特征值的数量
压缩/降低尺寸
行, 列,不更新 - 随机访问一行数据,很少的错误时可以接受的
如下的矩阵其实是个二维矩阵,我们通过缩放
矩阵的秩
- 什么是矩阵 A 的秩?A 的线性独立列数
- 例子:
秩是可以降维
我们可以通过
降维的目的
- 数学上是发现数据中的轴
- 发现隐藏的联系和主题:比如经常一同出现的单词等
- 移除相似和噪声特征:并不是所有单词都是有用的
- 数据解释和可视化
- 更容易处理和存储数据:(找到规律,压缩数据量)
降维的描述
与用两个坐标表示每一个点不同,我们用轴上的坐标表示每一个点(对应红线上点的位置)。
通过这样做,我们会产生一些错误,因为这些点并不完全在直线上(信息损失),需要我们考虑我们是否可以接受这部分信息损失。
SVD
奇异值的值必然为正
SVD 的分类
标准 SVD(无失真) | 近似 SVD |
---|---|
![]() |
![]() |
SVD 的介绍
变量(维数)较多,增加了分析问题的复杂性。
数据丰富但知识贫乏:实际问题中,变量之间可能存在一定的相关,因此,多变量中可能存在资讯的重叠。
人们自然希望通过克服相关、重叠性,用较少的变量来代替原来多的变量,而这种代替可以反映原来多个变量的大部分资讯,这实际上是一种“降维”的思想。
降维方法汇总
特征值与特征向量
- 设
是 阶矩阵,如果数 和 n 维非零列向量使关系式 成立 - 则称
是方阵 A 的特征值,非零向量 x 称为 A 的对应特征值的特征向量。 - 一般求解方法
降维方法
- PCA(主成分分析,Principal-Component Analysis)
- LDA(线性判别分析)
- 因子分析
- SVD(奇异值分解,Singular-Value Decomposition)
- CUR 分解
SVD(奇异值分解,Singular-Value Decomposition)
矩阵符号 | 矩阵名称 | 矩阵描述 |
---|---|---|
输入数据矩阵 | m * n 维 | |
左奇异矩阵 | m * r 维,正交矩阵, |
|
奇异值对角矩阵 | r * r 维,r 是矩阵 A 的秩,只有对角线上有值,其他元素均为 0 | |
右奇异矩阵 | n * r 维,正交矩阵, |
Notes:奇异值分解的信息下降是非常快的,基本上前 100 个奇异值就可以表征大多数的数据。
SVD 图示
![]() |
![]() |
---|
奇异值求解
我们通过简单分析可以知道
和 是对称矩阵
- 我们利用上面的(1-1)式来进行特征值分解,得到的特征矩阵就是 U
- 通过上面的(1-2)式来进行特征值分解,得到的特征矩阵就是 V
- 对
或者 中的特征值开方,可以获得所有的奇异值
SVD 计算示例
求解特征值要从大到小排列
矩阵名 | 矩阵值 | 特征值 | 特征矩阵 |
---|---|---|---|
求解奇异值为:
SVD 的性质
我们通常可以将一个实数矩阵 A 按照分解为
:唯一 - U,V:列正交
,I 是单位矩阵 - 列是正交单位向量
:对角矩阵:对角值(奇异值)为正,并以降序排列
SVD 的例子的解释(Users to Movies)
- U:“User to Concept”相似度矩阵
- 第一列:SciFi-concept
- 第二列:Romance-concept
: - 第一对角值:“strength” of the SciFi-concept
- 对角值:“strength” of each concept
- V:“movie-to-concept”相似度矩阵
SVD 的向量理解
- 不使用二维(x, y)来描述一个点,而是使用一个点 z 来描述这个点。
- 点的位置是在向量 v1 上的
- 如何选择 v1:最小化 reconstruction errors(我们选择使用欧氏距离)
最小化 reconstruction errors
SVD 目标:最小化 reconstruction errors
如何被认为是没有了,下降结束了?设置最小的奇异值为 0
- 得到 SVD 后的近似矩阵(将最小的奇异值设置为 0 和 U、V 中对应的行和列置为 0,重新做乘法得到新的矩阵)
SVD 向量理解例子:Users to Movies
SVD - 最低秩近似
定理:如果
- 什么是最好?B 在
的时候是 的解
引理
当 M = P Q R 是 M 的 SVD 的时候
引理的证明
是 1,如果 k=n,不然为 0 - P 是列正交矩阵,R 是正交矩阵,Q 是对角矩阵
- 我们想要的是最小化
- 解决方案就是令
并且其他
定理的说明
为什么将
- 向量
和 是单位长度,所以 是用来调整他们的 - 所以让
成为 0 可以导致更少的损失
我们应该保持多少
SVD 算法的复杂度
- 计算 SVD 的复杂度:
- 但是如果我们只想知道奇异值或者前 k 个奇异值,或者矩阵是稀疏矩阵,那么复杂度会大大下降
SVD 和特征分解的关系
SVD 角度:
特征分解的角度:
- A 是对称的
都是正交矩阵 都是对角的
案例:如何查询
查找类似这个矩阵的用户:将查询映射到“概念空间”中-怎么做?
![]() |
![]() |
---|
- user q:
- user d:
![]() |
![]() |
---|
观察:被评级为“Alien”,“Serenity”的用户 d 与被评级为“Matrix”的用户 q 相似,尽管 d 和 q 的共同点为零!
SVD 的效果
CUR 分解
目标:将矩阵 A 解释为 C,U,R,使得
选择行和列的方式
- 尽管我们是随机的选择行和列,但是我们还是保留了对于重要的行和列的权重
- 行和列的权重计算:
- 我们按照概率
选择行 - 我们按照概率
- 归一化处理:将所有的元素都是除以
(行)、 (列)
CUR 对列(行)进行取样
以列为例,行也是相似的
输入:矩阵
输出:
算法过程:
- 对于
- 对于
,以一列为例 - 选择
满足分布 - 计算
- 选择
请注意,这是一种随机算法,同一列可以多次采样
计算 U
U 是一个
首先计算 W,我们让 W 是列 C 和行 R 的交集,并且计算出 W 的 SVD 表示为
然后计算
是一个对角矩阵 - 他的 Moore-Penorse inverse 满足:
如果 - 0 如果
然后:
- 非零奇异值的倒数:
是伪逆
为什么伪逆是有效的
- X、Y 正交矩阵,
是对角矩阵 - 因此,如果 W 是非奇异矩阵,伪逆矩阵是真的逆矩阵
CUR 是可以被证明是 SVD 的一个很好近似
CUR 的优点和缺点
优点
- 很好计算:由于基向量是实际的列和行
- 稀疏矩阵:由于基向量是实际的列和行
缺点
- 重复的列和行:大量的列将被多次采样
如何避免重复
- 方案一:直接抛弃
- 方法二:用重复项的平方根缩放(乘)列/行
SVD 和 CUR
简单的实验
DBLP bibliographic data
- Author-to-conference 的大稀疏矩阵
:作者 i 在会议 j 上发表的论文数量 - 428k 个作者(列),3659 会议(行)
- 非常稀疏
DBLP 的结果
线性假设
SVD 只能用于线性投影:低维线性投影,保持欧式距离
非线性方法:Isomap
- 数据位于一个低维的非线性曲线
- 使用距离度量对应的形状