如何最好地对螺旋数据进行聚类分析?你好,
我想知道 JMP 或 JMP Pro 中提供的哪种聚类平台最适合从这些螺旋数据中识别聚类。

使用 HDBSCAN 我可以正确识别集群,如下所示,但如果可能的话我想使用 JMP:

附表脚本。
谢谢jpol
消费者和市场研究回复:如何最好地对螺旋数据进行聚类分析?你好@jpol ,
我偶然发现了这篇文章,发现它非常有趣——现在甚至不记得我在搜索什么,但这是一篇非常酷的文章,感谢您提供原始数据集!我尝试了另一种方法,您可能会感兴趣。 首先,我在数据表中添加了一些额外的列,并删除了我不需要的其他列。 我添加了更多的 X 和 Y 数据,但是有噪音所以螺旋线看起来不太好看(只是为了让问题更难!
). 我什至将X/Y坐标转换成R/theta坐标来测试聚类和建模,但发现R和theta并没有提高聚类或建模。 附上数据表。
你是对的,即使在标准化数据时,那些“异常值”点也会对层次聚类中的单链接方法造成严重破坏。 我认为这是因为这些点与其余数据有一些共同之处,并且最终会夸大该列(即 X 或 Y)中数据的标准偏差。 然而,在 JMP 11 中,他们添加了 Standardize Robustly 选项,这使得离群值更加突出。 我不知道它的整个算法,但我猜想 JMP 可能会进行某种 T^2、Jackknife 或 KNN 异常值测试。 事实上,如果您使用 Multivariate 平台并执行 T^2 测试,或使用 Explore Outlier 平台并运行 KNN 测试,您可以看到额外的 5 个点显示为潜在的异常值。 唯一有问题的可能是中间那个。 你可以看到下面的报告。 它们也作为脚本保存到数据表中。


简而言之,当您认为有异常值时,勾选 Standardize Robustly,这将在 JMP 标准化数据时最小化异常值的影响。 当您获得树状图时,您可以选择 8 个聚类,层次聚类平台将正确区分额外的 5 个数据点作为它们自己的单独聚类。 请参阅下面来自 JMP 的 HC 报告。 您可以看到所有离群值簇都对齐在一个星座臂上。 它们不能放在自己的集群中,因为它们彼此之间的共同点不够多,同时与数据集的其余部分共享太多共同点。 您仍然需要指定 8 个簇,否则,它会将中心点和整个螺旋归为一个簇,并将 4 个外部点各自归为一个簇。

如果你有第三维数据——比如恒星亮度(我只这么说是因为这很像星系图像)或 Z 坐标,那么你可以将其添加到数据中,以便使用另一种区分方法。 如果您事先知道它们是离群值,您始终可以指定聚类的总数——在本例中为 8 个——并且层次聚类会很好地挑选出它们(当稳健地标准化时)。 如果所讨论的点是诸如在感光板上标记特定位置的基准点或 Si 晶圆上的晶体管布局之类的东西,那么这些可以在一开始就从数据集中删除。 但这是您需要以某种方式包含在数据中的先验知识。
我决定进一步研究一下,看看机器算法是否可以挑选出集群。 在 JMP Pro 可用的方法中,我认为支持向量机可能是最好的方法,因为它需要数值输入来导出分类输出。 这个数据集本质上是一个分类问题。 您正在尝试将螺旋的每个臂与其他臂区分开来。
使用层次聚类平台的聚类作为输出,通过 JMP Pro 中的支持向量机平台的 X 和 Y 输入进行建模,我能够完美地对不同的聚类进行建模。 不知道要在模型中使用哪些确切参数,我进行了 40 次运行的调整设计,果然,SVM 平台能够挑选出 8 个集群。 Clusters vs Predicted Clusters 的列联表有 0 个错误分类。 *更新*:忘了说我在训练SVM模型的时候也用了50%的数据作为验证集。
这是 SVM 报告的输出。 您可以看到每只手臂以及 5 个额外的异常值都是唯一标识的。

比较 HC 方法和 SVM 着色的数据,我们发现它们本质上是相同的。 (我将异常值的标记类型更改为 *,以便更容易看到)。


并且,列联表显示 0 个错误分类。

这是一个非常酷的数据集,感谢您提出这个问题。 再一次,甚至不记得我最初在寻找什么,但发现这个特别酷。 我可能会尝试其他一些平台,看看它们在建模/分类这些数据方面的表现如何。 谢谢!
我希望这有帮助!,
DS
**更新 2**:
因此,我返回并使用 JMP 中的其他一些预测建模平台测试拟合该数据集,另外两个接近的平台是决策树和引导森林平台。 即使那样,它们的性能也不如 SVM 模型。 两者在建模时都只挑出3个簇,簇几乎相同,但不完全相同。 所以,确实 SVM 似乎是更好的选择。


我什至尝试了新的 XGBoost 平台,令人惊讶的是,它最终也没有很好地运行。 我尝试了几种不同的拟合选项,但可能没有尽可能优化它,因为有许多不同的调整参数。 它所做的最好的事情是对螺旋的 3 个臂进行分类,并且只对一个异常值进行分类,其余的分类错误。 因此,最后,HC 聚类获得输出和 SVM 建模为潜在未知螺旋的输出建模可能是最好的。 很有意思!
回复:如何最好地对螺旋数据进行聚类分析?我不是这里的专家;我会服从别人。 我的猜测将是一个单独的传递来发现与其他点的平均值不远的点,但是如果有两个离群值彼此相邻,那将失败,因此需要测试他们的两个集群......也许HDBSCAN 正在做类似的事情。
你能分享一下产生螺旋簇的过程是什么吗?
回复:如何最好地对螺旋数据进行聚类分析?感谢克雷格指出正确的方法和文章链接。
Single Link 方法在这个相对干净的数据集上效果很好。
我上面提供的表脚本包括一个用于添加更多数据行的脚本“添加行”。
这些应该被视为异常值,或者至少被确定为不属于三个主要集群中的任何一个。 类似于 HDBSCAN 中的“-1”集群。
这些额外点的添加似乎对单链接方法造成了严重破坏(在寻找 3 或 4 个聚类时)。
知道如何避免这种情况吗?


- 菲利普
回复:如何最好地对螺旋数据进行聚类分析?单联动。 你需要知道你想要多少个簇,例如 3 个,否则它会将旋臂分成更多。
Hierarchical Cluster(
Y( :X, :Y ),
Method( "Single" ),
Standardize Data( 1 ),
Color Clusters( 1 ),
Dendrogram Scale( "Distance Scale" ),
Number of Clusters( 3 )
)
Dendrogram with cluster colorsDendrogram with cluster colorsDendrogram with cluster colors具有簇颜色的树状图
Graph with cluster colorsGraph with cluster colorsGraph with cluster colors具有簇颜色的图形
我认为这篇文章可能会有所帮助,我读得足够远,看到它提到了“链”。
https://stats.stackexchange.com/questions/195446/choosing-the-right-linkage-method-for-hierarchical-clustering