2013-07-28 19 views
5

クラスタリングの場合、Mahout入力はベクトル形式である必要があります。ベクトル実装には2つのタイプがあります。 1つは疎ベクトルで、もう1つは密ベクトルです。クラスタリング - スパースベクトルと密ベクトル

2つの違いは何ですか?

スパースとデンスの使用シナリオ?

答えて

11

概念的には、疎ベクトルの値の大部分はゼロであり、密ベクトル内の値のほとんどはゼロではありません。高密度および疎行列にも同じです。用語「スパース」および密集は、一般にMahoutだけでなく、これらのプロパティを記述します。

Mahoutでは、DenseVectorはゼロエントリがあまり多くないと想定しているため、「ベクトルを倍精度の配列として実装する」(org.apache.mahout.math.DenseVector)。対照的に、AbstractVectorのスパースベクトル実装、例えば、 RandomAccessSparseVectorSequentialAccessSparseVectorは、ゼロ値をまったく格納しない異なるデータ構造を使用します。

どちらを取るかは、ベクターに保存するデータによって異なります。ほとんどゼロの値が必要な場合は、スパースなベクトル実装ではスペース効率が向上しますが、ゼロ値がわずかなデータに使用すると、パフォーマンスが低下する可能性のあるデータ構造オーバーヘッドが多く発生します。

密ベクトル対疎ベクトルの選択は、ベクトルの計算結果に影響を与えず、メモリ使用量と計算速度のみに影響します。

関連する問題