天天看点

协方差和协方差矩阵的理解

      协方差用于衡量两个变量的总体误差,只能处理二维的问题!描述一个变量与另一个变量之间的关系,若协方差为正,则说明是正相关,为负,则负相关,为0,则不相关,相互独立!

比如一个人的数学成绩好,那么他的物理成绩也好,数学成绩与物理成绩是正相关的关系!

比如一个人的数学成绩好,和他的英语成绩,可能是相互独立的关系,没有绝对的相关!

比如一个人不太爱说话,和他讨人喜欢,则就是负相关的关系!

协方差式子

协方差和协方差矩阵的理解

      协方差矩阵是由不同维度之间的协方差构成的,例如x,y,z为三个维度,则它们的协方差矩阵为

协方差和协方差矩阵的理解

随机产生一个10*3维的整数矩阵作为样本集,10为样本的个数,3为样本的维数。先求出每一维的均值,再求相互之间的协方差,接着求自身的协方差,最后可以构成三维的协方差矩阵。

用matlab实现,cov()为协方差函数,一下是它的实现代码:

>> MySample =fix(rand(10,3)*50);   

MySample =

    40     7    32

    45    48     1

     6    47    42

    45    24    46

    31    40    33

     4     7    37

    13    21    37

    27    45    19

    47    39    32

    48    47     8

>>dim1=MySample(:,1);

dim2=MySample(:,2);

dim3=MySample(:,3);

>>sum((dim1-mean(dim1)).*(dim2-mean(dim2)))/(size(MySample,1)-1)%

ans =

    78

>> sum((dim1-mean(dim1)).*(dim3-mean(dim3)))/(size(MySample,1)-1)%

ans =

 -120.2444

>> sum((dim2-mean(dim2)).*(dim3-mean(dim3)))/(size(MySample,1)-1)%

ans =

 -126.9444

>> std(dim1)^2%

ans =

  301.1556

>>  std(dim2)^2%

ans =

  268.9444

>>  std(dim3)^2%

ans =

  216.0111

>> Cov(MySample)

ans =

  301.1556   78.0000 -120.2444

   78.0000  268.9444 -126.9444

 -120.2444 -126.9444  216.0111

也可以用另一种方法实现,先让样本矩阵中心化,即每一维度减去该维度的均值,然后直接用新的到的样本矩阵乘上它的转置,然后除以(N-1)即可,这种方法是通过上面原理推出来的,只用两条语句就能得出协方差矩阵

>> X = MySample-repmat(mean(MySample),5,1);    %中心化样本矩阵 

C = (X'*X)./(size(X,1)-1)

继续阅读