协方差、协方差矩阵定义与计算
2014-12-22 10:39
399 查看
协方差的意义和计算公式
学过概率统计的孩子都知道,统计里最基本的概念就是样本的均值,方差,或者再加个标准差。首先我们给你一个含有n个样本的集合,依次给出这些概念的公式描述,这些高中学过数学的孩子都应该知道吧,一带而过。
均值:
![](http://img.my.csdn.net/uploads/201302/25/1361796432_7923.jpg)
[b]标准差:
[/b]
![](http://img.my.csdn.net/uploads/201302/25/1361796426_5565.jpg)
[b]方差:
[/b]
![](http://img.my.csdn.net/uploads/201302/25/1361796436_1873.jpg)
很显然,均值描述的是样本集合的中间点,它告诉我们的信息是很有限的,
而标准差给我们描述的则是样本集合的各个样本点到均值的距离之平均。以这两个集合为例,[0,8,12,20]和[8,9,11,12],两个集合的均值都是10,但显然两个集合差别是很大的,计算两者的标准差,前者是8.3,后者是1.8,显然后者较为集中,故其标准差小一些,标准差描述的就是这种“散布度”。之所以除以n-1而不是除以n,是因为这样能使我们以较小的样本集更好的逼近总体的标准差,即统计上所谓的“无偏估计”。
而方差则仅仅是标准差的平方。
为什么需要协方差?
上面几个统计量看似已经描述的差不多了,但我们应该注意到,标准差和方差一般是用来描述一维数据的,但现实生活我们常常遇到含有多维数据的数据集,最简单的大家上学时免不了要统计多个学科的考试成绩。面对这样的数据集,我们当然可以按照每一维独立的计算其方差,但是通常我们还想了解更多,比如,一个男孩子的猥琐程度跟他受女孩子欢迎程度是否存在一些联系啊,嘿嘿~协方差就是这样一种用来度量两个随机变量关系的统计量,我们可以仿照方差的定义:
![](http://img.my.csdn.net/uploads/201302/25/1361796952_1906.png)
来度量各个维度偏离其均值的程度,标准差可以这么来定义:
![](http://img.my.csdn.net/uploads/201302/25/1361796968_6998.png)
协方差的结果有什么意义呢?如果结果为正值,则说明两者是正相关的(从协方差可以引出“相关系数”的定义),也就是说一个人越猥琐就越受女孩子欢迎,嘿嘿,那必须的~结果为负值就说明负相关的,越猥琐女孩子越讨厌,可能吗?如果为0,也是就是统计上说的“相互独立”。
从协方差的定义上我们也可以看出一些显而易见的性质,如:
![](http://img.my.csdn.net/uploads/201302/25/1361796980_7912.png)
![](http://img.my.csdn.net/uploads/201302/25/1361796996_5285.png)
协方差多了就是协方差矩阵
上一节提到的猥琐和受欢迎的问题是典型二维问题,而协方差也只能处理二维问题,那维数多了自然就需要计算多个协方差,比如n维的数据集就需要计算
![](http://img.my.csdn.net/uploads/201302/25/1361797277_2323.png)
个协方差,那自然而然的我们会想到使用矩阵来组织这些数据。给出协方差矩阵的定义:
![](http://img.my.csdn.net/uploads/201302/25/1361797324_6833.png)
这个定义还是很容易理解的,我们可以举一个简单的三维的例子,假设数据集有
![](http://img.my.csdn.net/uploads/201302/25/1361797342_7338.png)
三个维度,则协方差矩阵为
![](http://img.my.csdn.net/uploads/201302/25/1361797397_4386.jpg)
可见,协方差矩阵是一个对称的矩阵,而且对角线是各个维度上的方差。
搞清楚了这个后面就容易多了,协方差矩阵的对角线就是各个维度上的方差,下面我们依次计算:
这样,我们就得到了计算协方差矩阵所需要的所有数据,调用Matlab自带的cov函数进行验证:
![](http://img.my.csdn.net/uploads/201302/25/1361797463_4381.jpg)
把我们计算的数据对号入座,是不是一摸一样?
Update:今天突然发现,原来协方差矩阵还可以这样计算,先让样本矩阵中心化,即每一维度减去该维度的均值,使每一维度上的均值为0,然后直接用新的到的样本矩阵乘上它的转置,然后除以(N-1)即可。其实这种方法也是由前面的公式通道而来,只不过理解起来不是很直观,但在抽象的公式推导时还是很常用的!同样给出Matlab代码实现:
总结
理解协方差矩阵的关键就在于牢记它计算的是不同维度之间的协方差,而不是不同样本之间,拿到一个样本矩阵,我们最先要明确的就是一行是一个样本还是一个维度,心中明确这个整个计算过程就会顺流而下,这么一来就不会迷茫了~
学过概率统计的孩子都知道,统计里最基本的概念就是样本的均值,方差,或者再加个标准差。首先我们给你一个含有n个样本的集合,依次给出这些概念的公式描述,这些高中学过数学的孩子都应该知道吧,一带而过。
均值:
![](http://img.my.csdn.net/uploads/201302/25/1361796432_7923.jpg)
[b]标准差:
[/b]
![](http://img.my.csdn.net/uploads/201302/25/1361796426_5565.jpg)
[b]方差:
[/b]
![](http://img.my.csdn.net/uploads/201302/25/1361796436_1873.jpg)
很显然,均值描述的是样本集合的中间点,它告诉我们的信息是很有限的,
而标准差给我们描述的则是样本集合的各个样本点到均值的距离之平均。以这两个集合为例,[0,8,12,20]和[8,9,11,12],两个集合的均值都是10,但显然两个集合差别是很大的,计算两者的标准差,前者是8.3,后者是1.8,显然后者较为集中,故其标准差小一些,标准差描述的就是这种“散布度”。之所以除以n-1而不是除以n,是因为这样能使我们以较小的样本集更好的逼近总体的标准差,即统计上所谓的“无偏估计”。
而方差则仅仅是标准差的平方。
为什么需要协方差?
上面几个统计量看似已经描述的差不多了,但我们应该注意到,标准差和方差一般是用来描述一维数据的,但现实生活我们常常遇到含有多维数据的数据集,最简单的大家上学时免不了要统计多个学科的考试成绩。面对这样的数据集,我们当然可以按照每一维独立的计算其方差,但是通常我们还想了解更多,比如,一个男孩子的猥琐程度跟他受女孩子欢迎程度是否存在一些联系啊,嘿嘿~协方差就是这样一种用来度量两个随机变量关系的统计量,我们可以仿照方差的定义:
![](http://img.my.csdn.net/uploads/201302/25/1361796952_1906.png)
来度量各个维度偏离其均值的程度,标准差可以这么来定义:
![](http://img.my.csdn.net/uploads/201302/25/1361796968_6998.png)
协方差的结果有什么意义呢?如果结果为正值,则说明两者是正相关的(从协方差可以引出“相关系数”的定义),也就是说一个人越猥琐就越受女孩子欢迎,嘿嘿,那必须的~结果为负值就说明负相关的,越猥琐女孩子越讨厌,可能吗?如果为0,也是就是统计上说的“相互独立”。
从协方差的定义上我们也可以看出一些显而易见的性质,如:
![](http://img.my.csdn.net/uploads/201302/25/1361796980_7912.png)
![](http://img.my.csdn.net/uploads/201302/25/1361796996_5285.png)
协方差多了就是协方差矩阵
上一节提到的猥琐和受欢迎的问题是典型二维问题,而协方差也只能处理二维问题,那维数多了自然就需要计算多个协方差,比如n维的数据集就需要计算
![](http://img.my.csdn.net/uploads/201302/25/1361797277_2323.png)
个协方差,那自然而然的我们会想到使用矩阵来组织这些数据。给出协方差矩阵的定义:
![](http://img.my.csdn.net/uploads/201302/25/1361797324_6833.png)
这个定义还是很容易理解的,我们可以举一个简单的三维的例子,假设数据集有
![](http://img.my.csdn.net/uploads/201302/25/1361797342_7338.png)
三个维度,则协方差矩阵为
![](http://img.my.csdn.net/uploads/201302/25/1361797397_4386.jpg)
可见,协方差矩阵是一个对称的矩阵,而且对角线是各个维度上的方差。
123 | sum( (dim1-mean(dim1)) .* (dim2-mean(dim2)) ) / ( size(MySample,1)-1 ) % 得到 74.5333sum( (dim1-mean(dim1)) .* (dim3-mean(dim3)) ) / ( size(MySample,1)-1 ) % 得到 -10.0889sum( (dim2-mean(dim2)) .* (dim3-mean(dim3)) ) / ( size(MySample,1)-1 ) % 得到 -106.4000 |
123 | std(dim1)^2 % 得到 108.3222std(dim2)^2 % 得到 260.6222std(dim3)^2 % 得到 94.1778 |
1 | cov(MySample) |
![](http://img.my.csdn.net/uploads/201302/25/1361797463_4381.jpg)
把我们计算的数据对号入座,是不是一摸一样?
Update:今天突然发现,原来协方差矩阵还可以这样计算,先让样本矩阵中心化,即每一维度减去该维度的均值,使每一维度上的均值为0,然后直接用新的到的样本矩阵乘上它的转置,然后除以(N-1)即可。其实这种方法也是由前面的公式通道而来,只不过理解起来不是很直观,但在抽象的公式推导时还是很常用的!同样给出Matlab代码实现:
12 | X = MySample - repmat(mean(MySample),10,1); % 中心化样本矩阵,使各维度均值为0C = (X'*X)./(size(X,1)-1); |
理解协方差矩阵的关键就在于牢记它计算的是不同维度之间的协方差,而不是不同样本之间,拿到一个样本矩阵,我们最先要明确的就是一行是一个样本还是一个维度,心中明确这个整个计算过程就会顺流而下,这么一来就不会迷茫了~
相关文章推荐
- 方差、标准差和协方差三者之间的定义与计算
- 深度学习中的数学与技巧(6): 详解协方差与协方差矩阵计算
- [转]浅谈协方差矩阵(牢记它的计算是不同维度之间的协方差,而不是不同样本之间。)
- 协方差矩阵的定义及其计算公式 (转)
- 递归的定义以及递归的示例(计算阶乘、计算斐波那契数、递归二分查找、回文串递归方法解决、汉诺塔问题、递归选择排序问题)
- 牛人对网格、分布式计算、集群、p2p的定义,联系与区别
- 协方差的意义和计算公式
- 云计算的20个定义
- 编写一个C#程序,要求定义一个行数和列数相等的二维数组, 并执行初始化,然后计算并输出数组两条对角线上的元素之和。
- MATLAB中均值、方差、均方差的计算方法
- 具体解释协方差与协方差矩阵
- 期望,方差,协方差,标准差,协方差矩阵
- mean average precision 定义以及计算
- 重新定义计算的边界
- 协方差的意义和计算公式
- 如何计算出当前日期属于定义时间段内的第几星期?
- 行列式的定义计算
- 利用递推快速计算方差和均值
- 详解协方差与协方差矩阵 .
- numpy和matlab计算协方差矩阵的不同(matlab是标准的,numpy相当于转置后计算)