我有一个包含大约 200 万个独特观察的数据集。它最初是一组 ID 和 URL。目标是根据所查看的 URL 对 ID 进行聚类。我将两列都转换为索引形式以简化数据。因此,该集合有 2 列;1. 一个唯一的 ID 和 2. 一袋密钥字符串(它们是识别数字,但采用字符串格式,以空格分隔)。示例格式:
- 身份证 | 关键词
- 0 | 1 2
- 1 | 2
- 2 | 3
- 3 | 2 3
我最初通过 TD-IDF 对关键词进行矢量化,并使用简单而肮脏的 KMeans(通过 sklearn)将它们聚类为 13 个集群(通过肘部方法选择),这似乎可以工作并输出直观而有趣的结果。
然而,我遇到的问题是,总是有一个占主导地位的集群拥有约 80% 的观察结果。我假设 KMeans 是假设方差不变的限制因素,并研究了潜在狄利克雷分配 (LDA) 以及高斯混合建模 (GMM) 和贝叶斯 GMM 作为替代方案。使用与上述相同的数据格式,LDA 似乎产生了不直观的结果,所有主题都非常相似并且没有多大意义(与 KMeans 集群有很大不同,预计会看到一些关键的相似主题?)。
我对聚类很陌生,而且已经超出了我的深度,并且已经阅读了很多关于它的内容,但是如果有人能提供任何关于直接逻辑缺陷的见解或朝着正确的方向推进,我将非常感激。
编辑:大约有 3300 个唯一 URL(或本例中的关键字)。每个文档的令牌/URL 数量实际上是相当倾斜的。中位数为 1,平均值约为 1.5(少数 ID 具有大量令牌,我可以将其中一些视为异常值,但大多数我不能)。另一个关键的事实是,在优势集群中,这些看过大量KeyWords的“大玩家”几乎都在优势集群内。我删除了它们以查看结果如何,并且占主导地位的集群仍然存在。