2013-07-28 14 views
5

Für das Clustering muss die Mahout-Eingabe in Vektorform erfolgen. Es gibt zwei Arten von Vektorimplementierungen. Einer ist Sparse Vector und ein anderer ist Dense Vector.Clustering - spärlicher Vektor und dichter Vektor

Was ist der Unterschied zwischen zwei?

Anwendungsszenarien für sparse und dicht?

Antwort

11

Vom Konzept her sind die meisten Werte in einem spärlichen Vektor null, in einem dichten Vektor nicht. Gleiches gilt für dichte und dünn besetzte Matrizen. Die Begriffe spärlich und dichten beschreiben allgemein diese Eigenschaften, nicht nur in Mahout.

In Mahout nimmt die DenseVector nicht zu viele Null-Einträge an und daher "Implementiert Vektor als ein Array von Doubles" (org.apache.mahout.math.DenseVector). Im Gegensatz dazu sind die spärlichen Vektorimplementierungen von AbstractVector, z.B. RandomAccessSparseVector und SequentialAccessSparseVector verwenden Sie unterschiedliche Datenstrukturen, die die Nullwerte überhaupt nicht speichern.

Welcher zu nehmen ist, hängt von den Daten ab, die Sie in dem Vektor speichern möchten. Wenn Sie überwiegend Nullwerte erwarten, wäre eine spärliche Vektorimplementierung platzsparender. Wenn Sie sie jedoch für Daten mit nur wenigen Nullwerten verwenden, führen Sie eine Menge Datenstruktur-Overhead ein, was zu einer schlechteren Performance führen kann.

Die Wahl von dichtem gegenüber dünnem Vektor hat keinen Einfluss auf die Berechnungsergebnisse auf den Vektoren, nur die Speicherbelegung und die Berechnungsgeschwindigkeit.