资讯

非负矩阵分解是什么?把数据拆成可加的“部件”

2026-11-053 分钟阅读百科
TL;DR非负矩阵分解(NMF)是把一个非负矩阵近似分解为两个非负矩阵乘积的方法,由 Lee 和 Seung 在 1999 年的《自然》论文推广,由于只允许相加而不允许相减,分解结果往往对应数据中直观的组成部分,如人脸的眼睛鼻子、文档的主题,广泛用于主题提取、图像分析、音源分离和推荐系统。

非负矩阵分解(Non-negative Matrix Factorization,NMF)是一种把一个所有元素都非负的矩阵,近似地分解为两个同样非负的矩阵乘积的方法。它的最大特点是:由于所有的元素都不能是负数,分解的结果只能通过“相加”来组合,不能通过“相减”来抵消,因此得到的成分往往对应着数据中直观的、有意义的组成部分。

它是怎么分解的

假设有一个数据矩阵,每一列代表一个样本,比如一张图片或一篇文档,每一行代表一个特征,比如一个像素的亮度或一个词出现的次数。这些数据本身都是非负的。非负矩阵分解要找到两个非负的矩阵,让它们的乘积尽可能地接近原来的数据矩阵:第一个矩阵的每一列可以看作一个“基”,也就是一个基本的组成部分;第二个矩阵的每一列给出了对应样本由各个基组合而成的系数。也就是说,每个样本都被表示为若干个基本部分的加权之和,而且权重都是非负的。基的数量通常远少于原始特征的数量,所以这也是一种降维的方法。

为什么非负性很重要

非负矩阵分解的思想最早可以追溯到 20 世纪 90 年代 Pentti Paatero 等人在化学计量学中的研究。1999 年,Daniel Lee 和 Sebastian Seung 在《自然》杂志上发表了一篇有影响力的论文,展示了非负矩阵分解能够学到“部分”的表示,使这种方法广为人知。他们用非负矩阵分解处理大量的人脸图片,发现分解出来的基图像对应着人脸的各个局部部件,比如眼睛、鼻子、嘴巴、眉毛、脸颊的轮廓,每张人脸都可以表示为这些部件的叠加。

相比之下,主成分分析等方法分解出来的成分允许有正有负,一个成分可能需要用另一个成分来部分地抵消,得到的成分往往是一些整体性的、模糊的“特征脸”,很难直观地解释。非负矩阵分解只允许相加,就像用乐高积木搭建东西一样,只能往上加积木,不能往下减,因此自然地倾向于把整体分解为局部的部件。这种“由部分组成整体”的表示方式,被认为与人类大脑感知物体的方式有一定的相似之处。

怎么求解

非负矩阵分解通常通过最小化原始矩阵与两个矩阵乘积之间的差距来求解,常用的衡量方式有平方误差和 KL 散度。Lee 和 Seung 提出了一种简单的“乘法更新规则”:交替地更新两个矩阵,每次都乘以一个非负的修正因子,这样可以自然地保证矩阵始终保持非负。此外还有交替非负最小二乘法、坐标下降法等更高效的算法。需要注意的是,非负矩阵分解是一个非凸优化问题,结果可能受到初始值的影响,而且分解的结果不一定唯一。

应用

文本挖掘和主题提取:对“词语-文档”矩阵进行分解,每个基对应一个主题,由一组相关的词语组成,比如“球队、比赛、进球”构成体育的主题,每篇文档表示为各个主题的组合。图像分析:提取图像的局部特征,用于人脸识别、图像聚类。音频处理:对声音的频谱图进行分解,可以把一段混合的音乐分离成不同乐器的声音,或者从嘈杂的录音中分离出人声。推荐系统:对用户-物品评分矩阵进行分解,发现用户的潜在兴趣和物品的潜在属性。生物信息学:分析基因表达数据,发现基因的功能模块,以及识别肿瘤中的突变特征等。