我最近开始使用python中的SciKit模块进行文档聚类。但是,我很难理解文档聚类的基础知识。
我所知道的 ?
- 文档聚类通常使用 TF/IDF 完成。这基本上将文档中的单词转换为向量空间模型,即然后输入到算法。
- 有许多算法,如k均值,神经网络,分层算法聚类来实现此目的。
我的数据 :
- 我正在试验LinkedIn数据,每个文档都是LinkedIn个人资料摘要,我想看看是否有类似的工作文档聚集在一起。
当前的挑战:
- 我的数据有大量的摘要描述,最终变成了 10000 个当我应用 TF/IDF 时,单词。有没有适当的方法来解决这个问题高维数据。
- K - 均值和其他算法要求我指定簇的编号(质心),就我而言,我不知道集群的数量前期。我认为这是一种完全无监督的学习。是有算法可以确定否。集群本身?
- 如果您知道的话,我以前从未使用过文档聚类有关此问题的教程、教科书或文章,请随意建议。
我浏览了SciKit网页上的代码,它包含太多我不明白的技术单词,如果你们有任何带有良好解释或评论的代码,请分享。提前谢谢。
我的数据有大量的摘要描述,当我应用 TF/IDF 时,这些描述最终变成了 10000 个单词。有没有适当的方法来处理这些高维数据。
我的第一个建议是,除非你绝对必须这样做,否则你不要这样做,因为内存或执行时间问题。
如果必须处理它,则应使用降维(例如PCA)或特征选择(在您的情况下可能更好,例如参见chi2)
K - 均值和其他算法要求我指定簇(质心)的编号,就我而言,我不知道预先的簇数。我认为这是一种完全无监督的学习。是否有算法可以确定否。集群本身?
如果您查看scikit-learn中可用的聚类算法,您会发现并非所有算法都要求您指定聚类数。
另一个不是分层聚类,在 scipy 中实现。另请参阅此答案。
我还建议您使用 KMean 并尝试手动调整集群数量,直到您对结果感到满意。
我以前从未使用过文档聚类,如果您知道解决此问题的教程,教科书或文章,请随时提出建议。
Scikit有很多处理文本数据的教程,只需在其网站上使用"文本数据"搜索查询即可。一个是用于KMeans的,其他的用于监督学习,但我建议你也复习一下这些内容以更熟悉图书馆。在我看来,从编码、风格和语法的角度来看,无监督学习和监督学习在scikit-learn中非常相似。
文档聚类通常使用 TF/IDF 完成。这实质上是将文档中的单词转换为向量空间模型,然后将其输入到算法中。
此处稍作更正:TF-IDF 与聚类无关。它只是一种将文本数据转换为数字数据的方法。它不在乎你之后如何处理这些数据(聚类、分类、回归、搜索引擎等)。
我理解您试图传达的消息,但是说"集群是使用 TF-IDF 完成的"是不正确的。它是使用聚类算法完成的,TF-IDF 仅在文档聚类中扮演预处理角色。
- 对于TF/IDF变换后的大矩阵,考虑使用稀疏矩阵。
- 您可以尝试不同的 k 值。我不是无监督聚类算法的专家,但我敢打赌,使用这样的算法和不同的参数,你最终也可能得到不同数量的聚类。
此链接可能很有用。它通过可视化输出 http://brandonrose.org/clustering 为k-means clustering
提供了大量的解释