有没有不分配 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 的无监督学习算法的主要内容,如果未能解决你的问题,请参考以下文章