基于PSO-GSA混合优化算法的支持向量机回归与分类预测系统
项目介绍
本项目实现了一种将粒子群优化算法(PSO)与万有引力搜索算法(GSA)深度融合的混合启发式优化系统,专门用于自动寻优支持向量机(SVM)中的关键超参数:惩罚因子 C 和核函数参数 g。该系统解决了传统手动调参效率低下且难以获取全局最优解的问题。通过结合 PSO 的社会信息共享能力与 GSA 的非线性群体互动特性,该算法在保持快速收敛的同时,显著增强了跳出局部最优的能力,能够为非线性回归和复杂分类任务提供高精度的预测模型。
功能特性
- 混合动力机制:融合了 PSO 的速度更新逻辑与 GSA 的质量引力机制,利用加速度引导粒子探索,利用全局最优位置指导粒子开发。
- 双任务支持:系统架构兼容回归预测(SVR)与分类任务(SVC),通过简单的标志位切换即可适应不同的应用场景。
- 内建交叉验证:采用 5 折交叉验证(5-Fold Cross-Validation)计算适应度值,有效防止模型过拟合,确保寻优参数的泛化性能。
- 全流程自动化:涵盖从合成数据生成/预处理、参数空间初始化、启发式迭代寻优到最终模型评估与可视化的全过程。
- 性能评估矩阵:提供 RMSE、MAE、R² 等多维度回归分析指标,并实时绘制寻优进化曲线与预测对比图。
系统要求
- MATLAB R2018b 或更高版本
- Statistics and Machine Learning Toolbox(统计与机器学习工具箱)
算法实现逻辑
系统的核心执行流程严格遵循以下步骤:
- 数据预处理阶段
* 生成包含随机噪声的非线性信号作为模拟输入。
* 自动执行训练集与测试集的划分(默认比例 8:2)。
* 使用 mapminmax 函数将特征空间与响应空间映射至 [0, 1] 区间,消除量纲差异,加速支持向量机的收敛。
- PSO-GSA 混合寻优迭代
*
种群初始化:在设定的上下界(lb, ub)内随机生成粒子的位置(C 和 g)与速度。
*
适值计算:每个粒子根据当前坐标建立 SVM 模型,并以 5 折交叉验证的偏差(Loss)作为适应度评分。
*
引力场模拟(GSA 逻辑):计算引力常量 G 的指数衰减,根据粒子的适值优劣分配质量 M。计算各粒子间的万有引力,进而推导加速度 acc。
*
混合速度更新(PSO 逻辑):结合惯性权重、GSA 提供的加速度(认知项)以及指向全局最优(best_pos)的拉力(社会项)来综合更新粒子速度。
*
边界控制:对更新后的粒子坐标进行强制约束,确保 C 和 g 始终处于预设的搜索空间内。
- 最终模型评估
* 提取迭代过程总生成的全局最优参数。
* 使用最优化参数在完整的训练集上重新训练最终的 SVM 模型。
* 对测试集进行预测,并将预测结果实施反归一化还原,以计算真实物理量下的误差指标。
关键函数与实现细节分析
适应度评价函数
这是优化的目标核心。函数通过接收当前迭代产生的 [C, g] 参数向量,调用 fitrsvm 或 fitcsvm 训练模型。其通过 'KFold' 参数开启 5 折交叉验证,利用 kfoldLoss 返回平均预测误差。为了增强系统的稳定性,代码包含了一个异常处理机制,若 SVM 训练因参数极端而失败,将返回一个巨大的惩罚值(1e10),引导种群避开该无效区域。
GSA 物理机制实现
代码通过特定的数学转换实现引力机制:首先计算引力常量 G = 100 * exp(-20 * t / max_iter),确保搜索在前期具有探索性,后期具有稳定性。质量 M 的计算基于适值归一化,使得适应度更好的粒子具有更大的质量,从而产生更强的引力吸引其他粒子。
混合速度更新公式
该实现不同于标准 PSO,其速度逻辑被重构为:
速度 = 惯性权重 * 旧速度 + 认知系数 * 随机数 * GSA加速度 + 社会系数 * 随机数 * (全局最优 - 当前位置)
这一改进使得粒子的运动方向不仅受到自身经验和群体经验的影响,还受到群体间“万有引力”的物理扰动,极大地丰富了种群的多样性。
回归性能指标
代码实现了四个关键指标的自动计算:
- RMSE (均方根误差):衡量预测值与真值偏离程度的灵敏度。
- MAE (平均绝对误差):反映预测误差的实际量级。
- R² (决定系数):评估模型对原始数据波动的解释能力。
使用方法
- 打开 MATLAB 环境,将工作目录切换至项目根目录。
- 直接运行主脚本函数。
- 系统将自动开始迭代并在命令行窗口打印每一代的寻优进度、最优参数结果及各评估指标。
- 运行结束后,系统会自动弹出包含进化特征曲线及回归预测对比的图形界面。
- 若需应用到自有数据,仅需修改数据准备部分的 table 或 array 读取逻辑,并确保输入变量的格式与代码要求的矩阵形式一致。