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

时间:2017-04-15 17:46:09

标签: python cluster-analysis k-means bigdata

我有大约1500位朋友的8800023张Facebook帖子。我想通过"故事/主题/他们正在讨论的具体事情来聚集这些帖子"。例如,他们可能按照电视节目的名称,人物的名字,一些正在传播病毒的词等聚类。这意味着我必须选择非常具体的词而不是一般的词,所以这就是我所做的(使用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以获得特定的东西我已经说过了,我最终得到了大约200k的功能。

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

我试过Gap Statistic,pham等。 al。,但它非常慢,我等不及了。当我尝试使用像1-8这样的小数字的pham时,它说1是最不可能的簇数。

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

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

  1. 用户可能正在谈论多个主题,并且应该属于多个群集。
  2. 用户可能没有特别谈论任何内容,也不应该属于任何群集。
  3. k-means对此类数据的噪声和初始化非常敏感。运行10次,你得到10个完全不同的结果。
  4. 特别是最后一个使得找到“最佳”k是不可能的,因为在下一次运行中,不同的k将是“最佳的”。

    我宁愿使用LDA。