机器视觉中的数学问题—协方差矩阵
前言
看视觉领域的论文总能看到协方差矩阵这个东西,虽然网上有很多关于他得公式,但还是不太明白它的意义,这里将介绍它的来龙去脉,说清楚它到底是干啥的,为啥总是出现。
一、统计学的基本概念
学过概率统计的我们都知道,统计里最基本的概念就是样本的均值,方差,标准差。给定一个包含n个样本的集合,依次给出这些概念的公式描述:
均值:
X
ˉ
=
∑
i
=
1
n
X
i
\bar{X}=\sum_{i=1}^{n}X_{i}
Xˉ=i=1∑nXi
标准差:
S
=
∑
i
=
1
n
(
X
i
−
X
ˉ
)
2
n
−
1
S=\sqrt{\frac{\sum_{i=1}^{n}\left ( X_{i}-\bar{X} \right )^{2}}{n-1}}
S=n−1∑i=1n(Xi−Xˉ)2
方差:
S
2
=
∑
i
=
1
n
(
X
i
−
X
ˉ
)
2
n
−
1
S^{2}=\frac{\sum_{i=1}^{n}\left ( X_{i}-\bar{X} \right )^{2}}{n-1}
S2=n−1∑i=1n(Xi−Xˉ)2
很显然,均值描述的是样本集合的中间点,它告诉我们的信息是很有限的,而标准差给我们描述的则是样本集合的各个样本点到均值的距离平均。以这两个集合为例,[0,8,12,20]和[8,9,11,12],两个集合的均值都是10,但显然两个集合差别是很大的,计算两者的标准差,前者是8.3,后者是1.8,显然后者较为集中,故其标准差小一些,标准差描述的就是这种“散布度”。之所以除以n-1而不是除以n,是因为这样能使我们以较小的样本集更好的逼近总体的标准差,即统计上所谓的无偏估计。而方差则仅仅是标准差的平方。
这就好比,每年网上都会报XXX年人均收入,这个反映的是均值,我们每个人的收入就是一个样本,一看收入的第一反应,就是作差,又又拖后腿了,差值有正有负,平方求和/(n-1)),这反应的就是贫富差距,方差越大,社会财富分散度越集中,贫富差距越大。
二、为什么需要协方差
上面几个统计量看着好像是够用了,但实际上,我们知道标准差和方差一般是用来描述一维数据的,但现实生活我们常常遇到含有多维数据的数据集,最简单的大家上学时免不了要统计多个学科的考试成绩。面对这样的数据集,我们当然可以按照每一维独立的计算其方差,但是通常我们还想了解更多,比如,一个男孩子的猥琐程度跟他受女孩子欢迎程度是否存在一些联系。。。。。。
协方差就是这样一种用来度量两个随机变量关系的统计量,我们可以仿照方差的定义:
v
a
r
(
X
)
=
∑
i
=
1
n
(
X
i
−
X
ˉ
)
∗
(
X
i
−
X
ˉ
)
n
−
1
var(X)=\frac{\sum_{i=1}^{n}\left ( X_{i}-\bar{X} \right )*\left ( X_{i}-\bar{X} \right )}{n-1}
var(X)=n−1∑i=1n(Xi−Xˉ)∗(Xi−Xˉ)
仿照方差的定义来度量各个维度偏离其均值的程度,
c o v ( X , Y ) = ∑ i = 1 n ( X i − X ˉ ) ∗ ( Y i − Y ˉ ) n − 1 cov(X,Y)=\frac{\sum_{i=1}^{n}\left ( X_{i}-\bar{X} \right )*\left ( Y_{i}-\bar{Y} \right )}{n-1} cov(X,Y)=n−1∑i=1n(Xi−Xˉ)∗(Yi−Yˉ)
协方差的结果有什么意义呢?如果结果为正值,则说明两者是正相关的(从协方差可以引出“相关系数”的定义),也就是说一个人越猥琐就越受女孩子欢迎,嘿嘿,那必须的~结果为负值就说明负相关的,越猥琐女孩子越讨厌,可能吗?如果为0,也是就是统计上说的“相互独立”。
从协方差的定义上我们也可以看出一些显而易见的性质,如:
1.
c
o
v
(
X
,
Y
)
=
v
a
r
(
X
)
1. cov(X,Y)=var(X)
1.cov(X,Y)=var(X)
2.
c
o
v
(
X
,
Y
)
=
c
o
v
(
Y
,
X
)
2.cov(X,Y)=cov(Y,X)
2.cov(X,Y)=cov(Y,X)
三、协方差矩阵
协方差多了就是协方差矩阵,上一节提到的猥琐和受欢迎的问题是典型二维问题,而协方差也只能处理二维问题,那维数多了自然就需要计算多个协方差,比如n维的数据集就需要计算 n ∗ ( n − 1 ) 2 \frac{n*\left(n-1\right)}{2} 2n∗(n−1)个协方差,那那自然而然的我们会想到使用矩阵来组织这些数据。
于是就有了协方差矩阵:
C
n
X
n
=
(
C
(
i
,
j
)
)
C_{nXn}=\left ( C_{\left ( i,j \right )} \right )
CnXn=(C(i,j)),其中
C
(
i
,
j
)
=
c
o
v
(
D
i
m
i
,
D
i
m
j
)
C_{\left ( i,j \right )}=cov{\left(D_{imi},D_{imj}\right)}
C(i,j)=cov(Dimi,Dimj)
我们可以举一个简单的三维的例子,假设数据集有三个维度,则协方差矩阵为:
(
c
o
v
(
x
,
x
)
,
c
o
v
(
x
,
y
)
,
c
o
v
(
x
,
z
)
c
o
v
(
y
,
x
)
,
c
o
v
(
y
,
y
)
,
c
o
v
(
y
,
z
)
c
o
v
(
z
,
x
)
,
c
o
v
(
z
,
y
)
,
c
o
v
(
z
,
z
)
)
\begin{pmatrix} cov\left ( x,x \right ),& cov\left ( x,y \right ), & cov\left ( x,z \right ) \\ cov\left ( y,x \right ),& cov\left ( y,y \right ), & cov\left ( y,z \right ) \\ cov\left ( z,x \right ),& cov\left ( z,y \right ), & cov\left ( z,z \right ) \\ \end{pmatrix}
⎝⎛cov(x,x),cov(y,x),cov(z,x),cov(x,y),cov(y,y),cov(z,y),cov(x,z)cov(y,z)cov(z,z)⎠⎞
可见,协方差矩阵是一个对称的矩阵,而且对角线是各个维度上的方差。
协方差矩阵通常这样计算,先让样本矩阵中心化,即每一维度减去该维度的均值,使每一维度上的均值为0,然后直接用新得到的样本矩阵乘上它的转置,然后除以(N-1)即可。其实这种方法也是由前面的公式推导而来,只不过理解起来不是很直观,但在抽象的公式推导时还是很常用的!