对每个维度具有独立不确定性的不确定数据进行聚类

数据挖掘 聚类 数据清理
2022-02-15 16:22:03

我有对象位于维空间中,但是我不知道它们的确切坐标。对于每个对象和每个维度,我都有一组嘈杂的坐标测量值。nd

我想将这些数据聚集在

例如,使用,我可以访问以下数据:n=3d=2

  • 对象,暗淡 1:0.8 0.7 0.6a
  • 对象,暗淡 2:1.0 1.0 1.0 0.9a
  • 对象,暗淡 1:0.4 0.3b
  • 对象,暗淡 2:0.2 0.1b
  • 对象,暗淡 1:0.9 0.6c
  • 对象 , 暗淡 2:c

在我目前的方法中,我为每个具有数据的(对象,维度)对取平均值,并为缺失数据输入维度的平均值。

所以我会得到

  • a[0.7 0.975
  • b [0.35 0.15]
  • c [0.75 0.6] (其中 )0.6=1+1+1+0.9+0.2+0.16

然后我使用 scikit-learn python 库运行均值偏移算法并获得集群。

我对这种方法并不完全满意,主要有两个原因(也许它们是相同的):

  1. 具有单个观察的(对象,维度)对被视为与具有多个观察的一对一样可靠
  2. 在如何处理具有零观测值的对和具有一些观测值的对之间存在不连续性。在第二种情况下,其他对象的值根本不影响属性。

我的问题是:解决这个问题的更有原则的方法是什么?如果我需要使用另一种算法,是否有可以实现它的开源体面质量库?

我目前使用进行测试,但我的目标是在我的目标应用程序中使用(但如果不切实际,可能会使用更小的d=256n=10d=16000n=1000n

3个回答

为测量过程建模

对于每个维度,您可以尝试对测量过程方差的分布进行建模。也许每个维度都有相同的测量过程,或者可能是不同的。如果过程相同,则合并所有维度的所有测量值。

如果您有足够的数据,那么您可以使用基于内核的估计器来构建误差分布的经验模型。

否则,您可能会选择使用由每次测量的平均值和测量过程方差的总体测量形成的高斯分布。然后,您用从具有观察均值和总体测量过程方差的分布中抽取的样本替换您的观察。

有两个单独的问题,您应该能够结合以下两个想法来解决您的问题。

多次测量

如果您在聚类期间将所有测量值视为单独的数据点并将所有数据聚类在一起会怎样。运行您最喜欢的聚类算法。然后,如果您的一个对象的测量值聚集在不同的集群中,这将为您提供对象模糊度的度量。将对象分配给具有最多测量值的集群。

测量不完整

这个比较棘手。您不仅缺少数据点,还缺少维度。是一篇开始解决其中一些问题的论文。文献综述可能会为您指明正确的方向。

我最初的想法是按子空间等级顺序对数据进行聚类。也就是说,首先将所有具有相似等级d的数据点聚集在一起,然后使用这些聚类标签作为初始聚类对具有等级d-1的数据点进行排序,然后对d-2进行排序,以此类推。

使用 (d=256, n=10) 以及使用 (d=16000, n=1000) 您会受到维度的诅咒诅咒的本质(引自维基百科)

几乎所有的高维空间都离中心“很远”。换句话说,高维单位超立方体可以说几乎完全由超立方体的“角”组成,几乎没有“中间”。

为了直观的解释,我还发现了这个

恕我直言,对于 n=10 的问题,您可以使用 d<=2,对于 n=1000 d=3(可能为 4,最多为 5)。为什么 n=1000 时 d=3?粗略地说,这将对应于每个维度上的 10 个点 (10^3=1000),这对于填充 3D 空间是合理的。对于 d=5,它就像每个维度中的 4 个点,这不是很好,但也不是灾难。

恕我直言,您应该尝试重新表述您的问题并显着降低维度(也许尝试使用 SVD 或 PCA)。这可能会自动解决您的嘈杂数据问题。