2013-07-28 67 views
5

对于聚类,Mahout输入需要为矢量形式。有两种类型的矢量实现。一个是稀疏矢量,另一个是密集矢量。聚类 - 稀疏矢量和密集矢量

两者有什么区别?

Sparse and Dense的使用场景?

回答

11

从概念上讲,稀疏向量中的大部分值都是零,而在密集向量中却不是。密集矩阵和稀疏矩阵也是如此。条款稀疏密集一般描述这些属性,不仅在Mahout中。

在Mahout中,DenseVector假定零条目不是太多,因此“将向量实现为双精度数组”(org.apache.mahout.math.DenseVector)。相比之下,例如AbstractVector的稀疏矢量实现RandomAccessSparseVectorSequentialAccessSparseVector,使用根本不存储零值的不同数据结构。

取决于您要存储在向量中的数据。如果您期望大多数为零值,那么稀疏向量实现将更节省空间,但是如果将它用于只有几个零值的数据,则会引入大量的数据结构开销,从而可能导致性能下降。

密集矢量与稀疏矢量的选择不会影响向量上的计算结果,只会影响内存使用情况和计算速度。

相关问题