• 协方差矩阵的计算及意义 covariance(cov)


    转载:(221条消息) 协方差矩阵的计算及意义_hi_linda的博客-CSDN博客_协方差矩阵计算

    声明:博文转自https://blog.csdn.net/mr_hhh/article/details/78490576

    一、首先看一个比较简洁明了的协方差计算介绍:

    1. 协方差定义
    X、Y 是两个随机变量,X、Y 的协方差 cov(X, Y) 定义为:

    其中,

    2. 协方差矩阵定义
    矩阵中的数据按行排列与按列排列求出的协方差矩阵是不同的,这里默认数据是按行排列。即每一行是一个observation(or sample),那么每一列就是一个随机变量。

    协方差矩阵:

    协方差矩阵的维度等于随机变量的个数,即每一个 observation 的维度。在某些场合前边也会出现 1 / m,而不是 1 / (m - 1).

    3. 求解协方差矩阵的步骤
    举个例子,矩阵 X 按行排列:


    1. 求每个维度的平均值

    2. 将 X 的每一列减去平均值

    其中:


    3. 计算协方差矩阵


    --------------------- 
    作者:Rise_1024 
    来源:CSDN 
    原文:https://blog.csdn.net/mr_hhh/article/details/78490576 
    版权声明:本文为博主原创文章,转载请附上博文链接!

    二、再来看一下协方差矩阵的意义:

    协方差代表的意义是什么? 

    在概率论中,两个随机变量 X 与 Y 之间相互关系,大致有下列3种情况:

    情况一,如上, 当 X, Y 的联合分布像上图那样时,我们可以看出,大致上有: X 越大  Y 也越大, X 越小  Y 也越小,这种情况,我们称为“正相关”。

    情况二, 如上图, 当X, Y 的联合分布像上图那样时,我们可以看出,大致上有:X 越大Y 反而越小,X 越小 Y 反而越大,这种情况,我们称为“负相关”。

    情况三,如上图, 当X, Y  的联合分布像上图那样时,我们可以看出:既不是X  越大Y 也越大,也不是 X 越大 Y 反而越小,这种情况我们称为“不相关”。

    怎样将这3种相关情况,用一个简单的数字表达出来呢?

    在图中的区域(1)中,有 X>EX ,Y-EY>0 ,所以(X-EX)(Y-EY)>0;

    在图中的区域(2)中,有 X<EX ,Y-EY>0 ,所以(X-EX)(Y-EY)<0;

    在图中的区域(3)中,有 X<EX ,Y-EY<0 ,所以(X-EX)(Y-EY)>0;

    在图中的区域(4)中,有 X>EX ,Y-EY<0 ,所以(X-EX)(Y-EY)<0。

    当X 与Y 正相关时,它们的分布大部分在区域(1)和(3)中,小部分在区域(2)和(4)中,所以平均来说,有E(X-EX)(Y-EY)>0 。

    当 X与 Y负相关时,它们的分布大部分在区域(2)和(4)中,小部分在区域(1)和(3)中,所以平均来说,有(X-EX)(Y-EY)<0 。

    当 X与 Y不相关时,它们在区域(1)和(3)中的分布,与在区域(2)和(4)中的分布几乎一样多,所以平均来说,有(X-EX)(Y-EY)=0 。

    所以,我们可以定义一个表示X, Y 相互关系的数字特征,也就是协方差

    cov(X, Y) = E(X-EX)(Y-EY)

    当 cov(X, Y)>0时,表明 X与Y 正相关;

    当 cov(X, Y)<0时,表明X与Y负相关;

    当 cov(X, Y)=0时,表明X与Y不相关。

    这就是协方差的意义。

    三、此部分进行更系统的说明:

    声明:博文转自 https://blog.csdn.net/ybdesire/article/details/6270328

    协方差的定义

    对于一般的分布,直接代入E(X)之类的就可以计算出来了,但真给你一个具体数值的分布,要计算协方差矩阵,根据这个公式来计算,还真不容易反应过来。网上值得参考的资料也不多,这里用一个例子说明协方差矩阵是怎么计算出来的吧。

    记住,X、Y是一个列向量,它表示了每种情况下每个样本可能出现的数。比如给定

    则X表示x轴可能出现的数,Y表示y轴可能出现的。注意这里是关键,给定了4个样本,每个样本都是二维的,所以只可能有X和Y两种维度。所以

    用中文来描述,就是:

    协方差(i,j)=(第i列的所有元素-第i列的均值)*(第j列的所有元素-第j列的均值)

    这里只有X,Y两列,所以得到的协方差矩阵是2x2的矩阵,下面分别求出每一个元素:

            

    所以,按照定义,给定的4个二维样本的协方差矩阵为:

    用matlab计算这个例子

    z=[1,2;3,6;4,2;5,2]

    cov(z)

    ans =

        2.9167   -0.3333

       -0.3333    4.0000

    可以看出,matlab计算协方差过程中还将元素统一缩小了3倍。所以,协方差的matlab计算公式为:

        协方差(i,j)=(第i列所有元素-第i列均值)*(第j列所有元素-第j列均值)/(样本数-1)

           下面在给出一个4维3样本的实例,注意4维样本与符号X,Y就没有关系了,X,Y表示两维的,4维就直接套用计算公式,不用X,Y那么具有迷惑性的表达了。

            

    (3)与matlab计算验证

                         Z=[1 2 3 4;3 4 1 2;2 3 1 4]

                         cov(Z)

                         ans =

                              1.0000    1.0000   -1.0000   -1.0000

                              1.0000    1.0000   -1.0000   -1.0000

                             -1.0000   -1.0000    1.3333    0.6667

                              -1.0000   -1.0000    0.6667    1.3333

           可知该计算方法是正确的。我们还可以看出,协方差矩阵都是方阵,它的维度与样本维度有关(相等)。参考2中还给出了计算协方差矩阵的源代码,非常简洁易懂,在此感谢一下!

    参考:

    [1] http://en.wikipedia.org/wiki/Covariance_matrix

    [2] http://www.cnblogs.com/cvlabs/archive/2010/05/08/1730319.html
    --------------------- 
    作者:ybdesire 
    来源:CSDN 
    原文:https://blog.csdn.net/ybdesire/article/details/6270328 
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    asp.net大文件(视频)分片上传
    numpy.argmin
    python-Numpy学习之(一)ndim、shape、dtype、astype的用法
    matlab设置小数位数
    利用Open3D进行点云可视化
    dell5820参数
    CUDA与cuDNN
    Ubuntu16.04更换cudnn版本
    二进制格式保存文件np.save和np.load-Numpy数组的保存与读取方法
    python pickle存储、读取大数据量列表、字典数据的方法
  • 原文地址:https://www.cnblogs.com/MCSFX/p/15944752.html
Copyright © 2020-2023  润新知