矩阵运算_矩阵的协方差矩阵/两个矩阵的协方差矩阵_求解详细步骤示例

1. 协方差矩阵定义

        在统计学中,方差是用来度量单个随机变量离散程度,而协方差则一般用来刻画两个随机变量相似程度。

参考: 带你了解什么是Covariance Matrix协方差矩阵 - 知乎

2. 协方差矩阵计算过程

  • 将输入数据A进行中心化处理得到A'。即通过减去每个维度的平均值来实现中心化。
    • 注意:平均值的计算有两种方式,按行计算(如numpy)和按列计算(如matlab),两者结果是不一样的,但原理是一样的,本文采用按行计算平均值为例。
    • 按列计算均值(每一行是一个observation(样本),那么每一列就是一个随机变量(特征))的一个实例:协方差矩阵计算方法_如何算瞬时协方差矩阵-CSDN博客
  • 对于按行计算方式:协方差矩阵等于去中心化后的数据A'乘以A'的转置矩阵, 然后除以 (列数-1)。如果输入数据的维度为(N,M),则该乘积的形状为(N,M)和(M,N),得到一个形状为(N,N)的矩阵。即对于NxM的矩阵A, 去中心化后的矩阵为A', 则协方差等于:

    • cov(A_{N\times M}) =\frac{1}{M-1}A'A'^{T}

3. 示例

一个矩阵A的协方差矩阵计算

设2x4的矩阵A为:

A = \begin{bmatrix} 1 & 2 & 4 & 1\\ 2& 3& 2 & 5 \end{bmatrix}

按行计算均值,意味着每一列是一个observation(样本)那么每一行就是一个随机变量(特征)举例如对于随机变量X,Y, 有四组采样结果(1,2), (2,3), (4,2), (1,5), 写成矩阵相乘的形式为:

\begin{bmatrix} X & Y \end{bmatrix}\begin{bmatrix} 1 & 2 & 4 & 1\\ 2& 3& 2 & 5 \end{bmatrix}

则均值向量为

a = \begin{bmatrix} 2\\ 3 \end{bmatrix}

去中心化后的矩阵A'为:

A' = \begin{bmatrix} -1 & 0 & 2 & -1\\ -1 &0 & -1 & 2 \end{bmatrix}

则协方差矩阵cov(A)为:

cov(A)=\frac{1}{4-1} A'A'^T

cov(A)=\frac{1}{3}\begin{bmatrix} -1 & 0 & 2 & -1\\ -1 &0 & -1 & 2 \end{bmatrix} \begin{bmatrix} -1 & -1\\ 0 & 0\\ 2 & -1\\ -1& 2 \end{bmatrix} = \frac{1}{3} \begin{bmatrix} 6 & -3 \\ -3 & 6 \end{bmatrix} 

所以,

 cov(A) ==\begin{bmatrix} 2 & -1\\ -1 & 2 \end{bmatrix}

代码numpy验算

import numpy as npA = np.array([[1, 2, 4, 1], [2, 3, 2, 5]])
print("======= cov(A) =======")
print(np.cov(A))mean_A = np.mean(A,axis=1,keepdims=True)
print("======= mean_A =======")
print(mean_A)A1 = A - mean_A
print("======= A - mean_A =======")
print(A1)covA =np.matmul(A1, A1.T)/(A1.shape[1]-1)
print("======= covA =======")
print(covA)

输出结果:

两个矩阵A、B的协方差矩阵计算 

设矩阵A (维度NxM), B (维度NxM),去中心化后的矩阵为A', B', 则两个矩阵的协方差矩阵cov(A,B)为:

 cov(A,B) = \frac{1}{M-1}\begin{bmatrix} A'A'^T& A'B'^T \\ B'A'^T& B'B'^T \end{bmatrix}

设A,B (维度为2x4)值分别为:

A = \begin{bmatrix} 1 & 2 & 4 & 1\\ 2& 3& 2 & 5 \end{bmatrix},    B = \begin{bmatrix} 5 & 3& 4 & 4\\ 2& 2& 8 & 8 \end{bmatrix}

则 按行求平均值, 得平均值向量为a=[2,3]^Tb = [4,5]^T, 去中心化后,得到:

A' = \begin{bmatrix} -1 & 0 & 2 & -1\\ -1 &0 & -1 & 2 \end{bmatrix}, B' = \begin{bmatrix} 1 & -1 & 0 & 0\\ -3 & -3 & 3 & 3 \end{bmatrix}

则其协方差矩阵 cov(A,B)(维度为4x4)为

cov(A,B) = \frac{1}{3}\begin{bmatrix} A'A'^T& A'B'^T \\ B'A'^T& B'B'^T \end{bmatrix} = \begin{bmatrix} 2 & -1 & -\frac{1}{3} & 2\\ -1 & 2 & -\frac{1}{3} & 2\\ -\frac{1}{3} & -\frac{1}{3} &\frac{2}{3} & 0 \\ 2& 2& 0 & 12 \end{bmatrix} 

性质: cov(B,A) = (cov(A,B))^T

代码numpy验算


A = np.array([[1, 2, 4, 1], [2, 3, 2, 5]])
B = np.array([[5, 3, 4, 4], [2, 2, 8, 8]])B1 = B - np.mean(B,axis=1,keepdims=True)
A1 = A - np.mean(A,axis=1,keepdims=True)C11 = np.cov(A)
C22 = np.cov(B)
C12 = np.matmul(A1, B1.T)/(B1.shape[1]-1)
C21 = np.matmul(B1, A1.T)/(A1.shape[1]-1)C = np.vstack((np.hstack((C11,C12)),np.hstack((C21,C22))))print("======= np.cov(A,B) =======")
print(np.cov(A,B))print("======= C =======")
print(C)

结果:

参考:

协方差矩阵计算实例_协方差矩阵例子-CSDN博客

协方差的计算方法_协方差计算-CSDN博客 (matlab计算)

带你了解什么是Covariance Matrix协方差矩阵

https://wenku.csdn.net/answer/2408abac75f64f0186adff81be057f99

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/149361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在建筑设计方面3DMax和Maya哪一个更好?

对于建筑设计可视化工具,有许多渲染程序提供了一套非常复杂的工具,使专业人员能够做到最好。ArchViz工具对建筑师和设计师来说非常重要,因为它们可以让他们更准确地识别设计发展阶段的问题,并更有效地与客户交流设计理念。 在今天…

【Linux】/proc/meminfo获取的参数信息分别是什么意思呐?

Meminfo是什么 “meminfo” 是一个在 Linux 系统中常见的文件,用于提供关于系统内存使用情况的详细信息。这个文件通常位于 /proc/meminfo 路径下。 参数信息代表什么意思? meminfo 文件包含了很多关于系统内存的重要信息。 下面由测试环境的meminfo给…

P8611 [蓝桥杯 2014 省 AB] 蚂蚁感冒(模拟)

首先&#xff0c;我们自然而然的想到和 P1007独木桥 的机制是一样的&#xff0c; 我们只需要把蚂蚁的相遇并掉头视作互相穿过即可 统计向左&#xff0c;向右蚂蚁的数量 for (int i 0; i < num - 1; i){int temp 0;scanf("%d", &temp);// 向右移动if (tem…

flink 查看写入starrocks的数据量 总行数

针对该connector: https://github.com/StarRocks/docs.zh-cn/blob/main/loading/Flink-connector-starrocks.md

Caché for UNIX®, Linux及macOS的安装及配置

本文介绍在UNIX、Linux或macOS系统上安装Cach的操作步骤。本文假设用户已熟悉UNIX、Linux和macOS目录结构、实用程序和命令。 本文包含如下主要部分: 1)Cach安装。 2)无人值守的Cach安装。 3)安装后任务。

【Hello Go】Go语言面向对象

Go语言面向对象 匿名组合 -- 继承匿名字段初始化成员操作同名字段其他匿名字段非结构体类型和指针类型 方法 -- 封装概述为类型添加方法基础类型作为接受者结构体作为接受者 值语义和引用语义方法集*T类型方法集类型T的方法集 匿名字段方法的继承方法的重写 表达式 接口 -- 多态…

【HarmonyOS】鸿蒙应用开发基础认证题目

系列文章目录 【HarmonyOS】鸿蒙应用开发基础认证题目&#xff1b; 文章目录 系列文章目录前言一、判断题二、单选题三、多选题总结 前言 随着鸿蒙系统的不断发展&#xff0c;前不久&#xff0c;华为宣布了重磅消息&#xff0c;HarmonyOS next 开发者版本会在明年&#xff08;…

sqli-labs关卡20(基于http头部报错盲注)通关思路

文章目录 前言一、回顾上一关知识点二、靶场第二十关通关思路1、判断注入点2、爆数据库名3、爆数据库表4、爆数据库列5、爆数据库关键信息 总结 前言 此文章只用于学习和反思巩固sql注入知识&#xff0c;禁止用于做非法攻击。注意靶场是可以练习的平台&#xff0c;不能随意去尚…

SELinux零知识学习二十、SELinux策略语言之类型强制(5)

接前一篇文章&#xff1a;SELinux零知识学习十九、SELinux策略语言之类型强制&#xff08;4&#xff09; 二、SELinux策略语言之类型强制 3. 访问向量规则 AV规则就是按照对客体类别的访问许可指定具体含义的规则&#xff0c;SELinux策略语言目前支持四类AV规则&#xff1a; …

centos7中安装Nginx和使用Nginx详细操作

环境&#xff1a; 准备了三台centos7虚拟机:192.168.213.4、192.168.213.5、192.168.213.6。 一、安装 三台虚拟机都安装下面的步骤执行&#xff0c;安装Nginx&#xff0c;为后面的使用演示使用。 1、安装必备组件: sudo yum install yum-utils2、配置yum源 在下面的文件目录…

Linux系统下安装RabbitMQ超简单教程(非详细)(Centos8)

文章目录 一、下载所需安装包二、安装三、启动rabbitmq四、添加远程用户五、图形化访问六、修改rabbitmq的启动端口和管理端口&#xff08;没有这个需求就不用看了&#xff09;七、需要注意版本问题可能遇到的错误和解决方式version GLIBC_2.34 类型错误undefined function rab…

云原生微服务-理论篇

文章目录 分布式应用的需求分布式架构治理模式演进ESB 是什么&#xff1f;微服务架构 MSA微服务实践细节微服务治理框架sidercar 什么是service mesh&#xff1f;康威定律微服务的扩展性什么是MSA 架构&#xff1f;中台战略和微服务微服务总体架构组件微服务网关服务发现与路由…

硬盘无法格式化怎么办?

许多用户在尝试格式化硬盘、SD卡、USB闪存驱动器时可能会遇到无法格式化硬盘的问题&#xff0c;并且还会伴随着Windows无法完成格式化或格式化未成功完成之类的错误消息弹窗。那么&#xff0c;硬盘无法格式化原因是什么呢&#xff1f;硬盘无法格式化怎么办呢&#xff1f;下面我…

MIB 6.1810实验Xv6 and Unix utilities(5)find

难度:moderate Write a simple version of the UNIX find program for xv6: find all the files in a directory tree with a specific name. Your solution should be in the file user/find.c. 题目要求&#xff1a;实现find &#xff0c;即在某个路径中&#xff0c;找出某…

解决 uniapp 开发微信小程序 不能使用本地图片作为背景图 问题

参考博文&#xff1a;uniapp微信小程序无法使用本地静态资源图片(背景图在真机不显示)的解决方法_javascript技巧_脚本之家 问题&#xff1a;uniapp 开发微信小程序&#xff0c;当使用本地图片作为 background-image 时&#xff0c;真机无法显示 解决&#xff1a; 方法一&am…

计算机毕业设计选题推荐-个人博客微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

HTML5-原生History

更多内容&#xff0c;访问: history hash 单页面应用和多页面应用 React-Router源码分析-History库 History库源码分析-Action 动作类型 History库源码分析-createLocation History库源码分析-createPath History库源码分析-parsePath history 浏览器历史记录对象 属性: le…

来聊聊阿里1688 /拼多多API接口接入| 让需求回到产品端

昨儿办公室讨论起了1688。 对&#xff0c;就是阿里搞批发的那个网站。 在上面&#xff0c;你可以买到各种各样价格低廉的产品&#xff0c;比如&#xff0c;办公用具、女孩子的皮筋、小孩子的玩具等等。 在小批量上&#xff0c;它和拼多多定价类似&#xff0c;但二者的赛道却不同…

PHP 中传值与传引用的区别,什么时候传值什么时候传引用?

传值&#xff1a;当使用传值的方式时&#xff0c;函数或方法会创建原始变量的一个副本&#xff0c;并将该副本传递给函数或方法。在函数或方法内部&#xff0c;对副本的任何修改都不会影响到原始变量。当函数或方法执行完毕后&#xff0c;副本被销毁&#xff0c;不再使用。 传引…