人类的孤独像是一种与生俱来的残疾。

稀疏矩阵的表示

机器学习 smallfish 242℃

机器学习中会涉及很多的训练数据,可能很多数据的属性会缺失或者属性值影响极小。为了减小运算量及存储空间,常常会将数据处理,得到一个稀疏矩阵。

所谓稀疏矩阵,意思是矩阵中的元素大多数为0。与之相反的,如果矩阵中元素大多数不为0,则称为稠密矩阵。

由于稀疏矩阵中大多数元素为0,所以为了减少存储空间的大小,常常会将稀疏矩阵进行压缩。下面主要参考:https://blog.csdn.net/yhb1047818384/article/details/78996906

如下图所示稀疏矩阵,如果采用直接存储则会将矩阵通过一个三元组进行存储。

  1. 其中“values”为矩阵中所有非零元素的值;
    2.“row”为值的相应的行下标;
  2. “col”为值的相应的列下标。

COO

直接存储相对比较直观,但是存储空间仍不是最好的,所以有CSR方式。如下图所示,CSR方式与COO方式不同的是对row进行了压缩。

CSR

在线资料有很多的解释,个人感觉都不是很好理解。它表示的是这一行前面总共有多少个非零的元素。因此,rows的含义是:

  1. 第0行前面有0个非零元素;
  2. 第1行前面有2个非零元素(即第0行有2个非零元素,也即值1,7是在第0行);
  3. 第2行前面有4个非零元素(由于第0行有2个非零元素,所以也就是第1行有2个非零元素,即2,8在第1行);
  4. 第3行前面有7个非零元素(同理推知,第2行有3个非零元素,即5,3,9在第2行);
  5. 第4行前面有9个非零元素(同理推知,第3行有2个非零元素,即6,4在第3行)。

类似的还有CSC,即按列压缩。

转载请注明:OpenMind » 稀疏矩阵的表示

喜欢 (0)