求解协方差矩阵

如何求协方差矩阵

一. 协方差定义

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

其中:

 、

 

. 协方差矩阵定义

矩阵中的数据按行排列与按列排列求出的协方差矩阵是不同的,这里默认数据是按行排列。即每一行是一个observation(or sample),那么每一列就是一个随机变量。协方差对角线处的元素表示的是方差,这个关系我们记住就行了。比如目前我们从之前的两个变量过渡成了三个变量,则我们的协方差矩阵可以写为:

从上面我们可以清楚的看到对角线上的数值是cov(x,x)=var(x),cov(y,y)=var(y),cov(y,y)=var(z),因此对角线处是我们的方差,有一个函数trace()专门则用于表示提取我们矩阵当中的对角线处的元素。下面我们把用cov函数表示的形式变化为更加普世的形式也就是用aij来表示我们的每一个协方差的数值。

 

协方差矩阵:

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

. 求解协方差矩阵的步骤

举个例子,矩阵 X 按行排列:

 
 

1. 求每个维度的平均值

 
 

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

 
 
其中:
 

3. 计算协方差矩阵

 
 
 
 
注意:
有时候在书上或者网上会看到这样的公式,协方差矩阵 Σ:
 
这里之所以会是 X * X’ 是因为原始数据集 X 是按列排列的,即:
 
 
 
备注:为什么协方差矩阵的最大特征向量能使得误差较小?
回答:因为协方差矩阵表示向量两两之间的相似度,可以理解为向量之间的关系信息。协方差矩阵保存的信息越多,误差越小。怎么保存更多信息呢?需要说明的是特征值代表特征向量的权重,所以挑最大的几个特征向量就能保存更多的信息
posted @ 2019-07-15 17:35  Geeksongs  阅读(...)  评论(... 编辑 收藏

Coded by Geeksongs on Linux

All rights reserved, no one is allowed to pirate or use the document for other purposes.