【发布时间】:2017-07-08 02:16:25
【问题描述】:
我有一个疑问,在我的会议中也被问了很多次,但我成功地没有回答它。我希望你能帮助我了解这个问题的见解。
我在我的项目中使用了 kmeans 聚类来为各个问题区域聚类大量文档。我还使用 matplotlib 绘制数据点的坐标。更常见的是,落入同一簇的数据点分散或远离落入同一簇的其他文档或数据点。人们通常问我的问题是,如果文档或数据点来自同一个集群/组,那么它需要彼此靠近,为什么对于同一组/集群的文档不会发生这种情况。
我如何说服他们,有时我会说不出话来。
对于同一个问题,我无法控制集群的形成,但作为我所在领域的领域专家,我非常了解文档所属的问题区域。那么,如何使用 Kmeans 或任何其他聚类机制或通过使用超参数准确地将这数千个文档配置/聚类到仅那些问题区域中。请帮助我。
我参考了http://brandonrose.org/clustering
父亲,纽约,兄弟是紫色的簇。如果它属于同一个集群,那么它都需要位于彼此靠近的一侧绘图屏幕上。为什么在剧情画面里到处都是。这也是我的情况。
【问题讨论】:
-
根据我的经验,文本上的 k-means 效果不太好。 永远不要相信结果。最多使用它来了解那里有什么,因为通常至少 50% 的点位于错误的集群中。
-
好的,在这种情况下,哪种算法适合文本。让我的问题要求更广泛。我有成千上万个来自不同来源的文档/问题,例如 bugzilla、socialcast、salesforce 等……我想将这些文档或 PR 聚集到一个尖锐的问题区域。比如说在 JAVA 中,人们每天都会遇到很多问题,他们会发布他们的问题,我需要将所有这些文档集中到特定的问题区域中,比如 nullpointerexception 应该都放在一个簇中,而与集合相关的问题应该放在另一个簇中簇。什么算法套件可以很好地对它进行聚类。
-
我怀疑任何集群都能够做到这一点。因为您使用了多个数据源,所以您更有可能看到与以下内容相对应的集群:bugzilla、socialcast、salesforce。这将是一个成功的集群,但对你来说毫无用处。
-
您好@Anony-Mousse 在您说之后,我正在针对每个数据源运行 kmeans 集群。来自 socialcast 的数据是单独运行的,无需与 bugzilla 或 saleforce 关联。但是我仍然看到集群正在形成基于一些理想情况下不应该成为集群的词(例如它给出“day”、“exist”、“around”、“info”)这些不是我的问题领域。我该怎么做预处理数据以获得一些有意义的集群。我也删除了停用词和不需要的词,当我删除不需要的词时,它给出一个错误说增加 max_df 或减少 tfidf 中的 min_df。
-
我对文本聚类没有任何积极的经验,抱歉。
标签: matplotlib machine-learning cluster-analysis k-means