【问题标题】:Appropriate clustering method for 1 or 2 dimensional data适合一维或二维数据的聚类方法
【发布时间】:2012-05-15 13:23:35
【问题描述】:

我有一组我生成的数据,其中包括提取的质量(嗯,m/z 但不是那么重要)值和时间。我从文件中提取数据,但是,可能会获得重复测量,这会导致数据集中存在大量冗余。我正在寻找一种方法来对这些进行聚类,以便根据单独的质量相似性或质量和时间的相似性对相关的那些进行分组。

应组合在一起的数据示例如下:

m/z 时间

337.65 1524.6

337.65 1524.6

337.65 1604.3

但是,我无法确定我将拥有多少个集群。有谁知道实现这一目标的有效方法,可能使用简单的距离度量?遗憾的是我不熟悉聚类算法。

【问题讨论】:

  • 聚类技术有很多种,使用哪种方法取决于数据的性质。如果您可以显示数据的散点图,这将有助于确定使用哪种方法。

标签: algorithm cluster-analysis


【解决方案1】:

http://en.wikipedia.org/wiki/Cluster_analysis

http://en.wikipedia.org/wiki/DBSCAN

如果您真的不想提前指定多少个集群,请阅读有关层次聚类的部分并查看 DBSCAN。您将需要定义一个距离度量,并在该步骤中确定您将在哪些特征或特征组合上进行聚类。

【讨论】:

  • 在典型的“聚类分析”方法中,DBSCAN 至少是比 k-means 更明智的选择。但我认为正确的方法是根本不使用聚类分析,而只是将连续记录分组,如果它们没有足够的变化。
  • Hackartist,您提到需要在此处指定 epsilon(距离)指标,但我不清楚您的意思是应该选择它吗?
【解决方案2】:

你为什么不设置一个阈值?

如果连续值(按时间)至少相差 +-0.1(按 m/s),则它们被组合在一起。或者,使用相对阈值:相差小于+- .1%。根据您的领域知识设置这些阈值。

对我来说,这听起来像是预处理这些数据的直接方法。

在这里使用“聚类”算法对我来说似乎完全是多余的。聚类算法将尝试发现比您在此处尝试找到的更复杂的结构。结果可能会令人惊讶且难以控制。直接的更改阈值方法(我将其称为集群!)非常易于解释、理解和控制。

【讨论】:

  • 我认为你可能是对的。我认为可能有一个相当简单的算法可以使用,因为我担心效率,但最初我想我会尝试这样的事情,或者使用一些合理的度量标准,以便在对它们进行分组时包括时间和质量。
  • 这非常简单和高效。当您的数据按时间排序时,需要对数据集和内存进行一次线性扫描来比较两条记录;没有算法能比这更快。所以一定要试一试。事实上,在尝试任何其他更复杂的算法之前,这甚至可能是一个明智的预处理。
【解决方案3】:

对于简单的一维 K-means 聚类(http://en.wikipedia.org/wiki/K-means_clustering#Standard_algorithm)是合适的,可以直接使用。唯一的问题是选择合适的 K。选择好的 K 的最佳方法是绘制 K 与剩余方差的关系图,然后选择“显着”减少方差的 K。另一种策略是使用一些信息标准(例如贝叶斯信息标准)。

您可以轻松地将 K-Means 扩展到多维数据。但是您应该注意缩放各个维度。例如。在项目 (1KG, 1KM) (2KG, 2KM) 中,使用这些比例尺离 (1.7KG, 1.4KM) 最近的点是 (2KG, 2KM)。但是一旦你开始以米为单位表达第二个项目,可能替代方案是正确的。

【讨论】:

  • k-means 在这里不合适。 k 均值仅在您提前知道有多少个集群时才有用,但他说他不知道会有多少。
  • @RunningWild:要知道有多少集群,您可以使用最小生成树。
  • @RunningWild 我确实有关于如何在我的答案中选择合适的 K 的建议。
  • k-means 在这里完全是矫枉过正和不合适的。仅仅因为它在问题中被称为“集群”并不能使它成为 k-means 风格的集群......
猜你喜欢
  • 2017-01-26
  • 2016-10-14
  • 2016-06-21
  • 2021-08-24
  • 2014-01-14
  • 1970-01-01
  • 2016-08-24
  • 2021-06-17
  • 2016-10-16
相关资源
最近更新 更多