5

我想用 KL-divergence 作为我的指标对我的数据进行聚类。

在 K 均值中:

  1. 选择集群的数量。

  2. 随机初始化每个集群的平均值。

  3. c将每个数据点分配给距离值最小的集群。

  4. 将每个集群的平均值更新为分配给它的数据点的平均值。

在欧几里得的情况下,更新均值很容易,只需对每个向量进行平均即可。

但是,如果我想使用 KL 散度作为我的指标,我该如何更新我的平均值?

4

4 回答 4

6

使用 KL 散度进行聚类可能不是最好的主意,因为 KLD 缺少度量的一个重要属性:对称性。获得的集群可能很难解释。如果你想继续使用 KLD,你可以使用 KLD 的平均值作为距离,即

d(x,y) = KLD(x,y)/2 + KLD(y,x)/2

于 2013-02-02T10:45:13.347 回答
3

使用 KLD 不是一个好主意,原因有两个:-

  1. 它不是对称的 KLD(x,y) ~= KLD(y,x)
  2. 在编程中使用 KLD 时需要小心:除法可能导致 Inf 值和 NAN 结果。

添加少量可能会影响准确性。

于 2016-02-17T18:30:19.950 回答
1

好吧,在“k-means 框架”中使用 KL 可能不是一个好主意。如前所述,它不是对称的,K-Means 旨在处理欧几里得空间。

但是,您可以尝试使用 NMF(非负矩阵分解)。事实上,在 Data Clustering(由 Aggarwal 和 Reddy 编辑)一书中,您可以找到 NMF(在聚类任务中)与 k-means 一样工作的证明,只是在非负约束下。有趣的是,NMF 可能会使用一堆不同的距离和散度。如果你编程 python:scikit-learn 0.19 实现了 beta 散度,它有一个变量 beta 作为自由度。根据 beta 的值,分歧有不同的表现。在 beta 等于 2 时,它假设 KL 散度的行为。

这实际上在主题模型上下文中非常有用,人们试图将文档/单词聚集在主题(或主题)上。通过使用 KL,结果可以解释为关于词-主题和主题分布如何相关的概率函数。

您可以找到更多信息:

  • FÉVOTTE, C., IDIER, J. “具有 β-散度的非负矩阵分解算法”,神经计算,v. 23,n。9,第 2421-2456 页,2011 年。ISSN:0899-7667。doi: 10.1162/NECO_a_00168。Disponível em: .

  • LUO, M., NIE, F., CHANG, X., et al. “概率非负矩阵分解及其对主题建模的稳健扩展。” 在:AAAI,第 2308-2314 页,2017 年。

  • KUANG, D., CHOO, J., PARK, H. “交互式主题建模和文档聚类的非负矩阵分解”。在:分区聚类算法,Springer,第 215-243 页,2015 年。

http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.NMF.html

于 2018-03-02T06:57:23.550 回答
0

K-means 旨在处理欧几里德距离:如果您想在聚类中使用非欧几里德相似性,您应该使用不同的方法。使用任意相似性度量进行聚类的最原则性方法是谱聚类,并且 K-means 可以作为其变体推导出来,其中相似性是欧几里得距离。

正如 mitchus 所说,KL 散度不是衡量标准。您需要 Jenson Shannon 散度对称性。

于 2013-02-04T10:50:57.043 回答