稠密向量与稀疏向量
2022-03-13 10:11:57
机器学习中会经常用到向量,包括对特征的存储,优化的计算等等,都离不开向量。但是具体实现时,经常会采用两种方式存储向量,一种是使用数组的数据结构对向量建模,这种结构通常存储普通的向量,也称为稠密向量。一种是使用map的数据结构对向量建模,这种结构存储的向量大多数元素等于零,这种向量称为稀疏向量。
之所以使用两种不同的存储结构,是因为机器学习中的特征很多时候是高维空间中的元素,具有成千上万的分量,而这些分量是通过离散化得到的,所谓离散化,就是将原来取值为实数(比如某个特征为价格,取值为475.2)的特征,根据取值范围(例如范围在350~800之间)分为若干个区间(例如按照每间隔10为一个区间,即分成了350~360,360~370 ,790~800),原来的一维特征也相应离散为若干维。如果价格在470~480的区间中,则相应维度的特征取值为1,其他维度的特征取值为0。因此,如果使用稀疏向量存储,不仅节省空间,而且在后续的各种向量操作和优化的计算中会提高效率。
举例:向量(1.0,0.0,1.0,3.0)
密集格式:表示为[1.0,0.0,1.0,3.0],
稀疏格式表示为(4,[0,2,3],[1.0,1.0,3.0])
第一个4表示向量的长度(元素个数),[0,2,3]就是indices数组;[1.0,1.0,3.0]是values数组,表示向量0的位置的值是1.0,2的位置的值是1.0,而3的位置的值是3.0,其他的位置都是0,
稀疏向量在面对很多数据是零的情况下能节省很多的存储空间
参考资料: