老饼讲解:一步一步上手学习
在PCA中涉及协方差的概念,在这里我们来讲一下协方差是什么,以及它的公式。
协方差是统计学中用来定义变量与变量之间是否存在相关性的一个统计量,我们先来看看协方差的定义和计算公式,如下:
第一个等号是协方差的定义形式,最后一个等号是估算形式。
刚开始接触时,其实我们不用管定义形式,只需要注意计算形式就可以了,细心一点就会发现,它其实跟方差的估算公式差不多,只不过方差是,而它是,也就是X与Y分别减去各自的均值后的积,再求均值,就是协方差了。
在统计学中,以协方差来定义“变量是否相关”,如下:
【1】当协方差>0时,说明两个变量正相关。
【2】当协方差=0时,说明两个变量不相关。
【3】当协方差<0时,说明两个变量负相关。
为什么协方差>0就说变量正相关呢?其实这是统计学上的定义,没有为什么,仅仅是一种定义,所以我们要探讨的是,利用协方差来定义变量相关性的合理性、以及原因,下面我们细细道来。
好了,为什么协方差能评估变量的相关性呢?我们不妨来详细看看它背后的意义。
记 , ,也就是与分别代表X和Y相对中心的偏移量:

可以知道,协方差就是X与Y偏移量对应相乘再相加: 。下面我们再来看看"X与Y相关"、"X与Y不相关"两种情况下,协方差的结果会如何。
1. X与Y不相关
如果X与Y不相关,X的偏移方向与Y的偏移方向也就不相关,即Y'是正是负与X'是否是负无关,是正(或负)的概率为50%,因此,的期望就是0。
2. X与Y相关
如果X与Y正相关,X的偏移方向与Y相同,即同号,
因此的期望大于0,类似地,负相关时,X的偏移方向与Y相反,X'、Y'一正一负 , 则X'*Y'的期望小于0 。
这就是协方差的原理了,它主要就是评估X、Y之间协同变化的方向和幅度,也就是它们是否会同向(或反向)偏移,如果同向(或反向)偏移较多,就认为X、Y相关,否则就不相关。
多个变量时,变量间两两之间的协方差,就组成了协方差矩阵,通过协方差矩阵,可以比较一目了然看到变量两两之间的协方差,协方差矩阵如下图所示:

可以注意到,协方差矩阵的对角元素,其实就是变量的方差了,其余非对角元素就是变量两两之间的协方差,而且易知,协方差矩阵是一个对称矩阵。协方差矩阵是经常使用的一个东西,以后用到时知道它是这么一个意思就行了。
好了,最后的最后,我们在python中用numpy来计算一下协方差矩阵。
具体代码如下:
'''
本代码展示在python中如何求协方差矩阵
本代码来自《老饼讲解-机器学习》www.bbblearn.com
'''
import numpy as np
X = np.array([[1,2,3],[2,3,3],[5,2,4],[6,8,3],[9,0,9]]) # 原始数据
C = np.cov(X.T) # 计算协方差矩阵
R = np.corrcoef(X, rowvar=False) # rowvar=False代表每列是一个变量
print('\n数据X:\n',X) # 打印数据
print('\n协方差矩阵C:\n',C) # 打印协方差矩阵运行结果如下:

可以非常清晰的看到,协方差矩阵是一个对称矩阵,它代表变量之间两两的协方差,而特别地,对角线元素就是变量的方差了。
总的来说,协方差可以理解为两个变量之间的方差,它可以用来衡量变量之间相关性,当它为0时,变量不相关,大于0时正相关,小于0时负相关。
评论