协方差深入解读

在做机器学习时,用到协方差,之前对之意义不是很理解,今天着重研究一下。

统计学基本概念

学过概率统计的孩子都知道,统计里最基本的概念就是样本的均值,方差,或者再加个标准差。首先我们给你一个含有n个样本的集合关于协方差矩阵的概念及意义,依次给出这些概念的公式描述,这些高中学过数学的孩子都应该知道吧,一带而过。

file

很显然,均值描述的是样本集合的中间点,它告诉我们的信息是很有限的,而标准差给我们描述的则是样本集合的各个样本点到均值的距离之平均。以这两个集合为例,[0,8,12,20]和[8,9,11,12],两个集合的均值都是10,但显然两个集合差别是很大的,计算两者的标准差,前者是8.3,后者是1.8,显然后者较为集中,故其标准差小一些,标准差描述的就是这种“散布度”。之所以除以n-1而不是除以n,是因为这样能使我们以较小的样本集更好的逼近总体的标准差,即统计上所谓的“无偏估计”。而方差则仅仅是标准差的平方。

为什么需要协方差?

上面几个统计量看似已经描述的差不多了,但我们应该注意到,标准差和方差一般是用来描述一维数据的,但现实生活我们常常遇到含有多维数据的数据集,最简单的大家上学时免不了要统计多个学科的考试成绩。面对这样的数据集,我们当然可以按照每一维独立的计算其方差,但是通常我们还想了解更多,比如,一个男孩子的猥琐程度跟他受女孩子欢迎程度是否存在一些联系啊,嘿嘿~协方差就是这样一种用来度量两个随机变量关系的统计量,我们可以仿照方差的定义:

file

来度量各个维度偏离其均值的程度,标准差可以这么来定义:
file

协方差的结果有什么意义呢?如果结果为正值,则说明两者是正相关的(从协方差可以引出“相关系数”的定义),也就是说一个人越猥琐就越受女孩子欢迎,嘿嘿,那必须的~结果为负值就说明负相关的,越猥琐女孩子越讨厌,可能吗?如果为0,也是就是统计上说的“相互独立”。(sh199210注:该结论有误,协方差为零不能说明独立)

协方差的意义

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

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

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

file
当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不相关。

这就是协方差的意义。

协方差多了就是协方差矩阵

上一节提到的猥琐和受欢迎的问题是典型二维问题,而协方差也只能处理二维问题,那维数多了自然就需要计算多个协方差,比如n维的数据集就需要计算关于协方差矩阵的概念及意义个协方差,那自然而然的我们会想到使用矩阵来组织这些数据。给出协方差矩阵的定义:

file

这个定义还是很容易理解的,我们可以举一个简单的三维的例子,假设数据集有{x,y,z}关于协方差矩阵的概念及意义三个维度,则协方差矩阵为
file

可见,协方差矩阵是一个对称的矩阵,而且对角线是各个维度上的方差。

关于协方差矩阵的解读

协方差矩阵实在是太重要了,无论是在计量,金融工程还是随机分析中,我们都会到用到协方差矩阵。

其实,这三者都利用了协方差矩阵本身的含义,即随机变量之间的线性相关关系(当然,相关系数矩阵在此处更为贴切),也利用了协方差矩阵为半正定矩阵的性质。下面具体道来:

file

1.在金融随机分析和金融工程中的应用

在金融随机分析中我们可以采用Monte Carlo方法对期权进行定价,如果对于普通的欧式期权,那么我们只要产生N个正态分布的随机数即可。但是,对于那些依赖于多个相关随机过程(Correlated Brownian Motion)的资产的定价,我们就要产生满足特定相关关系的随机变量,而这正是依靠协方差矩阵和上面所述的Cholesky分解完成的。比如,Quanto(Quantity Adjusting Option)双币种期权就是满足上述特征的期权。这里我复制我的BLOG中的一段,
Quanto Nikkei Option. Consider a Nikkei quanto into dollar call option. Assuming both the USD/JPY and Nikkei are both lognormal process, i.e.

file

where S and X are the equity and FX process. On a spreadsheet, simulate the process, and show that by delta hedging alone, you can replicate the quanto call option. Assume the maturity of the option is one year.
在使用Monte Carlo方法对于上述期权定价时,核心是要模拟两个具有相关性的布朗运动,这时候,我们就可以利用之前提到的协方差矩阵的Cholesky分解。Matlab code:

Sigma = [siga^2 siga*sigb*rho;
siga*sigb*rho sigb^2];
B = randn(2,n);
C=chol(Sigma);
V = C' * B;
STa = S0a * exp((mua - (siga^2)/2)*T + sqrt(T)*V(1,:));
STb = S0b * exp((mub - (sigb^2)/2)*T + sqrt(T)*V(2,:));

Python 中使用

numpy.cov()的作用是计算协方差矩阵,下面给出几个例子

>>> x = np.array([[0, 2], [1, 1], [2, 0]]).T
>>> x
array([[0, 1, 2],
       [2, 1, 0]])

打印:

>>> np.cov(x)
array([[ 1., -1.],
       [-1.,  1.]])

相关文章:
协方差代表的意义是什么?
【Numpy学习记录】np.cov详解

为者常成,行者常至