Shl*_*ser 12
从概念上讲,稀疏向量中的大多数值都是零,在密集向量中它们不是.密集和稀疏矩阵也是如此.稀疏和密集的术语通常描述这些属性,不仅在Mahout中.
在亨利马乌的DenseVector假定没有太多非零项,并且因此"实现矢量作为double数组"(org.apache.mahout.math.DenseVector).相反,AbstractVector例如RandomAccessSparseVector和的稀疏矢量实现SequentialAccessSparseVector使用根本不存储零值的不同数据结构.
要采取哪一个取决于您要存储在向量中的数据.如果您期望大多数值为零,则稀疏向量实现将更节省空间,但是如果将其用于仅具有几个零值的数据,则会引入大量数据结构开销,这可能导致更差的性能.
密集与稀疏向量的选择不会影响向量的计算结果,仅影响内存使用和计算速度.