非负矩阵分解(Non-negative Matrix Factorization, NMF)算法的原理与实现过程
字数 1408 2025-11-19 00:53:22

非负矩阵分解(Non-negative Matrix Factorization, NMF)算法的原理与实现过程

题目描述
给定一个非负矩阵 \(V \in \mathbb{R}^{m \times n}\)(例如文档-词项矩阵或图像像素矩阵),NMF的目标是找到两个非负矩阵 \(W \in \mathbb{R}^{m \times k}\)\(H \in \mathbb{R}^{k \times n}\),使得它们的乘积近似原始矩阵:

\[ V \approx WH \]

其中 \(k\) 是预设的潜在特征维度(\(k < \min(m, n)\))。NMF通过非负性约束实现数据的部分表示和可解释性分解。

解题过程

  1. 问题形式化
    • 定义损失函数:常用欧几里得距离(Frobenius范数)或KL散度。以Frobenius损失为例:

\[ \min_{W \ge 0, H \ge 0} \| V - WH \|_F^2 \]

  • 非负约束 \(W \ge 0, H \ge 0\) 确保分解结果具有物理意义(如词频、像素强度均为非负值)。
  1. 优化目标展开
    • 将Frobenius范数展开为:

\[ \| V - WH \|_F^2 = \sum_{i=1}^m \sum_{j=1}^n \left( V_{ij} - (WH)_{ij} \right)^2 \]

  • 问题为非凸,但可通过交替优化 \(W\)\(H\) 来求解局部最优解。
  1. 交替最小化步骤
    • 固定 \(H\),更新 \(W\)
      目标函数对 \(W\) 求导,利用梯度下降并结合非负约束,得到乘性更新规则:

\[ W_{ik} \leftarrow W_{ik} \frac{(VH^T)_{ik}}{(WHH^T)_{ik}} \]

 此更新通过比值形式自动保持非负性,且当梯度为负时减小 $ W_{ik} $,梯度为正时增大 $ W_{ik} $。
  • 固定 \(W\),更新 \(H\)
    类似地,得到 \(H\) 的乘性更新规则:

\[ H_{kj} \leftarrow H_{kj} \frac{(W^TV)_{kj}}{(W^TWH)_{kj}} \]

 每一步更新后,$ W $ 和 $ H $ 的非负性均保持不变。
  1. 算法流程

    • 初始化:随机生成非负矩阵 \(W\)\(H\),或使用SVD等方法的非负近似。
    • 迭代直至收敛:
      1. 按上述规则更新 \(W\)
      2. 按上述规则更新 \(H\)
      3. 计算损失函数值,检查变化是否小于阈值。
    • 输出:基矩阵 \(W\) 和系数矩阵 \(H\),其中 \(W\) 的列表示潜在特征,\(H\) 的行表示特征在样本中的权重。
  2. 解释与验证

    • \(W\) 的每一列可视为一个“部分”(如主题中的关键词组合或图像中的局部特征),\(H\) 的每一行表示样本对这些部分的加权组合。
    • 通过重构误差 \(\| V - WH \|_F^2\) 评估分解质量,并可利用交叉验证选择超参数 \(k\)

关键点

  • 乘性更新规则简单且保证非负性,但可能收敛到局部最优。
  • 适用于文本主题提取(\(W\) 为主题-词分布,\(H\) 为文档-主题分布)和图像分解等场景。
非负矩阵分解(Non-negative Matrix Factorization, NMF)算法的原理与实现过程 题目描述 给定一个非负矩阵 \( V \in \mathbb{R}^{m \times n} \)(例如文档-词项矩阵或图像像素矩阵),NMF的目标是找到两个非负矩阵 \( W \in \mathbb{R}^{m \times k} \) 和 \( H \in \mathbb{R}^{k \times n} \),使得它们的乘积近似原始矩阵: \[ V \approx WH \] 其中 \( k \) 是预设的潜在特征维度(\( k < \min(m, n) \))。NMF通过非负性约束实现数据的部分表示和可解释性分解。 解题过程 问题形式化 定义损失函数:常用欧几里得距离(Frobenius范数)或KL散度。以Frobenius损失为例: \[ \min_ {W \ge 0, H \ge 0} \| V - WH \|_ F^2 \] 非负约束 \( W \ge 0, H \ge 0 \) 确保分解结果具有物理意义(如词频、像素强度均为非负值)。 优化目标展开 将Frobenius范数展开为: \[ \| V - WH \| F^2 = \sum {i=1}^m \sum_ {j=1}^n \left( V_ {ij} - (WH)_ {ij} \right)^2 \] 问题为非凸,但可通过交替优化 \( W \) 和 \( H \) 来求解局部最优解。 交替最小化步骤 固定 \( H \),更新 \( W \) : 目标函数对 \( W \) 求导,利用梯度下降并结合非负约束,得到乘性更新规则: \[ W_ {ik} \leftarrow W_ {ik} \frac{(VH^T) {ik}}{(WHH^T) {ik}} \] 此更新通过比值形式自动保持非负性,且当梯度为负时减小 \( W_ {ik} \),梯度为正时增大 \( W_ {ik} \)。 固定 \( W \),更新 \( H \) : 类似地,得到 \( H \) 的乘性更新规则: \[ H_ {kj} \leftarrow H_ {kj} \frac{(W^TV) {kj}}{(W^TWH) {kj}} \] 每一步更新后,\( W \) 和 \( H \) 的非负性均保持不变。 算法流程 初始化:随机生成非负矩阵 \( W \) 和 \( H \),或使用SVD等方法的非负近似。 迭代直至收敛: 按上述规则更新 \( W \)。 按上述规则更新 \( H \)。 计算损失函数值,检查变化是否小于阈值。 输出:基矩阵 \( W \) 和系数矩阵 \( H \),其中 \( W \) 的列表示潜在特征,\( H \) 的行表示特征在样本中的权重。 解释与验证 \( W \) 的每一列可视为一个“部分”(如主题中的关键词组合或图像中的局部特征),\( H \) 的每一行表示样本对这些部分的加权组合。 通过重构误差 \( \| V - WH \|_ F^2 \) 评估分解质量,并可利用交叉验证选择超参数 \( k \)。 关键点 乘性更新规则简单且保证非负性,但可能收敛到局部最优。 适用于文本主题提取(\( W \) 为主题-词分布,\( H \) 为文档-主题分布)和图像分解等场景。