如何最好地對螺旋資料進行聚類分析?你好,
我想知道 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