如何对多元高斯PDF进行矢量化/矩阵化以提高计算效率?

时间:2019-03-19 03:43:54

标签: python numpy matrix

上下文:我最近正在为高斯混合模型实现期望最大化(EM)算法,并且该过程的一部分涉及为具有各种参数的各个点x_i计算高斯PDF。我天真地实现了它,足够快达到我需要的速度,但是我觉得如果以一种很好的,干净的矩阵形式编写它,可以更快地进行计算。但是,我不知道您将如何以所需的形式获取它。

我需要的多元高斯PDF格式为:

p_k(x_i | _k,_k)= exp(-1/2(x_i-_k)^ T _k ^ -1(x_i-_k))/ [(2)^(d / 2)| _k | ^ (1/2)]

符号:

  • x_i是输入数据的d维向量,其中1≤i≤N(N是 数据点总数)
  • k∈{1,2,...,K}是另一个参数,我必须针对每个k值计算p(x_i)
  • _k是数据的d维均值集
  • _k是数据的dxd协方差矩阵

(很抱歉,很难阅读。)

我的主要困惑点:

  • 我在上面键入的方程式给出了单个i和单个k的标量概率。
  • 我需要针对所有i,k进行计算,因此最终我需要一个NxK值矩阵。
  • 指数部分的主要部分(x_i-_k)T _k-1(x_i-_k)有效地取一个1xd向量,乘以dxd矩阵,然后再乘以dx1向量。如果只有一个数据点,则得到1x1标量,但是如果有多个数据点,就不会得到NxN矩阵吗?

有人可以帮我找出一种更优雅的方式写这篇文章吗?再说一遍,我最终想要得到的是一个单线来获得一个NxK矩阵,我认为您可以这样写:p(X |,)其中X是一个Nxd矩阵,是一个kxd矩阵,并且是一个kxdxd矩阵。

0 个答案:

没有答案