机器学习中会涉及很多的训练数据,可能很多数据的属性会缺失或者属性值影响极小。为了减小运算量及存储空间,常常会将数据处理,得到一个稀疏矩阵。
所谓稀疏矩阵,意思是矩阵中的元素大多数为0。与之相反的,如果矩阵中元素大多数不为0,则称为稠密矩阵。
由于稀疏矩阵中大多数元素为0,所以为了减少存储空间的大小,常常会将稀疏矩阵进行压缩。下面主要参考:https://blog.csdn.net/yhb1047818384/article/details/78996906
如下图所示稀疏矩阵,如果采用直接存储则会将矩阵通过一个三元组进行存储。
- 其中“values”为矩阵中所有非零元素的值;
2.“row”为值的相应的行下标; - “col”为值的相应的列下标。
直接存储相对比较直观,但是存储空间仍不是最好的,所以有CSR方式。如下图所示,CSR方式与COO方式不同的是对row进行了压缩。
在线资料有很多的解释,个人感觉都不是很好理解。它表示的是这一行前面总共有多少个非零的元素。因此,rows的含义是:
- 第0行前面有0个非零元素;
- 第1行前面有2个非零元素(即第0行有2个非零元素,也即值1,7是在第0行);
- 第2行前面有4个非零元素(由于第0行有2个非零元素,所以也就是第1行有2个非零元素,即2,8在第1行);
- 第3行前面有7个非零元素(同理推知,第2行有3个非零元素,即5,3,9在第2行);
- 第4行前面有9个非零元素(同理推知,第3行有2个非零元素,即6,4在第3行)。
类似的还有CSC,即按列压缩。