クラスタリングの場合、Mahout入力はベクトル形式である必要があります。ベクトル実装には2つのタイプがあります。 1つは疎ベクトルで、もう1つは密ベクトルです。クラスタリング - スパースベクトルと密ベクトル
2つの違いは何ですか?
スパースとデンスの使用シナリオ?
クラスタリングの場合、Mahout入力はベクトル形式である必要があります。ベクトル実装には2つのタイプがあります。 1つは疎ベクトルで、もう1つは密ベクトルです。クラスタリング - スパースベクトルと密ベクトル
2つの違いは何ですか?
スパースとデンスの使用シナリオ?
概念的には、疎ベクトルの値の大部分はゼロであり、密ベクトル内の値のほとんどはゼロではありません。高密度および疎行列にも同じです。用語「スパース」および密集は、一般にMahoutだけでなく、これらのプロパティを記述します。
Mahoutでは、DenseVector
はゼロエントリがあまり多くないと想定しているため、「ベクトルを倍精度の配列として実装する」(org.apache.mahout.math.DenseVector)。対照的に、AbstractVector
のスパースベクトル実装、例えば、 RandomAccessSparseVector
とSequentialAccessSparseVector
は、ゼロ値をまったく格納しない異なるデータ構造を使用します。
どちらを取るかは、ベクターに保存するデータによって異なります。ほとんどゼロの値が必要な場合は、スパースなベクトル実装ではスペース効率が向上しますが、ゼロ値がわずかなデータに使用すると、パフォーマンスが低下する可能性のあるデータ構造オーバーヘッドが多く発生します。
密ベクトル対疎ベクトルの選択は、ベクトルの計算結果に影響を与えず、メモリ使用量と計算速度のみに影響します。