当前位置: 首页 > news >正文

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

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

相关文章:

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

1. 协方差矩阵定义 在统计学中,方差是用来度量单个随机变量的离散程度,而协方差则一般用来刻画两个随机变量的相似程度。 参考: 带你了解什么是Covariance Matrix协方差矩阵 - 知乎 2. 协方差矩阵计算过程 将输入数据A进行中心化处理得到A…...

100天精通Python(可视化篇)——第108天:Pyecharts绘制多种炫酷词云图参数说明+代码实战

文章目录 专栏导读一、词云图介绍1. 词云图是什么?2. 词云图应用场景?二、参数说明1. 导包2. add函数三、词云库实战1. 基础词云图2. 矩形词云图3. 三角形词云图4. 菱形词云图5. 自定义图片词云图书籍推荐专栏导读 🔥🔥本文已收录于《100天精通Python从入门到就业》:本…...

Spark 平障录

Profile Profile 是最重要的第一环。 利用好 spark UI 和 yarn container log分析业务代码,对其计算代价进行预判建设基准,进行对比,比如application id 进行对比,精确到 job DAG 环节 充分利用 UI Stage 页面 页头 summary&…...

基于一致性算法的微电网分布式控制MATLAB仿真模型

微❤关注“电气仔推送”获得资料(专享优惠) 本模型主要是基于一致性理论的自适应虚拟阻抗、二次电压补偿以及二次频率补偿,实现功率均分,保证电压以及频率稳定性。 一致性算法 分布式一致性控制主要分为两类:协调同…...

Android 10.0 系统修改usb连接电脑mtp和PTP的显示名称

1.前言 在10.0的产品定制化开发中,在usb模块otg连接电脑,调整为mtp文件传输模式的时候,这时可以在电脑看到手机的内部存储 显示在电脑的盘符中,会有一个mtp名称做盘符,所以为了统一这个名称,就需要修改这个名称,接下来分析下处理的 方法来解决这个问题 2.系统修改usb连…...

飞鼠异地组网工具实战之访问k8s集群内部服务

飞鼠异地组网工具实战之访问k8s集群内部服务 一、飞鼠异地组网工具介绍1.1 飞鼠工具简介1.2 飞鼠工具官网 二、本次实践介绍2.1 本次实践场景描述2.2 本次实践前提2.3 本次实践环境规划 三、检查本地k8s集群环境3.1 检查k8s各节点状态3.2 检查k8s版本3.3 检查k8s系统pod状态 四…...

【Flink】窗口(Window)

窗口理解 窗口(Window)是处理无界流的关键所在。窗口可以将数据流装入大小有限的“桶”中,再对每个“桶”加以处理。 本文的重心将放在 Flink 如何进行窗口操作以及开发者如何尽可能地利用 Flink 所提供的功能。 对窗口的正确理解&#xff…...

读像火箭科学家一样思考笔记03_第一性原理(上)

1. 思维的两种障碍 1.1. 为什么知识会成为一种缺陷而非一种美德 1.1.1. 知识是一种美德 1.1.2. 知识同样的特质也会把它变成一种缺点 1.1.3. 知识确实是个好东西,但知识的作用应该是给人们提供信息,而不是起约束作用 1.1.4. 知识应该启发智慧&#…...

npm私有云

安装node时npm会自动安装,npm也可以单独安装。 package.json 在使用npm时,package.json文件是非常重要的,因为它包含了关于项目的必要信息,比如名称、版本、依赖项等。在初始化新项目时,通常会使用npm init命令生成一…...

莹莹API管理系统源码附带两套模板

这是一个API后台管理系统的源码,可以自定义添加接口,并自带两个模板。 环境要求 PHP版本要求高于5.6且低于8.0,已测试通过的版本为7.4。 需要安装PHPSG11加密扩展。 已测试:宝塔/主机亲测成功搭建! 安装说明 &am…...

【Kingbase FlySync】命令模式:安装部署同步软件,实现KES到KES实现同步

【Kingbase FlySync】命令模式:安装部署同步软件,实现KES到KES实现同步迁移 概述准备环境目标资源1.测试虚拟机下载地址包含node1,node22.同步工具下载地址3.临时授权下载地址4.ruby工具下载地址5.EXAMv0.11.sql下载地址 实操:同步软件安装部署1.node1准…...

python使用selenium webDriver时 报错

可能原因和解决: 1. python 解释器 ----> 设置 2. 浏览器版本 与 浏览器驱动版本不一致 ----> 安装同一版本的 (下载chromedriver | 谷歌驱动更高版本的测试版) 参考:Python使用Selenium WebDriver的入门介绍及安装教程-CSDN博客 Selenium安…...

【ROS2机器人入门到实战】

ROS2机器人入门到实战教程(鱼香ROS) 写在前面 当前平台文章汇总地址&#xff1a;ROS2机器人从入门到实战获取完整教程及配套资料代码&#xff0c;请关注公众号<鱼香ROS>获取教程配套机器人开发平台&#xff1a;两驱版| 四驱版为方便交流&#xff0c;搭建了机器人技术问…...

Nuxt3框架局部文件引用外部JS/CSS文件的相关配置方法

引入外部JS&#xff1a; <script setup>useHead({script: [ {type: "text/javascript",src: https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js}]}) </script>useHead只能与组件的setup和生命周期钩子一起使用 如果需要将js放置body区…...

Docker 可视化面板 ——Portainer

Portainer 是一个非常好用的 Docker 可视化面板&#xff0c;可以让你轻松地管理你的 Docker 容器。 官网&#xff1a;Portainer: Container Management Software for Kubernetes and Docker 【Docker系列】超级好用的Docker可视化工具——Portainer_哔哩哔哩_bilibili 环境 …...

Java 教育局民办教育信息服务与监管平台

1) 项目背景 按照《中华人民共和国民办教育促进法》和《中华人民共和国政府信息公开条例》的相关规定&#xff0c;为满足学生和家长、社会各界获取权威信息的需求&#xff0c;着力解决服务老百姓最后一公里问题&#xff0c;达到宣传民办教育和引导家长择校的效果&#xff0…...

小迪笔记(1)——操作系统文件下载反弹SHELL防火墙绕过

名词解释 POC&#xff1a;验证漏洞存在的代码&#xff1b; EXP&#xff1a;利用漏洞的代码&#xff1b; payload&#xff1a;漏洞利用载荷&#xff0c; shellcode&#xff1a;漏洞代码&#xff0c; webshell&#xff1a;特指网站后门&#xff1b; 木马&#xff1a;强调控制…...

Pytorch D2L Subplots方法对画图、图片处理

问题代码 def show_images(imgs, num_rows, num_cols, titlesNone, scale1.5): #save """绘制图像列表""" figsize (num_cols * scale, num_rows * scale) _, axes d2l.plt.subplots(num_rows, num_cols, figsizefigsize) axes axes.flatten…...

MATLAB算法实战应用案例精讲-【目标检测】YOLOV5(补充篇)

目录 算法原理 YOLOv5数据集训练 软硬件背景: 数据集准备 配置文件 模型训练...

WPF中可视化树和逻辑树的区别是什么

在WPF中&#xff0c;用户界面元素被组织成树形结构。这种结构主要分为两种&#xff1a;逻辑树&#xff08;Logical Tree&#xff09;和可视化树&#xff08;Visual Tree&#xff09;。它们在设计上各有特点和用途。 逻辑树&#xff08;Logical Tree&#xff09; 逻辑树是WPF中…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...