有没有不分配 k 的无监督学习算法

Posted

技术标签:

【中文标题】有没有不分配 k 的无监督学习算法【英文标题】:Is there any unsupervised learning algorithm that do not not assign k 【发布时间】:2018-12-03 02:49:36 【问题描述】:

传统的无监督学习方法通​​常需要在计算之前分配聚类数(K),但是如果我不知道K的确切数量并排除算法中的k,我的意思是,有没有无监督学习算法不需要分配任何k,所以我们可以自动得到k聚类?

【问题讨论】:

【参考方案1】:

在图的理论中有一个hierarchical clustering。您可以实现自下而上或自上而下的聚类。

自下而上

定义距离度量(欧几里得、曼哈顿...) 从自己集群中的每个点开始 合并最近的两个集群

有三种方法可以选择最近的集群:

完整链接 -> 具有最小最大成对距离的两个集群 single link -> 两个最小成对距离最小的簇 平均链接 -> 所有成对距离之间的平均距离

单链接聚类可以用 Kruskalov 最小生成树算法来解决,但是虽然很容易理解,但它在 O(n^3) 中运行。 Prim 的 MST 算法有一个变体,可以在 O(nˇ2) 内解决这个问题。

自上而下的分裂分析 从同一个簇中的所有点开始,在每次迭代中划分簇。

divisive analysis.

您可以搜索其他聚类算法,其中一些已经在其他答案中提到。我没有用过其他人,所以我会忽略它。

【讨论】:

【参考方案2】:

您可以尝试通过Akaike information criterion、Bayes information criterion 等指标推断集群数量,使用Silhouette 或Elbow。我还听人谈论过基于自组织地图的自动聚类方法 (SOM),但您必须在那里进行自己的研究。

根据我的经验,它通常归结为使用多种方法(例如 t-SNE)和/或基于密度的方法(例如 DBSCAN)来探索数据,然后手动或使用合适的启发式设置 k。

【讨论】:

【参考方案3】: 亲和传播 DBSCAN 均值偏移

有关更多详细信息,请查看 scikit-learn 文档here。

【讨论】:

以上是关于有没有不分配 k 的无监督学习算法的主要内容,如果未能解决你的问题,请参考以下文章

常见的简单的无监督学习算法总结

无监督学习笔记

K-Means 聚类

算法笔记 | 一文读懂K-means聚类算法

聊聊机器学习中的无监督学习

K-均值算法(数据挖掘无监督学习)