什么是非负矩阵分解?

非负矩阵分解(Non-negative Matrix Factorization, NMF)是一种用于将一个非负矩阵分解成两个较小的非负矩阵乘积的数学方法,它在信号处理、计算机视觉、机器学习等领域有广泛应用。

NMF的目标是找到两个非负矩阵U和V,使得它们的乘积UV尽可能接近原矩阵X,同时U和V的维数小于X的维数,以达到数据降维的目的。

非负矩阵分解的基本公式

给定一个非负的数据矩阵 X ∈ R m × n X∈R^{m×n} XRm×n,其中每一列代表一个数据点每一行代表一个特征维度。NMF的任务是寻找两个非负矩阵 U ∈ R m × k U∈R^{m×k} URm×k V ∈ R k × n V∈R^{k×n} VRk×n,使得:

X ≈ U V X ≈ UV XUV

这里, k < m i n ( m , n ) k < min(m, n) k<min(m,n) U U U 被称为基矩阵(Basic Matrix), V V V 被称为编码矩阵(Encoding Matrix)。

编码矩阵 V V V每一列表示对应原始数据点在基矩阵U下的低维表示

NMF通过最小化重构误差来逼近原始矩阵,常见的损失函数为均方误差

J N M F = ∣ ∣ X − U V ∣ ∣ F 2 J_{NMF} = ||X - UV||^2_F JNMF=∣∣XUVF2

其中

  • (X) 是非负数据矩阵。
  • (U) 和 (V) 分别是基矩阵编码矩阵
  • ∣ ∣ ⋅ ∣ ∣ F ||·||_F ∣∣F 表示矩阵的Frobenius范数。约束条件是U和V的所有元素都大于等于0。
  • ∣ ∣ X − U V ∣ ∣ F 2 ||X - UV||^2_F ∣∣XUVF2重构误差项

非负矩阵分解的优化

目标函数 J_NMF 相对于 U U U V V V 同时是非凸的,但当其中一个固定时它是凸的。因此,通常使用迭代乘子更新规则来优化U和V:

U t + 1 = U t ⊙ ( X V t T ) ( U t V V t T ) U^{t+1} = U^t \odot \frac{(XV^{tT})}{(U^tVV^{tT})} Ut+1=Ut(UtVVtT)(XVtT)

V t + 1 = V t ⊙ ( U t + 1 T X ) ( U t + 1 T U t + 1 V t ) V^{t+1} = V^t \odot \frac{(U^{t+1T}X)}{(U^{t+1T}U^{t+1}V^t)} Vt+1=Vt(Ut+1TUt+1Vt)(Ut+1TX)

其中:

  • U t U^t Ut 表示在第 t t t 次迭代时矩阵 U U U 的状态
  • U t T U^{tT} UtT 表示在第 t t t 次迭代时矩阵 U U U 的状态的装置
  • U t + 1 U^{t+1} Ut+1 是基于 U t U^t Ut V t V^t Vt 的值更新得到的下一步迭代步的矩阵 U U U 的值
  • V t V^t Vt 表示在第 t t t 次迭代时矩阵 V V V 的状态
  • V t T V^{tT} VtT 表示在第 t t t 次迭代时矩阵 V V V 的状态的装置
  • V t + 1 V^{t+1} Vt+1 是基于 U t U^t Ut V t V^t Vt 的值更新得到的下一步迭代步的矩阵 V V V 的值
    这里的符号“⊙”表示Hadamard积,即元素按位置相乘

举例说明

假设有一个非负的数据矩阵X,大小为3x5,表示三个特征维度下的五个数据点:

X = [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ] X = \begin{bmatrix} 1 & 2 & 3 & 4 & 5 \\ 6 & 7 & 8 & 9 & 10 \\ 11 & 12 & 13 & 14 & 15 \end{bmatrix} X= 161127123813491451015

我们的目标是找到两个非负矩阵U和V使得UV可以近似X,假设k=2。通过NMF算法,我们可能得到:

U = [ 0.5 0.2 1.5 0.7 2.5 1.2 ] , V = [ 2 4 6 8 10 1 1 1 1 1 ] U = \begin{bmatrix} 0.5 & 0.2 \\ 1.5 & 0.7 \\ 2.5 & 1.2 \end{bmatrix}, \quad V = \begin{bmatrix} 2 & 4 & 6 & 8 & 10 \\ 1 & 1 & 1 & 1 & 1 \end{bmatrix} U= 0.51.52.50.20.71.2 ,V=[21416181101]

然后UV的结果为:

U V = [ 0.5 ∗ 2 + 0.2 ∗ 1 . . . . . . 1.5 ∗ 2 + 0.7 ∗ 1 . . . . . . 2.5 ∗ 2 + 1.2 ∗ 1 . . . . . . ] UV = \begin{bmatrix} 0.5*2 + 0.2*1 & ... & ... \\ 1.5*2 + 0.7*1 & ... & ... \\ 2.5*2 + 1.2*1 & ... & ... \end{bmatrix} UV= 0.52+0.211.52+0.712.52+1.21..................

这个结果会尽量接近X。通过调整U和V,我们能够找到一个较好的低维表示,同时保留原始数据的特征。这种低维表示有助于数据可视化、降维和后续的机器学习任务

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不易撞的网名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值