博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
协方差与协方差矩阵
阅读量:2383 次
发布时间:2019-05-10

本文共 2377 字,大约阅读时间需要 7 分钟。

引言

最近在看主成分分析(PCA),其中有一步是计算样本各维度的协方差矩阵。以前在看算法介绍时,也经常遇到,现找了些资料复习,总结如下。

协方差

通常,在提到协方差的时候,需要对其进一步区分。

(1)随机变量的协方差。跟数学期望、方差一样,是分布的一个总体参数。
(2)样本的协方差。是样本集的一个统计量,可作为联合分布总体参数的一个估计。
在实际中计算的通常是样本的协方差。

随机变量的协方差

在概率论和统计中,协方差是对两个随机变量联合分布线性相关程度的一种度量。两个随机变量越线性相关,协方差越大,完全线性无关,协方差为零。定义如下。

 

cov(X,Y)=E[(X−E[X])(Y−E[Y])]

当X,Y是同一个随机变量时,X与其自身的协方差就是X的方差,可以说方差是协方差的一个特例。

cov(X,X)=E[(X−E[X])(X−E[X])]

var(X)=cov(X,X)=E[(X−E[X])2]

由于随机变量的取值范围不同,两个协方差不具备可比性。如X,Y,Z分别是三个随机变量,想要比较X与Y的线性相关程度强,还是X与Z的线性相关程度强,通过cov(X,Y)与cov(X,Z)无法直接比较。定义相关系数η为

η=cov(X,Y)var(X)⋅var(Y)‾‾‾‾‾‾‾‾‾‾‾‾‾‾√ 

通过X的方差var(X)与Y的方差var(Y)对协方差cov(X,Y)归一化,得到相关系数η,η的取值范围是[−1,1]。1表示完全线性相关,−1表示完全线性负相关,0

表示线性无关。线性无关并不代表完全无关,更不代表相互独立。

样本的协方差

在实际中,通常我们手头会有一些样本,样本有多个属性,每个样本可以看成一个多维随机变量的样本点,我们需要分析两个维度之间的线性关系。协方差及相关系数是度量随机变量间线性关系的参数,由于不知道具体的分布,只能通过样本来进行估计。

设样本对应的多维随机变量为X=[X1,X2,X3,...,Xn]T

,样本集合为{x⋅j=[x1j,x2j,...,xnj]T|1⩽j⩽m},m为样本数量。与样本方差的计算相似,a和b两个维度样本的协方差公式为,其中1⩽a⩽n,1⩽b⩽n,n为样本维度

qab=∑mj=1(xaj−x¯a)(xbj−x¯b)m−1

这里分母为m−1

是因为随机变量的数学期望未知,以样本均值代替,自由度减一。

协方差矩阵

多维随机变量的协方差矩阵

对多维随机变量X=[X1,X2,X3,...,Xn]T

,我们往往需要计算各维度两两之间的协方差,这样各协方差组成了一个n×n的矩阵,称为协方差矩阵。协方差矩阵是个对称矩阵,对角线上的元素是各维度上随机变量的方差。我们定义协方差矩阵为Σ,这个符号与求和∑相同,需要根据上下文区分。矩阵内的元素Σij为

Σij=cov(Xi,Xj)=E[(Xi−E[Xi])(Xj−E[Xj])]

这样这个矩阵为

Σ=E[(X−E[X])(X−E[X])T]

 

=⎡⎣⎢⎢⎢⎢cov(X1,X1)cov(X2,X1)⋮cov(Xn,X1)cov(X1,X2)cov(X2,X2)⋮cov(Xn,X2)⋯⋯⋱⋯cov(X1,Xn)cov(X2,Xn)⋮cov(Xn,Xn)⎤⎦⎥⎥⎥⎥

 

=⎡⎣⎢⎢⎢⎢⎢E[(X1−E[X1])(X1−E[X1])]E[(X2−E[X2])(X1−E[X1])]⋮E[(Xn−E[Xn])(X1−E[X1])]E[(X1−E[X1])(X2−E[X2])]E[(X2−E[X2])(X2−E[X2])]⋮E[(Xn−E[Xn])(X2−E[X2])]⋯⋯⋱⋯E[(X1−E[X1])(Xn−E[Xn])]E[(X2−E[X2])(Xn−E[Xn])]⋮E[(Xn−E[Xn])(Xn−E[Xn])]⎤⎦⎥⎥⎥⎥⎥

 

样本的协方差矩阵

与上面的协方差矩阵相同,只是矩阵内各元素以样本的协方差替换。样本集合为{x⋅j=[x1j,x2j,...,xnj]T|1⩽j⩽m}

,m为样本数量,所有样本可以表示成一个n×m的矩阵。我们以Σ̂ 表示样本的协方差矩阵,与Σ区分。

Σ̂ =⎡⎣⎢⎢⎢⎢q11q21⋮qn1q12q21⋮qn2⋯⋯⋱⋯q1nq2n⋮qnn⎤⎦⎥⎥⎥⎥

 

=1m−1⎡⎣⎢⎢⎢⎢⎢∑mj=1(x1j−x¯1)(x1j−x¯1)∑mj=1(x2j−x¯2)(x1j−x¯1)⋮∑mj=1(xnj−x¯n)(x1j−x¯1)∑mj=1(x1j−x¯1)(x2j−x¯2)∑mj=1(x2j−x¯2)(x2j−x¯2)⋮∑mj=1(xnj−x¯n)(x2j−x¯2)⋯⋯⋱⋯∑mj=1(x1j−x¯1)(xnj−x¯n)∑mj=1(x2j−x¯2)(xnj−x¯n)⋮∑mj=1(xnj−x¯n)(xnj−x¯n)⎤⎦⎥⎥⎥⎥⎥

 

=1m−1∑j=1m(x⋅j−x¯)(x⋅j−x¯)T

公式中m为样本数量,x¯为样本的均值,是一个列向量,x⋅j为第j

个样本,也是一个列向量。

在写程序计算样本的协方差矩阵时,我们通常用后一种向量形式计算。一个原因是代码更紧凑清晰,另一个原因是计算机对矩阵及向量运算有大量的优化,效率高于在代码中计算每个元素。

需要注意的是,协方差矩阵是计算样本不同维度之间的协方差,而不是对不同样本计算,所以协方差矩阵的大小与维度相同。

很多时候我们只关注不同维度间的线性关系,且要求这种线性关系可以互相比较。所以,在计算协方差矩阵之前,通常会对样本进行归一化,包括两部分:

  1. y⋅j=x⋅j−x¯
  • 。即对样本进行平移,使其重心在原点;
  • zi⋅=yi⋅/σi
  • 。其中σi是维度i
    1. 的标准差。这样消除了数值大小的影响。

    这样,协方差矩阵Σ̂ 

    可以写成

    Σ̂ =1m−1∑j=1mz⋅jzT⋅j

    该矩阵内的元素具有可比性。

转载地址:http://hwdab.baihongyu.com/

你可能感兴趣的文章
GUI开发之DirectFB
查看>>
GTK/DirectFB两个闪烁的问题
查看>>
《Linux内核修炼之道》 之 高效学习Linux驱动开发
查看>>
编写可移植C/C++程序的要点
查看>>
DirectFB代码导读
查看>>
linux fork函数浅析
查看>>
内核启动时间优化
查看>>
基于Linux的多播编程
查看>>
网络字节序
查看>>
Linux网络命令详解
查看>>
GNU C 的 __attribute__ 机制
查看>>
atoi,atol,strtod,strtol,strtoul详解
查看>>
基于HZK16的汉字显示技术
查看>>
嵌入式web服务器对比
查看>>
select 函数使用指难
查看>>
人类的15个欲望与游戏设计
查看>>
高速缓存
查看>>
kernel基本功练习
查看>>
UNIX/LINUX 平台可执行文件格式分析
查看>>
轻量级服务器选择
查看>>