关于协方差,协方差矩阵的个人理解

协方差

协方差定义

  • 协方差(Covariance)在概率论统计学中用于衡量两个变量的总体误差
  • 设有随机变量 X X X和随机变量 Y Y Y,则协方差定义为:

C o v ( X , Y ) = E ( ( X − E [ x ] ) ( Y − E [ Y ] ) ) = E ( ( Y − E [ Y ] ) ( X − E [ X ] ) ) Cov(X,Y)=E((X-E[x])(Y-E[Y]))=E((Y-E[Y])(X-E[X])) Cov(X,Y)=E((XE[x])(YE[Y]))=E((YE[Y])(XE[X]))
说明:
1. E [ X ] , E [ Y ] E[X],E[Y] E[X],E[Y]分别表示随机变量 X , Y X,Y X,Y的均值,是一个标量。
2. 从直观上来看,协方差表示的是两个变量总体误差的期望。

假设随机变量 X , Y X,Y X,Y均以列向量给出, E [ X ] , E [ Y ] E[X],E[Y] E[X],E[Y]分别表示他们的均值,则以向量的方式计算他们的协方差值为:
C o v ( X , Y ) = ( X − E [ X ] ) T ( Y − E [ Y ] ) = ( Y − E [ Y ] ) T ( X − E [ X ] ) Cov(X,Y)=(X-E[X])^{T}(Y-E[Y])=(Y-E[Y])^{T}(X-E[X]) Cov(X,Y)=(XE[X])T(YE[Y])=(YE[Y])T(XE[X])

举例说明

设有随机变量 X X X(假设是身高),观察到的值为:
( 1 2 3 ) \begin{pmatrix}1\\ 2\\ 3\\\end{pmatrix} 123
随机变量 Y Y Y(假设是体重),观察到的值为:
( 2 4 9 ) \begin{pmatrix}2\\ 4\\ 9\end{pmatrix} 249
则, E [ X ] = 2 E[X]=2 E[X]=2 E [ Y ] = 5 E[Y]=5 E[Y]=5

则协方差为:
C o v ( X , Y ) = ( 1 − 2 ) ∗ ( 2 − 5 ) + ( 2 − 2 ) ∗ ( 4 − 5 ) + ( 3 − 2 ) ∗ ( 9 − 5 ) = 7 Cov(X,Y)=(1-2)*(2-5)+(2-2)*(4-5)+(3-2)*(9-5)=7 Cov(X,Y)=(12)(25)+(22)(45)+(32)(95)=7
以向量的方式给出(表达更简洁):
C o v ( X , Y ) = ( 1 − 2 2 − 2 3 − 2 ) T ( 2 − 5 4 − 5 9 − 5 ) = ( − 1 0 1 ) T ( − 3 − 1 4 ) = ( − 1 0 1 ) T ( − 3 − 1 4 ) = 7 Cov(X,Y)={\begin{pmatrix}1-2\\ 2-2\\ 3-2\\\end{pmatrix}}^{T}{\begin{pmatrix}2-5\\ 4-5\\ 9-5\end{pmatrix}}={\begin{pmatrix}-1\\ 0\\ 1\\\end{pmatrix}}^{T}{\begin{pmatrix}-3\\ -1\\ 4\end{pmatrix}}={\begin{pmatrix} -1& 0 & 1\end{pmatrix}}^{T}{\begin{pmatrix}-3\\ -1\\ 4\end{pmatrix}}=7 Cov(X,Y)=122232T254595=101T314=(101)T314=7
虽然上述的例子很简单,但是对于理解下面的协方差矩阵构成有一定帮助。

方差

  • 方差是协方差的一种特殊情况,即当两个变量是相同的情况。
    D ( X ) = C o v ( X , X ) = E ( ( X − E [ X ] ) ( X − E [ X ] ) ) = E ( ( X − E [ X ] ) 2 ) D(X)=Cov(X,X)=E((X-E[X])(X-E[X]))=E((X-E[X])^2) D(X)=Cov(X,X)=E((XE[X])(XE[X]))=E((XE[X])2)
    说明:

    1. 一般情况下,随机变量 X X X的方差也记作 V a r ( X ) Var(X) Var(X),简记为 D ( X ) D(X) D(X)

相关系数

  • 线性相关系数,一般用字母 ρ \rho ρ 表示,用来度量两个变量间的线性关系

ρ ( X , Y ) = C o v ( X , Y ) V a r [ X ] V a r [ Y ] \rho(X,Y)=\frac{Cov(X,Y)}{\sqrt{Var[X]Var[Y]}} ρ(X,Y)=Var[X]Var[Y] Cov(X,Y)


ρ ( X , Y ) = C o v ( X , Y ) D ( X ) D ( Y ) \rho(X,Y)=\frac{Cov(X,Y)}{\sqrt{D(X)D(Y)}} ρ(X,Y)=D(X)D(Y) Cov(X,Y)
说明:

  1. 线性相关系数(皮尔逊相关系数)并不是唯一的相关系数,但是最常见的相关系数
  2. 皮尔逊相关系数,只是描述变量之间的线性关系,其值域为 [ − 1 , 1 ] [-1,1] [1,1]。其值越接近越1,说明两变量正相关越强,其值越接近于-1,说明两变量越接负相关性越强。其值为0,说明两两变量之间没有线性关系,但是不能说明没有其他非线性关系。

协方差矩阵(covariance matrix)

协方差矩阵的每个元素是各个向量元素(比如,身高,体重等;以实验来说,就是多个属性之间【列向量】)之间的协方差,是从标量随机变量高维度随机向量的自然推广。

特点:

  1. 矩阵中各个元素的构成:各个向量元素之间的协方差
  2. 对称非负定矩阵

举例说明

现有一个数据集 D D D

属性1属性2属性3属性4
样本11234
样本23412
样本32314
属性(随机变量)均值231.673.33

将数据区域写成矩阵的形式:
( 1 2 3 4 3 4 1 2 2 3 1 4 ) \begin{pmatrix} 1& 2& 3& 4\\ 3& 4& 1& 2\\ 2& 3& 1& 4\end{pmatrix} 132243311424
其中每一列就代表一个随机变量(属性,如身高),每一行代表一个样本(在各个属性上的观察值)。现在计算该数据 D D D的协方差矩阵。

  1. 每个随机变量都应该和其他随机变量(包括自身)进行协方差计算,每两个随机变量之间的协方差计算和上述的协方差计算方式相同。用 ∑ \sum 来表示这个协方差矩阵。

  2. ∑ i , j \sum_{i,j} i,j来表示协方差矩阵中的各个元素。则 ∑ i , j \sum_{i,j} i,j表示第 i i i个随机变量(属性 i i i)和第 j j j个随机变量(属性 j j j)之间的协方差。
    ∑ i , j = E ( ( I − E ( I ) ) ( J − E ( J ) ) ) \sum\nolimits_{i,j}=E((I-E(I))(J-E(J))) i,j=E((IE(I))(JE(J)))
    举例:计算 ∑ 2 , 3 \sum_{2,3} 2,3,第二列表示的随机变量与第三列随机变量之间的协方差
    ∑ 2 , 3 = ( 2 − 3 4 − 3 3 − 3 ) T ( 3 − 1.67 1 − 1.67 1 − 1.67 ) = ( − 1 1 0 ) ( 1.33 − 0.67 − 0.67 ) = − 2 \sum\nolimits_{2,3}=\begin{pmatrix}2-3\\ 4-3\\ 3-3\end{pmatrix}^{T}{\begin{pmatrix}3-1.67\\ 1-1.67\\ 1-1.67\end{pmatrix}}=\begin{pmatrix}-1&1&0\end{pmatrix}{\begin{pmatrix}1.33\\ -0.67\\ -0.67\end{pmatrix}}=-2 2,3=234333T31.6711.6711.67=(110)1.330.670.67=2

  3. 每个随机变量都会与其他随机变量(包括自身)计算一遍协方差值,所有数据 D D D中有 n n n个随机变量(属性),就会有构成一个 n 行 n 列 n行n列 nn方阵的协方差矩阵。至于矩阵中各个元素的计算方式,按照 ∑ 2 , 3 \sum_{2,3} 2,3计算方式即可。

数学符号表示

X i , X j X_i,X_j Xi,Xj分别表示在 n n n个随机变量中的第 i i i个和第 j j j个随机变量。 E ( X i ) , E ( X j ) E(X_i),E(X_j) E(Xi),E(Xj)分别表示对应随机变量的期望。

则协方差矩阵中的第 i , j i,j i,j项元素被定义为如下形式:
∑ i , j = C o v ( X i , X j ) = E ( ( X i − E ( X i ) ) ( X j − E ( X j ) ) ) \sum\nolimits_{i,j}=Cov(X_i,X_j)=E((X_i-E(X_i))(X_j-E(X_j))) i,j=Cov(Xi,Xj)=E((XiE(Xi))(XjE(Xj)))
所以协方差矩阵被定义为:
∑ = ( E ( ( X 1 − E ( X 1 ) ) ( X 1 − E ( X 1 ) ) ) E ( ( X 1 − E ( X 1 ) ) ( X 2 − E ( X 2 ) ) ) ⋯ E ( ( X 1 − E ( X 1 ) ) ( X n − E ( X n ) ) E ( ( X 2 − E ( X 2 ) ) ( X 1 − E ( X 1 ) ) ) E ( ( X 2 − E ( X 2 ) ) ( X 2 − E ( X 2 ) ) ) ⋯ E ( ( X 2 − E ( X 2 ) ) ( X n − E ( X n ) ) ⋮ ⋮ ⋮ E ( ( X n − E ( X n ) ) ( X 1 − E ( X 1 ) ) ) E ( ( X n − E ( X n ) ) ( X 2 − E ( X 2 ) ) ) ⋯ E ( ( X n − E ( X n ) ) ( X n − E ( X n ) ) ) \sum=\begin{pmatrix}E((X_1-E(X_1))(X_1-E(X_1)))&E((X_1-E(X_1))(X_2-E(X_2)))&\cdots E((X_1-E(X_1))(X_n-E(X_n))\\E((X_2-E(X_2))(X_1-E(X_1)))&E((X_2-E(X_2))(X_2-E(X_2)))&\cdots E((X_2-E(X_2))(X_n-E(X_n))\\\vdots&\vdots&\vdots\\E((X_n-E(X_n))(X_1-E(X_1)))&E((X_n-E(X_n))(X_2-E(X_2)))&\cdots E((X_n-E(X_n))(X_n-E(X_n))\end{pmatrix} =E((X1E(X1))(X1E(X1)))E((X2E(X2))(X1E(X1)))E((XnE(Xn))(X1E(X1)))E((X1E(X1))(X2E(X2)))E((X2E(X2))(X2E(X2)))E((XnE(Xn))(X2E(X2)))E((X1E(X1))(XnE(Xn))E((X2E(X2))(XnE(Xn))E((XnE(Xn))(XnE(Xn))
说明:

  • 协方差矩阵 ∑ ( n ∗ n ) \sum_{(n*n)} (nn)是个方阵,其中 n n n的大小等于数据集 D D D中属性的个数。

协方差矩阵的应用

马氏距离

  • 马氏距离(Mahalanobis Distance)是由马哈拉诺比斯(P. C. Mahalanobis)提出的,表示数据的协方差距离。它是一种有效的计算两个未知样本集的相似度的方法。与欧氏距离不同的是:它考虑到各种特性之间的联系。

数学符号定义

  1. 单个数据点 x x x的马氏距离:
    D M ( x ) = ( x − μ ) T ∑ − 1 ( x − μ ) D_M(x)=\sqrt{(x-\mu)^{T}{\sum}^{-1}(x-\mu)} DM(x)=(xμ)T1(xμ)
    说明:

    1. ∑ − 1 \sum^{-1} 1表示协方差矩阵的逆。

    2. 数据点 x x x为列向量,该向量的长度和原始数据集 D D D中的属性个数相同(假设,身高,体重等随机变量)。向量中的某个值为对应随机变量的观察值。

    3. μ \mu μ为各个属性上的均值。

    4. 马氏距离计算的是距离,是一个标量。协方差矩阵只是计算马氏距离的一个步骤。

  2. 数据点 x , y x,y x,y之间的马氏距离:
    D M ( x , y ) = ( x − y ) T ∑ − 1 ( x − y ) D_M(x,y)=\sqrt{(x-y)^{T}{\sum}^{-1}(x-y)} DM(x,y)=(xy)T1(xy)
    说明:

    1. ∑ − 1 \sum^{-1} 1表示协方差矩阵的逆。

    2. 数据点 x , y x,y x,y均是列向量,向量的长度和原始数据集 D D D中的属性个数相同。向量中的某个值为对应随机变量的观察值。

  3. 如果如果协方差矩阵是单位向量,也就是各维度独立同分布,马氏距离就变成了欧氏距离。

优点:

  1. 马氏距离同欧氏距离、曼哈顿距离、汉明距离等一样被用作评定数据之间的相似度指标。但却可以应对高维线性分布的数据中各维度间非独立同分布的问题。
  2. 它是一种有效的计算两个未知样本集的相似度的方法。与欧氏距离不同的是它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的)并且是尺度无关的(scale-invariant),即独立于测量尺度

PCA降维

  • 协方差矩阵在PCA中的信息度量起到作用。

    https://blog.csdn.net/HLBoy_happy/article/details/77146012

使用sklearn中的np.cov遇到的坑

https://blog.csdn.net/anthea_luo/article/details/94590170

np.cov的api说明:https://docs.scipy.org/doc/numpy/reference/generated/numpy.cov.html

问题产生的原因:

  • 按照rowvar的默认值(true), 会把一行当成一个特征,一列当成一个样本。但是通常我们会将一行当做一个样本,一列当做是特征。

    • 解决办法:

      1. 将rowvar设为为flase

        np.cov(a, rowvar=False)
        
      2. 或者将数据集 D D D进行转置

        np.cov(a.T)
        
  • 参数中的 b i a s bias bias参数,代表是否为有偏,默认是Fasle,即除以 N − 1 N-1 N1。若是将 b i a s bias bias设置为 t r u e true true,则是除以 N N N。其中 N N N的大小为样本的个数。

    image-20200518134220584

举例说明:

参考:

  1. https://blog.csdn.net/u011534057/article/details/52869707
  2. https://blog.csdn.net/hustqb/article/details/90290232
  3. https://ph0en1xgseek.github.io/2018/04/18/Mahalanobis/n1xgseek.github.io/2018/04/18/Mahalanobis/
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值