聚类和降维

聚类在别的机器学习课程中已经学过了,主要就是Kmeans那些算法,这里就跳过了,主要记录一下降维部分的内容,降维的这节课上主要讲了SVD和CUR两个算法。

SVD分解

通常来说我们在数据挖掘中遇到的算法可以表示成一个Lecture03.聚类和降维 - 图1的矩阵,并且这个矩阵可以用若干个矩阵的乘积来表示,矩阵中的往往存在一些潜在的维度和因素没有被挖掘出来,而通过矩阵分解的方式我们可以挖掘出这些潜在的信息,比如下面这张图中的情况就是一个很好的例子。

Lecture03.聚类和降维 - 图2

SVD就是一种非常常见的降维方法,可以把一个Lecture03.聚类和降维 - 图3的矩阵A分解成大小为Lecture03.聚类和降维 - 图4三个矩阵的乘积,同时这里的r有多种选择,并不是唯一的,我们可以选择合适的r让矩阵的重构损失达到最小,即:

Lecture03.聚类和降维 - 图5

  • 这时候的矩阵U称为左奇异矩阵,而V称为右奇异矩阵,中间的Lecture03.聚类和降维 - 图6被称为矩阵的奇异值矩阵,并且是一个对角的矩阵
  • 奇异值还有另一种写法是将矩阵分解成Lecture03.聚类和降维 - 图7三个矩阵的乘积

SVD分解也存在一些缺点,比如:

  • 可解释性的问题:每个奇异向量表示输入所有行列的一个线性组合,但是缺少可解释性
  • 奇异值分解得到的结果比较稠密,不够稀疏,因此存储消耗比较大

CUR分解

CUR分解的目标是将矩阵分解成三个矩阵CUR的乘积,并且使得Lecture03.聚类和降维 - 图8尽可能小,并且满足:

  • C和R是一个大而稀疏的矩阵
  • U是一个稠密的小矩阵

Lecture03.聚类和降维 - 图9

  • 不过这一部分的内容感觉讲的不是很清楚,因此就不多深入探究了,只要知道有这么个东西就行。