7.4.7 2DPCA

回顾PCA方法本质是求向量 α\mathbf{\alpha}α 使所有样本与之内积最大,样本只能是向量数据。

u1=argmaxα∑ai∈A(αTai)2\mathbf{u}_1 = argmax_{\mathbf{\alpha}} \sum_{\mathbf{a}_{i} \in A} (\mathbf{\alpha}^T\mathbf{a}_i)^2 u1​=argmaxα​ai​∈A∑​(αTai​)2

如果样本是图像,则样本都是矩阵数据,怎么推广PCA使之能适用矩阵数据呢?一种最简单的方法是把矩阵拉伸为向量,然后采用PCA。拉伸方法很简单,把矩阵所有列向量拼接为一个向量即可。例如矩阵有两个列向量:(1,2),(3,4)(1,2),(3,4)(1,2),(3,4), 则拉伸为一个向量是 (1,2,3,4)(1,2,3,4)(1,2,3,4) 。这个方法很直观,但缺点是当矩阵尺寸很大时,拉伸向量维度很高,进行特征值分解或奇异值分解都比较困难,难以获得精确的主成分。那能不能直接从矩阵计算呢,显然是可以的。

样本都是向量时,

∑ai∈A(aiTα)2=∑ai∈A(αTai)(aiTα)=αT[∑ai∈A(aiaiT)]α=αTAATα\sum_{\mathbf{a}_{i} \in A} (\mathbf{a}^T_{i}\mathbf{\alpha})^2 \\ = \sum_{\mathbf{a}_{i} \in A} (\mathbf{\alpha}^T\mathbf{a}_{i})(\mathbf{a}^T_{i}\mathbf{\alpha}) \\ = \mathbf{\alpha}^T [\sum_{\mathbf{a}_{i} \in A} (\mathbf{a}_{i}\mathbf{a}^T_{i})] \mathbf{\alpha}\\ = \mathbf{\alpha}^T AA^T \mathbf{\alpha}\\ ai​∈A∑​(aiT​α)2=ai​∈A∑​(αTai​)(aiT​α)=αT[ai​∈A∑​(ai​aiT​)]α=αTAATα

显然主成分 α\mathbf{\alpha}α 是矩阵 AATAA^TAAT 的特征向量,该矩阵为协方差矩阵。

如果样本都是矩阵 AiA_iAi​,上面公式核心 (aiTα)2(\mathbf{a}^T_{i}\mathbf{\alpha})^2(aiT​α)2 可改为 Ji=∥AiTα∥2J_i = \|A^T_{i}\mathbf{\alpha}\|^2Ji​=∥AiT​α∥2 则

J=∑iJi=∑Ai∈A∥AiTα∥2=∑Ai∈A(AiTα)T(AiTα)=∑Ai∈AαTAiAiTα=αT[∑Ai∈A(AiAiT)]αJ = \sum_i J_i = \sum_{A_{i} \in A} \|A^T_{i}\mathbf{\alpha}\|^2 \\ = \sum_{A_{i} \in A} (A^T_{i}\mathbf{\alpha})^T(A^T_{i}\mathbf{\alpha})\\ = \sum_{A_{i} \in A} \mathbf{\alpha}^TA_{i}A^T_{i}\mathbf{\alpha}\\ = \mathbf{\alpha}^T [\sum_{A_{i} \in A} (A_{i}A^T_{i})] \mathbf{\alpha} J=i∑​Ji​=Ai​∈A∑​∥AiT​α∥2=Ai​∈A∑​(AiT​α)T(AiT​α)=Ai​∈A∑​αTAi​AiT​α=αT[Ai​∈A∑​(Ai​AiT​)]α

令 S=∑Ai∈A(AiAiT)S = \sum_{A_{i} \in A} (A_{i}A^T_{i})S=∑Ai​∈A​(Ai​AiT​) 为对称矩阵,可称为广义协方差矩阵。

主成分 α\mathbf{\alpha}α 是矩阵 SSS 的特征向量,则前 kkk 个主成分即是使 JJJ 最大的 kkk 个投影方向。

我们来分析主成分的几何意义
Ji=∥AiTα∥2=∑i(aiTα)2J_i = \|A^T_{i}\mathbf{\alpha}\|^2 \\ = \sum_i (\mathbf{a}^T_{i}\mathbf{\alpha})^2 Ji​=∥AiT​α∥2=i∑​(aiT​α)2
JiJ_iJi​ 是矩阵 AiA_{i}Ai​ 所有列向量投影平方和,则 JJJ 是所有矩阵 AiA_{i}Ai​ 的所有列向量投影平方和,即把矩阵看作列向量组,求所有列向量的投影,投影平方和最大的方向即为主方向,其本质和PCA一样!都是求向量组投影平方和最大值。

令矩阵 SSS 前 kkk 个主成分和特征值分别为 u1,⋯,uk\mathbf{u}_{1},\cdots,\mathbf{u}_{k}u1​,⋯,uk​ 和 σ1,⋯,σk\sigma_1,\cdots,\sigma_kσ1​,⋯,σk​ 。
则 vj=AiTuj\mathbf{v}_j = A^T_{i}\mathbf{u}_jvj​=AiT​uj​ 表示样本矩阵 AiA_{i}Ai​ 每个列向量在主方向 uj\mathbf{u}_juj​ 坐标值构成的向量,称为主成分分量。令矩阵 U=[u1,⋯,uk]U = [\mathbf{u}_{1},\cdots,\mathbf{u}_{k}]U=[u1​,⋯,uk​],则 V=[AiTu1,⋯,AiTuk]=AiTUV = [A^T_{i}\mathbf{u}_1,\cdots,A^T_{i}\mathbf{u}_k] = A^T_{i}UV=[AiT​u1​,⋯,AiT​uk​]=AiT​U 为样本 AiA_{i}Ai​ 前 kkk 个主成分分量,即样本矩阵 2DPCA 降维后的矩阵表示。利用样本矩阵 2DPCA 降维后的矩阵表示重构原样本矩阵为
AˉiT=VUT=∑jvjujT\bar A^T_{i} = VU^T = \sum_j \mathbf{v}_j \mathbf{u}^T_j AˉiT​=VUT=j∑​vj​ujT​

以上内容就是 2DPCA 的核心内容。实际计算过程中,计算广义协方差矩阵 S=∑Ai∈A(AiAiT)S = \sum_{A_{i} \in A} (A_{i}A^T_{i})S=∑Ai​∈A​(Ai​AiT​) 的特征值分解时,需先对其进行中心化。由于 2DPCA 本质是求所有列向量的投影平方和,故仅需对样本矩阵中列向量进行中心化。所以提出一种新的中心化方法,这种方法不同于提出 2DPCA 原始论文的方法。令所有样本矩阵的所有列向量的平均向量为
aˉ=1mn∑i,jaji其中aji是样本矩阵Ai的第j个列向量,n是样本数量,m是样本矩阵的列数\bar{\mathbf{a}} = \frac{1}{mn} \sum_{i,j} \mathbf{a}^i_j \\ 其中 \mathbf{a}^i_j 是样本矩阵 A_i 的第 j 个列向量,n 是样本数量,m 是样本矩阵的列数 aˉ=mn1​i,j∑​aji​其中aji​是样本矩阵Ai​的第j个列向量,n是样本数量,m是样本矩阵的列数

故中心化为 ajiˉ=aji−aˉ\bar{\mathbf{a}^i_j}= \mathbf{a}^i_j - \bar{\mathbf{a}}aji​ˉ​=aji​−aˉ 。

原始论文的中心化方法为,求样本矩阵的平均矩阵 Aˉ=1n∑iAi\bar A = \frac{1}{n} \sum_{i} A_iAˉ=n1​∑i​Ai​ ,样本中心化为 Aˉi=Ai−Aˉ\bar A_i = A_i - \bar AAˉi​=Ai​−Aˉ ,即对样本矩阵的每个列向量独立进行中心化。

以上是对列向量计算投影平方和,同理可对行向量计算投影平方和,原理完全一致,即令 Ji=∥Aiα∥2J_i = \|A_{i}\mathbf{\alpha}\|^2Ji​=∥Ai​α∥2 则

J=∑iJi=αT[∑Ai∈A(AiTAi)]αJ = \sum_i J_i = \mathbf{\alpha}^T [\sum_{A_{i} \in A} (A^T_{i}A_{i})] \mathbf{\alpha} J=i∑​Ji​=αT[Ai​∈A∑​(AiT​Ai​)]α

令 S=∑Ai∈A(AiTAi)S = \sum_{A_{i} \in A} (A^T_{i}A_{i})S=∑Ai​∈A​(AiT​Ai​) 为对称矩阵,可称为广义协方差矩阵。

主成分 α\mathbf{\alpha}α 是矩阵 SSS 的特征向量,则前 kkk 个主成分即是使 JJJ 最大的 kkk 个投影方向 ui\mathbf{u}_{i}ui​。令矩阵 U=[u1,⋯,uk]U = [\mathbf{u}_{1},\cdots,\mathbf{u}_{k}]U=[u1​,⋯,uk​],则 V=[Aiu1,⋯,Aiuk]=AiUV = [A_{i}\mathbf{u}_1,\cdots,A_{i}\mathbf{u}_k] = A_{i}UV=[Ai​u1​,⋯,Ai​uk​]=Ai​U 为样本 AiA_{i}Ai​ 前 kkk 个主成分分量,即样本矩阵 2DPCA 降维后的矩阵表示。利用样本矩阵 2DPCA 降维后的矩阵表示重构原样本矩阵为
Aˉi=VUT=∑jvjujT\bar A_{i} = VU^T = \sum_j \mathbf{v}_j \mathbf{u}^T_j Aˉi​=VUT=j∑​vj​ujT​

令所有样本矩阵的所有行向量的平均向量为
aˉ=1mn∑i,jajci其中ajci是样本矩阵Ai的第j个行向量,n是样本数量,m是样本矩阵的行数\bar {\mathbf{a}} = \frac{1}{mn} \sum_{i,j} \mathbf{a}^{ci}_j \\ 其中 \mathbf{a}^{ci}_j 是样本矩阵 A_i 的第 j 个行向量,n 是样本数量,m 是样本矩阵的行数 aˉ=mn1​i,j∑​ajci​其中ajci​是样本矩阵Ai​的第j个行向量,n是样本数量,m是样本矩阵的行数

故中心化为 ajciˉ=ajci−aˉ\bar {\mathbf{a}^{ci}_j} = \mathbf{a}^{ci}_j - \bar {\mathbf{a}}ajci​ˉ​=ajci​−aˉ 。

实际应用时,可先对样本矩阵进行列方向的 2DPCA 得到样本矩阵 VVV ,然后对 VVV 进行行方向的 2DPCA 得到样本矩阵 WWW 。

上面介绍的所有PCA方法有两点需要特别强调,第一,为什么需要先对数据进行中心化?中心化主要有两个目的,第一,使矩阵 AATAA^TAAT 是协方差矩阵,奇异值平方为属性方差,物理意义很明显。第二,就不是那么明显了,PCA主要目的是降维,利用少数几个主成分表示样本所有属性,所以前提是样本点云位于样本空间中的低维子空间,如果点云覆盖了整个样本空间,则不可降维,PCA就失去意义。点云形状本质上是由样本属性决定的,不可能通过中心化改变,中心化是样本减去均值向量,是平移操作即把空间原点移到点云中心,平移操作看似平凡,但确实能对点云降维。举个例子更能说明问题,假设三维空间中点云成一条直线,直线是一维的,所以其应该位于一维子空间中,但如果直线不通过空间原点,则该直线其实是位于二维子空间!只需要简单的平移操作,使空间原点位于直线上,则直线就变为一维!这就是平移的力量!

再强调下旋转操作的力量。如果同学对刚体运动比较了解,知道不管刚体运动如何复杂,都可以简化为平移和旋转复合运动。对数据点云的操作同样如此,可以采用平移和旋转。平移的力量已经展示了。旋转的力量就是PCA操作,PCA本质是就是旋转操作,根据公式 YT=UTAY^T = U^TAYT=UTA ,矩阵 UUU 是正交矩阵,就是对点云矩阵 AAA 的旋转操作。所以可见,PCA加上中心化预处理,本质上就是对点云进行了刚体运动:平移和旋转。注意没有进行形变操作如尺度变换,加上尺度变换就是白化,后面详细介绍。

平移操作有个比较麻烦的地方,不能用矩阵变换表示平移!根据奇异值分解,矩阵只能表示旋转和尺度变换操作,没有平移。但由于平移操作在物理学中十分重要,矩阵不能表示平移则会极大限制矩阵在物理学中的应用,为了使矩阵能表示平移,在数学上有个技巧,采用『齐次坐标』,增加一个维度就可以是矩阵『表示』平移操作。

第二点需要强调的是,对点云 AAA 进行PCA变换,样本点的顺序会对结果造成影响吗?矩阵 AAA 列向量是样本点向量,样本点顺序不同则矩阵 AAA 不同,所以表面上看可能会影响PCA结果。但前面指出,PCA本质上就是对点云进行了旋转操作,旋转由方差最大方向决定。样本方差与样本顺序无关,所以PCA结果不会受到样本顺序的影响。实际上,PCA核心是计算协方差矩阵的特征值,协方差为 AAT=∑ai∈AaiaiTAA^T=\sum_{\mathbf{a}_{i} \in A} \mathbf{a}_{i}\mathbf{a}^T_{i}AAT=∑ai​∈A​ai​aiT​ ,等于所有样本外积之和,与样本顺序无关,所以PCA结果不会受到样本顺序的影响。这个结论可以推广,对数据矩阵 AAA 的任何变换,一般来说,都与样本顺序无关,如果真的有关,则肯定哪里有问题。数据矩阵与样本顺序无关这个性质,是矩阵表示样本的一个简洁之处,是优点。但同时也是缺点,样本顺序一般会包含样本很多信息,比如如果样本是时间序列,即按时间顺序采样获得的样本,时间关系就包含在样本顺序里面。现在数据矩阵与顺序无关即数据矩阵不能表示时间关系,这样就会丢失很多信息,数据矩阵表示能力受限,这是矩阵论的一个致命缺陷,难以克服。例如图像用矩阵表示,表面上看,矩阵列向量是按图像的列对应排序,表示了图像顺序关系,但本质并没有,因为对图像矩阵的操作本质上是对列操作的集合,例如上面介绍的2DPCA,表面上是矩阵操作,本质是列操作。所以数据矩阵只能看作是样本的集合,集合是不考虑元素的顺序。

矩阵看成数据矩阵时,是列向量的集合;看成线性变换时,是个不可分割的整体,不能看成是列向量集合。矩阵乘法充分展示了这点 AB=A[b1,⋯,bn]=[Ab1,⋯,Abn]AB=A[\mathbf{b}_1,\cdots,\mathbf{b}_n]=[A\mathbf{b}_1,\cdots,A\mathbf{b}_n]AB=A[b1​,⋯,bn​]=[Ab1​,⋯,Abn​] ,矩阵 AAA 就是变换,是整体;矩阵 BBB 是列向量集合。

7.4.7 2DPCA相关推荐

  1. 2dpca的matlab代码,2DPCA人脸识别的matlab代码

    [实例简介] 很好用的2DPCA人脸识别的matlab代码 [实例截图] [核心代码] 2dpcamatlab └── 2dpcamatlab ├── CreateDatabase.m ├── orl ...

  2. 2DPCA的原理推导与实现

    文章首发于我的个人博客 1.前言 在基于PCA的人脸识别算法中,二维人脸图像要先转换为一维向量.这就导致人脸图像向量将达到高维空间,由于其协方差矩阵维度很高而且训练样本很少,因此很难评估协方差矩阵的准 ...

  3. 2DPCA以及增强的双向2DPCA详解

    如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢. 最近在做目标追踪的过程中用到了2DPCA变换,花了两天时间研究了下2DPCA的起源及其重要改进,在此稍作总结. 相关 ...

  4. 2DPCA人脸识别--python

    import os from numpy import * import numpy as np import cv2 import matplotlib.pyplot as plt from pyl ...

  5. 2DPCA—二维主成分分析详解及编程

    目录 一.为什么提出2DPCA(Why) 二.2DPCA数学公式(What) (一)模型 (二)策略(优化目标) (三)算法(如何计算投影向量) (四)特征提取和图像重构 三.2DPCA编程(How) ...

  6. 图像的 2DPCA 与 2D2DPCA 特征提取

    引言 众所周知,PCA(Principal Component Analysis) (也叫作 Karhunen-Loeve 变换)在模式识别和计算机视觉领域是一个经典的特征提取和数据降维的工具.而2D ...

  7. 2dlda人脸识别 matlab,利用2DPCA和2DLDA在ORL人脸数据库上做的人脸识别实验

    www.imdn.cn.html www.imdn.cn.txt 2DLDA.bmp 2DPCA结果.bmp ORL_2DPCA_2DLDA.m 基于DWT_2DPCA和KPCA的人脸识别.pdf o ...

  8. PCA与2DPCA及2D-2DPCA零基础理解(下)

    有小伙伴催了好久的这篇文章,我也是一拖再拖,PCA与2DPCA及2D-2DPCA零基础理解(上)已经发布了两年了,这几天由于疫情的原因,我专门找出时间来写这篇博文.以前感觉:怎样确定哪张人脸是属于哪个 ...

  9. 2DPCA、(2D)2PCA公式推导

    个人笔记,非教程 2DPCA2DPCA2DPCA 找到一个投影矩阵W,使数据X不用拉成一维就能投影得到低维表示Y Y=XWY=XWY=XW 投影后的协方差矩阵 S(Y)=YTY=WTXTXW=WTS( ...

最新文章

  1. javabean和EJB的区别
  2. QT开发(五十)——QT串口编程基础
  3. 21个深度学习调参技巧,一定要看到最后一个
  4. html背景幻灯片图片,CSS3全屏背景图像幻灯片
  5. C# 4.0 新特性之参数
  6. 你提交代码前没有校验?巧用gitHooks解决
  7. JeecgBoot轻松解决ERP项目复杂布局需求,JVXETable高性能行表格效果和项目案例
  8. (转)基于MVC4+EasyUI的Web开发框架经验总结(8)--实现Office文档的预览
  9. 盘点 2017 年度最受欢迎的十大 Linux 服务器发行版
  10. QTP自动化测试-点滴-步骤
  11. 安徽宣城职业技术学院引入USB Server远程管理加密狗
  12. springboot publish event 事件机制demo
  13. 分布式GNN系统环境配置
  14. 调查:听取当前用户的意见(并改进),是为什么?
  15. 求 Fibonacci 数列的前 20 项
  16. Vultr Debian系统如何重置ROOT管理员密码
  17. UltraEdit32常用快捷键
  18. 页面访问控制的3种方法
  19. 2020-08 前端技术汇总
  20. 频谱、能谱、功率谱、倍频程谱、1/3 倍频程谱

热门文章

  1. [转载].怎样在有限状态机中延时
  2. (五)Vue 面试真题演练
  3. Kafka集群环境搭建
  4. EnforceLearning-主动强化学习
  5. 解决Eclipse一直loading workbench无法启动的问题
  6. VTK读取序列化图像
  7. 不满俄欧“北溪-2”项目 美驻德大使威胁制裁德国企业
  8. Ionic3 通讯录索引的实现
  9. CloudCC CRM探讨如何建立完善的服务体系
  10. zookeeper leader选举机制