PCA 和 SVD

协方差矩阵

在上一篇 最小二乘法 的末尾提到了协方差矩阵以及用它来拟合,这里先再次回顾。

我们来观察一下:

假设有一堆点

,如果我们想要看这堆点的分散程度,一个办法是我们找出过质心
的直线 l = m + tv, 我们把点投影在直线l上,这些点的投影
就可以展示出来点在这个方法的分散程度。在不同的方向上点的投影的分散程度是不一样的,比如如果点的分布与直线比较一致的话,那么投影下来的点也会很分散,另一种情况就是点的分布和直线刚好垂直,这样点就会分得不是很开。

我们可以用式子表示出来投影的点在直线上的方差:

点在直线上的投影:

代回 var(l):

其中

, 这个矩阵又叫做 散布矩阵(scatter matrix).

S也就是协方差矩阵C的 n 倍:

,所以其实协方差矩阵也可以用来很好的展示点的分散程度。有了这个结论,我们先来看 PCA.

PCA Principal component analysis - 主成分分析

PCA 是很重要的概念,不仅在 CG 中, 在 ML 中也有它的一席之地。正如 PCA 的名称一样, PCA做的事情是如果给我们一堆数据,它可以帮我们分析出最主要的部分。

如果给我们一堆 2d 的点, PCA 可以帮我们找出距离这些点最近的直线,比如下图的 x' 轴。

如果给我们一堆 3d 的点, PCA 可以帮我们找出最能代表这些点的平面:

PCA 的很大一个用途是可以帮我们找 bounding box,这样可以做一些快速的相交测试,毕竟 ray-box-intersect 应该比 ray-object-intersect 简单许多。 而 PCA 可以给我们最紧密的 bounding box,比如下图:

PCA 当然还有许多其它的用途。

有第一部分的结论:

散布矩阵

可以用来很好的展示点的分散程度.

因为

, 所以S是一个对称矩阵,所以 S 可以写成:
, 其中
当然就是特征矩阵,如果我们将特征值排序:
,那么对应的特征向量,
就是最主要的成分。

上述过程就是求 PCA 的过程:

  • 算出质心 :

  • :
  • 散布矩阵 :
    其中 Y 的列为
  • 特征分解 :
  • 特征值排序 :
  • 特征向量排序 :
  • 取出我们需要的部分

看下图例子:

左边,点是没有一个特别的分布方向的,得到的散布矩阵会像这样:

会跟
非常接近。

右边,点有一个主要的分布方向,得到的散布矩阵会像这样:

就会十分接近与0.

PCA 的另一个常见的用途, CG 或者 ML 中,那就是降维。也就像最上面举的例子,2d 变直线, 3d 变平面, 比如在 ML 中,我们的特征维度太多了,那么我们当然就可以做 PCA, 找出我们想要的‘主要成分’。

PCA的一些计算技巧

如果 A 为 mxn 矩阵, m >> n, 假设 m = 16k, n = 100, 那么

的维度为 16k x 16k, 如果我们来计算这个矩阵的特征值,特征向量会需要巨大的计算量。

另一方面:

的维度为 100 x 100, 如果我们已经有了
的特征值和特征向量,那么
,式子两边同时乘以 A,有:

所以

的特征向量可以通过 计算
的特征向量,再乘以A得到,这个技巧在A的维度相差很大的时候会很有用。

SVD Singular value decomposition - 奇异值分解

第一次听到 ‘奇异值分解’ 也是觉得这个名字怪神秘的。其实一点也不神秘,奇异值分解就是对我们一般的 mxn 矩阵 A,我们可以把它分解成:

正交矩阵 x 对角矩阵 x 正交矩阵, 其中对角矩阵 Σ,上的对角线值

就叫做奇异值。

方形的矩阵奇异值分解:

长方形矩阵可以有两种分解方式:

下面这种要在对角阵中填一些0:

所有 3x3 矩阵可以分解成 旋转,缩放,旋转就是因为SVD:

SVD 的用途非常广泛。

已知

, 那么
:

所以 Ax=b 也可以立刻解出来了。

rank (A)

rank A 当然也就可以立即求出来了。

PCA

如果我们有了 Y矩阵 (Y 的列为

) 的SVD,也就是
, 那么散布矩阵
可以简化成:

首先,V 是旋转矩阵, 本身正交:

, 齐次,
是对角矩阵,其矩阵相乘结果也是对角矩阵,那么也就对应 PCA 中的
, 所以 U 的列向量也就是与特征向量对应的主成分。很有意思的结论。

形状变换

SVD 的另一运用,比如我们有以下形状,我们想通过旋转和位移,让独角兽尽量的靠近成狮子。当然它们比较对齐的时候,我们当然就是希望标注的点之间的距离尽量变小,也就是右图中我们连接红色和灰色的点所得到的距离尽量最小。

  • 狮子 :

  • 独角兽 :

假设旋转矩阵为 R, 位移为 t,那么我们需要最小化的是:

首先我们需要让它们的质心在同一位置,也就是:

也就是:

其次我们展开:

,我们需要最小化的是:

其中:

是一个标量,因为
是 1xd, R 是 dxd,
是 dx1,然后对于任何标量,我们有
, 所以:

所以:

其中

是固定的,所以我们最小化上式,也就是最大化:

也就是我们需要最大化:

观察矩阵:

可得:

也就是我们需要最大化矩阵

的迹。

矩阵的迹有性质 tr(AB) = tr(BA), 所以:

是固定的,那么我们需要找到的就是一个R来最大化
,假设我们有
,我们将 S 奇异值分解

V,R,U都是正交矩阵,所以

也是正交阵,所以 M 的列向量满足:
:

又是对角阵,所以:

所以当

均为1时迹最大,也就是 M = I,那么我们可以知道:

参考:

- <PCA and SVD> by Olga Sorkine-Hornung

旋转成分矩阵结果分析_PCA(主成分分析) 和 SVD (奇异值分解)相关推荐

  1. 旋转成分矩阵结果分析_30分钟学会PCA主成分分析

    PCA主成分分析算法(Principal Components Analysis)是一种最常用的降维算法.能够以较低的信息损失(以样本间分布方差衡量)减少特征数量. PCA算法可以帮助分析样本中分布差 ...

  2. SPSS因子分析中成分矩阵、旋转成分矩阵和成分得分系数矩阵的区别

  3. matlab矩阵及其基本运算—特征值分解和svd奇异值分解

    特征值分解 函数 eig eig: Find eigenvalues and eigenvectors 格式 d = eig(A)         %求矩阵A的特征值d,以向量形式存放d. d = e ...

  4. pca各个向量之间的相关度_PCA主成分分析

    降维就是一种对高维度特征数据预处理方法.降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的.降维的算法有很多,比如奇异值分解(SVD).主成分分析(PC ...

  5. 基于相关性分析和主成分分析的变量筛选方法

    基于相关性分析和主成分分析的变量筛选方法 https://www.zybuluo.com/notmylove/note/1508052 主成分分析法 指标筛选 既然在课程专题四中讲到主成分分析法,那么 ...

  6. 业务数据分析中可能用到的简单的数据挖掘方法——相关性分析、主成分分析、因子分析

    业务数据分析中可能用到的简单的数据挖掘方法--相关性分析.主成分分析.因子分析 相关性分析 相关性分析通过相关系数来描述两个变量之间的相关性程度. 通过相关系数判断两者会不会相互影响,影响是正相关还是 ...

  7. 算法练习day8——190326(猫狗队列、转圈打印矩阵、旋转正方形矩阵、反转单向双向链表、数N的加法组合)

    1.猫狗队列 [题目] 宠物. 狗和猫的类如下: public class Pet {private String type;public Pet(String type) {this.type = ...

  8. NYOJ 598 旋转圆柱矩阵

    旋转圆柱矩阵 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 将圆柱体的侧面展开能得到一个m*n的矩形.这是姑且看成一个01矩阵, 我们需要通过特定的移动得到另一个矩阵( ...

  9. 数据结构与算法之转圈打印矩阵和旋转正方形矩阵

    数据结构与算法之转圈打印矩阵和旋转正方形矩阵 目录 转圈打印矩阵 旋转正方形矩阵 1. 转圈打印矩阵 题目描述 代码实现 public class Code_PrintMatrixSpiralOrde ...

最新文章

  1. AAAI 2021: 微调对小样本学习究竟起何作用?搜索或是解决方案
  2. 修改Centos7默认yum源为阿里云源
  3. matlab中句点,matlab入门学习(一)
  4. HDU 3488 KM
  5. 移动云帮我养出了一片致富鱼塘
  6. 截取tomat指定时间的脚本
  7. SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum
  8. 随机数相加等于固定值_excel随机函数出来的数相加等于一个想要的固定值
  9. jmeter登录配置
  10. 安装genymotion模拟器
  11. 大学十年(一个程序员的路程)(林锐博士)《1----9》【林锐的大学10年】
  12. 23、使用OpenCV和NCNN进行人物抠图并将背景设置成透明色
  13. 2021佛山高考成绩查询,2021佛山市地区高考成绩排名查询,佛山市高考各高中成绩喜报榜单...
  14. AUTOCAD二次开发-----删除一个图层里面的所有对象
  15. Mysql通过binlog恢复误删数据
  16. Windows10下Latex缺少sty文件时的安装方法
  17. linux下tar.bz2文件的 解压缩方法
  18. 安卓仿苹果音量调节_android自定义view仿照MIUI中音量控制效果
  19. Pandas 的melt的使用
  20. 第十二届“挑战杯”QG学子载誉归来,荣获全国决赛“一等奖”

热门文章

  1. 推荐系统fmlr_推荐系统实践 0x0c FM系列(LR/FM/FFM)
  2. c json保存整型数组_命令行JSON解析神器jq
  3. Bash脚本删除相对路径下小于指定大小的文件
  4. java l1 l2缓存,Java 两级缓存框架
  5. lc滤波电路电感电容值选择_电感器变压器选型与应用
  6. js加密代码的分析[转]
  7. 福大软工—第七次作业需求分析
  8. 逆序枚举时常犯的一个错误
  9. 支持向量机(SVM)复习总结
  10. Oracle安装-------实例化EM 配置文件时出错问题 ( 转 )