0

我想执行降维(DR)技术来可视化我的数据以及它们之间的相关性。我计划使用Barnes-hut tsne,但我无法了解如何向 TSNE 提供输入,因为示例应用程序根据用户指南具有常规矩阵形式的数据。我有大约 1200 万条记录和 5000 个不同的值,我无法将它们存储到主内存中。我想执行降维(DR),以便在二维散点图上可视化这些不同的值。我有邻接列表形式的数据(因为它太稀疏了)。

比方说,我有以下记录:

2 3 10
4 6
7
7 9 10
2
5 6

这些应该是我的前 6 条记录。在这种情况下,我只有 10 个不同的值。上面的矩阵(表)表明第一条记录有 2,3 和 10 列为 1,而其他列为 0(邻接表)。

这些不同的值映射到文档(记录)中存在的单词(标签)。

如何使用此类数据执行快速 TSNE。或者如何将其转换为 TSNE 所需的兼容格式?我应该更喜欢哪种语言?

我更喜欢使用 Python 或 Matlab,但其他任何东西也都可以。让我知道你的建议。

PS我有非常高的计算机来完成这项任务。

4

1 回答 1

1

Barnes-Hut t-SNE 代码不支持这个开箱即用,但它应该是一个相对简单的代码更改以使其支持这个。特别是,请参阅以下代码行:https ://github.com/lvdmaaten/bhtsne/blob/master/tsne.cpp#L123

此行用行压缩稀疏矩阵格式的相似矩阵填充row_Pcol_P和。也就是说,具有包含 和 的索引的元素,它们都具有元素(是稀疏矩阵的行数和非零条目数)。中的元素被假定为非负数(例如,高斯核值)。val_PNxNrow_PN+1col_Pval_PnnzNnnzval_P

我认为您可以做的最简单的事情是通过调用一个新函数来替换这个函数调用,该函数根据您自己的输入数据计算相似度矩阵(以您最方便的任何稀疏格式操作)。您甚至可以在 Matlab 中实现相似度矩阵计算,然后编写一些 Mex 代码来获取生成的稀疏矩阵并将其复制到row_Pcol_Pval_P. 这应该很容易,因为 Matlab 也使用行压缩稀疏矩阵格式;看看mxGetIrmxGetJcMex 函数。

Barnes-Hut t-SNE 代码的其余部分与输入相似性的计算方式无关,因此您不必进行任何其他更改。

于 2016-04-11T21:53:13.740 回答