Non-Negative Matrix Factorization 非负矩阵分解(NMF)
简介及基本思想
1999年由D.D.Lee
和H.S.Seung
提出的新的矩阵分解思想,在矩阵中所有元素均为非负数约束条件下的矩阵分解方法,通过矩阵分解,可以对描述问题的矩阵进行将为,另一方面可以对大量的数据进行压缩和概括。
原文论文为:《Algorithms for Non-negative Matrix Factorization》
NMF
的基本思想为:对于任意给定的一个非负矩阵A
,NMF
可以找到两个非负矩阵U
和V
,使得满足A=UV
,从而将一个非负矩阵分解为左右两个非负矩阵的乘积。
问题描述
利用公式描述为:
V
n
∗
m
≈
W
n
∗
r
⋅
H
r
∗
m
V_{n*m}\approx W_{n*r}\cdot H_{r*m}
Vn∗m≈Wn∗r⋅Hr∗m
公式中的约等于是因为当前解法并非精确解,而只是数值上的近似解,并且r
远远小于n
和m
,一般情况下满足(n+m)r<nm
。在有的文献中,r
也被称为隐藏空间的维度。
因为原矩阵V
中的一列向量可以解释为W
矩阵中所有列向量的加权和,并且权重系数对应为H
矩阵中对于列向量的元素,因此一般称W
矩阵为基矩阵,而H
为权矩阵。
在论文中指出,非负矩阵分解是一个NP问题,可以划分为优化问题用迭代方法交替求U
和V
。
具体算法流程
损失函数
欧式距离:
∥ A − B ∥ 2 = ∑ i j ( A i j − B i j ) 2 {\left\Vert A-B \right\Vert}^2 =\sum_{ij}(A_{ij}-B_{ij})^2 ∥A−B∥2=ij∑(Aij−Bij)2
AB之间的散度:
D ( A ∥ B ) = ∑ i j ( A i j log A i j B i j − A i j + B i j ) D(A\|B)=\sum_{ij}(A_{ij}\log\frac{A_{ij}}{B_{ij}}-A_{ij}+B_{ij}) D(A∥B)=ij∑(AijlogBijAij−Aij+Bij)
基于乘法更新法阵的迭代更新算法,将矩阵分解算法转化为最小化两个矩阵之间的欧几里得距离的优化问题:
min
∥
V
−
V
′
∥
2
=
∑
i
j
(
V
i
j
−
V
i
j
′
)
2
\min{\left\Vert V-V' \right\Vert}^2 =\sum_{ij}(V_{ij}-V'_{ij})^2
min∥V−V′∥2=ij∑(Vij−Vij′)2
其中V
是原始矩阵,V'
是分解后的矩阵重构而成的矩阵,乘法更新规则如下,首先是H
矩阵,权矩阵:
H
a
μ
←
H
a
μ
(
W
T
V
)
a
μ
(
W
T
W
H
)
a
μ
H_{a\mu}\leftarrow H_{a\mu}\frac{(W^TV)_{a\mu}}{(W^TWH)_{a\mu}}
Haμ←Haμ(WTWH)aμ(WTV)aμ
其中a
和mu
指的是矩阵的第a
行第mu
列元素,当分母的等式为0的时候,对应位置元素不做更新。
接下来是W
矩阵,基矩阵:
W
i
a
←
W
i
a
(
V
H
T
)
i
a
(
W
H
H
T
)
i
a
W_{ia}\leftarrow W_{ia}\frac{(VH^T)_{ia}}{(WHH^T)_{ia}}
Wia←Wia(WHHT)ia(VHT)ia
其中i
和a
指的是矩阵的第i
行第a
列元素,当分母的等式为0的时候,对应位置元素不做更新。
说明
非负矩阵分解就是将原有矩阵分解为基矩阵和权矩阵,其中基矩阵能够很好的描述概括原有矩阵的特征信息,例如原图是一张人脸,那么基矩阵中的内容就是人的五官特征。此外,经过压缩的基矩阵可以降低维度,减少计算量。
流量矩阵预测的文章中,就是参考非负矩阵分解,将每一个时间片的流量矩阵分解成基矩阵和权矩阵,再将多个时间片逐个计算,最终得到下一个时间片的基矩阵和权矩阵,完成预测。