Non-negative matrix factorizatio…

非负矩阵分解(NMF)是一种学习局部特征的算法,尤其适用于脸部识别和文本聚类。与PCA和VQ不同,NMF强制分解后的因子非负,提供部分基表示。NMF在脸部识别中发现局部特征,而在文本聚类中,通过稀疏编码直接指示文档类别,无需额外的聚类步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

  1. Non-negative matrix factorization

对整体的感知是建立在对部分的感知的基础之上吗?心理和生理上的证据表明,这种基于部分的表示(parts-based representation)存在于大脑中。但人们对大脑是如何学习对象的局部的所知甚少。[1]提出了nonnegative matrix factorization (NMF) 算法用于学习脸部图像和文本的局部特征。NMFprincipal components analysis (PCA [5]) 以及vector quantization (VQ,什么是VQ)的区别是,NMF限定矩阵分解后的所有因子都是非负的。这一限制使得在使用分解后的因子表示原来的对象时,只存在加法操作。因此这是一种parts-based representation. NMF被翻译为神经网络算法时,神经元的射速永远是非负的,突触的连接强度不会改变符号。

Non-negative <wbr>matrix <wbr>factorization

如图一 [1] 所述,在脸部识别任务中,VQ发现一组原型,这些原型都是脸部整体;PCA发现的是eigenfaces,一些eigenfaces很像被扭曲的脸部全景。而NMF发现的都是脸的局部特征(基本组成部分)。

假设脸部数据构成了一个m×n的矩阵X,每一列均表示一张由m个非负像素值构成的图片。NMF的目标是构造U,V,使得X≈UV

Non-negative <wbr>matrix <wbr>factorization

其中UV分别是m×kn×k的矩阵。U中的列向量被称为基本图像(basis image)。V中的列向量被称为编码(encoding),每一条编码对应于原始数据X中的一个列向量。一条编码中的系数表明了原始数据中的一张脸部图像数据是如何由基本图像线性组合构成的

VQ中,每一条编码被限制为一个一元向量,也就是说,每一张脸部图像均由某一张基本图像近似;PCA要求U中的列向量是标准正交的,而H中的行向量也是正交的。这一要求相较于VQ是放宽了。PCA不限制UV元素的正负性,因此在线性组合eigenfacesU中的列向量)时,存在复杂的正负值相互抵消,也使得eigenfaces缺乏直觉的解释。

NMF不允许UV中存在非负元素,进一步使得线性组合只存在加法。由于基本图像只包含了脸部的局部,而一张脸部图像不一定由全部的基本图像构成,因此基本图像和编码都是稀疏的。而VQPCA中的编码都是fully distributed endocing(对应向量的每一个元素都有取值)。如果将上述算法应用于文本数据,NMF也同样显得更加合理。因为一个文本更可能由部分主题而不是由绝对的一个(VQ)或全部主题(PCA)构成

需要注意的是,NMF假设隐藏元素是非负的,但并没有限制隐藏元素之间的统计依赖性。当进行文本聚类时,这一点进一步将NMFSVD、谱聚类等算法区分开来。NMF并不需要而外的算法进行聚类。一般的,编码的长度r就是聚类个数,一个编码中取值最大的元素对应的类别编号就是该文档对应类别。而编号对应的W中的列向量就是对应类别的类中心。因此NMF是一个更加直接、易于理解的聚类方法 [2]。

NMF用于文本聚类的一般方法如下:

目标函数:最小化Non-negative <wbr>matrix <wbr>factorization

更新法则:

Non-negative <wbr>matrix <wbr>factorization
a、将给定数据集转换为term-document矩阵X;

b、根据目标函数和更新法则将X分解为U和V;

c、归一化U和V[2];

d、使用V来确定每一个文档的类别标签。

   2. Concept Factorization, CF

由于NMF限制数据必须为非负取值,且隐藏变量的取值不一定是原始数据的线性组合,这使得NMF只能应用于非负数据,且不能应用于kernel space。而CF不限制数据的非负性,并且要求隐藏变量是原始数据的线性组合,因此可以使用核函数应用于kernel space [4]。使用Rc代表概念c的中心,Xi代表第i条数据,CF的目标是找到W使得:

Non-negative <wbr>matrix <wbr>factorization
使用(1)式替换(2)式中的Rc可得:

Non-negative <wbr>matrix <wbr>factorization
即:

Non-negative <wbr>matrix <wbr>factorization
与NMF类似,求得V即可得文档的聚类结果。

   3.  Locally Consistent Concept Factorization, LCCF

上述方法实际上将文本从m维空间转换到了k维空间。一般的,在空间变换过程中,应当保持数据点在原始空间中的相对距离不变。但上述方法并没有将这一点放入准则函数中。基于该点,[3]设计了新的准则函数:
Non-negative <wbr>matrix <wbr>factorization
等式右边的第二项保证了在原始空间中距离近的点在新空间中距离尽量近,而在原始空间中距离远的点距离尽量远。

Ref. [1] Learning the Parts of Objects by Nonnegative Matrix Factorization

[2] Document Clustering Based on Non-negative Matrix Factorization

[3] Locally Consistent Concept Factorization for Document Clustering

[4] Document Clustering by Concept Factorization

[5] Recent developments in document clustering

### 非负矩阵分解的概念 非负矩阵分解(Non-negative Matrix Factorization, NMF)是一种用于降维的技术,其目标是在保持数据非负性的前提下将高维度的数据表示为低维度的形式。具体来说,给定一个非负矩阵 \(X\) ,NMF旨在找到两个较低秩的非负矩阵\(U\) 和 \(V\) ,使得 \(UV^T \approx X\) 。这种近似通常通过最小化重构误差来实现,即最小化Frobenius范数 \(|| X - UV^T ||^2\) [^1]。 对于成本函数的选择,在基本的NMF算法中,常用的是基于欧几里得距离的成本函数以及Kullback-Leibler散度作为替代选项之一[Lee & Seung, 2001][^2]。 ### 实现方法 下面是一个简单的Python代码片段展示如何利用`scikit-learn`库中的`NMF`类来进行非负矩阵分解: ```python from sklearn.decomposition import NMF import numpy as np # 假设我们有一个形状为(n_samples, n_features)的输入矩阵X n_components = 5 # 设定要提取的主题数量/特征数目 model = NMF(n_components=n_components, init='random', random_state=0) W = model.fit_transform(X) # W代表样本在新空间下的坐标 H = model.components_ # H代表新的基向量组成的矩阵 ``` 在这个例子中,`fit_transform()` 方法返回的是变换后的样本矩阵 `W` (大小为 `(n_samples, n_components)`),而 `components_` 属性则保存着学习到的基础矩阵 `H` (大小为 `(n_components, n_features)`)。这两个矩阵相乘可以得到原始输入矩阵的一个近似版本。 ### 应用场景 非负矩阵分解广泛应用于多个领域内,特别是在处理具有自然部分加性结构的数据集时表现优异。典型的应用包括但不限于文档聚类、图像分析、音频信号处理等领域。例如,在文本挖掘任务中,可以通过对词频统计表执行NMF操作从而发现潜在主题;而在推荐系统设计方面,则可用于预测用户偏好并提供个性化服务建议[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值