“聚类算法的选取原则****”
01
—
问题背景
当遇到聚类分析问题的时候,机器学习领域中有很多聚类算法可供选择。标准的sklearn库就有13个不同的聚类算法。那么面对不同问题应该如何选择聚类算法呢?
正如数据科学和机器学习中的每个问题一样,它取决于您的数据。sklearn中的这十三个聚类算法中有许多专门用于某些任务(例如联合聚类和双聚类,或者用聚类特征代替数据点)。显然,专门用于文本聚类的算法将是对文本数据进行聚类的正确选择,而其他算法专门用于其他特定类型的数据。因此,如果您对数据有足够的了解,您可以缩小范围,选择最适合该类数据的聚类算法,或选择数据所具有的重要属性,或选择需要进行的聚类。一切都很好,但如果你对自己的数据了解不多怎么办?
例如,如果您正在进行一些探索性数据分析(exploratory data analysis (EDA)),那么选择专门的算法就不那么容易了。那么,什么算法适合于探索性数据分析呢?
下面就列举一些当对数据先验知识比较少的时候,在选择聚类算法时,可以遵循的一些基本原则。
02
—
聚类算法选取原则
首先,让我们制定一些基本规则,说明我们需要一个好的聚类算法来做什么。
- 正确性
如果您正在进行聚类分析,那么您就是在尝试学习并获得有关数据的信息。在这种情况下,完全没有结果比错误的结果要好得多。糟糕的结果会导致错误的直觉,反过来又会让你走上完全错误的道路。您不仅不理解数据,而且误解了数据。这意味着一个好的聚类算法需要在聚类中保持保守;它应该愿意不给集群分配点数;它不应该将点分组在一起,除非它们真的在一个集群中;比你想象的要少得多的算法也是
- 直观的参数
所有聚类算法都有参数;你需要一些参数来调整效果。问题是:如何选择这些参数的设置?如果您对数据知之甚少,则很难确定参数的值或设置。这意味着参数需要足够直观,以便您可以在不需要了解大量数据的情况下进行设置。
-
结果的稳定性
如果使用不同的随机初始化运行两次该算法,应该可以得到大致相同的集群。如果您正在对数据进行采样,那么采取不同的随机样本不应该从根本上改变最终的集群结构(除非您的采样有问题)。如果更改聚类算法参数,则希望聚类以某种稳定的可预测方式更改。
-
性能
数据集只会越来越大。您可以采样样本(但要看到稳定性),但最终您需要一个能够扩展到大数据量的聚类算法。如果只能在获取子样本,以至于不再代表整个数据的情况下使用聚类算法,那么聚类算法就没有多大用处!