在 R 中的 t-SNE 之后应用聚类算法

问题描述 投票:0回答:1

所以我正在做我的学士工作,我正在对某些数据应用不同的聚类算法。当然,在所有聚类之前,我使用降维算法,例如 t-SNE。我唯一担心的是我应该使用哪些数据来应用聚类算法。下面让我解释一下我的意思。

我的大学学士领导说,我需要使用 t-SNE 只是为了看看数据是如何分布的。然后将聚类算法应用于仅缩放的数据,但不应用于 t-SNE 结果,仅在绘图上使用 t-SNE 结果:

第一种方法:

data1_scaled <- scale(data1) #data with 9 features

tsne_results <- Rtsne(data1_scaled, perplexity=100, check_duplicates = FALSE)

**kmeans_results <- kmeans(data1_scaled, 2)**

cluster_assignments <- kmeans_results$cluster

plot(tsne_results$Y, col=cluster_assignments, pch=16, main="Kmeans Clustering")
legend("topright", legend = unique(cluster_assignments), 
       col = unique(cluster_assignments), pch = 16, title = "Cluster")

但是,我发现很多关于Google在聚类之前应用PCA以及应用聚类算法的PCA结果的文章。然后我想嘿嘿嘿,也许我应该对 t-SNE 做同样的事情。我尝试用聚类算法搜索 t-SNE,但遗憾的是我找不到任何与之相关的内容。我询问 ChatGBT,它说我需要对 t-SNE 结果应用聚类(在我的例子中是 tsne_results$Y)。所以我决定在这里问。

第二种方式:

data1_scaled <- scale(data1) #data with 9 features

tsne_results <- Rtsne(data1_scaled, perplexity=100, check_duplicates = FALSE)

**kmeans_results <- kmeans(tsne_results$Y, 2)**

cluster_assignments <- kmeans_results$cluster

plot(tsne_results$Y, col=cluster_assignments, pch=16, main="Kmeans Clustering")
legend("topright", legend = unique(cluster_assignments), 
       col = unique(cluster_assignments), pch = 16, title = "Cluster")

那么哪种方式是正确的方式呢?之所以问这个,是因为我尝试了这两种方式,聚类结果不同。因此我不知道我应该选择哪种方式工作。

最后,如果我想评估聚类结果,我应该在 data1_scaledtsne_results$Y 上计算 silhouette 分数吗?!

silhouette_score <- silhouette(cluster_assignments, dist(data1_scaled))
silhouette_score <- silhouette(cluster_assignments, dist(tsne_results$Y))
r cluster-analysis k-means dimensionality-reduction tsne
1个回答
-1
投票

您的问题包含多个较小的问题,所以让我独立回答:

正确的操作顺序是什么?

通常首先会像 PCA 一样执行降维,以消除无信息的维度(如果有)。那么最好在(简化的)数据集上进行聚类。最后,您在同一数据集上对数据进行 t-SNE 嵌入,只是为了将其可视化。 t-SNE 嵌入确实不可靠,只能用于可视化目的。

我应该计算 PCA 吗?

这取决于您的数据有多少维度。如果它的维度少于 20 个左右,您可以按原样使用数据,而不执行 PCA。由于您只有 9 个维度,因此我不建议您执行 PCA。如果你有 5000 个维度而不是 9 个维度,那么出于计算时间的考虑,也需要 PCA。

我应该如何计算评估指标?

如前所述,仅将 t-SNE 嵌入用于可视化。因此,建议对用于聚类的同一数据集进行评估。

进一步考虑:

我给出的一些答案是基于观点的。最好的方法就是自己找到最佳的方法。但请记住,您的所有决定都必须得到正确的论证。之后,最好向您的主管咨询您的决定以及做出这些决定的原因。

为什么使用 t-SNE 来可视化数据?更快、更可靠的方法是使用 UMAP。有很多很棒的论文主张 UMAP 而不是 t-SNE。

示例

这里讨论的操作顺序是基于我熟悉的单细胞RNA测序分析。该链接显示了一个包含高维数据集和进一步处理步骤的示例。

© www.soinside.com 2019 - 2024. All rights reserved.