Python 稀疏向量与密集向量
我如何知道我是否应该在PySpark中使用稀疏表示还是密集表示?我理解它们之间的区别(稀疏仅通过存储非零索引和值来节省内存),但就性能而言,是否存在描述何时在密集向量上使用稀疏向量的通用启发式方法Python 稀疏向量与密集向量,python,apache-spark,machine-learning,pyspark,sparse-matrix,Python,Apache Spark,Machine Learning,Pyspark,Sparse Matrix,我如何知道我是否应该在PySpark中使用稀疏表示还是密集表示?我理解它们之间的区别(稀疏仅通过存储非零索引和值来节省内存),但就性能而言,是否存在描述何时在密集向量上使用稀疏向量的通用启发式方法 是否有一个通用的“截止”维度和0值的百分比,超过该维度通常最好使用稀疏向量?如果没有,我应该如何做决定?谢谢。需要记住的是pyspark.ml.linalg.Vector和pyspark.mllib.linalg.Vector只是Python和Java API之间的兼容层。没有全功能或优化的线性代数实
是否有一个通用的“截止”维度和0值的百分比,超过该维度通常最好使用稀疏向量?如果没有,我应该如何做决定?谢谢。需要记住的是
pyspark.ml.linalg.Vector
和pyspark.mllib.linalg.Vector
只是Python和Java API之间的兼容层。没有全功能或优化的线性代数实用程序,您不应该这样使用它们。可用的操作要么不是为性能而设计的,要么只是在封面下转换为标准NumPy阵列
当与其他ml
/mllib
工具一起使用时,将被序列化并转换为Java等价物,因此Python表示性能通常无关紧要
这意味着最大的实际问题是存储,一个简单的经验法则是:
- 如果平均一半的条目为零,则最好使用
SparseVector
- 否则最好使用
DenseVector