12 votes

Clustering -- Vecteur épars et vecteur dense

Pour le regroupement, les données d'entrée de Mahout doivent être sous forme de vecteur. Il existe deux types d'implémentations vectorielles. L'un est le vecteur clair (Sparse Vector) et l'autre le vecteur dense (Dense Vector).

Quelle est la différence entre les deux ?

Scénarios d'utilisation pour Sparse et Dense ?

19voto

D'un point de vue conceptuel, la plupart des valeurs d'un vecteur peu dense sont nulles, ce qui n'est pas le cas d'un vecteur dense. Il en va de même pour les matrices denses et éparses. Les termes clairsemé y dense décrivent généralement ces propriétés, et pas seulement dans Mahout.

A Mahout, le DenseVector suppose qu'il n'y a pas trop d'entrées nulles et donc "Implémente le vecteur comme un tableau de doubles" ( org.apache.mahout.math.DenseVector ). En revanche, les implémentations de vecteurs épars de AbstractVector , par exemple RandomAccessSparseVector y SequentialAccessSparseVector Les autres pays utilisent des structures de données différentes qui ne stockent pas du tout les valeurs nulles.

Le choix dépend des données que vous souhaitez stocker dans le vecteur. Si vous vous attendez à ce que la plupart des valeurs soient nulles, l'implémentation d'un vecteur clairsemé sera plus efficace en termes d'espace, mais si vous l'utilisez pour des données ne comportant que quelques valeurs nulles, vous introduirez beaucoup de structure de données, ce qui pourrait nuire à la performance.

Le choix d'un vecteur dense ou clairsemé n'affecte pas les résultats des calculs sur les vecteurs, mais seulement l'utilisation de la mémoire et la vitesse de calcul.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X