现在手里有 360w 个 200 维向量,存放在 np.array 里,想把这些向量降维到二维然后投影出来,观察聚类情况。 使用 TSNE 的时候,出现问题,会卡住,过一段时间自动 kill 掉,但是如果用低维小数据测试则可以正常运行。
请问是不是数据太大,是否应该在训练时就调低向量维度?或者除 TSNE 外其他适合实现该数据降维的轮子。 环境为 python3.5,osx
1
menc 2017-07-06 10:54:22 +08:00
想要没有性能问题和内存问题,请不要用 sklearn,效率极差。
手写一个就好 |
2
livc 2017-07-06 11:19:27 +08:00
一个向量一个向量降就可以了吧
|
3
armorsmith OP @menc QAQ,这么残忍的么
|
4
armorsmith OP @livc 现在的想法是一方面用 doc2vec 做句向量,一方面把 360w 个循环进行均值,取最后 3w 个左右结果,然后再做,目前的话切片之后跑个万条是没问题的
|
5
Morriaty 2017-07-06 13:06:49 +08:00
200 维这么整,是 w2v 的结果?
没用过 tsne,输入可以是稀疏矩阵或者生成器吗 |
6
EmdeBoas 2017-07-06 13:23:39 +08:00
试试 pca 或者用 SPSS 做主成分分析...
|
7
billgreen1 2017-07-06 14:27:33 +08:00
换个大内存的机器跑吧
|
8
armorsmith OP @EmdeBoas 好哒,这就去这就去
|
9
armorsmith OP @Morriaty 是 word2vec,这个是抓取的部分社交网站用户的发言,之后做的向量化,输入是 np.array
|
10
armorsmith OP @billgreen1 跑不动了....我选择向量加一加,数量级降下来再跑,应该还是对数据集有代表性的吧?
|
11
RustingSword 2017-07-06 18:46:15 +08:00
应该是内存扛不住了。
不过就算能跑出来,360w 也没法看吧,可以采样一部分比较重要的词做降维,比如可以按 embedding 向量的范数排序,选最大的几千个先看看。 另外如果要用 python 来搞,https://github.com/DmitryUlyanov/Multicore-TSNE 比 sklearn 的效率会高很多。 |
12
armorsmith OP @RustingSword 好哒!谢谢大佬!很有用!
|
13
ijustdo 2017-07-06 20:59:27 +08:00
滑窗 归一 然后有中间步骤的话 记得每部 保存磁盘序列化对象
成本最小的是加内存 妈的 昨天晚上刚跑了 8600w+ 我是每个 100w 然后结果再下一步 呵呵 然后多进程 |
14
ruoyu0088 2017-07-06 22:06:54 +08:00
TSNE 的文档,建议使用 PCA 或 TruncatedSVD 降维
It is highly recommended to use another dimensionality reduction method (e.g. PCA for dense data or TruncatedSVD for sparse data) to reduce the number of dimensions to a reasonable amount (e.g. 50) if the number of features is very high. |
15
aaronzjw 2017-07-06 22:20:00 +08:00
估计 sklearn 吃不消的
|