使用scikit TSNE在大型稀疏矩阵上是否可行?

4
Scikit文档解释说fit_transform只能用于稠密矩阵,但我有一个以csr格式表示的稀疏矩阵,想在其上执行tsne。文档建议使用fit方法进行稀疏矩阵运算,但这不会返回低维嵌入。我知道可以像这个问题中那样使用.todense()方法,但我的数据集非常大(0.4*10^6行和0.5*10^4列),所以不能一次性装入内存。实际上,使用稀疏矩阵会更好。是否有一种方法可以使用Scikit TSNE(或任何其他Python TSNE实现)来降低大型稀疏矩阵的维数,并返回低维嵌入以进行可视化呢?
1个回答

4

从同样的文档中可以看到:

如果特征数量非常高,强烈建议使用另一种降维方法(例如对于稠密数据使用PCA,对于稀疏数据使用TruncatedSVD)将维度减少到一个合理的数量(例如50)。这将消除一些噪声并加速样本之间的成对距离计算。

请使用sklearn.decomposition.TruncatedSVD代替。


根据我对TSNE的理解,它可以用于任何维度的数据,并且考虑到我的数据结构,我认为TSNE比大多数其他降维算法更有效。不过我想这可能是scikit的限制。感谢提供链接! - PyRsquared
1
@killerT2333,你看过UMAP(https://github.com/lmcinnes/umap)吗?在这里,https://github.com/mmortazavi/UMAP_Nonlinear-Dimensionality-Reduction_Benchmark/blob/master/UMAP_Benchmark.ipynb,我将UMAP与其他方法进行了比较,包括tSNE。 - TwinPenguins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接