2013-07-28 68 views
5

對於聚類,Mahout輸入需要爲矢量形式。有兩種類型的矢量實現。一個是稀疏矢量,另一個是密集矢量。聚類 - 稀疏矢量和密集矢量

兩者有什麼區別?

Sparse and Dense的使用場景?

回答

11

從概念上講,稀疏向量中的大部分值都是零,而在密集向量中卻不是。密集矩陣和稀疏矩陣也是如此。條款稀疏密集一般描述這些屬性,不僅在Mahout中。

在Mahout中,DenseVector假定零條目不是太多,因此「將向量實現爲雙精度數組」(org.apache.mahout.math.DenseVector)。相比之下,例如AbstractVector的稀疏矢量實現RandomAccessSparseVectorSequentialAccessSparseVector,使用根本不存儲零值的不同數據結構。

取決於您要存儲在向量中的數據。如果您期望大多數爲零值,那麼稀疏向量實現將更節省空間,但是如果將它用於只有幾個零值的數據,則會引入大量的數據結構開銷,從而可能導致性能下降。

密集矢量與稀疏矢量的選擇不會影響向量上的計算結果,只會影響內存使用情況和計算速度。

相關問題