高维数据的聚类方法选择?

5
如果要聚类的数据是点(无论是二维的(x, y)还是三维的(x, y, z)),那么选择聚类方法会相对直观。因为我们可以画出它们并可视化,所以我们会更好地知道哪种聚类方法更适合。
例如,如果我的二维数据集的形状如右上角所示,我会知道K-means在这里可能不是一个明智的选择,而DBSCAN似乎是一个更好的想法。

enter image description here

然而,正如scikit-learn网站所述:
尽管这些示例提供了一些有关算法的直觉,但这种直觉可能不适用于非常高维的数据。
据我所知,在大多数实际问题中,我们没有这样简单的数据。很可能,我们有高维元组,无法像这样可视化数据。
例如,我希望对一个数据集进行聚类,其中每个数据都表示为一个4-D元组。我无法在坐标系中将其可视化并观察其分布,就像以前那样。因此,在这种情况下,我将无法说DBSCAN优于K-means。
因此,我的问题是:
如何为这种“不可视”高维情况选择合适的聚类方法?

character1?你的意思是你有长度为4的字符串吗?那么你可能不应该直接在该空间中进行聚类,而是先进行一次独热编码。 - Fred Foo
@larsmans 抱歉!打错字了。请看已编辑的内容。 - Sibbs Gambling
1
四维并不算是“高维”,你的三维直觉仍然适用。 - Has QUIT--Anony-Mousse
事实上,高维度从10k个特征开始 :) - Fred Foo
4个回答

6
在聚类中,“高维度”可能从密集数据的10-20个维度开始,在稀疏数据(例如文本)中则为1000+维度。
4个维度并不是很困难,仍然可以进行可视化;例如使用多个2D投影(甚至3D,使用旋转)或使用平行坐标。这里是一个使用散点图矩阵可视化4维“Iris”数据集的示例
然而,你应该首先花费大量时间进行预处理,并找到适当的距离函数。
如果确实需要处理高维数据的方法,请查看子空间聚类和相关聚类等内容。
参考文献:Kriegel, Hans-Peter, Peer Kröger, and Arthur Zimek. “Clustering high-dimensional data: A survey on subspace clustering, pattern-based clustering, and correlation clustering.” ACM Transactions on Knowledge Discovery from Data (TKDD) 3.1 (2009): 1.
那项调查的作者还发布了一个软件框架,其中包含许多这些高级聚类方法(不仅仅是k-means,还有例如CASH、FourC、ERiC等):ELKI

5

至少有两种常见的通用方法:

  1. 为了实际可视化高维数据,可以使用一些降维技术,其中包括但不限于以下几种流行的解决方案:

    • PCA-主成分分析
    • SOM-自组织映射
    • Sammon映射
    • Autoencoder神经网络
    • KPCA-核主成分分析
    • Isomap

    然后回到原始空间,并使用基于在降维空间中观察到的技术,或在缩小的空间本身中执行聚类。第一种方法使用所有可用信息,但可能无效,因为降低维度会引入变换过程中的差异。而第二种方法确保您的观察和选择是有效的(因为您将问题缩小到漂亮的2d/3d),但由于使用的变换而丢失了大量信息。

  2. 尝试许多不同的算法并选择具有最佳指标的算法(已提出许多聚类评估指标)。这是一种计算密集型的方法,但具有较低的偏差(因为降维会引入来自所使用变换的信息更改)


即使将维度降低到可视化的程度(比如3D),有时仍然感觉没有意义去可视化数据。举个例子,假设在降维后我有元组<x坐标(单位为米),y坐标(单位为米),方向(单位为弧度)>。在3D空间中对它们进行聚类是否有意义?它们具有不同的单位。 - Sibbs Gambling
你所说的“2”是指试错法吗?但我的时间非常有限。我可能无法全部实现并逐一尝试。 - Sibbs Gambling
使用“不同的单位”进行聚类并不是降维问题,而是一般情况下聚类非单峰数据的问题。降维实际上试图通过找到最适合数据的投影来克服这个问题,无论它们代表什么。总的来说,聚类更多地是一种探索技术而不是解决方案。要合理地分割数据,您需要知道如何做到这一点,以及具体的目标是什么 - 但是然后您可以在许多情况下构建基于规则的系统而不是聚类系统。 - lejlot
一般来说,没有简单的解决方案,这不是一个容易的问题。这两种方法可以帮助你,但都不能完全“代替”你的工作。这只是一些“非常规的解决方案”,如果你时间有限,这就是你能得到的唯一东西。要做到“正确”,你需要大量的时间和精力进行真正的数据分析,涉及许多可视化、统计方法和辛勤工作,不幸的是。 - lejlot

2

确实,高维数据无法在欧几里得高维空间中轻易地进行可视化,但并不意味着没有可视化技术可以用于它们。

除了这个声明,我还要补充说,只需四个特征(即四个维度),您就可以轻松尝试平行坐标 可视化方法。或者简单地尝试多元数据分析,每次选两个特征(总共6次),以尝试确定它们之间的关系(通常是相关性和依赖性)。或者甚至可以使用三维空间来处理三个特征。

那么,如何从这些可视化中获取一些信息呢?嗯,这并不像在欧几里得空间中那么容易,但重点在于通过视觉方式确定数据是否聚集在某些组中(例如,在平行坐标图上靠近某个轴上的某些值),并思考数据是否可以分离(例如,如果它形成圆形或线性可分离的区域)。
稍微离题一下:你发布的图表并不能说明每个算法在特定数据分布下的能力或效果,它只是强调了某些算法的特性:例如,k-means 只能分离凸多面体和椭球体(请记住,凸性和椭球体即使在 N 维中也存在)。我的意思是,并没有一条规则说:根据这个图表所描述的分布,您必须相应地选择正确的聚类算法。
我建议使用一个数据挖掘工具箱,让您探索和可视化数据(而且由于您可以使用变换、投影和约简更改其拓扑结构,请查看 lejlot 的另一个答案),比如 Weka (此外,您不必亲自实现所有算法)。
最后,我会向您指出这个资源,用于不同的簇质量和适应度度量(cluster goodness and fitness measures),以便您可以比较来自不同算法的结果。

Weka没有很多聚类功能。最好使用ELKI。 - Has QUIT--Anony-Mousse
拥有100个聚类算法并不是问题,更重要的是有100种不同的度量标准可以使用,或者有100种转换/降维方法。Weka和Elki都支持这些功能:) - rano

1
我建议使用“软子空间聚类”,这是一种现今比较常见的方法,可以通过添加特征权重来找到最相关的特征。您可以使用这些权重来提高性能,并改善例如欧几里得距离的BMU计算。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接