道歉,如果对此的回答很明显,请善待,这是我第一次来这里: - )
如果有人能让我指导适当的k-means输入数据结构,我将不胜感激。我正在撰写一篇硕士论文,其中我提出了一个针对我的领域的新的TF-IDF术语称量方法。我想使用k-means对结果进行聚类,然后应用一些内部和外部评估标准来查看我的新术语加权方法是否有任何优点。
到目前为止我的步骤(在PHP中实现),所有工作都是
第1步:读入文档集 第2步:清理文档集,特征提取,功能选择 第3步:术语频率(TF) 第4步:反向文档频率(IDF) 第5步:TF * IDF 步骤6:将TF-IDF标准化为固定长度向量
我正在努力的地方
第7步:向量空间模型 - 余弦相似度
我能找到的唯一例子,将输入查询与每个文档进行比较并找出相似性。如果没有输入查询(这不是信息检索系统),我是否将语料库中的每个文档与语料库中的每个其他文档(每对文档)进行比较?我找不到任何应用于完整文档集合的Cosine Similarity示例,而不是与集合相比的单个示例/查询。
第8步:K-Means
我在这里努力去理解k-means的输入向量是否应该包含集合中每个文档的余弦相似度得分矩阵与每个其他文档(余弦相似度矩阵)。或者k-means应该应用于术语向量模型。如果它是后者,我可以找到k-means的每个例子都是非常基本的,并且可以用单数表示。如何处理我的文档集合中有多个术语等事实。
Cosine的相似性和K-Means被暗示为在很多例子上记录聚类的解决方案,因此我遗漏了一些非常明显的东西。
如果有人能给我一个引导我会永远感激。
由于
克莱尔
答案 0 :(得分:0)
K-means 不能对相似度矩阵进行操作。
因为k-means计算点到平均距离,而不是成对距离。
如果要使用余弦距离,则需要实现球形k-means :在每次迭代时,中心都应进行L2标准化。
如果我没有弄错的话,它应该等同于运行具有余弦相似性的k-means,并且仅在最后将中心标准化为单位长度。但是规则的球面k均值可能更快,因为你可以利用数据归一化来简化与点积的余弦距离。
您可能想重新考虑使用PHP。这是此类编程任务最糟糕的选择之一。它对交互式网页有好处,但它根本没有对数据分析有所启发。
答案 1 :(得分:0)
我是第二个Anony-Mousse的观点,你应该重新考虑PHP,并希望建议Python有几个有用的库来解决这些问题:
Numpy:一个伟大而有效的科学计算方案。
SciPy:实际上有几个k-means聚类例程:see here
Theano:了解更多机器学习需求,尤其是深度学习。
还有关于k均值算法的this很棒的教程。它还提供Python中的伪代码。你可以使用这个,也许是你自己完成的实现来更好地理解算法,但最终我会利用上面提到的库,因为它们针对性能进行了优化,如果你有大量的文档,这一点肯定要记住。
答案 2 :(得分:0)
如果它可以帮助其他人,我发现k-means可能聚类多维术语向量,但如果包含超过3个维度(任何文档集合都是如此),你不能想象它。我相信这就是把我扔到这里的所有例子,我看到的k-means包括一个图表可视化的例子,这让我错误地相信k-means的源数据可能是二维的,例如0和余弦相似度。非常感谢受访者的帮助,非常感谢。
答案 3 :(得分:0)
使用TF-IDF计算余弦相似度。使用余弦相似度分数作为聚类算法的输入数据。
答案 4 :(得分:0)