在 em 算法期间处理协方差矩阵中的零 rows/columns

Handling zero rows/columns in covariance matrix during em-algorithm

我尝试实现 GMM,但在 em 算法中遇到了一些问题。

假设我有用于训练 GMM 的 3D 样本(stat1、stat2、stat3)。

我的一个 GMM 训练集在几乎每个样本中都有一个 stat1 的“0”。在训练期间,我在协方差矩阵的第一行和第一列中得到非常小的数字(如“1.4456539880060609E-124”),这导致 EM 算法的下一次迭代在第一行和第一列中为 0.0。

我得到这样的结果:

0.0 0.0 0.0
0.0 5.0 6.0
0.0 2.0 1.0

我需要逆协方差矩阵来计算密度,但由于一列为零,我无法执行此操作。

我想过回到旧的协方差矩阵(和均值)或用一个非常小的数字替换每个 0。

或者这个问题是否有另一种简单的解决方案?

简单地说,您的数据位于实际输入 space 的退化子 space 中,而 GMM 不太适合此类设置的大多数通用形式。问题是您使用的经验协方差估计器对于此类数据根本失败(正如您所说 - 您不能反转它)。你平时做什么?您将协方差估计量设为 constrained/regularized 个,其中包含:

  • 基于常数的收缩,因此不是使用 Sigma = Cov(X),而是使用 Sigma = Cov(X) + eps * I,其中 eps 是预定义的小常数,而 I 是单位矩阵。因此,对角线上永远不会有零值,并且很容易证明对于合理的 epsilon,这将是可逆的
  • 非常适合收缩,例如 Oracle Covariance Estimator or Ledoit-Wolf Covariance Estimator,它根据数据本身找到最佳 epsilon。
  • 将您的高斯分布限制为例如球形族,因此 N(m, sigma I),其中 sigma = avg_i( cov( X[:, i] ) 是每个维度的平均协方差。这限制了你给spherical gaussians,也解决了上面的问题

还有更多可能的解决方案,但所有解决方案都基于相同的东西 - 以这种方式的 chenge 协方差估计器,您可以保证可逆性。