当 K 可能 >= 1000 时找到最优 K(880,023 行数据,~200,000 个特征)

find Optimal K when K may be >= 1000 (880,023 rows of data, ~200,000 features)

我有来自大约 1500 个朋友的 8800023 条 Facebook 帖子。我想按 "story/topic/specific thing they're talking about" 对这些帖子进行聚类。例如,它们可能按电视节目名称、人物名称、一些正在传播的词等进行聚类。这意味着我必须选择非常具体的词而不是一般词,所以这就是我所做的(使用 sklearn 库在 python).

tfidf_vectorizer = TfidfVectorizer(max_df=0.001, max_features=2000000,
                             min_df=0.00001,
                             use_idf=True, tokenizer=tokenize_only,ngram_range=(1,3))

如你所见,我设置了max_df=0.001和min_df=0.00001来获得我上面说的特定的东西,我最终获得大约 20 万个特征。

接下来,我想使用 Kmean 对它们进行聚类,但我在寻找可能超过 1000 的最佳 K 时遇到了问题,假设人们在那些话题中谈论很多事情帖子。

我已经尝试了 Gap Statistic、pham 等。 al.,但它太慢了,我等不及了。当我用 1-8 这样的小数字尝试 pham 时,它说 1 是最好的簇数,这是不可能的。

请帮我解决这个问题。

对于这样的数据,您还有其他 - 更严重的 - k-means 问题:

  1. 用户可能在谈论不止一个话题,应该属于不止一个集群。
  2. 用户可能没有特别谈论什么,根本不应该属于任何集群。
  3. k-means 对此类数据的噪声和初始化非常敏感。 运行 重复 10 次,你会得到 10 个完全不同的结果。

特别是最后一个使得找到 "optimal" k 变得不可能,因为在下一个 运行 中,不同的 k 将是 "optimal".

我宁愿使用 LDA。