NMF与LSA时间复杂度分析

NMFLSA时间复杂度分析

——2018.5.24于TJU QQ:1219154092

一、LSA

浅层语义分析(LSA)通过“矢量语义空间”来提取文档与词中的“概念”,进而分析文档与词之间的关系。LSA的基本假设是,如果两个词多次出现在同一文档中,则这两个词在语义上具有相似性。LSA使用大量的文本上构建一个矩阵,这个矩阵的一行代表一个词,一列代表一个文档,矩阵元素代表该词在该文档中出现的次数,然后再此矩阵上使用奇异值分解(SVD)来保留列信息的情况下减少矩阵行数,之后每两个词语的相似性则可以通过其行向量的cos值(或者归一化之后使用向量点乘)来进行标示,此值越接近于1则说明两个词语越相似,越接近于0则说明越不相似。

NMF与LSA时间复杂度分析_第1张图片

如图所示,奇异值分解,就是把上面这样一个大矩阵,分解成三个小矩阵相乘。三个矩阵有非常清晰的物理含义。第一个矩阵X是对词进行分类的一个结果。它的每一行表示一个词,每一列表示一个语义相近的词类,或者简称为语义类。这一行的每个非零元素表示这个词在每个语义类中的重要性,数值越大越相关。如下所示:


二、NMF

非负矩阵分解(Non-negative Matrix Factor),简称NMF,是由LeeSeung1999年在自然杂志上提出的一种矩阵分解方法,它使分解后的所有分量均为非负值(要求纯加性的描述),并且同时实现非线性的维数约减。

NMF的思想:V=WHW权重矩阵、H特征矩阵、V原矩阵),通过计算从原矩阵提取权重和特征两个不同的矩阵出来。属于一个无监督学习的算法,其中限制条件就是WH中的所有元素都要大于0

NMF与LSA时间复杂度分析_第2张图片 

三、MATLAB小实验分析

实验运行环境:Win10Matlab R2017b16G内存,Intel Core i7-6700HQ   [email protected]

实验数据设置:

实验随机生成1000×1000的矩阵m,分别进行NMFLSA运算。

实验程序见笔者博客上传资源部分中的Test_LSA.M与Test_NNMF.M文件附件代码。

四、时间复杂度比较

1、LSA时间复杂度

LSA算法的核心在于奇异值分解,而奇异值分解一般分两步进行。首先,将矩阵A变换成一个双对角矩阵,这个过程的计算量为O(MN2)。第二步是将双对角矩阵变成奇异值分解的三个矩阵,这一步的计算量可以忽略不计。所以,综上所述,对于一个 m×n 矩阵,用LSA降维至m×r,进行SVD的时间复杂度是O(mn2), 并且,对一个较大的稀疏矩阵,LSA降维的计算复杂度可降至: O(cmn),其中,c

2、NMF时间复杂度

NMF算法的时间效率取决于迭代的次数, 变化幅度也较大。 

你可能感兴趣的:(NLP)