极限学习机在回归拟合与分类任务中的对比实验研究
本项目致力于在 MATLAB 环境下探索极限学习机(Extreme Learning Machine, ELM)在解决不同类型机器学习任务中的表现。通过构建统一的 ELM 算法框架,项目针对非线性回归预测与多类别模式识别两大核心任务进行了深入的对比实验与性能校验。
项目核心功能特性
- 双任务支持: 系统集成了完整的回归与分类算法逻辑,能够处理连续数值预测任务(如 Sinc 函数拟合)以及离散标签分类任务(如多中心高斯分布识别)。
- 高效训练机制: 利用随机生成的输入权重与偏置,结合 Moore-Penrose 广义逆矩阵运算,实现了单步解析求解,完全避免了传统反向传播算法中的迭代与局部极小值问题。
- 自动化数据预处理: 内置数据标准化流水线,自动将原始特征映射至指定区间,确保模型在处理不同量纲数据时的数值稳定性。
- 多维度评价体系: 回归任务采用均方误差(MSE)与决定系数(R²)进行评估;分类任务通过准确率及混淆矩阵进行多视角性能展现。
- 交互式可视化设计: 系统生成包括拟合曲线对比图、分类预测点散点图以及热力图式混淆矩阵,直观展示模型在测试集上的泛化效果。
实现逻辑说明
项目代码逻辑结构严密,主要分为以下几个阶段:
- 数据生成与划分:
*
回归部分: 基于 $y = sin(|x|)/|x|$ 函数添加高斯噪声,生成非线性样本,并按照 8:2 的比例随机划分训练集与测试集。
*
分类部分: 在二维空间中生成四个具有不同均值中心的高斯分布簇,并进行 One-hot 编码转换,同样进行 8:2 的随机样本划分。
- 数据标准化: 采用 mapminmax 函数对输入特征及回归目标进行归一化处理,将数据范围缩放至 [0, 1],从而平衡各维度权重的影响。
- 模型参数配置: 针对不同任务灵活设置隐含层神经元数量(回归 30 个,分类 50 个),并选用 Sigmoid 激活函数作为非线性映射核心。
- 核心训练过程:
* 随机初始化训练权重 $W$ 和偏置 $B$。
* 通过激活函数计算隐含层输出矩阵 $H$。
* 应用广义逆矩阵(Moore-Penrose Pseudoinverse)直接计算输出权重矩阵 $beta$,建立 $H$ 与目标 $T$ 之间的映射。
- 预测与后处理:
* 回归任务将预测值进行反归一化,恢复真实量纲。
* 分类任务通过对输出得分矩阵进行 argmax 运算,确定最终预测的类别标签。
- 可视化与报告: 统计实验误差,生成控制台性能报告,并绘制多组对比图表。
关键函数与算法细节分析
- 随机权重映射: 与深度学习不同,ELM 的输入层权重与隐含层偏置在初始化后固定不变。这种特性使得模型训练的本质转化为线性最小二乘问题。
- Moore-Penrose 广义逆: 在核心训练算法中,利用广义逆求解 $beta = H^{dagger}T$。这一步骤保证了即使隐含层输出矩阵 $H$ 不是满秩或非方阵时,依然能获得范数最小的最小二乘解,从而增强模型的泛化性。
- 激活函数选择: 代码支持多种激活函数实现,包括 Sigmoid、Sine、Hardlim 及 ReLU。实验中主要采用 Sigmoid 函数,其良好的平滑特性有利于捕捉非线性回归中的细微波动。
- One-hot 编码策略: 在分类任务中,将多分类标签转化为由 0 和 1 组成的得分阵,使模型能够输出各类的置信度,这在多类别场景下提升了分类边界的鲁棒性。
使用方法
- 启动 MATLAB 软件(建议 2018b 及以上版本)。
- 确保工作目录包含编写好的 ELM 核心逻辑函数与主程序文件。
- 直接运行主程序脚本。
- 程序将自动生成三组可视化图形,并在控制台输出回归 MSE、R² 以及分类准确率。
- 用户可根据需求调整脚本中的
nHidden(隐含层节点数)或 actFun(激活函数类型)以观察对模型性能的影响。
系统要求
- 环境: MATLAB R2016a 或更高版本。
- 工具箱: 建议安装 Statistics and Machine Learning Toolbox(用于部分绘图与数据处理)以及 Neural Network Toolbox(用于 mapminmax 函数),若未安装相关工具箱,需自定义对应的数值归一化逻辑。
- 硬件: 无特殊硬件要求,普通 PC 环境即可实现秒级训练。