存档在 ‘模式识别&机器学习’ 分类

[收集]协方差矩阵的详细说明

2017年9月29日

协方差矩阵的详细说明

1、协方差矩阵中的每一个元素是表示的随机向量X的不同分量之间的协方差,而不是不同样本之间的协方差,如元素Cij就是反映的随机变量Xi, Xj的协方差。

2、协方差是反映的变量之间的二阶统计特性,如果随机向量的不同分量之间的相关性很小,则所得的协方差矩阵几乎是一个对角矩阵。对于一些特殊的应用场合,为了使随机向量的长度较小,可以采用主成分分析的方法,使变换之后的变量的协方差矩阵完全是一个对角矩阵,之后就可以舍弃一些能量较小的分量了(对角线上的元素反映的是方差,也就是交流能量)。特别是在模式识别领域,当模式向量的维数过高时会影响识别系统的泛化性能,经常需要做这样的处理。

3、必须注意的是,这里所得到的式(5)和式(6)给出的只是随机向量协方差矩阵真实值的一个估计(即由所测的样本的值来表示的,随着样本取值的不同会发生变化),故而所得的协方差矩阵是依赖于采样样本的,并且样本的数目越多,样本在总体中的覆盖面越广,则所得的协方差矩阵越可靠。

4、如同协方差和相关系数的关系一样,我们有时为了能够更直观地知道随机向量的不同分量之间的相关性究竟有多大,还会引入相关系数矩阵。

[收集]PCA的数学原理

2017年9月24日

PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。网上关于PCA的文章有很多,但是大多数只描述了PCA的分析过程,而没有讲述其中的原理。这篇文章的目的是介绍PCA的基本数学原理,帮助读者了解PCA的工作机制是什么。

当然我并不打算把文章写成纯数学文章,而是希望用直观和易懂的方式叙述PCA的数学原理,所以整个文章不会引入严格的数学推导。希望读者在看完这篇文章后能更好的明白PCA的工作原理。

数据的向量表示及降维问题

一般情况下,在数据挖掘和机器学习中,数据被表示为向量。例如某个淘宝店2012年全年的流量及交易情况可以看成一组记录的集合,其中每一天的数据是一条记录,格式如下:

(日期, 浏览量, 访客数, 下单数, 成交数, 成交金额)

其中“日期”是一个记录标志而非度量值,而数据挖掘关心的大多是度量值,因此如果我们忽略日期这个字段后,我们得到一组记录,每条记录可以被表示为一个五维向量,其中一条看起来大约是这个样子:

(500,240,25,13,2312.15)?(500,240,25,13,2312.15)T

注意这里我用了转置,因为习惯上使用列向量表示一条记录(后面会看到原因),本文后面也会遵循这个准则。不过为了方便有时我会省略转置符号,但我们说到向量默认都是指列向量。

我们当然可以对这一组五维向量进行分析和挖掘,不过我们知道,很多机器学习算法的复杂度和数据的维数有着密切关系,甚至与维数呈指数级关联。当然,这里区区五维的数据,也许还无所谓,但是实际机器学习中处理成千上万甚至几十万维的情况也并不罕见,在这种情况下,机器学习的资源消耗是不可接受的,因此我们必须对数据进行降维。

降维当然意味着信息的丢失,不过鉴于实际数据本身常常存在的相关性,我们可以想办法在降维的同时将信息的损失尽量降低。

举个例子,假如某学籍数据有两列M和F,其中M列的取值是如何此学生为男性取值1,为女性取值0;而F列是学生为女性取值1,男性取值0。此时如果我们统计全部学籍数据,会发现对于任何一条记录来说,当M为1时F必定为0,反之当M为0时F必定为1。在这种情况下,我们将M或F去掉实际上没有任何信息的损失,因为只要保留一列就可以完全还原另一列。

当然上面是一个极端的情况,在现实中也许不会出现,不过类似的情况还是很常见的。例如上面淘宝店铺的数据,从经验我们可以知道,“浏览量”和“访客数”往往具有较强的相关关系,而“下单数”和“成交数”也具有较强的相关关系。这里我们非正式的使用“相关关系”这个词,可以直观理解为“当某一天这个店铺的浏览量较高(或较低)时,我们应该很大程度上认为这天的访客数也较高(或较低)”。后面的章节中我们会给出相关性的严格数学定义。

这种情况表明,如果我们删除浏览量或访客数其中一个指标,我们应该期待并不会丢失太多信息。因此我们可以删除一个,以降低机器学习算法的复杂度。

上面给出的是降维的朴素思想描述,可以有助于直观理解降维的动机和可行性,但并不具有操作指导意义。例如,我们到底删除哪一列损失的信息才最小?亦或根本不是单纯删除几列,而是通过某些变换将原始数据变为更少的列但又使得丢失的信息最小?到底如何度量丢失信息的多少?如何根据原始数据决定具体的降维操作步骤?

要回答上面的问题,就要对降维问题进行数学化和形式化的讨论。而PCA是一种具有严格数学基础并且已被广泛采用的降维方法。下面我不会直接描述PCA,而是通过逐步分析问题,让我们一起重新“发明”一遍PCA。

» 阅读更多: [收集]PCA的数学原理

主成分分析PCA

2017年9月24日

 相关Matlab知识

  设M为一个矩阵,那么:

     1、求和

     sum(M):以矩阵M的每一列为对象,对每一列的数据分别求和。

     sum(M,2):以矩阵的每一行为对象,对每一行的数据分别求和。

     sum(M(:)):将矩阵中的所有元素相加求和。

     2、求期望

      matlab中矩阵元素求期望的函数mean与sum用法雷同。

      mean(M):以矩阵M的每一列为对象,对每一列的数据分别求期望。

      mean(M,2):以矩阵的每一行为对象,对每一行的数据分别求期望。

      mean(M(:)):以矩阵所有数据为对象求期望。

     3、求均方差

      若要求整个矩阵所有元素的均方差,则要使用std2函数:std2(M)

      注:Matlab中有求数组方差的 函数:var;要注意的是var函数所采用公式中,分母不是length(X) ,而是length(X)-1 。这是因为var函数实际上求的并不是方差,而是误差理论中“有限次测量数据的标准偏差的估计值”。var没有求矩阵的方差功能,可使用std先求均方差,再平方得到方差。std,均方差,std(X,0,1)求列向量方差,std(X,0,2)求行向量方差。

4、协方差

      cov(X)
      求矩阵X的协方差矩阵。diag(cov(X))得到每一个列向量的方差。sqrt(diag(cov(X)))得到每一个列的标准差。
若X大小为M*N,则cov(X) 大小为N*N的矩阵。cov(X) 的第(i,j)个元素等于X的第i列向量与第j列向量的方差,即C(Xi,Xj)。
      cov(X,Y)
      求矩阵X与Y的协方差矩阵。若X大小为M*N,Y为K*P,则X,Y的大小必须满足M*N=K*P,即X,Y的元素个数相同。此时,cov(X,Y) 等于cov([X(:) Y(:)])和cov(X(:),Y(:)),即计算两个向量的协方差矩阵,得到的结果为2*2矩阵。
     5、特征值和特征向量

(1) E=eig(A):求矩阵A的全部特征值,构成向量E。
(2) [V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。
(3) [V,D]=eig(A,’nobalance’):与第2种格式类似,但第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特征值和特征向量。

(4) E=eig(A,B):由eig(A,B)返回N×N阶方阵A和B的N个广义特征值,构成向量E。
(5) [V,D]=eig(A,B):由eig(A,B)返回方阵A和B的N个广义特征值,构成N×N阶对角阵D,其对角线上的N个元素即为相应的广义特征值,同时将返回相应的特征向量构成N×N阶满秩矩阵,且满足AV=BVD。

PCA分析

降维的必要性

1.多重共线性–预测变量之间相互关联。多重共线性会导致解空间的不稳定,从而可能导致结果的不连贯。

2.高维空间本身具有稀疏性。一维正态分布有68%的值落于正负标准差之间,而在十维空间上只有0.02%。

3.过多的变量会妨碍查找规律的建立。

4.仅在变量层面上分析可能会忽略变量之间的潜在联系。例如几个预测变量可能落入仅反映数据某一方面特征的一个组内。

降维的目的:

1.减少预测变量的个数

2.确保这些变量是相互独立的

3.提供一个框架来解释结果

降维的方法有:主成分分析、因子分析、用户自定义复合等。

PCA(Principal Component Analysis)不仅仅是对高维数据进行降维,更重要的是经过降维去除了噪声,发现了数据中的模式。

PCA把原先的n个特征用数目更少的m个特征取代,新特征是旧特征的线性组合,这些线性组合最大化样本方差,尽量使新的m个特征互不相关。从旧特征到新特征的映射捕获数据中的固有变异性。

预备知识

样本X和样本Y的协方差(Covariance):

Cov(X,Y)=ni=1(XiX¯)(YiY¯)(n1)Cov(X,Y)=∑i=1n(Xi−X¯)(Yi−Y¯)(n−1)

协方差为正时说明X和Y是正相关关系,协方差为负时X和Y是负相关关系,协方差为0时X和Y相互独立。

Cov(X,X)就是X的方差(Variance).

当样本是n维数据时,它们的协方差实际上是协方差矩阵(对称方阵),方阵的边长是C2nCn2。比如对于3维数据(x,y,z),计算它的协方差就是:

C=

cov(x,xcov(y,xcov(z,x)

cov(x,ycov(y,ycov(z,y)

cov(x,zcov(y,zcov(z,z)

AX=λXAX=λX,则称λλ是A的特征值,X是对应的特征向量。实际上可以这样理解:矩阵A作用在它的特征向量X上,仅仅使得X的长度发生了变化,缩放比例就是相应的特征值λλ

当A是n阶可逆矩阵时,A与P-1Ap相似,相似矩阵具有相同的特征值。

特别地,当A是对称矩阵时,A的奇异值等于A的特征值,存在正交矩阵Q(Q-1=QT),使得:

对A进行奇异值分解就能求出所有特征值和Q矩阵。

AQ=QDA∗Q=Q∗D,D是由特征值组成的对角矩阵

由特征值和特征向量的定义知,Q的列向量就是A的特征向量。

 

1.特征中心化。即每一维的数据都减去该维的均值。这里的“维”指的就是一个特征(或属性),变换之后每一维的均值都变成了0。

很多数据挖掘的教材上都会讲到鹫尾花的例子,本文就拿它来做计算,原始数据是150×4的矩阵A。
2.计算B的协方差矩阵C。
3.计算协方差矩阵C的特征值和特征向量。
4.选取大的特征值对应的特征向量,得到新的数据集。
特征值是由大到小排列的,前两个特征值的和已经超过了所有特征值之和的97%。我们取前两个特征值对应的特征向量,得到一个4×2的矩阵M。令A’150×2=A150×4M4×2,这样我们就把150×4的数据A集映射成了150×2的数据集A’,特征由4个减到了2个。
每个样本正好是二维的,画在平面坐标系中如图:

A=[5.1     3.5     1.4     0.2
4.9     3.0     1.4     0.2
4.7     3.2     1.3     0.2
4.6     3.1     1.5     0.2
5.0     3.6     1.4     0.2
5.4     3.9     1.7     0.4
4.6     3.4     1.4     0.3
5.0     3.4     1.5     0.2
4.4     2.9     1.4     0.2
4.9     3.1     1.5     0.1
5.4     3.7     1.5     0.2
4.8     3.4     1.6     0.2
4.8     3.0     1.4     0.1
4.3     3.0     1.1     0.1
5.8     4.0     1.2     0.2
5.7     4.4     1.5     0.4
5.4     3.9     1.3     0.4
5.1     3.5     1.4     0.3
5.7     3.8     1.7     0.3
5.1     3.8     1.5     0.3
5.4     3.4     1.7     0.2
5.1     3.7     1.5     0.4
4.6     3.6     1.0     0.2
5.1     3.3     1.7     0.5
4.8     3.4     1.9     0.2
5.0     3.0     1.6     0.2
5.0     3.4     1.6     0.4
5.2     3.5     1.5     0.2
5.2     3.4     1.4     0.2
4.7     3.2     1.6     0.2
4.8     3.1     1.6     0.2
5.4     3.4     1.5     0.4
5.2     4.1     1.5     0.1
5.5     4.2     1.4     0.2
4.9     3.1     1.5     0.1
5.0     3.2     1.2     0.2
5.5     3.5     1.3     0.2
4.9     3.1     1.5     0.1
4.4     3.0     1.3     0.2
5.1     3.4     1.5     0.2
5.0     3.5     1.3     0.3
4.5     2.3     1.3     0.3
4.4     3.2     1.3     0.2
5.0     3.5     1.6     0.6
5.1     3.8     1.9     0.4
4.8     3.0     1.4     0.3
5.1     3.8     1.6     0.2
4.6     3.2     1.4     0.2
5.3     3.7     1.5     0.2
5.0     3.3     1.4     0.2
7.0     3.2     4.7     1.4
6.4     3.2     4.5     1.5
6.9     3.1     4.9     1.5
5.5     2.3     4.0     1.3
6.5     2.8     4.6     1.5
5.7     2.8     4.5     1.3
6.3     3.3     4.7     1.6
4.9     2.4     3.3     1.0
6.6     2.9     4.6     1.3
5.2     2.7     3.9     1.4
5.0     2.0     3.5     1.0
5.9     3.0     4.2     1.5
6.0     2.2     4.0     1.0
6.1     2.9     4.7     1.4
5.6     2.9     3.6     1.3
6.7     3.1     4.4     1.4
5.6     3.0     4.5     1.5
5.8     2.7     4.1     1.0
6.2     2.2     4.5     1.5
5.6     2.5     3.9     1.1
5.9     3.2     4.8     1.8
6.1     2.8     4.0     1.3
6.3     2.5     4.9     1.5
6.1     2.8     4.7     1.2
6.4     2.9     4.3     1.3
6.6     3.0     4.4     1.4
6.8     2.8     4.8     1.4
6.7     3.0     5.0     1.7
6.0     2.9     4.5     1.5
5.7     2.6     3.5     1.0
5.5     2.4     3.8     1.1
5.5     2.4     3.7     1.0
5.8     2.7     3.9     1.2
6.0     2.7     5.1     1.6
5.4     3.0     4.5     1.5
6.0     3.4     4.5     1.6
6.7     3.1     4.7     1.5
6.3     2.3     4.4     1.3
5.6     3.0     4.1     1.3
5.5     2.5     4.0     1.3
5.5     2.6     4.4     1.2
6.1     3.0     4.6     1.4
5.8     2.6     4.0     1.2
5.0     2.3     3.3     1.0
5.6     2.7     4.2     1.3
5.7     3.0     4.2     1.2
5.7     2.9     4.2     1.3
6.2     2.9     4.3     1.3
5.1     2.5     3.0     1.1
5.7     2.8     4.1     1.3
6.3     3.3     6.0     2.5
5.8     2.7     5.1     1.9
7.1     3.0     5.9     2.1
6.3     2.9     5.6     1.8
6.5     3.0     5.8     2.2
7.6     3.0     6.6     2.1
4.9     2.5     4.5     1.7
7.3     2.9     6.3     1.8
6.7     2.5     5.8     1.8
7.2     3.6     6.1     2.5
6.5     3.2     5.1     2.0
6.4     2.7     5.3     1.9
6.8     3.0     5.5     2.1
5.7     2.5     5.0     2.0
5.8     2.8     5.1     2.4
6.4     3.2     5.3     2.3
6.5     3.0     5.5     1.8
7.7     3.8     6.7     2.2
7.7     2.6     6.9     2.3
6.0     2.2     5.0     1.5
6.9     3.2     5.7     2.3
5.6     2.8     4.9     2.0
7.7     2.8     6.7     2.0
6.3     2.7     4.9     1.8
6.7     3.3     5.7     2.1
7.2     3.2     6.0     1.8
6.2     2.8     4.8     1.8
6.1     3.0     4.9     1.8
6.4     2.8     5.6     2.1
7.2     3.0     5.8     1.6
7.4     2.8     6.1     1.9
7.9     3.8     6.4     2.0
6.4     2.8     5.6     2.2
6.3     2.8     5.1     1.5
6.1     2.6     5.6     1.4
7.7     3.0     6.1     2.3
6.3     3.4     5.6     2.4
6.4     3.1     5.5     1.8
6.0     3.0     4.8     1.8
6.9     3.1     5.4     2.1
6.7     3.1     5.6     2.4
6.9     3.1     5.1     2.3
5.8     2.7     5.1     1.9
6.8     3.2     5.9     2.3
6.7     3.3     5.7     2.5
6.7     3.0     5.2     2.3
6.3     2.5     5.0     1.9
6.5     3.0     5.2     2.0
6.2     3.4     5.4     2.3
5.9     3.0     5.1     1.8]


>> M=mean(A)

M =

    5.8433    3.0540    3.7587    1.1987

>> B=A-M

B =

   -0.7433    0.4460   -2.3587   -0.9987
   -0.9433   -0.0540   -2.3587   -0.9987
   -1.1433    0.1460   -2.4587   -0.9987
   -1.2433    0.0460   -2.2587   -0.9987
   -0.8433    0.5460   -2.3587   -0.9987
   -0.4433    0.8460   -2.0587   -0.7987
   -1.2433    0.3460   -2.3587   -0.8987
   -0.8433    0.3460   -2.2587   -0.9987
   -1.4433   -0.1540   -2.3587   -0.9987
   -0.9433    0.0460   -2.2587   -1.0987
   -0.4433    0.6460   -2.2587   -0.9987
   -1.0433    0.3460   -2.1587   -0.9987
   -1.0433   -0.0540   -2.3587   -1.0987
   -1.5433   -0.0540   -2.6587   -1.0987
   -0.0433    0.9460   -2.5587   -0.9987
   -0.1433    1.3460   -2.2587   -0.7987
   -0.4433    0.8460   -2.4587   -0.7987
   -0.7433    0.4460   -2.3587   -0.8987
   -0.1433    0.7460   -2.0587   -0.8987
   -0.7433    0.7460   -2.2587   -0.8987
   -0.4433    0.3460   -2.0587   -0.9987
   -0.7433    0.6460   -2.2587   -0.7987
   -1.2433    0.5460   -2.7587   -0.9987
   -0.7433    0.2460   -2.0587   -0.6987
   -1.0433    0.3460   -1.8587   -0.9987
   -0.8433   -0.0540   -2.1587   -0.9987
   -0.8433    0.3460   -2.1587   -0.7987
   -0.6433    0.4460   -2.2587   -0.9987
   -0.6433    0.3460   -2.3587   -0.9987
   -1.1433    0.1460   -2.1587   -0.9987
   -1.0433    0.0460   -2.1587   -0.9987
   -0.4433    0.3460   -2.2587   -0.7987
   -0.6433    1.0460   -2.2587   -1.0987
   -0.3433    1.1460   -2.3587   -0.9987
   -0.9433    0.0460   -2.2587   -1.0987
   -0.8433    0.1460   -2.5587   -0.9987
   -0.3433    0.4460   -2.4587   -0.9987
   -0.9433    0.0460   -2.2587   -1.0987
   -1.4433   -0.0540   -2.4587   -0.9987
   -0.7433    0.3460   -2.2587   -0.9987
   -0.8433    0.4460   -2.4587   -0.8987
   -1.3433   -0.7540   -2.4587   -0.8987
   -1.4433    0.1460   -2.4587   -0.9987
   -0.8433    0.4460   -2.1587   -0.5987
   -0.7433    0.7460   -1.8587   -0.7987
   -1.0433   -0.0540   -2.3587   -0.8987
   -0.7433    0.7460   -2.1587   -0.9987
   -1.2433    0.1460   -2.3587   -0.9987
   -0.5433    0.6460   -2.2587   -0.9987
   -0.8433    0.2460   -2.3587   -0.9987
    1.1567    0.1460    0.9413    0.2013
    0.5567    0.1460    0.7413    0.3013
    1.0567    0.0460    1.1413    0.3013
   -0.3433   -0.7540    0.2413    0.1013
    0.6567   -0.2540    0.8413    0.3013
   -0.1433   -0.2540    0.7413    0.1013
    0.4567    0.2460    0.9413    0.4013
   -0.9433   -0.6540   -0.4587   -0.1987
    0.7567   -0.1540    0.8413    0.1013
   -0.6433   -0.3540    0.1413    0.2013
   -0.8433   -1.0540   -0.2587   -0.1987
    0.0567   -0.0540    0.4413    0.3013
    0.1567   -0.8540    0.2413   -0.1987
    0.2567   -0.1540    0.9413    0.2013
   -0.2433   -0.1540   -0.1587    0.1013
    0.8567    0.0460    0.6413    0.2013
   -0.2433   -0.0540    0.7413    0.3013
   -0.0433   -0.3540    0.3413   -0.1987
    0.3567   -0.8540    0.7413    0.3013
   -0.2433   -0.5540    0.1413   -0.0987
    0.0567    0.1460    1.0413    0.6013
    0.2567   -0.2540    0.2413    0.1013
    0.4567   -0.5540    1.1413    0.3013
    0.2567   -0.2540    0.9413    0.0013
    0.5567   -0.1540    0.5413    0.1013
    0.7567   -0.0540    0.6413    0.2013
    0.9567   -0.2540    1.0413    0.2013
    0.8567   -0.0540    1.2413    0.5013
    0.1567   -0.1540    0.7413    0.3013
   -0.1433   -0.4540   -0.2587   -0.1987
   -0.3433   -0.6540    0.0413   -0.0987
   -0.3433   -0.6540   -0.0587   -0.1987
   -0.0433   -0.3540    0.1413    0.0013
    0.1567   -0.3540    1.3413    0.4013
   -0.4433   -0.0540    0.7413    0.3013
    0.1567    0.3460    0.7413    0.4013
    0.8567    0.0460    0.9413    0.3013
    0.4567   -0.7540    0.6413    0.1013
   -0.2433   -0.0540    0.3413    0.1013
   -0.3433   -0.5540    0.2413    0.1013
   -0.3433   -0.4540    0.6413    0.0013
    0.2567   -0.0540    0.8413    0.2013
   -0.0433   -0.4540    0.2413    0.0013
   -0.8433   -0.7540   -0.4587   -0.1987
   -0.2433   -0.3540    0.4413    0.1013
   -0.1433   -0.0540    0.4413    0.0013
   -0.1433   -0.1540    0.4413    0.1013
    0.3567   -0.1540    0.5413    0.1013
   -0.7433   -0.5540   -0.7587   -0.0987
   -0.1433   -0.2540    0.3413    0.1013
    0.4567    0.2460    2.2413    1.3013
   -0.0433   -0.3540    1.3413    0.7013
    1.2567   -0.0540    2.1413    0.9013
    0.4567   -0.1540    1.8413    0.6013
    0.6567   -0.0540    2.0413    1.0013
    1.7567   -0.0540    2.8413    0.9013
   -0.9433   -0.5540    0.7413    0.5013
    1.4567   -0.1540    2.5413    0.6013
    0.8567   -0.5540    2.0413    0.6013
    1.3567    0.5460    2.3413    1.3013
    0.6567    0.1460    1.3413    0.8013
    0.5567   -0.3540    1.5413    0.7013
    0.9567   -0.0540    1.7413    0.9013
   -0.1433   -0.5540    1.2413    0.8013
   -0.0433   -0.2540    1.3413    1.2013
    0.5567    0.1460    1.5413    1.1013
    0.6567   -0.0540    1.7413    0.6013
    1.8567    0.7460    2.9413    1.0013
    1.8567   -0.4540    3.1413    1.1013
    0.1567   -0.8540    1.2413    0.3013
    1.0567    0.1460    1.9413    1.1013
   -0.2433   -0.2540    1.1413    0.8013
    1.8567   -0.2540    2.9413    0.8013
    0.4567   -0.3540    1.1413    0.6013
    0.8567    0.2460    1.9413    0.9013
    1.3567    0.1460    2.2413    0.6013
    0.3567   -0.2540    1.0413    0.6013
    0.2567   -0.0540    1.1413    0.6013
    0.5567   -0.2540    1.8413    0.9013
    1.3567   -0.0540    2.0413    0.4013
    1.5567   -0.2540    2.3413    0.7013
    2.0567    0.7460    2.6413    0.8013
    0.5567   -0.2540    1.8413    1.0013
    0.4567   -0.2540    1.3413    0.3013
    0.2567   -0.4540    1.8413    0.2013
    1.8567   -0.0540    2.3413    1.1013
    0.4567    0.3460    1.8413    1.2013
    0.5567    0.0460    1.7413    0.6013
    0.1567   -0.0540    1.0413    0.6013
    1.0567    0.0460    1.6413    0.9013
    0.8567    0.0460    1.8413    1.2013
    1.0567    0.0460    1.3413    1.1013
   -0.0433   -0.3540    1.3413    0.7013
    0.9567    0.1460    2.1413    1.1013
    0.8567    0.2460    1.9413    1.3013
    0.8567   -0.0540    1.4413    1.1013
    0.4567   -0.5540    1.2413    0.7013
    0.6567   -0.0540    1.4413    0.8013
    0.3567    0.3460    1.6413    1.1013
    0.0567   -0.0540    1.3413    0.6013
>> X=cov(B)

X =

    0.6857   -0.0393    1.2737    0.5169
   -0.0393    0.1880   -0.3217   -0.1180
    1.2737   -0.3217    3.1132    1.2964
    0.5169   -0.1180    1.2964    0.5824

>> [V,S]=eig(X)

V =

   -0.3173    0.5810    0.6565    0.3616
    0.3241   -0.5964    0.7297   -0.0823
    0.4797   -0.0725   -0.1758    0.8566
   -0.7511   -0.5491   -0.0747    0.3588


S =

    0.0237         0         0         0
         0    0.0785         0         0
         0         0    0.2422         0
         0         0         0    4.2248

>> R=A*V(:,[3,4])

R =

    5.6413    2.8271
    5.1452    2.7960
    5.1774    2.6215
    5.0036    2.7649
    5.6486    2.7828
    6.0625    3.2314
    5.2326    2.6905
    5.4851    2.8849
    4.7439    2.6234
    5.2080    2.8375
    5.9667    3.0048
    5.3362    2.8982
    5.0870    2.7239
    4.8114    2.2861
    6.5009    2.8678
    6.6595    3.1275
    6.1328    2.8888
    5.6339    2.8630
    6.1940    3.3123
    5.8352    2.9240
    5.7126    3.2008
    5.7548    2.9681
    5.4563    2.2955
    5.4202    3.2082
    5.2835    3.1552
    5.1757    3.0034
    5.4526    3.0423
    5.6894    2.9490
    5.6340    2.8715
    5.1246    2.8785
    5.1173    2.9229
    5.7328    3.1013
    6.1347    2.8637
    6.4147    2.9142
    5.2080    2.8375
    5.3919    2.6443
    5.9215    2.8861
    5.2080    2.8375
    4.8345    2.5295
    5.5508    2.9210
    5.5858    2.7412
    4.3819    2.6591
    4.9804    2.5130
    5.5106    3.1058
    5.7574    3.3025
    5.0720    2.7957
    5.8251    2.9738
    5.0941    2.6710
    5.9010    2.9687
    5.4297    2.8074
    6.0002    6.7961
    5.6339    6.4438
    5.8189    6.9754
    4.4891    5.6923
    5.3901    6.5985
    4.8974    6.1518
    5.5986    6.6066
    4.3136    4.7599
    5.5437    6.5546
    4.5941    5.5012
    4.0522    5.0003
    5.2124    6.0224
    4.7668    5.7737
    5.1904    6.4954
    5.0629    5.3365
    5.7830    6.4389
    4.9627    6.1709
    4.9828    5.7459
    4.7729    6.4537
    4.7332    5.5546
    5.2305    6.6276
    5.2479    5.8681
    4.9872    6.8078
    5.1323    6.4318
    5.4651    6.2254
    5.6443    6.4110
    5.5594    6.8424
    5.5821    7.0687
    5.1524    6.3238
    4.9496    5.2040
    4.6122    5.4410
    4.6372    5.3195
    5.0030    5.6463
    4.8935    6.8901
    4.8314    6.0986
    5.5098    6.3185
    5.7228    6.7318
    4.9440    6.3242
    5.0480    5.7565
    4.6351    5.6759
    4.6452    5.9744
    5.2809    6.4015
    4.9125    5.7402
    4.3063    4.8043
    4.8115    5.8669
    5.1035    5.8425
    5.0231    5.8866
    5.3338    6.1530
    4.5632    4.6029
    4.9677    5.8092
    5.3029    8.0431
    4.7398    6.9254
    5.6567    8.1278
    5.1336    7.4822
    5.2728    7.8611
    5.8619    8.9082
    4.1234    6.0307
    5.6671    8.4433
    5.0692    7.8310
    6.0951    8.4295
    5.5568    7.1733
    5.0986    7.3137
    5.5300    7.6767
    4.5383    6.8559
    4.7754    7.0966
    5.4335    7.4161
    5.3555    7.4606
    6.4863    9.0001
    5.5680    9.3060
    4.5537    6.8097
    5.6915    7.9395
    4.7091    6.7094
    5.7715    9.0106
    5.1107    6.8990
    5.6481    7.7872
    5.8731    8.1255
    5.1356    6.7690
    5.1983    6.8020
    5.1039    7.6342
    5.7772    7.8989
    5.6875    8.3523
    6.6852    8.7437
    5.0964    7.6701
    5.1709    6.9544
    4.8133    7.2910
    6.0005    8.5879
    5.4536    7.6563
    5.3628    7.4162
    5.1502    6.6802
    5.6862    7.6190
    5.4973    7.8256
    5.7240    7.4338
    4.7398    6.9254
    5.5907    8.0747
    5.6182    7.9307
    5.5021    7.4554
    4.9397    7.0370
    5.3932    7.2754
    5.4306    7.4130
    5.0318    6.9010

>> scatter(R(:,2),R(:,1),'k *');
>> 

什么是协方差/协方差矩阵/矩阵特征值

2017年9月24日

一、统计学的基本概念

统计学里最基本的概念就是样本的均值、方差、标准差。首先,我们给定一个含有n个样本的集合,下面给出这些概念的公式描述:

均值:

标准差:

方差:

均值描述的是样本集合的中间点,它告诉我们的信息是有限的,而标准差给我们描述的是样本集合的各个样本点到均值的距离之平均。

以这两个集合为例,[0, 8, 12, 20]和[8, 9, 11, 12],两个集合的均值都是10,但显然两个集合的差别是很大的,计算两者的标准差,前者是8.3后者是1.8,显然后者较为集中,故其标准差小一些,标准差描述的就是这种“散布度”。之所以除以n-1而不是n,是因为这样能使我们以较小的样本集更好地逼近总体的标准差,即统计上所谓的“无偏估计”。而方差则仅仅是标准差的平方。

二、为什么需要协方差

标准差和方差一般是用来描述一维数据的,但现实生活中我们常常会遇到含有多维数据的数据集,最简单的是大家上学时免不了要统计多个学科的考试成绩。面对这样的数据集,我们当然可以按照每一维独立的计算其方差,但是通常我们还想了解更多,比如,一个男孩子的猥琐程度跟他受女孩子的欢迎程度是否存在一些联系。协方差就是这样一种用来度量两个随机变量关系的统计量,我们可以仿照方差的定义:

来度量各个维度偏离其均值的程度,协方差可以这样来定义:

协方差的结果有什么意义呢?如果结果为正值,则说明两者是正相关的(从协方差可以引出“相关系数”的定义),也就是说一个人越猥琐越受女孩欢迎。如果结果为负值, 就说明两者是负相关,越猥琐女孩子越讨厌。如果为0,则两者之间没有关系,猥琐不猥琐和女孩子喜不喜欢之间没有关联,就是统计上说的“相互独立”。

三、协方差矩阵

前面提到的猥琐和受欢迎的问题是典型的二维问题,而协方差也只能处理二维问题,那维数多了自然就需要计算多个协方差,比如n维的数据集就需要计算

个协方差,那自然而然我们会想到使用矩阵来组织这些数据。给出协方差矩阵的定义:


这个定义还是很容易理解的,我们可以举一个三维的例子,假设数据集有三个维度,则协方差矩阵为:

可见,协方差矩阵是一个对称的矩阵,而且对角线是各个维度的方差。

尽管协方差矩阵很简单,可它却是很多领域里的非常有力的工具。它能导出一个变换矩阵,这个矩阵能使数据完全去相关(decorrelation)。从不同的角度来看,也就是说能够找出一组最佳的基以紧凑的方式来表达数据。

,则称是A的特征值,X是对应的特征向量。实际上可以这样理解:矩阵A作用在它的特征向量X上,仅仅使得X的长度发生了变化,缩放比例就是相应的特征值

当A是n阶可逆矩阵时,A与P-1Ap相似,相似矩阵具有相同的特征值。特别地,当A是对称矩阵时,A的奇异值等于A的特征值,存在正交矩阵Q(Q-1=QT),使得:

对A进行奇异值分解就能求出所有特征值和Q矩阵。

A*Q=Q*D,D是由特征值组成的对角矩阵.由特征值和特征向量的定义知,Q的列向量就是A的特征向量。

[收集]特征值分解、奇异值分解、PCA概念整理

2017年9月22日

一、特征值与特征向量的几何意义

1.     矩阵乘法

在介绍特征值与特征向量的几何意义之前,先介绍矩阵乘法的几何意义。

矩阵乘法对应了一个变换,是把任意一个向量变成另一个方向或长度的新向量。在这个变化过程中,原向量主要发生旋转、伸缩的变化。如果矩阵对某些向量只发生伸缩变换,不产生旋转效果,那么这些向量就称为这个矩阵的特征向量,伸缩的比例就是特征值。

比如:,它对应的线性变换是下面的形式形式:

因为,这个矩阵乘以一个向量(x,y)的结果是:。由于矩阵M是对称的,所以这个变换是一个对 x , y 轴的一个拉伸变换。【当M中元素值大于1时,是拉伸;当值小于1时,是缩短】

那么如果矩阵M不是对称的,比如:,它所描述的变换如下图所示:

这其实是在平面上对一个轴进行的拉伸变换【如蓝色箭头所示】,在图中蓝色箭头是一个最主要的变化方向。变化方向可能有不止一个,但如果我们想要描述好一个变换,那我们就描述好这个变换主要的变化方向就好了。

2.     特征值分解与特征向量

如果说一个向量v是方阵A的特征向量,将一定可以表示成下面的形式:

λ为特征向量 v 对应的特征值。特征值分解是将一个矩阵分解为如下形式:

其中,Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角矩阵,每一个对角线元素就是一个特征值,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列)。也就是说矩阵A的信息可以由其特征值和特征向量表示。

对于矩阵为高维的情况下,那么这个矩阵就是高维空间下的一个线性变换。可以想象,这个变换也同样有很多的变换方向,我们通过特征值分解得到的前N个特征向量,那么就对应了这个矩阵最主要的N个变化方向。我们利用这前N个变化方向,就可以近似这个矩阵(变换)。

总结一下,特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么。不过,特征值分解也有很多的局限,比如说变换的矩阵必须是方阵。

二、奇异值分解

1.     奇异值

特征值分解是一个提取矩阵特征很不错的方法,但是它只是对方阵而言的,在现实的世界中,我们看到的大部分矩阵都不是方阵,比如说有N个学生,每个学生有M科成绩,这样形成的一个N * M的矩阵就不可能是方阵,我们怎样才能描述这样普通的矩阵呢的重要特征呢?奇异值分解可以用来干这个事情,奇异值分解是一个能适用于任意的矩阵的一种分解的方法:

分解形式:

假设A是一个M * N的矩阵,那么得到的U是一个M * M的方阵(称为左奇异向量),Σ是一个M * N的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),VT(V的转置)是一个N * N的矩阵(称为右奇异向量)。

2.     奇异值与特征值

那么奇异值和特征值是怎么对应起来的呢?我们将一个矩阵A的转置乘以 A,并对(AAT)求特征值,则有下面的形式:

这里V就是上面的右奇异向量,另外还有:

这里的σ就是奇异值,u就是上面说的左奇异向量。【证明那个哥们也没给】

奇异值σ跟特征值类似,在矩阵Σ中也是从大到小排列,而且σ的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前r( r远小于m、n )个的奇异值来近似描述矩阵,即部分奇异值分解:

右边的三个矩阵相乘的结果将会是一个接近于A的矩阵,在这儿,r越接近于n,则相乘的结果越接近于A。

三、PCA主成份分析

主成分分析(PrincipalComponents Analysis。即PCA,也称为K-L变换),是图像压缩中的一种最优正交变换。PCA用于统计特征提取构成了子空间法模式识别的基础。它从图像整体代数特征出发,基于图像的总体信息进行分类识别。PCA的核心思想是利用较少数量的特征对样本进行描述以达到降低特征空间维数的目的。

1.  PCA理论

给定一副N*N大小图像,将它表示成一个N2*1维向量,向量中元素为像素点灰度,按行存储,如下列公式分别表示第i张图片和n张图片平均值:

令N2*n矩阵X为:

注意,矩阵减去平均值相当于将坐标系原点移动到平均值位置。

设Q=XXT,则Q是一个N2* N2矩阵:

,Q是方阵

,Q是对称矩阵。

,Q被成为协方差矩阵,

,Q的数据量非常庞大

    那么,X中的每个元素xj可以被如下表达:

其中,ei是Q中非零特征值对应的特征向量。由特征向量e1,e2,…,en组成的空间叫做张成特征空间。对于N*N图像,e1,e2,…,en是N2*1维相互正交的向量。尺度gji是xj在空间中的坐标。

2.  实现PCA

为了降维,可以对特征值设定阈值或按照其他准则,寻找协方差矩阵Q中前k个特征向量。这里Q十分庞大,对于一副256*256的图像,Q的大小为65536*65536!替代方案是,考虑矩阵

.P和Q都是对称矩阵

.P≠QT

.Q的大小是N2*N2,而P大小为n*n

.n为训练样本图像数量,通常n<<N

设e是矩阵P的特征值λ对应的特征向量,则有:

这里,X*e也是矩阵Q的特征值λ对应的特征向量【这是用求特征值分解方法,下面介绍用SVD方法】

3.  PCA与奇异值分解SVD

任何一个m*n矩阵都能进行奇异值分解,拆分为3个矩阵相乘的形式。由于SVD得出的奇异向量也是从奇异值由大到小排列的,按PCA的观点来看,就是方差最大的坐标轴就是第一个奇异向量,方差次大的坐标轴就是第二个奇异向量…。我们可以对Q进行奇异值分解。

.U就是QQT的特征向量

.V就是QTQ的特征向量

.D中奇异值的平方就是QQT和QTQ的特征值


上面讲了一大堆,就是为了下一篇PCA人脸识别做铺垫的,给你一副图像,要从图像库中得到匹配的图像,怎么弄?如果是两两做像素点比较是不可能完成的任务,时间上废掉了。如果用其他特征点代替也许可以,但容易漏检吧,这边不扩展。我们必须对图像数据的协方差矩阵进行降维,所以用到了PCA。

[读]使用临时图像序列进行人脸识别

2017年9月22日

O. Yamaguchi, K. Fukui, and K. Maeda. Face recognition using temporal image sequence. In Proceedings of International Conference on Automatic Face and Gesture Recognition, 1998: 318-323.

人脸识别过程受表情、角度、光照、年龄等影响,本文提出使用多幅图像代替单幅图像作为输入,多幅图像包含了多样的人脸表情和面部角度。文章对输入图像序列生成子空间,应用Mutual Subspace Method(MSM),其相似性定义为输入图像的子空间与相关子空间的角度(the similarity is defined by the angle between the input and the reference subspaces.)。该文章提出的方法对变化的面部表情和脸朝向改变具有特别好的容错性(This method is stable against the influence of facial expressions and face directions because the subspace can efficiently represent the distribution of the changes.)。

结构:

摘要(Abstract)首先陈述本文提出一种人脸识别算法;接着对比单图片与多图片在人脸识别上的差异,以及引起差异的原因,接着简介算法主要思路以及能解决的问题;最后阐述实验对该算法的支持。

综述介绍(Introduction)首先介绍人脸识别应用领域,人脸识别存在的问题,本文算法拟解决的问题;接着介绍其他前人在该方向的研究成果,总结前人研究成果的缺陷或者不足或者特殊情况;介绍本文算法使用的方法、技术、原理等,并总结本文算法对前面阐述问题的解决效果。

详细介绍算法。首先陈述算法应用的前提,接着用数学方法详细分析算法。

处理过程。首先介绍系统平台,以及处理流程,接着按照处理流程按小节分析介绍。

实验结果。首先用图片展示本文算法的效果。接着用曲线对比本文算法和其他算法的优劣。

结论。总结本文提出的算法,以及用以解决的问题,以及对实验结果对比总结,最后展望接下里的研究工作。

相关单词:

plural 多元的;essentially 本质上;promising 有希望的,有前途的;restrain抑制;modified 改进的;approach 方法;

模式识别相关会议或期刊

2017年9月22日