首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ELKI能处理多大的数据集?

ELKI能处理多大的数据集?
EN

Stack Overflow用户
提问于 2013-09-10 23:26:28
回答 1查看 756关注 0票数 4

我有10万个点,我想用ELKI中的光学算法进行聚类。对于这个点集,我有一个约50亿项的上三角距离矩阵。在ELKI想要的格式中,它将占用大约100 In的内存。我想知道ELKI是否处理这种数据负载?有人能确认你以前做过这种工作吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-11 07:35:57

我经常使用ELKI的100k点数,高达1000万。

但是,为了使速度更快,应该使用索引

由于明显的原因,任何基于密集矩阵的方法最多只能扩展O(n^2),并且需要O(n^2)内存。这就是为什么我不能处理这些数据集的R,Weka或枕。它们通常首先尝试计算全距离矩阵,或者中途失败,或者中途耗尽内存,或者使用负分配大小失败(Weka,当数据集溢出2^31正整数,即大约46k对象时)。

在二进制格式中,具有浮动精度的ELKI矩阵格式应该在100000*999999/2*4 + 4字节附近,可能会为大小信息再添加4个字节。这是20 GB。如果您使用“易于使用”的ascii格式,那么它确实会更多。但是,如果您使用gzip压缩,它最终可能会有相同的大小。让gzip将这些数据压缩到原始大小的10-20%是很常见的。在我的经验中,gzip压缩后的ascii可以和二进制编码的双一样小。二进制格式的主要优点是它将实际驻留在磁盘上,内存缓存将由操作系统处理。

无论哪种方法,我建议首先不计算距离矩阵,

因为如果你决定从10万增加到100万,原始基体就会增长到2TB,当你达到1000万的时候,它将是200 TB。如果你想要双倍精度,那就加倍。

如果您使用的是距离矩阵,则您的方法最好是O(n^2),因此不会缩放。首先,避免计算所有成对距离是一个重要的速度因素。

我对一切都使用索引。对于kNN或半径界限方法(对于光学,使用感测参数使索引有效!选择低感应器!)如果要重复使用这些查询,则可以预计算这些查询一次。

在我经常使用的数据集中,有75k个实例和27个维度,存储预先计算好的101个最近邻居+领带的文件,具有双精度,是81 MB (注意:这可以看作是一个稀疏的相似矩阵)。通过使用一个索引来预计算这个缓存,计算只需几分钟;然后我可以在这个75k数据集中运行大多数基于kNN的算法,比如LOF,在108 ms中运行(+262 ms用于加载kNN缓存+解析原始输入数据2364 ms,运行时间为3秒;主要是解析双值)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18730332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档