zoukankan      html  css  js  c++  java
  • 协方差矩阵

    概念

    协方差(Covariance)在概率论和统计学中用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。
    这个解释摘自维基百科,看起来很是抽象,不好理解。其实简单来讲,协方差就是衡量两个变量相关性的变量。当协方差为正时,两个变量呈正相关关系(同增同减);当协方差为负时,两个变量呈负相关关系(一增一减)。
    而协方差矩阵,只是将所有变量的协方差关系用矩阵的形式表现出来而已。通过矩阵这一工具,可以更方便地进行数学运算。

    数学定义

    回想概率统计里面关于方差的数学定义:

    [Var(X)=frac{sum_{i=1}^n{(x_i-overline x)(x_i-overline x)}}{n-1} ]

    协方差的数学定义异曲同工:

    [Cov(X,Y)=frac{sum_{i=1}^n{(x_i-overline x)(y_i-overline y)}}{n-1} ]

    这里的 (X)(Y) 表示两个变量空间。用机器学习的话讲,就是样本有 (x)(y) 两种特征,而 (X) 就是包含所有样本的 (x) 特征的集合,(Y) 就是包含所有样本的 (y) 特征的集合。

    协方差矩阵

    两个变量的协方差矩阵

    有了上面的数学定义后,我们可以来讨论协方差矩阵了。当然,协方差本身就能够处理二维问题,两个变量的协方差矩阵并没有实际意义,不过为了方便后面多维的推广,我们还是从二维开始。

    用一个例子来解释会更加形象。

    假设我们有 4 个样本,每个样本都有两个变量,也就是两个特征,它们表示如下:
    (x_1=(1,2))(x_2=(3,6))(x_3=(4,2))(x_4=(5,2))

    用一个矩阵表示为:

    [Z=egin{bmatrix} 1 & 2 \ 3 & 6 \ 4 & 2 \ 5 & 2 end{bmatrix} ]

    现在,我们用两个变量空间 (X)(Y) 来表示这两个特征:

    [X=egin{bmatrix} 1 \ 3 \ 4 \ 5 end{bmatrix}, Y=egin{bmatrix} 2 \ 6 \ 2 \ 2 end{bmatrix} ]

    由于协方差反应的是两个变量之间的相关性,因此,协方差矩阵表示的是所有变量之间两两相关的关系,具体来讲,一个包含两个特征的矩阵,其协方差矩阵应该有 (2 imes 2) 大小:

    [Cov(Z)=egin{bmatrix} Cov(X,X) & Cov(X,Y) \ Cov(Y,X) & Cov(Y,Y) end{bmatrix} ]

    接下来,就来逐一计算 (Cov(Z)) 的值。
    首先,我们需要先计算出 (X)(Y) 两个特征空间的平均值:(overline x=3.25)(overline y=3)
    然后,根据协方差的数学定义,计算协方差矩阵的每个元素:

    (Cov(X,X)=frac{(1-3.25)^2+(3-3.25)^2+(4-3.25)^2+(5-3.25)^2}{4-1}=2.9167)

    (Cov(X,Y)=frac{(1-3.25)(2-3)+(3-3.25)(6-3)+(4-3.25)(2-3)+(5-3.25)(2-3)}{4-1}=-0.3333)

    (Cov(Y,X)=frac{(2-3)(1-3.25)+(6-3)(3-3.25)+(2-3)(4-3.25)+(2-3)(5-3.25)}{4-1}=-0.3333)

    (Cov(Y,Y)=frac{(2-3)^2+(6-3)^2+(2-3)^2+(2-3)^2}{4-1}=4)

    所以协方差矩阵 (Cov(Z)=egin{bmatrix} 2.9167 & -0.3333 \ -0.3333 & 4.000 end{bmatrix})

    好了,虽然这只是一个二维特征的例子,但我们已经可以从中总结出协方差矩阵 (Sigma) 的「计算套路」:

    (Sigma_{ij}=frac{(样本矩阵第i列-第i列均值)^T(样本矩阵第j列-第j列均值)}{样本数-1})

    这里所说的样本矩阵可以参考上面例子中的 (Z)

    多个变量的协方差矩阵

    接下来,就用上面推出的计算协方差矩阵的「普世规律」。
    假设我们有三个样本:
    (x_1=(1,2,3,4)^T)(x_2=(3,4,1,2)^T)(x_3=(2,3,1,4)^T)
    同理我们将它们表示成样本矩阵:

    (Z=egin{bmatrix} 1 & 2 & 3 & 4 \ 3 & 4 & 1 & 2 \ 2 & 3 & 1 & 4 end{bmatrix})

    按照上面给出的计算套路,我们需要先计算出矩阵每一列的均值,从左到右分别为:2、3、1.67、3.33。
    然后按照上面讲到的公式,计算矩阵每个元素的值,对了,四个变量的协方差矩阵,大小为 (4 imes 4)

    (Sigma_{11}=frac{(第1列-第1列的均值)^T*(第1列-第1列的均值)}{样本数-1} \=frac{(-1,1,0)^T*(-1,1,0)}{2}=1)

    (后面的依此类推......)

    独立变量的协方差

    以上的讨论都是针对一般情况进行计算的,毕竟变量互相独立的情况较少。

    不过,如果两个变量 (X), (Y) 独立,那么它们的协方差 (Cov(X,Y) = 0)。简要证明如下(简单起见,假设变量是离散的):

    由于 (X, Y) 独立,所以它们的概率密度函数满足:(p(x,y)=p_x(x)p_y(y))

    求出期望:

    [egin{eqnarray} E(XY) & = &sum_x sum_y {x imes y imes p(x,y)} otag \ & = &sum_x sum_y x imes y imes p_x(x) imes p_y(y) otag \ & = &sum_x{x imes p_x(x)}sum_y{y imes p_y(y)} otag \ & = &E(X)E(Y) otag end{eqnarray} ]

    利用协方差的另一个公式:(Cov(X,Y)=E(X,Y)-E(X)E(Y)),可以推出,当 (X, Y) 相互独立时,(Cov(X, Y)=0)

    这时,协方差矩阵就变成一个对角矩阵了:

    [Cov(Z)=egin{bmatrix} Cov(X,X) & 0\ 0 & Cov(Y,Y) end{bmatrix} ]

    协方差矩阵的作用

    虽然我们已经知道协方差矩阵的计算方法了,但还有一个更重要的问题:协方差矩阵有什么作用?作为一种数学工具,协方差矩阵经常被用来计算特征之间的某种联系。在机器学习的论文中,协方差矩阵的出现概率还是很高的,用于降维的主成分分析法(PCA)就用到了协方差矩阵。另外,由于协方差矩阵是一个对称矩阵,因此它包含了很多很有用的性质,这也导致它受青睐的程度较高。

    参考

    PS: 之后的文章更多的会发布在公众号上,欢迎有兴趣的读者关注我的个人公众号:AI小男孩,扫描下方的二维码即可关注

    作为曾经在 AI 路上苦苦挣扎的过来人,想帮助小白们更好地思考各种 AI 技术的来龙去脉。
  • 相关阅读:
    24. Swap Nodes in Pairs(M);25. Reverse Nodes in k-Group(H)
    61. Rotate List(M);19. Remove Nth Node From End of List(M)
    素数筛选法(prime seive)
    哈夫曼树;二叉树;二叉排序树(BST)
    sort与qsort的区别与联系
    贪心算法
    First non-repeating character in a stream
    transform
    C++11 & C++14 & C++17新特性
    开个玩笑
  • 原文地址:https://www.cnblogs.com/jermmyhsu/p/8195588.html
Copyright © 2011-2022 走看看