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.