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

Ram*_*ana 7 mahout

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

两者有什么区别?

稀疏和密集的使用场景?

Shl*_*ser 12

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

在亨利马乌的DenseVector假定没有太多非零项,并且因此"实现矢量作为double数组"(org.apache.mahout.math.DenseVector).相反,AbstractVector例如RandomAccessSparseVector和的稀疏矢量实现SequentialAccessSparseVector使用根本不存储零值的不同数据结构.

要采取哪一个取决于您要存储在向量中的数据.如果您期望大多数值为零,则稀疏向量实现将更节省空间,但是如果将其用于仅具有几个零值的数据,则会引入大量数据结构开销,这可能导致更差的性能.

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