基于Lee-Seung经典算法的非负矩阵分解实现
项目介绍
本项目实现了1999年《Nature》杂志上提出的经典非负矩阵分解(Non-negative Matrix Factorization, NMF)算法。该算法能够将任意非负实数矩阵分解为两个低秩非负矩阵的乘积,在数据降维、特征提取和模式识别等领域具有重要应用价值。
功能特性
- 经典算法实现:基于Lee和Seung提出的乘法更新规则
- 非负约束优化:确保分解结果的所有元素均为非负值
- 交替最小二乘法:通过交替优化基矩阵和系数矩阵来最小化重构误差
- 收敛监控:记录每次迭代的目标函数值变化,可视化收敛过程
- 广泛适用性:支持图像处理、文本挖掘、生物信息学等多种数据类型
使用方法
输入数据要求
- 输入矩阵必须为非负实数矩阵(m×n维)
- 典型应用场景:
- 图像像素矩阵
- 文档-词频矩阵
- 生物基因表达数据
输出结果
- 基矩阵W(m×k维):表示数据的基础特征模式
- 系数矩阵H(k×n维):表示原始数据在特征空间中的投影权重
- 重构误差记录:迭代过程中目标函数值的变化曲线
基本调用流程
% 加载或生成非负数据矩阵V
V = ... % m×n非负矩阵
% 设置分解的秩(特征维度)
k = ... % 正整数,通常远小于m和n
% 调用NMF主函数
[W, H, errors] = main(V, k, options);
系统要求
- MATLAB R2016a或更高版本
- 支持基本的矩阵运算功能
- 建议内存容量能够容纳输入数据矩阵的3-5倍大小
文件说明
主程序文件实现了非负矩阵分解的核心算法流程,包括参数初始化、迭代更新规则、收敛判断和结果输出等功能。具体涵盖数据预处理、基矩阵与系数矩阵的交替优化、重构误差计算与监控、以及分解结果的规范化处理等关键步骤,确保算法能够高效稳定地收敛到有意义的分解结果。