【发布时间】:2018-12-03 02:49:36
【问题描述】:
传统的无监督学习方法通常需要在计算之前分配聚类数(K),但是如果我不知道K的确切数量并排除算法中的k,我的意思是,有没有无监督学习算法不需要分配任何k,所以我们可以自动得到k聚类?
【问题讨论】:
标签: machine-learning deep-learning supervised-learning unsupervised-learning
传统的无监督学习方法通常需要在计算之前分配聚类数(K),但是如果我不知道K的确切数量并排除算法中的k,我的意思是,有没有无监督学习算法不需要分配任何k,所以我们可以自动得到k聚类?
【问题讨论】:
标签: machine-learning deep-learning supervised-learning unsupervised-learning
在图的理论中有一个hierarchical clustering。您可以实现自下而上或自上而下的聚类。
自下而上
有三种方法可以选择最近的集群:
单链接聚类可以用 Kruskalov 最小生成树算法来解决,但是虽然很容易理解,但它在 O(n^3) 中运行。 Prim 的 MST 算法有一个变体,可以在 O(nˇ2) 内解决这个问题。
自上而下的分裂分析 从同一个簇中的所有点开始,在每次迭代中划分簇。
您可以搜索其他聚类算法,其中一些已经在其他答案中提到。我没有用过其他人,所以我会忽略它。
【讨论】:
您可以尝试通过Akaike information criterion、Bayes information criterion 等指标推断集群数量,使用Silhouette 或Elbow。我还听人谈论过基于自组织地图的自动聚类方法 (SOM),但您必须在那里进行自己的研究。
根据我的经验,它通常归结为使用多种方法(例如 t-SNE)和/或基于密度的方法(例如 DBSCAN)来探索数据,然后手动或使用合适的启发式设置 k。
【讨论】:
有关更多详细信息,请查看 scikit-learn 文档here。
【讨论】: