我在Scikit中通过k-means进行聚类 - 了解398个样本,306个特征 . 特征矩阵是稀疏的,簇的数量是4.为了改进聚类,我尝试了两种方法:
Method sum_of_squares, Calinski_Harabasz, Silhouette
1 kmeans 31.682 401.3 0.879
2 kmeans+top-features 5989230.351 75863584.45 0.977
3 kmeans+PCA 890.5431893 58479.00277 0.993
我的问题是:
-
据我所知,如果平方和较小,则聚类方法的性能较好,而如果Silhouette接近1,则聚类方法的性能更好 . 例如,在最后一行中,与第一行相比,平方和和Silhouette的总和增加 .
-
如何选择哪种方法具有更好的性能?
2 回答
切勿在不同的投影,转换或数据集之间比较平方和和类似指标 .
要了解原因,只需将每个特征乘以0.5 - 您的SSQ将下降0.25 . 因此,要“改进”您的数据集,您只需将其缩放到一个很小的尺寸......
这些指标只能用于完全相同的输入和参数 . 你甚至不能使用平方和来比较具有不同k的k均值,因为较大的k将获胜 . 你所能做的只是多次随机尝试,然后保持你发现这种方式的最佳最小值 .
有了306个功能,你就在curse of dimensionality之下 . 306维度的聚类没有意义 . 因此,我不会在群集后选择功能 .
要获得可解释的结果,您需要降低维度 . 对于398个样品,您需要低尺寸(2,3或4个) . 您的尺寸为2的PCA很好 . 你可以尝试3 .
在聚类之前选择重要特征的方法可能是有问题的 . 无论如何,2/3/4“最佳”功能在您的情况下有意义吗?