半非负矩阵分解(Semi-NMF 或 Semi-Nonnegative Matrix Factorization)是一种矩阵分解方法
,它是非负矩阵分解(NMF)的扩展。
NMF要求分解出的所有矩阵元素都是非负的
,而Semi-NMF只对分解矩阵之一(通常是编码矩阵V
)施加非负约束
,而对另一矩阵(通常是基矩阵U
)和原始数据矩阵X没有非负性的限制
。这使得Semi-NMF能够处理
含有负值的数据集,而不仅仅是非负数据集。
半非负矩阵分解的公式
给定一个数据矩阵
X
∈
R
m
×
n
X \in \mathbb{R}^{m \times n}
X∈Rm×n,Semi-NMF的目标是找到一个基矩阵
U
∈
R
m
×
k
U \in \mathbb{R}^{m \times k}
U∈Rm×k 和一个非负编码矩阵
V
∈
R
+
k
×
n
V \in \mathbb{R}^{k \times n}_+
V∈R+k×n,使得
U
V
⊤
UV^\top
UV⊤ 能够逼近
X
X
X,其中
k
<
min
(
m
,
n
)
k < \min(m,n)
k<min(m,n)。
标准的Semi-NMF的目标函数可以表示为:
min U , V ∣ ∣ X − U V ⊤ ∣ ∣ F 2 \min_{U,V} ||X - UV^\top||_F^2 U,Vmin∣∣X−UV⊤∣∣F2
其中,
∣
∣
⋅
∣
∣
F
||\cdot||_F
∣∣⋅∣∣F 表示Frobenius范数,
V
∈
R
+
k
×
n
V \in \mathbb{R}^{k \times n}_+
V∈R+k×n表示
V
V
V 的所有元素非负。
半非负矩阵分解的优化
为了优化上述目标函数,可以采用迭代更新规则,其中(U)和(V)交替更新
。当(V)固定时,(U)可以通过求解最小二乘问题
来更新,反之亦然。更新规则可以类似于NMF中的更新规则,但在Semi-NMF中仅保持(V)的非负性。
示例
假设我们有以下数据矩阵(X):
X = [ 1 2 3 − 1 0 1 2 4 6 ] X = \begin{bmatrix} 1 & 2 & 3 \\ -1 & 0 & 1 \\ 2 & 4 & 6 \end{bmatrix} X= 1−12204316
我们想要对其进行半非负矩阵分解
,假设(k=2)。我们初始化(U)和(V)(这里(V)需要初始化为非负值
),然后根据Semi-NMF的更新规则迭代更新(U)和(V),直到收敛或达到最大迭代次数
。
最终,我们得到(U)和(V),它们的乘积 U V ⊤ UV^\top UV⊤ 应该尽可能地接近原始矩阵(X)。
例如,我们可能得到如下(U)和(V):
U = [ 1 0 − 1 1 2 2 ] , V = [ 1 2 3 0 1 1 ] U = \begin{bmatrix} 1 & 0 \\ -1 & 1 \\ 2 & 2 \end{bmatrix}, \quad V = \begin{bmatrix} 1 & 2 & 3 \\ 0 & 1 & 1 \end{bmatrix} U= 1−12012 ,V=[102131]
注意(V)中的所有元素都是非负的
,而(U)可以包含负数
。然后
U
V
⊤
UV^\top
UV⊤ 的结果将试图近似原始矩阵(X)。
结论
半非负矩阵分解是一种强大的工具,它扩展了NMF的能力,使之能够处理更广泛的数据类型
,包括含有负值的数据
。
通过只对编码矩阵施加非负约束,Semi-NMF在保持NMF的基于部分(parts-based)表示的优点的同时,增加了其应用范围。