非负矩阵分解(Non-negative Matrix Factorization, NMF)是一种用于将一个非负矩阵分解成两个较小的非负矩阵乘积
的数学方法,它在信号处理、计算机视觉、机器学习
等领域有广泛应用。
NMF的目标是找到两个非负矩阵U和V,使得它们的乘积UV尽可能接近原矩阵X,同时U和V的维数小于X的维数,以达到数据降维的目的。
非负矩阵分解的基本公式
给定一个非负的数据矩阵 ,其中
每一列代表一个数据点
,每一行代表一个特征维度
。NMF的任务是寻找两个非负矩阵 和
,使得:
这里,,
被称为
基矩阵
(Basic Matrix), 被称为
编码矩阵
(Encoding Matrix)。
编码矩阵 的
每一列表示对应原始数据点在基矩阵U下的低维表示
。
NMF通过最小化重构误差
来逼近原始矩阵,常见的损失函数为均方误差
:
其中
- (X) 是
非负数据矩阵。
- (U) 和 (V) 分别是
基矩阵
和编码矩阵
。 表示矩阵的Frobenius范数。
约束条件是U和V的所有元素都大于等于0。
是
重构误差项
非负矩阵分解的优化
目标函数 J_NMF 相对于 和
同时是
非凸的
,但当其中一个固定时
,它是凸的
。因此,通常使用迭代乘子更新规则来优化U和V:
其中:
表示在第
次迭代时矩阵
表示在第
次迭代时矩阵
是基于
和
的值更新得到的下一步迭代步的矩阵
表示在第
次迭代时矩阵
表示在第
次迭代时矩阵
是基于
和
的值更新得到的下一步迭代步的矩阵
的值
这里的符号“⊙”表示Hadamard积,即元素按位置相乘
。
举例说明
假设有一个非负的数据矩阵X,大小为3x5,表示三个特征维度
下的五个数据点:
我们的目标是找到两个非负矩阵U和V
,使得UV可以近似X
,假设k=2。通过NMF算法,我们可能得到:
然后UV的结果为:
这个结果会尽量接近X。通过调整U和V
,我们能够找到一个较好的低维表示,同时保留原始数据的特征。这种低维表示有助于数据可视化、降维和后续的机器学习任务
。