在 2D 中可视化多维数据 (LSI)

机器算法验证 数据可视化 聚类 Python 多维尺度
2022-03-30 01:52:04

我正在使用潜在语义索引来查找文档之间的相似性(谢谢,JMS!

降维后,我尝试了 k-means 聚类将文档分组到集群中,效果很好。但我想更进一步,将文档可视化为一组节点,其中任何两个节点之间的距离与其相似度成反比(高度相似的节点靠得很近)。

令我震惊的是,由于我的数据> 2维,因此我无法准确地将相似度矩阵简化为二维图。所以我的第一个问题:有没有标准的方法来做到这一点?

我可以将我的数据减少到二维,然后将它们绘制为 X 和 Y 轴,这对于一组约 100-200 个文档是否足够?如果这是解决方案,最好从一开始就将我的数据减少到二维,或者有没有办法从我的多维数据中选择两个“最佳”维度?

如果有区别,我正在使用 Python 和 gensim 库。

2个回答

这就是 MDS(多维缩放)的设计目的。简而言之,如果给定一个相似度矩阵 M,您希望找到最接近的近似值,其中的秩为 2。这可以通过计算其中S=XXSM=VΛV=XXX=VΛ1/2

现在,假设被置换,因此特征值按降序排列,的前两列是您在平面中想要的嵌入。ΛX

MDS 有很多可用的代码(如果 scipy 没有它的某个版本,我会感到惊讶)。无论如何,只要您可以访问 python 中的某些 SVD 例程,您就可以设置。

有一个叫做ggobi的软件可以帮助你。它使您可以探索多维伪空间。它主要用于数据探索,但其界面非常友好且“即用即用”!

您只需要 CSV 格式(在 RI 中通常只需使用带有默认参数的 write.csv)或 XML 文件(这种格式允许您进行更多控制;我通常将表保存为 CSV,然后使用 ggobi 将其导出为 XML 并手动编辑例如改变某些因素的顺序)。