本文主要是介绍文本挖掘之降维技术之特征抽取之非负矩阵分解(NMF),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
通常的矩阵分解会把一个大的矩阵分解为多个小的矩阵,但是这些矩阵的元素有正有负。而在现实世界中,比如图像,文本等形成的矩阵中负数的存在是没有意义的,所以如果能把一个矩阵分解成全是非负元素是很有意义的。在NMF中要求原始的矩阵
的所有元素的均是非负的,那么矩阵
可以分解为两个更小的非负矩阵的乘积,这个矩阵
有且仅有一个这样的分解,即满足存在性和唯一性。
Contents
1. NMF问题描述
2. NMF实现原理
3. NMF的应用
4. NMF的R实现
5. NMF的Julia实现
6. 结束语
1. NMF问题描述
传统的NMF问题可以描述如下
给定矩阵
,寻找非负矩阵
和非负矩阵
,使得
。
分解前后可理解为:原始矩阵
的列向量是对左矩阵
中所有列向量的加权和,而权重系数就是右矩阵对应列
向量的元素,故称
为基矩阵,
为系数矩阵。一般情况下
的选择要比
小,即满足
,
这时用系数矩阵代替原始矩阵,就可以实现对原始矩阵进行降维,得到数据特征的降维矩阵,从而减少存储空
间,减少计算机资源。
2. NMF实现原理
NMF求解问题实际上是一个最优化问题,利用乘性迭代的方法求解
和
,非负矩阵分解是一个NP问题。NMF
问题的目标函数有很多种,应用最广泛的就是欧几里得距离和KL散度。
在NMF的分解问题中,假设噪声矩阵为
,那么有

现在要找出合适的
和
使得
最小。假设噪声服从不同的概率分布,通过最大似然函数会得到不同类型
的目标函数。接下来会分别以噪声服从高斯分布和泊松分布来说明。
(1)噪声服从高斯分布
假设噪声服从高斯分布,那么得到最大似然函数为

取对数后,得到对数似然函数为

假设各数据点噪声的方差一样,那么接下来要使得对数似然函数取值最大,只需要下面目标函数值最小。

该损失函数为2范数损失函数,它是基于欧几里得距离的度量。又因为

那么得到

同理有

接下来就可以使用梯度下降法进行迭代了。如下

如果选取

那么最终得到迭代式为

可看出这是乘性迭代规则,每一步都保证了结果为正数,一直迭代下去就会收敛,当然收敛性的证明省略。
(2)噪声服从泊松分布
若噪声为泊松噪声,那么得到损失函数为

同样经过推到得到

3. NMF的应用
NMF能用于发现数据库中图像的特征,便于快速识别应用,比如实现录入恐怖分子的照片,然后在安检口对可疑
人员进行盘查。在文档方面,NMF能够发现文档的语义相关度,用于信息的自动索引和提取。在生物学中,在
DNA阵列分析中识别基因等。在语音识别系统中NMF也能发挥重要作用。
4. NMF的R实现
先说NMF的R使用,R语言中已经有NMF包可用于NMF。非负矩阵分解已经有了很多算法,例如Multiplicative
Update,Projected Gradient Method,Gradient Descent。交替最小二乘法比较符合上面的解释,具
有更好的统计意义,而且收敛性质很好,计算速度快。已有的交替最小二乘法都使用冷冰冰的二次规划算法求解
非负回归,在bignmf中使用的最小角回归的思路解非负回归,更有统计的感觉,而且速度更快。安装包如下
bignmf:https://github.com/panlanfeng/bignmf
bignmf的部分源码如下

从上面代码可以看出,当矩阵V中元素是非double时,会强制转化为double类型。而W和H矩阵是服从高斯分布
的随机矩阵,随后传入参数调用whupdate,如果迭代次数太少会打印警告Iteration doesn't converge!
所以用bignmf分解非负矩阵调用如下函数就行了

代码:

以上是NMF分解的R语言实现,bignmf借助伟大的Rcpp和RcppEigen包,算法内层用C++ 代码实现接下来会接
着讲NMF在Julia中的实现。
5. NMF的Julia实现
在Julia语言中,有一个NMF包专门用来进行NMF分解的,现在就来详细了解它。首先来安装NMF,在Julia交互
式环境下使用如下命令

在Julia中,关于NMF的计算有很多方法,详见:https://github.com/JuliaStats/NMF.jl
NMF分解的一个例子如下

6. 结束语
关于NMF的解的收敛性和唯一性以后再证明,除了NMF分解以外,还有一种非负分解也用的比较多,而且很有
效,叫做非负张量分解法。可以参考如下论文
论文链接:http://www.doc88.com/p-8942237517189.html
7、应用范围
NMF最成功的一类应用是在图像的分析和处理领域。图像本身包含大量的数据,计算机一般将图像的信息按照矩阵的形式进行存放,针对图像的识别、分析和处理也是在矩阵的基础上进行的。这些特点使得NMF方法能很好地与图像分析处理相结合。人们已经利用NMF算法,对卫星发回的图像进行处理,以自动辨别太空中的垃圾碎片;使用NMF算法对天文望远镜拍摄到的图像进行分析,有助于天文学家识别星体;美国还尝试在机场安装由NMF算法驱动的识别系统,根据事先输入计算机的恐怖分子的特征图像库来自动识别进出机场的可疑恐怖分子。
文本在人类日常接触的信息中占有很大分量,为了更快更精确地从大量的文本数据中取得所需要的信息,针对文本信息处理的研究一直没有停止过。文本数据不光信息量大,而且一般是无结构的。此外,典型的文本数据通常以矩阵的形式被计算机处理,此时的数据矩阵具有高维稀疏的特征,因此,对大规模文本信息进行处理分析的另一个障碍便是如何削减原始数据的维数。NMF算法正是解决这方面难题的一种新手段。NMF在挖掘用户所需数据和进行文本聚类研究中都有着成功的应用例子。由于NMF算法在处理文本数据方面的高效性,著名的商业数据库软件Oracle在其第10版中专门利用NMF算法来进行文本特征的提取和分类。为什么NMF对于文本信息提取得很好呢?原因在于智能文本处理的核心问题是以一种能捕获语义或相关信息的方式来表示文本,但是传统的常用分析方法仅仅是对词进行统计,而不考虑其他的信息。而NMF不同,它往往能达到表示信息的局部之间相关关系的效果,从而获得更好的处理结果。
语音的自动识别一直是计算机科学家努力的方向,也是未来智能应用实现的基础技术。语音同样包含大量的数据信息,识别语音的过程也是对这些信息处理的过程。NMF算法在这方面也为我们提供了一种新方法,在已有的应用中,NMF算法成功实现了有效的语音特征提取,并且由于NMF算法的快速性,对实现机器的实时语音识别有着促进意义。也有使用NMF方法进行音乐分析的应用。复调音乐的识别是个很困难的问题,三菱研究所和MIT(麻省理工学院)的科学家合作,利用NMF从演奏中的复调音乐中识别出各个调子,并将它们分别记录下来。实验结果表明,这种采用NMF算法的方法不光简单,而且无须基于知识库。
(4) 机器人控制
如何快速准确地让机器人识别周围的物体对于机器人研究具有重要的意义,因为这是机器人能迅速作出相应反应和动作的基础。机器人通过传感器获得周围环境的图像信息,这些图像信息也是以矩阵的形式存储的。已经有研究人员采用NMF算法实现了机器人对周围对象的快速识别,根据现有的研究资料显示,识别的准确率达到了80%以上。
(5) 生物医学工程和化学工程
生物医学和化学研究中,也常常需要借助计算机来分析处理试验的数据,往往一些烦杂的数据会耗费研究人员的过多精力。NMF算法也为这些数据的处理提供了一种新的高效快速的途径。科学家将NMF方法用于处理核医学中的电子发射过程的动态连续图像,有效地从这些动态图像中提取所需要的特征。NMF还可以应用到遗传学和药物发现中。因为NMF的分解不出现负值,因此采用NMF分析基因DNA的分子序列可使分析结果更加可靠。同样,用NMF来选择药物成分还可以获得最有效的且负作用最小的新药物。
此外,NMF算法在环境数据处理、信号分析与复杂对象的识别方面都有着很好的应用。近年来采用NMF思想的应用才刚展开,相信以后会有更多的成功应用。这些成功的应用反过来也将促进NMF的进一步研究。
5、有NMF的相关算法如下:Local NMF(LNMF),Discriminant NMF(DNMF),non-negative sparse coding(NNSC),non-smooth
相关资料及下载链接:
[1].Daniel D.Lee* & H. Sebastian Seung*Learningthe parts of objects by Non-negative Matrix Factorization
[2].
4、Non-negative Matrix factorization discussion forum excerpts
5、NMF fuction-
6、维基百科NMF
7、http://books.nips.cc/cgi-bin/archer_query.cgi?first=1&scope=all&hits_per_page=10&description=long&keywords=NMF
这篇关于文本挖掘之降维技术之特征抽取之非负矩阵分解(NMF)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!