【学习笔记】K-L变换和PCA的区别

K-L变换和PCA的区别是什么?

学习模式识别,大家自然会想到这样一个并不重要的问题。老师们讲课时将这两个概念做了统一处理,wiki上也直接统一了词条。这样做的原因很好理解,大概即使它们有区别,也是极其细微的,是不需要纳入考虑的。之所以探究这个问题,更多的还是为了能加深对这些算法的理解。

 

=======================================================

 

先引述一种关于两者是否有区别的观点:

Simone Orcioni  · Università Politecnica delle Marche
None.
Take advantage of this link:
http://en.wikipedia.org/wiki/Karhunen%E2%80%93Lo%C3%A8ve_theorem

"The above expansion into uncorrelated random variables is also known as the Karhunen–Loève expansion or Karhunen–Loève decomposition. The empirical version (i.e., with the coefficients computed from a sample) is known as the Karhunen–Loève transform (KLT), principal component analysis, proper orthogonal decomposition (POD), Empirical orthogonal functions (a term used in meteorology and geophysics), or the Hotelling transform."

他引述wiki对KL理论(KL转换)的介绍“...以上对不相关随机变量的分解也被称为KL分解。它的实证版本(换言之,用到了通过样本求得的参数)被称为KLT、PCA、特征正交分解(POD)、经验正交函数(用于气象学和地理学)或霍特林变换。

 

这是一种较为普遍的说法,甚至在PRML中也是使用的类似描述,认为PCA与KL是同样的东西。果真如此,那为什么会有这么多叫法呢?我们再来看看另一种解释。这是CSDN上看到的说法是(相同博文有两篇,就不链接了):

 

PCA的变换矩阵是协方差矩阵,K-L变换的变换矩阵可以有很多种(二阶矩阵、协方差矩阵、总类内离散度矩阵等等)。当K-L变换矩阵为协方差矩阵时,等同于PCA。

这个解释与课本的编排能很好的结合起来。课本基本没有提PCA,但是关于KLT的讲解是按照这样的顺序:首先引入离散KL展开(通过自相关矩阵求得转换矩阵),再过渡到降维(此时计算则使用协方差阵)的KL变换,并点明,如果平移坐标系使以样本均值为原点时,协方差阵等于自相关矩阵。其后的下一讲则介绍了,使用不同的散布矩阵完成KL变换,会得到不同的效应,其中总体散布矩阵即前述协方差矩阵。

 

再来看看国外网站上另一个哥们说的:

Fabrice Clerot  · Orange Labs

they are quite close but with a slight diffference : PCA analyzes the spectrum of the covariance matrix while KLT analyzes the spectrum of the correlation matrix

即,两者区别在于PCA分析协方差矩阵而KLT分析相关矩阵

 

这是更为具体的一种解释:

 

Pradeep Gupta  · Jaypee University of Information Technology
PCA depend on the scaling of the variables and applicability of PCA is limited by certain assumptions made in its derivation. The claim that the PCA used for dimensionality reduction preserves most of the information of the data is misleading. Indeed, without any assumption on the signal model, PCA cannot help to reduce the amount of information lost during dimensionality reduction, where information was measured using Shannon entropy.

The coefficients in the KLT are random variables and the expansion basis depends on the process. In fact, the orthogonal basis functions used in this representation are determined by the covariance function of the process. KLT adapts to the process in order to produce the best possible basis for its expansion.it reduces the total mean-square error resulting of its truncation. Because of this property, it is often said that the KL transform optimally compacts the energy. The main implication and difficulty of the KL transformation is computing the eigenvectors of the linear operator associated to the covariance function, which are given by the solutions to the integral equation.

The integral equation thus reduces to a simple matrix eigenvalue problem, which explains why the PCA has such a broad domain of applications.

他说,PCA依赖于变量的展开(不知如何翻译)且其应用受限于一些由原始推导过程中的具体假设。关于PCA用于降维能保留绝大部分信息的说法是误导的。事实上,如果没有对信号模型的任何假设,PCA对减少降维过程的信息丢失没有帮助(这里用香农熵测量信息量)。

而KLT的参数为随机变量,且其展开的基础取决于过程(随机过程,理解为样本,下文有详注)。事实上,用于描述的正交基函数是由过程的协方差函数确定的。KLT去适应这个过程(随机过程),以期产生最佳的展开基。这样可以减少降维产生的总均方差。由于这个特性,常说KLT能最好得压缩能量。KLT主要的内容和难点在于计算关于协方差函数的线性操作的特征向量,即由积分方程求得的解。

积分方程因此简化为简单的矩阵特征值问题,这解释了为什么PCA有如此广泛的应用。

 

=======================================================

 

这些网上的说法并没有解释清楚,还增添了疑惑,于是参考wiki。解决关于几个矩阵的关系,以及KLT与PCA的关系

 

一、散布矩阵、协方差矩阵、自相关矩阵

散布矩阵定义参考机器学习_刘伟翻译的wiki条目。其本身的定义很简单,

 S = \sum_{j=1}^n (\mathbf{x}_j-\overline{\mathbf{x}})(\mathbf{x}_j-\overline{\mathbf{x}})^T = \sum_{j=1}^n (\mathbf{x}_j-\overline{\mathbf{x}})\otimes(\mathbf{x}_j-\overline{\mathbf{x}}) = \left( \sum_{j=1}^n \mathbf{x}_j \mathbf{x}_j^T \right) - n \overline{\mathbf{x}} \overline{\mathbf{x}}^T

此外还可以更具体的定义,如总体散布矩阵、类内散布矩阵、类间散布矩阵等。其中总体散布矩阵的定义为

S_t = E{ (x - m_0) *(x - m_0)T }

这个定义实际上就是协方差矩阵,即散布矩阵除以样本数n。也就是说样本的协方差矩阵也就等于样本的总体散布矩阵,对总体散布矩阵的KL变换就是对协方差矩阵的KL变换。

 

自相关矩阵的定义参见维基autocorrelation matrix 。有

\mathbf{R}_x = E[\mathbf{xx}^H] = \begin{bmatrix}R_{xx}(0) & R^*_{xx}(1) & R^*_{xx}(2) & \cdots & R^*_{xx}(N-1) \\R_{xx}(1) & R_{xx}(0) & R^*_{xx}(1) & \cdots & R^*_{xx}(N-2) \\R_{xx}(2) & R_{xx}(1) & R_{xx}(0) & \cdots & R^*_{xx}(N-3) \\\vdots    & \vdots    & \vdots    & \ddots & \vdots \\R_{xx}(N-1) & R_{xx}(N-2) & R_{xx}(N-3) & \cdots & R_{xx}(0) \\\end{bmatrix}

其中自相关函数R_xx(n)的概念参见维基Autocorrelation#Signal_processing 

对于离散情况有

R_{yy}(l) = \sum_{n \in Z} y(n)\,\overline{y}(n-l).

其中为实数时,函数y杠=y。

注意到自相关矩阵与协方差矩阵的关系为

\mathbf{C}_x = \operatorname{E} [(\mathbf{x} - \mathbf{m}_x)(\mathbf{x} - \mathbf{m}_x)^H]= \mathbf{R}_x - \mathbf{m}_x\mathbf{m}_x^H

即,若将样本平移到均值为原点的坐标系中,则此时协方差阵与自相关阵相同。

 

以上就理清了协方差矩阵分别于总体散布矩阵和自相关矩阵的关系。

 

二、KLT 、 PCA

由于wiki中KL Transform词条直接重定向到了PCA,便参考Karhunen–Loève theorem词条(KL原理,根据内容译成KL展开)。

KL展开是随机过程的理论,将随机过程描述成无穷个正交函数的线性结合。其重要性在于,得到的结果拥有最小均方差。

不同于傅里叶级数展开(系数为实数&展开基函数由正余弦函数组成),KL展开的系数是随机变量,且展开基函数由随机过程决定。实际上,这里的正交基函数是由随机过程的协方差函数确定的。可以认为,KL展开是根据随机过程产生最佳基函数。

完成KL展开,就需要求出正交基函数。由于线性映射等各种性质,可知未知量满足均匀弗雷德霍姆积分方程,即可通过解方程求出基函数。

在阅读wiki的过程中,我发现百科里涉及到的术语有些陌生,比如stochastic process,包括上文网上回答中的process,查询才知道数学上概念即“随机过程”,是一系列随机变量/随机函数的集合,也就是说样本也属于随机过程。

继续阅读发现,KLtheorem词条中居然也有PCA的内容,读罢惊喜地发现KLT与PCA的区别基本就已经明了了:

KLT的计算过程十分复杂,就在于积分方程的求解。然而,当应用于离散随机过程(即多个样本)中,正交基满足的原本连续的积分等式,成了离散的求和,这就极大简化了计算,也扩张了实际应用的领域。

在PCA词条中说,根据不同的应用域,PCA在信号处理中被叫做离散KL变换、多元质量控制中为霍尔特变换、机器工程中为本征正交分解等。

归纳一下,KLT是一种对于连续或离散的随机过程都可进行的变换,PCA则是KLT处理离散情况的算法;定义上KLT比PCA广泛,而实际上PCA比KLT实用。

 

=======================================================

 

最后再来验证网友的说法:

关于协方差阵与自相关阵,两者只差对样本均值的平移量,而wiki里的KL变换都需要先平移样本,故真正应用中PCA与KLT在这一点没有差别;而关于那个篇幅很长的回答,内容则基本来自wiki,因此也没有必要再说明了。

无论说说KLT与PCA有区别与否,都有其道理,我们只用知道,实际编程中可以不考虑两者的区别,就足够了。

 

 

 

p.s.     PCA的发明时间比KLT早得多

P.s.2   wiki真是是好用又靠得住啊!

 

 

 

 

 

 

 

 

 

 

 

  • 42
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: 基于ORL数据库的人脸图像处理中,可以利用K-L变换PCA方法进行特征降维和人脸识别。 K-L变换(Karhunen-Loève Transform)是一种线性变换方法,用于将原始图像转换为具有最大可分性的特征。首先,将ORL数据库中的人脸图像进行归一化处理,消除图像的尺度和亮度差异。然后,将每个人脸图像展开为一维向量,并构建图像样本矩阵。接下来,计算样本矩阵的协方差矩阵,并对其进行特征值分解。根据特征值的大小,选取前N个最大的特征值对应的特征向量作为K-L变换的投影向量。最后,将原始图像使用这些投影向量进行线性变换,即可得到特征脸向量。通过计算待识别图像与特征脸向量的欧氏距离,可以实现人脸识别。 PCA(Principal Component Analysis)是一种常用的降维方法,通过线性变换将高维特征映射到低维的子空间中。在利用PCA进行人脸识别时,首先进行数据预处理,将ORL数据库中的人脸图像归一化并展开为一维向量。然后,计算样本矩阵的均值向量,并将每个样本向量减去均值向量,得到零均值样本矩阵。接下来,计算零均值样本矩阵的协方差矩阵,然后对协方差矩阵进行特征值分解。根据特征值的大小,选取前N个最大的特征值对应的特征向量作为主成分,构建PCA的投影矩阵。最后,将原始图像用投影矩阵进行线性变换,得到降维后的特征向量。通过计算待识别图像与特征向量的欧氏距离,可以进行人脸识别。 总的来说,基于ORL数据库的人脸图像处理中,利用K-L变换PCA方法可以进行特征降维和人脸识别。这些方法可以有效地提取人脸图像的主要特征,降低计算复杂度,提高人脸识别的准确率。 ### 回答2: 基于ORL数据库的KL变换PCA方法是一种人脸识别的方法。ORL数据库是一个用于人脸识别的数据库,其中包含了40个人的400张正面灰度人脸图像。 KL变换(Karhunen-Loève Transform)是一种基于统计学原理的数据降维方法。它通过计算数据的协方差矩阵的特征向量来获得数据的主要成分。在人脸识别中,可以使用KL变换来降低人脸图像的维度,提取出最具有代表性的特征。 PCA方法(Principal Component Analysis)也是一种常用的降维方法。它通过计算数据的协方差矩阵和特征向量来找到数据的主要成分。在人脸识别中,可以使用PCA方法将图像从高维空间映射到低维空间,提取出最具有代表性的特征。 基于ORL数据库的KL变换PCA方法的步骤如下: 1. 将ORL数据库中的人脸图像矩阵按列排成一个大矩阵,每个人脸图像作为一列。 2. 对大矩阵进行均值中心化处理,即减去每一列的平均值。 3. 计算大矩阵的协方差矩阵。 4. 对协方差矩阵进行特征值分解,得到特征值和特征向量。 5. 将特征向量按特征值大小从大到小排序。 6. 选择前N个特征向量,构成一个转换矩阵。 7. 将转换矩阵应用于原始图像,得到降维后的特征脸。 8. 将降维后的特征脸作为训练集用于人脸识别,可以使用k最近邻算法或其他分类方法进行人脸识别。 KL变换PCA方法都是常用的人脸识别方法,它们能够从高维的图像空间中提取出最具有代表性的特征,有效地提高了人脸识别的准确率和效果。 ### 回答3: 基于ORL数据库,利用K-L变换PCA方法可以实现人脸识别。首先,K-L变换是一种用于图像压缩和特征提取的数学方法,可以将原始图像转换为一组能够描述其特征的系数。PCA(Principal Component Analysis)是一种常用的统计学方法,可以将高维数据转换为低维数据,从而降低数据维度并提取出最具有代表性的特征。 在利用K-L变换PCA进行人脸识别的流程中,首先利用ORL数据库中的训练图像进行训练。通过对所有训练图像进行K-L变换,将其转换为特征系数。然后使用PCA方法对特征系数进行降维处理,选择最具有代表性的主成分。这些主成分将构成人脸的特征空间。 接下来,对于待识别的人脸图像,同样进行K-L变换PCA降维处理,得到其特征系数。然后,将待识别的特征系数与训练图像集中的特征系数进行比较,可采用欧氏距离或者余弦相似度等方式进行匹配度量。通过与训练图像的匹配度量结果,可以确定待识别图像属于数据库中的哪个人。 总结而言,基于ORL数据库,利用K-L变换PCA方法能够实现人脸识别。通过训练图像的K-L变换PCA降维处理,构建出人脸的特征空间。然后,将待识别图像的特征系数与训练图像集的特征系数进行匹配度量,从而实现人脸的分类与识别。这一方法在数字图像处理领域具有较高的应用价值,可以广泛应用于人脸识别、图像检索等方面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值