协方差、相关系数

 机器视觉中,常用到协方差相关的知识,特别是基于统计框架下的机器学习算法,几乎无处不在的用到它,因此了解协方差是再基础不过的了。这里推荐一个很不错的基础教程:协方差的意义和计算公式

  1. 均值和方差

    引入协方差之前,先简单回顾下概率统计中的两个重要基础概念:均值和方差。均值,顾名思义就是一堆样本的平均值,方差就是样本和均值的平均偏差。对于给定的n个样本,那么样本集的均值和方差可以分别这样来定义:

名称            

公式

解释

均值

X¯=ni=1XinX¯=∑i=1nXin

样本的平均值,即样本的中心点,例如{1 2,3,4}的均值是2.5

标准差

S=ni=1(XiX¯)2n1S=∑i=1n(Xi−X¯)2n−1

样本点到中心点的平均距离,所以这里做了平方再开方。注意这里采用了除以n-1,目的是为了用更少的样本就可以趋近于总体的标准差。例如{1 2,3,4}的标准差

方差

S2=ni=1(XiX¯)2n1S2=∑i=1n(Xi−X¯)2n−1

样本点到中心点的平均距离的平方,用平方是为了方便计算,因为是一一对应的正相关关系,所以意义和标准差一样,免去了开放带来的复杂计算。

    

      均值(中心点)和方差的图示如下所示:

    

  1. 协方差和相关系数

    方差描述的是一维数据上的统计量。而在实际中,还会考察两个统计量之间的相关性,例如人的身高和两手撑开的长度是否由相关性?男人越坏是不是女人就越爱?那这个时候就可以用协方差来刻画了。

    以男人越坏女人越爱为例,假设采访了二十对情侣,得到下面的数据:

男人坏的程度

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

女人爱的程度

2.58

3.39

3.75

4.80

4.93

5.91

5.68

6.26

6.64

7.13

8.36

8.57

9.04

9.14

10.35

10.62

10.85

11.51

11.90

12.07

    我们画个二维点图,很容易发现,他们是线性相关的,如下图所示:

    直观上,如果男人坏的程度和女人爱的程度如果是成正比例的话,就是说如果男人越坏女人越爱男人,那么我们就认为他们是正相关的,如果是反比例的话,就是说男人越坏女人越不爱男人,那么我们就认为他们是负相关的。如果女人爱不爱男人和男人坏不坏没有任何毛关系的话,那么我们就是他们两个变量是毫无关系的,我们也认为他们是独立的,因为互不搭杠嘛。那怎么来描述正相关呢?我们可以这么想,如果两个变量偏离中心点的变化量越一致,那么我们就可以认为他们越正相关的;同样地如果两个变量偏离中心点的变化量刚好相反,那么就是负相关了。根据这个思想我们可以仿照方差来定义协方差:

名称               

公式

解释

方差

var(X)=ni=1(XiX¯)2n1var(X)=∑i=1n(Xi−X¯)2n−1

样本点到中心点的平均距离的平方,用平方是为了方便计算,因为是一一对应的正相关关系,所以意义和标准差一样,免去了开放带来的复杂计算。

协方差

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

两个样本的相关性刻画

      从定义不难发现,当两个变量正相关性很强的时候,那么其协方差就越大,当两个变量负相关越强,那么其协方差是负数且很小;当两个变量关系不大的时候,那么他们协方差趋于0,越接近独立。根据上面表格的数据,我们计算相应的协方差,其结果为:33.2500,为正,说明是正相关的。需要注意的是,协方差的定义是没有将数据进行归一化的,即两个变量的数据如果尺度不一样,就会导致其中的变量影响大于另外一个变量,例如一个变量的取值范围为0.1-1,另一个变量取值范围为100-1000,这样后者在计算中起到决定作用,而前者影响则微乎其微,导致协方差不能反应相关性的强弱程度。下面的这段代码解释了这种情况:

复制代码
value = [];
for w = 0:5:50
    x = 1:50;
    y = roundn(0.1*x+2+w*rand(1,size(x,2)),-2);
    plot(x,y,'bo');
    value = [value sum((x(1,:)-mean(x(1,:))).*(y(1,:)-mean(y(1,:))))/(size(x,2))];
    value = roundn(value,-2);
end
复制代码

       结果为:

      随着噪声的增加,协方差并不能刻画相关性的强弱。其实是因为数据没有归一化而导致的结果,这就引入了相关系数的定义,如下: 

coef(X,Y)=ni=1(XiX¯)(YiY¯)n1ni=1(XiX¯)2n1ni=1(YiY¯)2n1coef(X,Y)=∑i=1n(Xi−X¯)(Yi−Y¯)n−1∑i=1n(Xi−X¯)2n−1∑i=1n(Yi−Y¯)2n−1

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

      再来看下上面的例子用相关系数得到的结果

      代码如下:  

复制代码
value = [];
coef = [];
for w = 0:5:50
  x = 1:50;
  y = x+w*rand(1,size(x,2));
  plot(x,y,'bo');
  coef = [coef sum((x(1,:)-mean(x(1,:))).*(y(1,:)-mean(y(1,:))))/(std(x)*std(y)*(size(x,2)))];
  coef = roundn(coef,-2);
end
复制代码

 

      结果为:

      由此可见随着噪声的增加,相关性会降低,而相关系数的值也会趋于0.相关性越强,则相关系数的值会越大。

      从定义可知,协方差和相关系数具有交换性,即

 

cov(X,Y)=cov(Y,X)cov(X,Y)=cov(Y,X)

coef(X,Y)=coef(Y,X)coef(X,Y)=coef(Y,X)

     当两个变量相同时,协方差等于方差,即

 

cov(X,Y)=s2,ifX=Ycov(X,Y)=s2,ifX=Y

      实际上,如果数据归一化后,得到的协方差,是具有相关系数相同的性质,也可以用来刻画相关性的强弱。

3、协方差矩阵

    当一个样本含有很多变量的时候,如何刻画两两样本之间的相关性呢?需要使用协方差矩阵来表示,就是用一个矩阵把两两变量之间的协方差存储起来而已,由于协方差具有交换性,只需

要计算上三角或下三角的协方差即可,计算量为n!(n2)!2n!(n−2)!∗2 ,协方差矩阵定义如下:

C=c11cn1c1ncnnC=[c11⋯c1n⋮⋱⋮cn1⋯cnn]

    其中ci,j=cov(Xi,Yj)ci,j=cov(Xi,Yj)。显而易见地协方差矩阵是一个对角矩阵 ,因此是一个正定矩阵,通常也可逆;对角线上的元素是各个维度上方差。

    因此:协方差矩阵是维度之间的协方差构成的矩阵,而不是样本个数构成的,因此拿到样本时,需要搞清楚维度是行还是列。

发布了32 篇原创文章 · 获赞 8 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/jeffiny/article/details/79804571