基于Lee-Seung算法的非负矩阵分解经典实现
项目介绍
本项目实现了1999年发表于《自然》期刊的经典Lee-Seung非负矩阵分解(NMF)算法。该算法能够将输入的非负数据矩阵分解为两个低秩非负矩阵的乘积,在保持数据非负特性的同时实现降维和特征提取。该实现严格遵循原文提出的乘法更新规则,通过迭代优化最小化原始矩阵与重构矩阵之间的欧几里得距离(Frobenius范数),广泛应用于图像处理、文本主题分析和推荐系统等领域。
功能特性
- 经典算法实现:严格遵循Lee & Seung (1999)提出的乘法更新规则
- 自动收敛检测:支持基于容忍度的早停机制,避免不必要的迭代
- 完整结果输出:生成基矩阵、系数矩阵、收敛曲线和误差统计
- 参数灵活配置:可自定义分解秩、迭代次数和收敛精度
- 性能监控:提供运行时间统计和迭代过程可视化
使用方法
- 准备输入数据:准备一个M×N的非负实数矩阵作为输入
- 设置参数:
- 分解秩r(需满足 r < min(M,N))
- 最大迭代次数(默认1000)
- 收敛容忍度(默认1e-4)
- 运行分解算法:执行主程序开始NMF计算
- 获取结果:
- 基矩阵W(M×r)和系数矩阵H(r×N)
- 重构误差收敛曲线图
- 最终重构误差值
- 算法运行时间统计
系统要求
- MATLAB R2016a或更高版本
- 支持矩阵运算的基本MATLAB环境
- 推荐内存容量:至少能容纳3倍输入矩阵大小的内存空间
文件说明
主程序实现了非负矩阵分解的核心计算流程,包括参数初始化、迭代更新规则执行、收敛条件判断以及结果输出等功能。具体涵盖数据输入验证、矩阵分解计算、收敛过程监控、结果可视化生成和性能统计分析等完整处理环节。