商业数据分析·NMF.pptVIP

  • 6
  • 0
  • 约2.46千字
  • 约 18页
  • 2023-07-29 发布于河北
  • 举报
商业数据分析 2016·12·01 线性降维 : NMF 线性降维 3 2 NMF Nonnegative Matrix Factorization 非负矩阵分解 NMF是什么 3 线性降维 在SVD的一些应用中,经常会出现一种情况,即:所有的元素都是大于等于0的。如上节课讲的文本处理例子,每个元素代表统计出来的词频,所以肯定都是非负的。对于这类问题,我们在进行降维的时候,可以利用他们的非负特征。这种降维方法被称为非负矩阵分解(Nonnegative matrix factorization),英文简写为NMF。 NMF是什么 3 线性降维 NMF所涉及的矩阵分解方法,实际上是一个优化问题。也就是说,将原始的矩阵分解为两个非负矩阵的积。假设原矩阵X为一个n×p的矩阵,我们则寻找出一个n×k的矩阵W,和k×p的矩阵H,使得以下函数取得最小值: NMF是什么 3 线性降维 简单讲,非负矩阵分解,就是将非负矩阵X分解为两个更小的非负矩阵W和H相乘,即: 之所以是约等于,是因为当前解法并非精确解,而只是数值上的近似解。其中r远小于n和m,一般情况下,(n+m)r nm。 NMF是什么 3 线性降维 由公式可以看到,分解后的积并不一定完全等于原矩阵,但是要尽可能的接近,所以NMF是一种近似分解的方法。 正因为如此,在计算中等式两者很难完全相等。在计算中往往是根据某更新法则迭代更新出两个乘子,当上式的距离小于我们设定的大小,停止迭代。 NMF是什么 3 线性降维 经过非负矩阵分解后的两个矩阵也有着一些有意思的性质。 原矩阵X中的一列向量可以解释为对左矩阵W中所有列向量(称为基向量)的加权和,而权重系数为右矩阵H中对应列向量中的元素。 这种基于基向量组合的表示形式具有很直观的语义解释,它反映了人类思维中“局部构成整体”的概念。 NMF的算法实现 3 线性降维 常用的构建非负矩阵分解的算法有以下三种: 1、乘法更新算法(Multiplicative Update Algorithm) 2、交替最小二乘算法(Alternating Least Squares) 3、梯度下降算法(Gradient descent algorithm) 这里我们介绍前两种。 NMF —— Multiplicative Update Algorithm 2 线性降维 步骤: 1、初始化W为一个n×k的矩阵,其中每一个元素都为0到1的随机数; 2、初始化H为一个k×p的矩阵,其中每一个元素也为0到1的随机数; 3、用以下公式更新H: 4、用以下公式更新W: 5、不断重复步骤3、4,直到收敛到一个比较稳定的值。 .* 表示两个矩阵对应位置元素相乘 ./ 表示两个矩阵对应位置元素相除 最后的10-9是为了避免除数为0的情况 NMF —— Multiplicative Update Algorithm 2 线性降维 这一算法的迭代次数和结果,很大程度上依赖于初始化的两个随机矩阵。所以每次可能会得到不同的结果。相较于之后介绍的交替最小二乘方法,它的收敛速度也会较慢,而且很依赖初始值。 NMF —— Alternating Least Squares 2 线性降维 步骤: 1、初始化W为一个n×k的矩阵,其中每一个元素都为0到1的随机数; 2、用以下公式求出H: 3、将H中所以负值元素重置为0; 4、用以下公式求出W: 5、将W中所以负值元素重置为0; 6、不断重复步骤2-5,直到收敛到一个比较稳定的值。 NMF实践 2 为了进一步说明NMF的方法,我们来看一个例子。 继续沿用上次使用的数据集lsiex,通过非负矩阵分解的方式来进行信息检索。 (对应文件 Example2_4.m) 线性降维 MATLAB实例——LSI 2 使用数据集lsiex.mat进行实验,这里有一些文档,里面包含一个书名的列表,然后还有个术语集包含一些词汇。我们把他们变成一个矩阵,每一列是一个文件,每一行是一个术语在这个文件中出现的次数。 然后将用户的搜索输入变成一个向量,包含对应术语的为1,不包含的为0。 线性降维 NMF的总结 2 在上面的例子中,我们使用了乘法更新算法(Multiplicative Update Algorithm),而且只迭代了一次。大家可以尝试使用matlab函数nnmf进行多次迭代,或者使用交替最小二乘算法(Alternating Least Squares)。理论上,无论是收敛速度还是结果都会更好。 线性降维 NMF的总结 2 现实的应用中有很多例子,如数字图像中的像素一般为非负数,文本分析中的单词统计也总是非负数,股票价格

文档评论(0)

1亿VIP精品文档

相关文档