维数约减MATLAB工具箱
项目介绍
本工具箱是一个专注于流形学习与降维算法的集成开发包,旨在为高维数据集提供有效的低维表示方案。通过利用流形学习的核心思想,该工具箱能够将复杂的原始高维特征空间映射到低维空间,同时最大限度地保留数据的局部邻域结构或全局几何形态。项目集成了多种经典的非线性与线性降维技术,包括局部线性嵌入(LLE)、等距映射(ISOMAP)以及邻域保持投影(NPE),并配套了数据生成、性能评估与可视化分析模块,能够有效缓解机器学习中的“维数灾难”问题。
功能特性
- 内置合成数据生成器:支持生成典型的三维流形数据(如 Swiss Roll),用于算法性能的基准测试。
- 多算法集成:实现了基于局部重建权重的 LLE、基于测地线距离的 ISOMAP 以及作为 LLE 线性扩展的 NPE 算法。
- 自动化流程:集成了一键式运行环境,自动完成数据初始化、算法计算、运行时间统计以及结果输出。
- 综合性能评估:针对不同算法提供相应的评估指标,包括特征值代价、测地线残差以及投影重建成本。
- 交互式可视化:提供高维原始数据与多种低维投影结果的对比图表,支持颜色映射以直观展示数据拓扑关系的保持情况。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 内置函数依赖:需要 Statistics and Machine Learning Toolbox(用于 pdist2 等距离计算)。
- 硬件建议:因 ISOMAP 涉及全图最短路径计算,对于大规模样本建议配置 8GB 以上内存。
核心实现逻辑
工具箱的执行逻辑遵循以下标准流程:
- 环境初始化与数据生成:
首先清理工作空间并关闭所有图形窗口。利用参数方程生成 1000 个样本的 Swiss Roll 数据集。该数据集在三维空间中呈螺旋状分布,是测试流形学习算法展开能力的经典数据。
- 参数配置:
统一设置算法参数,包括最近邻个数(k=12)、目标降维维度(d=2)以及欧几里得距离度量标准。
- 算法执行与计时:
依次调用各个算法模块。在计算过程中,系统会记录每个算法的运行耗时(Tic/Toc),以便进行效率对比。
- 结果可视化:
创建一个多子图画布,第一子图展示原始三维 Swiss Roll 数据,其余子图分别展示 LLE、ISOMAP 和 NPE 降维后的二维平面分布。数据点根据原始极角参数(theta)进行着色,通过观察颜色分布的连续性来评估降维质量。
- 报告输出:
在控制台实时打印算法运行状态、原始数据规格、各算法耗时以及量化的重构代价分析。
算法实现细节分析
- 局部线性嵌入 (LLE):
- 邻域搜索:使用欧氏距离寻找每个点的 K 个最近邻。
- 权重计算:求解受限线性重建问题,通过正则化处理(trace 修正)解决矩阵病态问题,确保权重之和为1。
- 特征映射:构建稀疏代价矩阵 M,通过求解其最小的非零特征值对应的特征向量来获取嵌入坐标。
- 等距映射 (ISOMAP):
- 图构建:根据最近邻关系构建带权邻接图,非邻域点距离设为无穷大。
- 最短路径:应用 Floyd-Warshall 算法计算所有点对之间的最短路径,以此近似流形上的测地线距离。
- 孤立点处理:对于不连通的子图,通过最大距离倍补法处理异常值。
- 坐标计算:利用多维尺度变换(MDS)对测地线距离矩阵进行分解,取前 d 个最大特征值对应的特征量。
- 邻域保持投影 (NPE):
- 结构提取:首先执行与 LLE 类似的局部权重计算。
- 投影优化:通过数据去中心化,将降维问题转化为寻找一个投影矩阵 P。
- 广义特征值求解:求解 XMX' a = lambda XX' a 的广义特征值问题。为了防止 XX' 矩阵奇异,引入了 1e-6 的正则化扰动。
- 样本外扩展:不同于 LLE 的直接嵌入,NPE 产出了投影矩阵,使其能够处理新的样本数据。
使用方法
- 配置路径:确保所有相关的算法函数文件均在 MATLAB 的当前工作目录或搜索路径下。
- 运行主函数:执行主程序 entry 函数(main),系统将自动开始数据生成与计算。
- 观察输出:
- 命令行窗口:查看各算法的运行时间(秒)以及具体的重构成本数值。
- 图形窗口:观察 3D 螺旋数据是否被各算法成功地“平摊”在 2D 平面上。
- 参数调整:根据具体需求,可以在主程序的参数设置区修改 k 值(邻域大小)或 N 值(样本量)来观察不同参数对流形展开效果的影响。