2013-07-28 15 views
5

Per il clustering, l'input di Mahout deve essere in forma vettoriale. Esistono due tipi di implementazioni vettoriali. Uno è Sparse Vector e un altro è Dense Vector.Clustering - Vettore sparse e vettore denso

Che differenza c'è tra due?

Scenari di utilizzo per Sparse e Dense?

risposta

11

Dal punto di vista concettuale, la maggior parte dei valori in un vettore sparse sono zero, in un vettore denso non lo sono. Lo stesso per matrici dense e sparse. I termini sparsi e denso descrivono generalmente queste proprietà, non solo in Mahout.

In Mahout il DenseVector presuppone non troppe voci zero e pertanto "Implementa vettore come una matrice di doppi" (org.apache.mahout.math.DenseVector). Al contrario, le implementazioni vettoriali sparse di AbstractVector, ad es. RandomAccessSparseVector e SequentialAccessSparseVector, utilizzare strutture dati differenti che non memorizzano affatto i valori zero.

Quale da prendere dipende dai dati che si desidera memorizzare nel vettore. Se ci si aspetta valori per lo più pari a zero, un'implementazione vettoriale sparsa sarebbe più efficiente in termini di spazio, tuttavia se la si utilizza per dati con pochi valori zero, si introduce un sovraccarico di struttura dei dati che potrebbe causare prestazioni peggiori.

La scelta del vettore denso rispetto a quello sparse non influisce sui risultati del calcolo sui vettori, ma solo sull'utilizzo della memoria e sulla velocità di calcolo.