1.前言

看论文的时候又看到了协方差矩阵这个破东西,以前看图像处理的书籍的时候就特困扰,没想到现在还是搞不清楚,索性开始查协方差矩阵的资料,恶补之后决定马上记录下来。

2.拼出身—统计学的定义

学过概率统计的孩子都知道,统计里最基本的概念就是样本的均值,方差,或者再加个标准差。首先我们给你一个含有n个样本的集合X={X1,…,Xn},依次给出这些概念的公式描述,这些高中学过数学的孩子都应该知道吧,一带而过。
很显然,均值描述的是样本集合的中间点,它告诉我们的信息是很有限的,而标准差给我们描述的则是样本集合的各个样本点到均值的距离之平均。以这两个集合为例,[0,8,12,20]和[8,9,11,12],两个集合的均值都是10,但显然两个集合差别是很大的,计算两者的标准差,前者是8.3,后者是1.8,显然后者较为集中,故其标准差小一些,标准差描述的就是这种“散布度”。之所以除以n-1而不是除以n,是因为这样能使我们以较小的样本集更好的逼近总体的标准差,即统计上所谓的“无偏估计”。而方差则仅仅是标准差的平方。
那么问题来了,上面介绍的参量难道不能描述统计学所有特性吗?为啥还要搞出一个协方差出来
上面几个统计量看似已经描述的差不多了,但我们应该注意到,标准差和方差一般是用来描述一维数据的,但现实生活我们常常遇到含有多维数据的数据集,最简单的大家上学时免不了要统计多个学科的考试成绩。面对这样的数据集,我们当然可以按照每一维独立的计算其方差,但是通常我们还想了解更多,比如,一个男孩子的猥琐程度跟他受女孩子欢迎程度是否存在一些联系啊,嘿嘿~协方差就是这样一种用来度量两个随机变量关系的统计量,我们可以仿照方差的定义:
度量各个维度偏离其均值的程度,协方差可以这么来定义:
那么,协方差的结果有什么意义呢?如果结果为正值,则说明两个随机变量是正相关的(从协方差可以引出“相关系数”的定义),也就是说一个人越猥琐就越受女孩子欢迎,嘿嘿,那必须的~结果为负值就说明负相关的,越猥琐女孩子越讨厌,可能吗?如果为0,也是就是统计上说的“相互独立”。

从协方差的定义上我们也可以看出一些显而易见的性质,如:

3.协方差矩阵的由来

好几十年前,鲁迅爷爷就说过,世界上本没有路,走的人多了也就有了路。协方差矩阵也是这样,好多协方差凑合到一起就形成了协方差矩阵。当然,数学的定义,不能如我这样随意。对于一个二维矩阵,每一个因子都可以视为两个不同随机变量的关系,这正好和协方差矩阵多少有点牵连,因此数学家们就把协方差矩阵引入到了二维矩阵中,衡量各个变量之间的紧密程度(就是关系度啦)。根据协方差的性质,我们可以类似的推出协方差矩阵的性质:

1.协方差矩阵一定是个对称的方阵

2.协方差矩阵对角线上的因子其实就是变量的方差:cov(X,X)=var(X)


这个定义还是很容易理解的,我们可以举一个简单的三变量的例子,假设数据集有{x,y,z}{x,y,z}三个维度,则协方差矩阵为:
再一次可以看出,协方差矩阵是一个对称的矩阵,而且对角线是各个变量上的方差。

3.MATLAB实战练习

上面涉及的内容都比较容易,协方差矩阵似乎也很简单,但实战起来就很容易让人迷茫了。必须要明确一点,### 协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的
为了说明计算原理,不直接调用Matlab的cov函数:
首先,随机产生一个10*3维的整数矩阵作为样本集,10为样本的个数,3为样本的维数
MySample = fix(rand(10,3)*50)

根据公式,计算协方差需要计算均值,那是按行计算均值还是按列呢,我一开始就老是困扰这个问题。前面我们也特别强调了,协方差矩阵是计算不同维度间的协方差,要时刻牢记这一点。样本矩阵的每行是一个样本,每列为一个维度,所以我们要按列计算均值。为了描述方便,我们先将三个维度的数据分别赋值:
dim1 = MySample(:,1);
dim2 = MySample(:,2);
dim3 = MySample(:,3);

计算dim1与dim2,dim1与dim3,dim2与dim3的协方差:

sum( (dim1-mean(dim1)) .* (dim2-mean(dim2)) ) / ( size(MySample,1)-1 ) % 得到  74.5333
sum( (dim1-mean(dim1)) .* (dim3-mean(dim3)) ) / ( size(MySample,1)-1 ) % 得到  -10.0889
sum( (dim2-mean(dim2)) .* (dim3-mean(dim3)) ) / ( size(MySample,1)-1 ) % 得到  -106.4000

搞清楚了这个后面就容易多了,协方差矩阵的对角线就是各个维度上的方差,下面我们依次计算:

std(dim1)^2 % 得到   108.3222
std(dim2)^2 % 得到   260.6222
std(dim3)^2 % 得到   94.1778

这样,我们就得到了计算协方差矩阵所需要的所有数据:

C11=108.3222 C12=74.5333 C13=-10.0889
C21=74.5333 C22=260.6222 C23=-106.4000
C31=-10.0889 C32=-106.4000 C33=94.1778
调用Matlab自带的cov函数进行验证:

4.心得感悟

理解协方差矩阵的关键就在于牢记它计算的是不同维度之间的协方差,而不是不同样本之间,拿到一个样本矩阵,我们最先要明确的就是一行是一个样本还是一个维度,心中明确这个整个计算过程就会顺流而下,这么一来就不会迷茫了。
其实还有一个更简单的容易记还不容易出错的方法:协方差矩阵一定是一个对称的方阵,一定是一个对称的方阵,一定是一个对称的方阵!!!记住就好啦~

我所理解的协方差矩阵相关推荐

  1. 如何直观地理解「协方差矩阵」?

    如何直观地理解「协方差矩阵」? Xinyu Chen Urban Traffic Data Analytics 372 人赞同了该文章 协方差矩阵在统计学和机器学习中随处可见,一般而言,可视作方差和协 ...

  2. 一些知识点的初步理解_4(协方差矩阵,ing...)

    每次看公式用到协方差矩阵时,要跑去网站上看一下协方差矩阵的定义,当然一看就能看明白,可是到了下次再碰到时,不查资料又卡住了,卡在那里令人纠结,这只能说明没有真正理解协方差矩阵.这次顺便做下笔记,加深下 ...

  3. RPC远程调用通俗理解

    先从一个案例来讲RPC(文章来自程序人生微信号) 查看全文 http://www.taodudu.cc/news/show-64152.html 相关文章: linux下yum错误:[Errno 14 ...

  4. 期望、方差、协方差、协方差矩阵

    原 期望.方差.协方差和协方差矩阵 2018年06月07日 17:10:58 siucaan 阅读数:6231 </div><div class="operating&qu ...

  5. 不确定度与协方差矩阵的关系

    常在一些地方看到"使用协方差矩阵表示某个状态的不确定度",不太理解协方差矩阵和不确定度有什么关系,一直认为协方差矩阵是描述一个样本的不同维度的关联关系,不确定度是描述一个状态的值的 ...

  6. 机器学习中的数学(3)——协方差矩阵和散布(散度)矩阵

    1.引言 在学习机器学习算法和阅读相关论文的时候,将经常会看到协方差矩阵和散布矩阵的身影,这说明它们在机器学习中具有很重要的作用,究竟有什么样的作用,下面我们就做简要的介绍和分析. 2.统计学上的基本 ...

  7. 协方差矩阵与多元正态分布

    文章目录 协方差矩阵 协方差 协方差矩阵 多元正态分布 协方差矩阵的特征值分解 协方差矩阵 协方差 在统计学中,方差用来度量单个随机变量的离散程度,而协方差用来刻画两个随机变量的相似程度,方差的计算公 ...

  8. 解释为什么用梯度下降而不是直接求导数为0的解

    问题: 在计算线性回归最大似然估计的解的时候,最后的推导结果是 为什么不直接求出θ?而是一步步迭代求出θ? 原因 因此,梯度下降可以节省大量的计算时间.此外,它的完成方式允许一个简单的并行化,即在多个 ...

  9. 带你彻彻底底搞懂朴素贝叶斯公式

    https://zhuanlan.zhihu.com/p/54287889 本文参考了该博客的实例,但该博客中的朴素贝叶斯公式计算错误,评论中的也不对,所以,重新写一篇. 一. 朴素贝叶斯 朴素贝叶斯 ...

  10. 深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG) 优化算法

    深度学习优化函数详解系列目录 深度学习优化函数详解(0)– 线性回归问题 深度学习优化函数详解(1)– Gradient Descent 梯度下降法 深度学习优化函数详解(2)– SGD 随机梯度下降 ...

最新文章

  1. db2 日期英式写法_《学霸英语》16:美国人和英国人“表达日期”,差距竟然这么大!...
  2. 开源纯C#工控网关+组态软件(六)图元组件
  3. 2021牛客暑期多校训练营3 C Minimum grid 网络流 + 二分图匹配
  4. 用jsp实现右导航窗格_手机导航如何投放到汽车中控屏?建议用这2种办法,轻松实现同屏...
  5. 头条限流是什么原因_抖音为什么会被限流?被限流了如何补救?
  6. r语言 悲观剪枝_《R语言编程—基于tidyverse》新书信息汇总
  7. idea报错命令行过长
  8. python函数调用时所提供的参数可以是常量_如何使用mock作为函数参数在Python中修补常量...
  9. 怎么确认mysql正确安装_怎么确认mysql是否安装好了
  10. 【U3D】推荐一些不错的Unity游戏开发素材资源
  11. http接口开发请求参数签名实用工具类
  12. 中国省市县地区代码数据库文件
  13. Python3抓取猫眼电影排行
  14. 线性规划第一阶段入基变量和出基变量选择的细节讨论
  15. Android利用zxing生成二维码,识别二维码,中间填充图片超详细、超简易教程
  16. 动手学Android之六——布局初步(三)
  17. BART中文摘要生成,(nplcc与LCSTS数据集)
  18. 定点数的运算 —— 逻辑移位、算术移位、循环移位
  19. Introduction to SPM statistics
  20. 微信 SDK for Laravel, 基于 overtrue/wechat

热门文章

  1. 关于指针赋初值为NULL的问题
  2. 框架眼镜不好看戴隐形眼镜,这些情况要注意
  3. Axure 制作过滤筛选栏
  4. C语言I博客作业02
  5. cad立面索引符号 规范_cad立面索引符号怎么画
  6. 微信小程序——计算从今天到某天间隔多少天
  7. MIPS指令 MIPS架构
  8. OpenCV:旋转矩形(RotatedRect)
  9. matlab循环求微分方程,MATLAB解微分方程
  10. 选择合适的电阻型分压器