如何求协方差矩阵
一. 协方差定义
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).求解得到的样本协方差是1 / (m - 1),总体协方差是1/m。
三. 求解协方差矩阵的步骤
举个例子,矩阵 X 按行排列:
1. 求每个维度的平均值
2. 将 X 的每一列减去平均值
其中:
3. 计算协方差矩阵
也就是将所有的方差都相乘乘起来,然后再求出方差的平均数,就得到协方差,相当于二维情况下的标准差的平方。协方差在高维度的高斯分布当中非常重要。
注意:
有时候在书上或者网上会看到这样的公式,协方差矩阵 Σ:
这里之所以会是 X * X’ 是因为原始数据集 X 是按列排列的,即:
备注:为什么协方差矩阵的最大特征向量能使得误差较小?
回答:因为协方差矩阵表示向量两两之间的相似度,可以理解为向量之间的关系信息。协方差矩阵保存的信息越多,误差越小。怎么保存更多信息呢?需要说明的是特征值代表特征向量的权重,所以挑最大的几个特征向量就能保存更多的信息。