如果提供了两个高斯分布的均值和标准差,如何使用 Kullback-leibler 散度?

机器算法验证 正态分布 高斯混合分布 kullback-leibler 爪哇 火花mllib
2022-03-27 03:23:48

使用 Apache Spark MLLib 库,我尝试使用 Gaussian Mixture Model (number cluster =3) 在数据集中查找集群。现在它返回 3 个不同的平均值和标准差值。我试图找出任何两个分布之间是否存在任何重叠。为此,我试图找到分布之间的距离。

KL Div 的标准代码看起来像这样,通常采用参数,两个概率数组对应于两个不同的分布。

现在我的问题是 1。如何更改等式以处理均值和西格玛?2.如何通过查看返回值得出分布重叠的结论?

2个回答

,您可以计算成对 KL 散度作为闭式参数的函数单变量情况:pq

KL(p||q)=logσ2σ1+σ12+(μ1μ2)22σ2212

和多变量情况:

KL(p||q)=12[log|Σ2||Σ1|d+tr(Σ21Σ1)+(μ2μ1)TΣ21(μ2μ1)]

如派生在这里这里或者,您可以尝试通过绘制混合分量的密度来可视化集群重叠。

为了完成 Vadim 给出的答案,高斯分布的混合之间也有许多 Kullback-Leibler 散度的近似值。

这些近似值非常容易计算和实现。Hershey & Olsen 的这些论文提出了 7 或 8 种不同的近似,并建议使用变分近似:https ://pdfs.semanticscholar.org/4f8d/eabc58014eae708c3e6ee27114535325067b.pdf (论文标题是:Approximating the Kullback Leibler Divergence Between Gaussian Mixture Models .)

它将为您提供全局混合的相似性度量,您不必逐个组件进行比较。