


该代码实现了一个基于粒子群优化(PSO)算法优化支持向量回归(SVR) 的预测系统,并集成了SHAP值分析用于模型解释。以下是对代码的全面分析:
一、研究背景
- 支持向量回归(SVR) 是机器学习中常用的回归方法,但其性能高度依赖参数(惩罚因子
c和核函数参数g)。 - 粒子群优化(PSO) 是一种群体智能优化算法,可用于自动搜索最优参数,避免手动调参的盲目性。
- SHAP值 是基于博弈论的特征重要性解释方法,能量化每个特征对预测结果的贡献,提升模型可解释性。
- 本研究将三者结合,构建了一个"优化 + 预测 + 解释"的完整回归建模流程。
二、主要功能
- 数据预处理:归一化、训练/测试集划分、样本打乱。
- PSO优化SVR参数 :自动搜索最优
c和g。 - SVR建模与预测:训练模型并预测训练集和测试集。
- SHAP值计算与可视化:分析各特征对预测的贡献。
- 结果对比:对比优化前后的SVR性能(RMSE、R²、MAE)。
- 可视化输出:包括优化曲线、雷达图、预测对比图、百分比误差图、拟合图、SHAP蜂群图与条形图。
- 新数据预测:支持对新输入数据进行预测并保存结果。
三、算法步骤
- 数据导入与归一化
- 读取Excel数据,特征归一化到[0,1]。
- 数据集划分
- 按比例划分训练/测试集,可选是否打乱样本。
- PSO优化SVR参数
- 初始化粒子群(支持混沌映射初始化)。
- 每次迭代更新粒子速度与位置,适应度函数为SVR在验证集上的RMSE。
- 训练SVR模型
- 使用最优参数训练SVR模型。
- 预测与反归一化
- 对训练集和测试集进行预测,并将结果反归一化回原始尺度。
- 性能评估
- 计算RMSE、R²、MAE,并与未优化SVR对比。
- SHAP分析
- 遍历所有特征组合,计算每个特征的Shapley值。
- 绘制蜂群图(SHAP值分布)和条形图(特征重要性)。
- 可视化与结果保存
- 输出多种图表并保存为高清PNG。
- 保存精度指标到Excel。
四、技术路线
原始数据
↓
数据归一化 + 划分
↓
PSO优化SVR参数(混沌初始化)
↓
训练优化SVR模型
↓
预测 + 反归一化
↓
性能对比(优化 vs 未优化)
↓
SHAP值计算与可视化
↓
新数据预测
五、公式原理
1. SVR目标函数
支持向量回归通过最小化以下目标函数:
min12∥w∥2+C∑i=1nLϵ(yi,f(xi)) \min \frac{1}{2} \|w\|^2 + C \sum_{i=1}^{n} L_\epsilon(y_i, f(x_i)) min21∥w∥2+Ci=1∑nLϵ(yi,f(xi))
其中:
- CCC为惩罚因子(对应代码中的
c) - LϵL_\epsilonLϵ 为 ϵ\epsilonϵ-不敏感损失函数
- 核函数采用RBF核:$K(x_i, x_j) = e^{-\gamma |x_i - x_j|^2} ),(\gamma) 对应代码中的
g
2. PSO更新公式
速度更新:
vit+1=wvit+c1r1(pbesti−xit)+c2r2(gbest−xit) v_{i}^{t+1} = w v_i^t + c_1 r_1 (pbest_i - x_i^t) + c_2 r_2 (gbest - x_i^t) vit+1=wvit+c1r1(pbesti−xit)+c2r2(gbest−xit)
位置更新:
xit+1=xit+vit+1 x_{i}^{t+1} = x_i^t + v_i^{t+1} xit+1=xit+vit+1
其中:
- www:惯性权重(动态递减)
- c1,c2c_1, c_2c1,c2:学习因子
- r1,r2r_1, r_2r1,r2:随机数
3. SHAP值计算公式
对于特征 jjj,其Shapley值为:
ϕj=∑S⊆F∖{j}∣S∣!(∣F∣−∣S∣−1)!∣F∣![fS∪{j}(xS∪{j})−fS(xS)] \phi_j = \sum_{S \subseteq F \setminus \{j\}} \frac{|S|!(|F| - |S| - 1)!}{|F|!} \left[ f_{S \cup \{j\}}(x_{S \cup \{j\}}) - f_S(x_S) \right] ϕj=S⊆F∖{j}∑∣F∣!∣S∣!(∣F∣−∣S∣−1)![fS∪{j}(xS∪{j})−fS(xS)]
其中:
- FFF 为所有特征集合
- fS(xS)f_S(x_S)fS(xS) 为使用特征子集 SSS 的预测值
- 权重为所有可能子集的组合数占比
六、参数设定
| 参数 | 值 | 说明 |
|---|---|---|
| 种群数 NNN | 10 | PSO粒子数 |
| 最大迭代次数 | 30 | PSO迭代次数 |
| ccc 搜索范围 | [0.1, 100] | 惩罚因子 |
| ggg 搜索范围 | [0.1, 100] | 核函数参数 |
| 惯性权重 www | [0.6, 0.9] | 动态递减 |
| 学习因子 c1,c2c_1, c_2c1,c2 | 2 | 自我与社会认知系数 |
| 速度范围 | [2, 6] | 限制粒子移动步长 |
| 混沌映射 | tententen ogisticogisticogistic sinesinesine 等 | 初始化种群,提高多样性 |
七、运行环境
-
编程语言:MATLAB2018+
-
数据格式 :Excel文件(
.xlsx)
八、应用场景
- 回归预测类任务:如房价预测、销量预测、能耗预测、股票价格预测等。
- 需要模型可解释性的场景:如金融风控、医疗诊断、工业故障诊断,要求说明哪些特征影响预测结果。