协方差矩阵计算方法[通俗易懂]

协方差矩阵计算方法[通俗易懂]1.协方差矩阵X,YX,YX,Y是两个随机变量,X,YX,YX,Y的协方差Cov(X,Y)Cov(X,Y)Cov(X,Y)定义为:cov(X,Y)=E[(X−μx)(Y−μy)]cov(X,Y)=E[(X-\mu_x)(Y-\mu_y)]cov(X,Y)=E[(X−μx​)(Y−μy​)]其中:E(X)=μx,E(Y)=μyE(X)=\mu_x,E(Y)=\mu_yE(X)=…

大家好,又见面了,我是你们的朋友全栈君。

1. 协方差矩阵

X , Y X,Y X,Y是两个随机变量, X , Y X,Y X,Y的协方差 C o v ( X , Y ) Cov(X,Y) Cov(X,Y)定义为:
c o v ( X , Y ) = E [ ( X − μ x ) ( Y − μ y ) ] cov(X,Y) = E[(X-\mu_x)(Y-\mu_y)] cov(X,Y)=E[(Xμx)(Yμy)]
其中:
E ( X ) = μ x , E ( Y ) = μ y E(X)=\mu_x,E(Y)=\mu_y E(X)=μxE(Y)=μy

2.协方差矩阵定义

矩阵中的数据按行排列和按列排列求出的协方差矩阵是不同的,这里默认数据是按行排列。即每一行是一个observation(样本),那么每一列就是一个随机变量(特征)。
X m × n = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 ⋯ a m n ] = [ c 1 c 2 ⋯ c n ] X_{m \times n} = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \\ \end{bmatrix} \quad = \begin{bmatrix} c_1 & c_2 & \cdots & c_n \end{bmatrix} \quad Xm×n=a11a21am1a12a22am2a1na2namn=[c1c2cn]
协方差矩阵:
c o v M a t r i x = 1 m − 1 [ c o v ( c 1 , c 1 ) c o v ( c 1 , c 2 ) ⋯ c o v ( c 1 , c n ) c o v ( c 2 , c 1 ) c o v ( c 2 , c 2 ) ⋯ c o v ( c 2 , c n ) ⋮ ⋮ ⋱ ⋮ c o v ( c n , c 1 ) c o v ( c n , c 2 ) ⋯ c o v ( c n , c n ) ] covMatrix = \frac{1}{m-1} \begin{bmatrix} cov(c_1, c_1) & cov(c_1, c_2) & \cdots & cov(c_1, c_n) \\ cov(c_2, c_1) & cov(c_2, c_2) & \cdots & cov(c_2, c_n) \\ \vdots & \vdots & \ddots & \vdots \\ cov(c_n, c_1) & cov(c_n, c_2) & \cdots & cov(c_n, c_n) \\ \end{bmatrix} \quad covMatrix=m11cov(c1,c1)cov(c2,c1)cov(cn,c1)cov(c1,c2)cov(c2,c2)cov(cn,c2)cov(c1,cn)cov(c2,cn)cov(cn,cn)
协方差矩阵的维度等于随机变量的个数,即每一个observation的维度。在某些场合前边也会出现 1 m \frac{1}{m} m1,而不是 1 m − 1 \frac{1}{m-1} m11

3.求解协方差矩阵的步骤

举个例子,矩阵X按行排列:
X = [ 1 2 3 3 1 1 ] = [ c 1 c 2 c 3 ] X = \begin{bmatrix} 1 & 2 & 3 \\ 3 & 1 & 1\\ \end{bmatrix} \quad = \begin{bmatrix} c_1 & c_2 & c_3 \end{bmatrix} \quad X=[132131]=[c1c2c3]

1.求每个维度的平均值
c ˉ = [ 2 1.5 2 ] = [ c 1 ˉ c 2 ˉ c 3 ˉ ] \bar{c} = \begin{bmatrix} 2 & 1.5 & 2 \end{bmatrix} \quad = \begin{bmatrix} \bar{c_1} & \bar{c_2} & \bar{c_3} \end{bmatrix} \quad cˉ=[21.52]=[c1ˉc2ˉc3ˉ]
2.将X的每一列减去平均值
X = [ − 1 0.5 1 1 − 0.5 − 1 ] X = \begin{bmatrix} -1 & 0.5 & 1 \\ 1 & -0.5 & -1\\ \end{bmatrix} \quad X=[110.50.511]
其中:
c i = c i − c i ˉ c_i = c_i – \bar{c_i} ci=ciciˉ
3.计算协方差矩阵
c o v = 1 m − 1 X T X = 1 2 − 1 [ 2 − 1 − 2 − 1 0.5 1 − 2 1 2 ] cov = \frac{1}{m-1}X^TX = \frac{1}{2-1} \begin{bmatrix} 2 & -1 & -2 \\ -1 & 0.5 & 1 \\ -2 & 1 & 2 \\ \end{bmatrix} \quad cov=m11XTX=21121210.51212

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/153955.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Sublime Text 3 快捷键汇总「建议收藏」

    Sublime Text 3 快捷键汇总「建议收藏」SublimeText3非常实用,但是想要用好,一些快捷键不可或缺,所以转了这个快捷键汇总。用惯了vim,有些快捷键也懒得用了,尤其是在win下面,还有图形界面,所以个人觉得最有用的还是搜索类,对于阅读和修改代码来说,非常实用。选择类Ctrl+D选中光标所占的文本,继续操作则会选中下一个相同的文本。Alt+F3 选中文本按下快捷键,即可一次性选择全

  • leetcode 最长有效括号_字符指针赋值为什么不能加大括号

    leetcode 最长有效括号_字符指针赋值为什么不能加大括号给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例 1:输入:s = “(()”输出:2解释:最长有效括号子串是 “()”示例 2:输入:s = “)()())”输出:4解释:最长有效括号子串是 “()()”示例 3:输入:s = “”输出:0题解括号匹配:(看作+1,)看作-1,所有满足条件的括号应该是前缀和>=0,并且总和==0class Solution {public: const int INF =

  • 图片介质受写入保护_写入保护

    图片介质受写入保护_写入保护最近使用U盘,突然不能正常使用了,在U盘内新建文件夹,提示“介质受写入保护”无法创建文件,赶紧网上查找解决办法。查找的结果比解释比较全面的就是:方法一:格式化我的电脑(右击)-管理-磁盘管理-选中U盘右键删除后格式化(网上的方法,这招肯定能用,但是适用于没有重要数据的前提下,格式化后之前的数据会全部丢失)方法二:修改注册表1、打开注册表win+R(即开始-运行)键入regedit.exe2、进入如…

    2022年10月26日
  • 21.2 日志格式

    21.2 日志格式大部分商用和开源的HTTP应用程序都支持以一种或多种常用格式进行日志记录。很多这样的应用程序都支持管理者配置日志格式,创建自定义的格式。应用程序支持管理者使用这些更标准的格式的主要好处之一就在于,可以充分利用那些已构建好的工具处理这些日志,并产生基本的统计信息。有很多开源包和商用包都可用来压缩日志,以进行汇报。使用标准格式,应用程序及其管理员就都可以利用这些包了。1.常见日志格式现在,最

  • pytest报错_git撤销本地提交

    pytest报错_git撤销本地提交前言我们每天写完自动化用例后都会提交到git仓库,随着用例的增多,为了保证仓库代码的干净,当有用例新增的时候,我们希望只运行新增的未提交git仓库的用例。pytest-picked插件可以

  • 几种常见的Runtime Exception

    几种常见的Runtime Exception摘要:一,error和exception的区别,RuntimeException和非RuntimeException的区别1.异常机制异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号