协方差矩阵在torch和numpy中的比较,自行实现torch协方差矩阵

这篇具有很好参考价值的文章主要介绍了协方差矩阵在torch和numpy中的比较,自行实现torch协方差矩阵。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

数学中(教科书、大学课堂、数学相关的科普视频),一个矩阵的向量往往是竖着的,一列作为一个vector,这一点numpy库也是这样默认的。
但是在机器学习以torch框架为例,一个有意义的向量或者说embedding是横着的

比较

因为numpy库默认是一列是一个向量而torch等机器学习框架默认一行是一个向量,所以
torch.cov(X)numpy.cov(X.T)是相等的。

自行实现

torch在较高版本中才有torch.cov函数,低版本的需要自行实现。
因为大部分博客都是数学风格的,在减掉均值后,大部分写 X X T XX^T XXT算协方差矩阵,这是默认以列为一个vector,一定要注意。
因为torch的一个向量是一个横行,所以自行实现其实是 X T X X^TX XTX

def torch_cov(input_vec:torch.tensor):    
    x = input_vec- torch.mean(input_vec,axis=0)
    cov_matrix = torch.matmul(x.T, x) / (x.shape[0]-1)
    return cov_matrix

这样子可以和numpy的cov比较一下:

vecs=torch.tensor([[1,2,3,4],[2,2,3,4]]).float()
vecs_np=vecs.numpy()
cov = np.cov(vecs_np.T)
# 显示
array([[0.5, 0. , 0. , 0. ],
       [0. , 0. , 0. , 0. ],
       [0. , 0. , 0. , 0. ],
       [0. , 0. , 0. , 0. ]])
torch_cov(vecs)
# 显示
tensor([[0.5000, 0.0000, 0.0000, 0.0000],
        [0.0000, 0.0000, 0.0000, 0.0000],
        [0.0000, 0.0000, 0.0000, 0.0000],
        [0.0000, 0.0000, 0.0000, 0.0000]])

二者是一样的。

直面矩阵的数学解释

对于矩阵 M M M来说,1行为一个高维变量 x i x_i xi应当表示成
[ x 1 x 2 x 3 ] \left[ \begin{matrix} x_1\\ x_2\\ x_3\\ \end{matrix} \right] x1x2x3
计算均值 μ \mu μ,应当是对 x i x_i xi μ \mu μ μ = 1 N ∑ N x i \mu=\frac1N\sum_Nx_i μ=N1Nxi所以 μ \mu μ也是一个高维(与x同维度)的向量。
M − μ M-\mu Mμ变换应当表示成
X = [ x 1 − μ x 2 − μ x 3 − μ ] = [ x 1 ′ x 2 ′ x 3 ′ ] X=\left[ \begin{matrix} x_1-\mu\\ x_2-\mu\\ x_3-\mu\\ \end{matrix} \right]=\left[ \begin{matrix} x_1'\\ x_2'\\ x_3'\\ \end{matrix} \right] X=x1μx2μx3μ=x1x2x3
我们把变换后的 M M M写做 X X X,变换后的 x i x_i xi写作 x i ′ x'_i xi
协方差矩阵 Σ \Sigma Σ的意义是各个维度之间相互的方差,则应当是
1 3 X T X = 1 3 [ x 1 ′ , x 2 ′ , x 3 ′ ] [ x 1 ′ x 2 ′ x 3 ′ ] = Σ \frac13X^TX=\frac13\left[ \begin{matrix} x_1', x_2', x_3'\\ \end{matrix} \right]\left[ \begin{matrix} x_1'\\ x_2'\\ x_3'\\ \end{matrix} \right]=\Sigma 31XTX=31[x1,x2,x3]x1x2x3=Σ
直观解释是这个乘法 Σ \Sigma Σ最左上角的元素,恰好是 x i ′ x'_i xi第1维对第1维的自我方差,此时可以确认是正确意义的协方差矩阵。
当然,算完之后还要乘变量个 1 3 \frac13 31或者 1 3 − 1 \frac1{3-1} 311文章来源地址https://www.toymoban.com/news/detail-400485.html

到了这里,关于协方差矩阵在torch和numpy中的比较,自行实现torch协方差矩阵的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【概率论理论】协方差,协方差矩阵理论(机器学习)

      在许多算法中需要求出两个分量间相互关系的信息。协方差就是描述这种相互关联程度的一个特征数。   设 ( X , Y ) (X,Y) ( X , Y ) 是一个二维随机变量,若 E [ ( X − E ( X ) ) ( Y − E ( Y ) ) ] E[(X-E(X))(Y-E(Y))] E [ ( X − E ( X ) ) ( Y − E ( Y ) ) ] 存在,则称此数学期望为 X X X 与

    2024年02月14日
    浏览(12)
  • 协方差矩阵

    协方差矩阵

    首先先了解方差与协方差: 协方差: (1)针对 一维样本集合 时(y i =x i ),求出的协方差其实就是方差,既方差是协方差的一种特殊情况。协方差意义和方差一样,都是 反应集合中各元素离散程度 。 (2)针对 二维样本集合 时,求出的协方差反映的就是 两个维度之间的相

    2024年02月10日
    浏览(9)
  • 因子模型:协方差矩阵

    因子模型:协方差矩阵

    本文是Quantitative Methods and Analysis: Pairs Trading此书的读书笔记。 因子协方差矩阵 (factor covariance matrix)在计算风险的时候很重要。如果一个模型有个因子,那么协方差矩阵的大小就是。对角线元素是每个因子的方差,非对角线元素是协方差,这些协方差有可能不为零。 协方差

    2024年02月04日
    浏览(6)
  • 协方差矩阵的研究

    协方差矩阵的研究

    (1)协方差矩阵的定义、计算过程。         协方差(Covariance):在概率论和统计学中用于衡量两个变量的总体误差。协方差在某种意义上给出了两个变量线性相关性的强度以及这些变量的尺度。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。协方差矩阵

    2024年02月13日
    浏览(8)
  • 协方差矩阵到底有什么用?

    协方差矩阵到底有什么用?

    我们知道,线性代数,可以完成空间上的线性变换——旋转,缩放。对于协方差,我们隐约可以想到,它能解释一个随机变量,它在各个维度的变化程度。但是,这种认识其实还是处于比较浅层次的。数学嘛,总要落实到公式上,才算认识比较深刻。 我认为,协方差一个经典

    2024年02月16日
    浏览(8)
  • Gram矩阵+Gram矩阵和协方差矩阵的关系

    Gram矩阵+Gram矩阵和协方差矩阵的关系

    gram矩阵是计算每个通道 i 的feature map与每个通道 j 的feature map 的内积 gram matrix的每个值可以说是代表 i 通道的feature map和 j 通道的 feature map的互相关程度。 参考博客 G = A T A = [ a 1 T a 2 T ⋮ a n T ] [ a 1 a 2 ⋯ a n ] = [ a 1 T a 1 a 1 T a 2 ⋯ a 1 T a n a 2 T a 1 a 2 T a 2 ⋯ a 2 T a n a n T a 1 a n

    2024年02月10日
    浏览(6)
  • 基于 Matlab 的方差-协方差矩阵可视化表示(椭圆、椭球)

    基于 Matlab 的方差-协方差矩阵可视化表示(椭圆、椭球)

    因为在学习模糊度固定的时候涉及了『搜索椭球』这一概念,很想知道是如何用椭球来表示搜索空间的。出于好奇,在查阅了一些相关文献,终于解决了笔者的疑惑,此篇博文就简要记录一下如何根据协方差矩阵来绘制椭球。 下面是得到的一些结论: 对协方差矩阵进行奇异

    2024年02月06日
    浏览(13)
  • 阿白数模笔记之协方差矩阵与相关矩阵

    阿白数模笔记之协方差矩阵与相关矩阵

    目录 前言 一、方差 二、协方差矩阵 ①协方差 ②自协方差矩阵 互协方差矩阵​编辑 ③互协方差矩阵 Ⅰ、数学定义 Ⅱ、MATLAB运算 三、相关矩阵 ①person相关系数 ②自相关矩阵 ③互相关矩阵 Ⅰ、数学定义 Ⅱ、matlab运算         作为数模小白,前天在学习FA算法时看到协方差

    2024年02月11日
    浏览(9)
  • matlab 计算点云协方差矩阵

    matlab 计算点云协方差矩阵

    本文由CSDN点云侠原创,原文链接。如

    2024年02月10日
    浏览(5)
  • 概率论之 多维随机变量的期望,协方差矩阵

    上一次写了一维随机变量的期望,方差,协方差。本次来记录多维随机变量的期望和协方差矩阵。这一块内容由浅入深,因此会有更新。 假设系统状态有多个分量 x 1 , x 2 , … , x n x_1,x_2,dots,x_n x 1 ​ , x 2 ​ , … , x n ​ ,则将其表示为向量的形式 X = ( x 1 , x 2 , … , x n ) T X=

    2024年02月04日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包