如果要聚类的数据是字面上的点(2D (x, y)
或3D (x, y,z)
),那么选择聚类方法将非常直观。因为我们可以绘制它们并将它们可视化,所以我们可以更好地了解哪种聚类方法更合适。
eg1 如果我的2D数据集是右上角显示的格式,我会知道K-means
可能不是明智的选择,而{{1}似乎是一个更好的主意。
然而,正如the scikit-learn website所述:
虽然这些例子给出了一些关于算法的直觉,但是这个 直觉可能不适用于非常高维的数据。
AFAIK,在大多数海盗问题中,我们没有这么简单的数据。最有可能的是,我们有高维元组,这些元素无法像数据一样可视化。
例如2 我希望对数据集进行聚类,其中每个数据都表示为4-D元组DBSCAN
。我无法在坐标系中对其进行可视化,并像以前一样观察其分布。因此,在这种情况下,我无法说<characteristic1, characteristic2, characteristic3, characteristic4>
优于DBSCAN
。
所以我的问题:
如何为这种“隐形”高维案例选择合适的聚类方法?
答案 0 :(得分:6)
聚类中的“高维”可能在密集数据中以10-20维度开始,在稀疏数据(例如文本)中有1000多个维度。
4个尺寸不是问题,仍然可以看到;例如,通过使用多个2d投影(甚至是3D,使用旋转);或使用平行坐标。 Here's a visualization of the 4-dimensional "iris" data set使用散点图矩阵。
但是,你还应该做的第一件事就是在预处理上花费大量时间,并找到合适的距离函数。
如果您确实需要高维数据的方法,请查看子空间聚类和相关聚类,例如
该调查的作者还发布了一个软件框架,其中包含许多高级聚类方法(不仅仅是k-means,而且还有CASH,FourC,ERiC):ELKI
答案 1 :(得分:5)
至少有两种常见的通用方法:
可以使用一些 dimensionality reduction technique 来实际可视化高维数据,有许多流行的解决方案,包括(但不限于):
在此之后回到原始空间并使用一些看似合理的技术,这些技术基于减少空间中的观察,或者在缩小空间本身中执行聚类。第一种方法使用所有可用信息,但由于差异可能无效由还原过程诱导。虽然第二个确保您的观察和选择是有效的(因为您将问题减少到好的,2d / 3d)但由于使用了转换而丢失了大量信息。
尝试许多不同的算法并选择具有最佳度量的算法(已经提出了许多聚类评估度量)。这是计算上昂贵的方法,但具有较低的偏差(因为减少维度会引入使用转换后的信息变化)
答案 2 :(得分:2)
确实,高维数据无法在欧几里得高维数据中轻松显示,但对于它们来说并不是visualization techniques。
除了此声明之外,我还会添加4个功能(您的尺寸),您可以轻松尝试parallel coordinates visualization method。或者简单地尝试multivariate data analysis一次获取两个特征(总共6次)以试图找出两者之间的关系(通常是相关性和依赖性)。或者你甚至可以一次使用三个3d空间。
然后,如何从这些可视化中获取一些信息?好吧,它并不像在欧几里德空间那么容易,但重点在于在视觉上发现数据是否在某些组中聚集(例如,在平行坐标图的轴上的某些值附近),并认为数据是否以某种方式可分离(例如如果它在散点图中形成像圆圈或线可分离的区域)。
一点点离题:您发布的图表并未表示给定某些特定数据分布的每种算法的功能或能力,它只是突出了某些算法的本质:例如k-means只能分离凸面和椭圆体区域(并记住即使在第N维也存在凸面和椭球)。我的意思是没有一条规则说:鉴于此图中描述的分布,你必须选择正确的聚类算法。
我建议使用数据挖掘工具箱,让您可以浏览和可视化数据(并且可以轻松转换它们,因为您可以通过转换,预测和缩减来更改其拓扑,请通过lejlot检查其他答案),例如{{3 (另外你不必自己实现所有算法。
最后,我将针对不同的Weka指向您的资源,以便您可以比较不同算法的结果。
答案 3 :(得分:1)
我还建议软子空间聚类,这是一种非常常见的方法,其中添加了特征权重以找到最相关的特征。例如,您可以使用这些权重来提高性能并改善欧几里德距离的BMU计算。