张量分解--非负矩阵分解 (NMF)

1. 非负矩阵分解问题描述

传统的NMF问题可以描述如下:给定矩阵 V ∈ R + n × m V\in R_{+}^{n\times m} VR+n×m, 寻找非负矩阵 W ∈ R + n × r W \in R_{+}^{n \times r} WR+n×r 和非负矩阵 H ∈ R + r × m H \in R_{+}^{r \times m} HR+r×m, 使得 V ≈ A W V \approx AW VAW。可以理解为原始矩阵 V V V 的列向量是对做矩阵 A A A 中所有列向量的加权和,而权重系数就是有矩阵对应列向量的元素,故称 A A A 为基矩阵, W W W 为系数矩阵。一般情况下 r r r 的选择要比 n n n 小, 即满足 ( m + n ) r < m n (m+n)r<mn (m+n)r<mn,这时用系数矩阵代替原是矩阵,就可以实现对原是矩阵进行降维,得到数据特征的降维矩阵,从而减少存储空间减少计算机资源。

2.非负矩阵的求解

当矩阵的秩 r r r 未知的时候,只能对矩阵的秩进行不断的遍历求解。如果知道矩阵的秩,可以通过 E M EM EM 的方法对目标函数进行求解,主要思想是先对矩阵 A A A W W W进行随机猜一个值,然后进行不断地迭代,求解直到收敛。目前常用的方法有乘法更新法和 最小二乘法方法。

2.1. 乘法更新求解法

在乘法更新求解法的目标函数表达式为:
D F ( Y ∣ ∣ A X ) = 1 2 ∣ ∣ Y − A X ∣ ∣ F 2 , s . t . a i j ≥ 0 , x j t ≥ 0 , ∀ i , j , t D_{F}\left ( Y||AX \right )=\frac{1}{2}\left|| Y-AX\right||_{F}^{2}, s.t. a_{ij}\ge0, x_{jt}\ge0,\forall{i,j,t} DF(YAX)=21YAXF2,s.t.aij0,xjt0,i,j,t
对这个目标函数表达式求解 KKT 条件得到如下:
A ≥ 0 , X ≥ 0 A\ge0, X\ge0 A0,X0
▽ A D F ≥ 0 , ▽ X D F ≥ 0 \bigtriangledown_{A}D_{F}\ge0, \bigtriangledown_{X}D_{F}\ge0 ADF0,XDF0
A ∗ ▽ A D F = 0 , X ∗ ▽ X D F = 0 A\ast\bigtriangledown_{A}D_{F}=0, X\ast\bigtriangledown_{X}D_{F}=0 AADF=0,XXDF=0
其中梯度的表达式为:
▽ A D F = A X X T − Y X T , ▽ X D F = A T A X − A T Y \bigtriangledown_{A}D_{F}=AXX^{T}-YX^{T}, \bigtriangledown_{X}D_{F}=A^{T}AX-A^{T}Y ADF=AXXTYXT,XDF=ATAXATY
结合上述的两组式子得到:
A ∗ ( A X X T ) = A ∗ ( Y X T ) , X ∗ ( A T A X ) = X ∗ ( A T Y ) A\ast(AXX^{T})=A\ast(YX^{T}),X\ast(A^{T}AX)=X\ast(A^{T}Y) A(AXXT)=A(YXT),X(ATAX)=X(ATY)
即更新的规则为:
A ← A ∗ [ ( Y X T ) ⊘ ( A X X T + ε ) ] A \gets A\ast\left[(YX^{T}) \oslash(AXX^{T}+\varepsilon )\right] AA[(YXT)(AXXT+ε)]
X ← X ∗ [ ( A T Y ) ⊘ ( A T A X + ε ) ] X \gets X\ast\left[(A^{T}Y) \oslash(A^{T}AX+\varepsilon )\right] XX[(ATY)(ATAX+ε)]

2.2.最小二乘法求解法

在最小二乘法中目标函数的表达式为:
D F ( Y ∣ ∣ A X ) = 1 2 ∣ ∣ Y − A X ∣ ∣ F 2 , s . t . a i j ≥ 0 , x j t ≥ 0 , ∀ i , j , t D_{F}\left ( Y||AX \right )=\frac{1}{2}\left|| Y-AX\right||_{F}^{2}, s.t. a_{ij}\ge0, x_{jt}\ge0,\forall{i,j,t} DF(YAX)=21YAXF2,s.t.aij0,xjt0,i,j,t
对这个目标函数表达式求解 KKT 条件得到如下:
A ≥ 0 , X ≥ 0 A\ge0, X\ge0 A0,X0
▽ A D F ≥ 0 , ▽ X D F ≥ 0 \bigtriangledown_{A}D_{F}\ge0, \bigtriangledown_{X}D_{F}\ge0 ADF0,XDF0
A ∗ ▽ A D F = 0 , X ∗ ▽ X D F = 0 A\ast\bigtriangledown_{A}D_{F}=0, X\ast\bigtriangledown_{X}D_{F}=0 AADF=0,XXDF=0
其中梯度的表达式为:
▽ A D F ( Y ∣ ∣ A X ) = ∂ D F ( Y ∣ ∣ A X ) ∂ A = [ − Y X T + A X X T ] = 0 \bigtriangledown_{A}D_{F}(Y||AX)=\frac{\partial D_{F}(Y||AX)}{\partial A}=\left[-YX^{T}+AXX^{T} \right]=0 ADF(YAX)=ADF(YAX)=[YXT+AXXT]=0
▽ A D F ( Y ∣ ∣ A X ) = ∂ D F ( Y ∣ ∣ A X ) ∂ X = [ − A T Y + A T A X ] = 0 \bigtriangledown_{A}D_{F}(Y||AX)=\frac{\partial D_{F}(Y||AX)}{\partial X}=\left[-A^{T}Y+A^{T}AX \right]=0 ADF(YAX)=XDF(YAX)=[ATY+ATAX]=0
即更新的规则为:
A ← [ Y X T ( X X T ) − 1 ] + = [ Y X † ] + A \gets \left[YX^{T}\left(XX^{T}\right)^{-1}\right]_{+}=\left[YX^{\dagger }\right]_{+} A[YXT(XXT)1]+=[YX]+
X ← [ ( A T A ) − 1 A T Y ] + = [ A † Y ] + X \gets \left[(A^{T}A)^{-1}A^{T}Y\right]_{+}=\left[A^{\dagger }Y\right]_{+} X[(ATA)1ATY]+=[AY]+

3. 非负矩阵收敛证明

4. 参考资料

  1. http://www.xiongfuli.com/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/2016-01/NMF.html
  2. https://blog.csdn.net/acdreamers/article/details/44663421
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值