定义
在矩阵中,
若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵;
与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵。
规模巨大的稀疏矩阵在应用机器学习中很常见,尤其是在自然语言处理领域中,例如度热编码(one-hot编码)
稀疏矩阵的标识,计算会增加空间和时间复杂度,因此描述稀疏矩阵的稀疏性需要进行特殊的表示,以提高性能。
如何衡量稠密度呢?
定义非零元素的总数比上矩阵所有元素的总数为矩阵的稠密度。
如何计算稀疏性?

如何得到稀疏矩阵
特征有3种类型:
连续型
离散型
类别型
对于类别型特征,我们可以用one-hot(独热编码)得到稀疏矩阵
稀疏矩阵的优点
我们在数值计算中遇到的稀疏矩阵,一般都是维数很多,有值的位置却很少的矩阵。
一个很典型的例子就是文本的one-hot向量化之后的矩阵,极度稀疏。
如果我们面临这样的问题,一组文本与另一组文本计算交叉余弦相似度,那么我们面临的问题就变成了两个巨大的稀疏矩阵的点乘问题,这种情况下,最大的问题有2个,一个是内存占用,二个是计算速度。
python的一个扩展包scipy,专门用来计算矩阵的。
scipy有一个sparse模块,该模块提供了稀疏矩阵的表示方法coo_matrix()方法,将稀疏矩阵用sparse中的几种特殊表示方法进行转化之后,不仅占用内存少,而且点阵运算的速度也很快。

补充下:说明是2个矩阵的点积?
两个向量a = [a1, a2,…, an]和b = [b1, b2,…, bn]的点积定义为:
a·b=a1b1+a2b2+……+anbn。
也就是2个矩阵点积,得到的是一个值,标量。
什么情况下用稀疏矩阵
比如在做推荐的时候,计算2个社群的相似性,用的的yuxuan相似性。
计算社群的相似性,及看是否有足够多的用户,既在a社群,也在b社群。
如果这个值足够大,则可以说明2个群体具有一定的相似性。
在计算yuxuan相似性的时候,只考虑向量的方向,不考虑大小。
在计算欧式距离相似性的时候,需要考虑方向,也要考虑大小。