聚类 - 稀疏向量和密集向量

时间:2013-07-28 16:23:29

标签: mahout

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

两者之间有什么区别?

Sparse and Dense的使用场景?

1 个答案:

答案 0 :(得分:12)

概念上,稀疏向量中的大多数值都是零,在密集向量中它们不是。密集和稀疏矩阵也是如此。术语稀疏密集通常不仅在Mahout中描述这些属性。

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

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

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

相关问题