【问题标题】:Mean and covariance of conditional distribution条件分布的均值和协方差
【发布时间】:2018-01-20 18:06:34
【问题描述】:

我有一个 10000 X 22 维数组(观察 x 特征),并且我用一个组件拟合高斯混合,如下所示:

mixture = sklearn.mixture.GaussianMixture(n_components=1, covariance_type='full').fit(my_array)

然后,我想根据第 87 页中的 Bishop's Pattern Recognition and Machine learning 方程 2.81 和 2.82 计算前两个特征的条件分布的均值和协方差。我要做的是:

covariances = mixture.covariances_ # shape = (1, 22, 22) where 1 is the 1 component I fit and 22x22 is the covariance matrix
means = mixture_component.means_ # shape = (1, 22), 22 means; one for each feautre
dependent_data = features[:, 0:2] #shape = (10000, 2)
conditional_data = features[:, 2:] #shape = (10000, 20)
mu_a = means[:, 0:2]  # Mu of the dependent variables
mu_b = means[:, 2:]  # Mu of the independent variables
cov_aa = covariances[0, 0:2, 0:2] # Cov of the dependent vars       
cov_bb = covariances[0, 2:, 2:]  # Cov of independent vars         
cov_ab = covariances[0, 0:2, 2:]                                  
cov_ba = covariances[0, 2:, 0:2]
A = (conditional_data.transpose() - mu_b.transpose())
B = cov_ab.dot(np.linalg.inv(cov_bb))
conditional_mu = mu_a + B.dot(A).transpose()
conditional_cov = cov_aa - cov_ab.dot(np.linalg.inv(cov_bb)).dot(cov_ba)

我的问题是在计算 conditional_mu 和 conditional_cov 时,我得到以下形状:

conditional_mu.shape
(10000, 2)
conditional_cov.shape
(2,2)

我期待 conditional_mu 的形状应该是 (1,2),因为我只想找到前两个特征的平均值。为什么我要为每个观察结果取一个平均值?

【问题讨论】:

  • 您的A 的形状为(20, 10000),因此(BA)^T 的形状为(10000, 2),这是您观察到的形状的来源。
  • @PaulPanzer 是的,我知道为什么结果是特定形状的。我在问它是否应该是那样,因为它看起来不正确
  • 在那种情况下,这不是一个真正的编程问题,是吗?也许您想将其移至更合适的位置,例如数学网站之一?
  • @PaulPanzer 根据我的经验,有很多计算机科学家对这些东西很熟悉,所以我将把它留在这里并在其他地方发布以增加答案的机会。
  • 当然,您的选择。

标签: python statistics covariance gaussian mixture


【解决方案1】:

是的,这是预期的尺寸。

对于每个数据点,独立特征是固定的,依赖特征服从正态分布。根据独立特征,每个数据点都会为相关特征提供不同的平均值。

由于您有 10000 个数据点,因此您应该有 10000 个用于相关特征的均值,每个均值对应一个数据点。

【讨论】:

  • 谢谢@Siong Thye Goh。但是协方差呢?
  • 协方差矩阵的维度也是预期的。请注意,在等式 2.82 中,它与 x_b 无关。即数据共享相同的协方差矩阵,只是均值不同且取决于 x_b。
  • 那么,协方差矩阵应该是 1000 x 1000?为什么当我用一个分量拟合高斯混合是 20x20 时?然后我怎样才能从这个结果中得到平均值和协方差,以便我可以像椭圆体一样绘制它?
  • 协方差矩阵应该是 2x2。从属特征只有 2 个特征。修复独立特征,您会得到依赖特征的高斯分布,它遵循均值(即条件均值的列之一)和 2 x 2 协方差矩阵。
  • 好的。那么,根据你当时的说法,我到目前为止的计算是正确的吗?那我错过了什么?我应该怎么做才能为我的 2 个依赖特征获得 2 个条件均值?
猜你喜欢
  • 2021-08-21
  • 2012-03-12
  • 2011-07-16
  • 2014-05-16
  • 2022-01-21
  • 1970-01-01
  • 2018-11-08
  • 2016-01-10
  • 1970-01-01
相关资源
最近更新 更多