
直接上干货,今天聊点实际的——如何用粒子群算法(PSO)给最小二乘支持向量机(
LSSVM)调参。先说为什么需要这个组合,LSSVM 在分类问题上表现不错,但它的核心参
数 c(正则化系数)和 g(核函数参数)选不好,模型效果直接打折。手动调参?那得试
到猴年马月。这时候 PSO 这种群体智能算法就派上用场了。
先简单过一下 PSO 的逻辑。想象一群鸟在找食物,每只鸟(粒子)根据自己的经验和群
体的经验调整飞行方向。对应到参数优化里,每个粒子代表一组可能的(c,g),通过迭代更
新位置和速度,最终找到全局最优解。整个过程有点像参数空间的“地毯式搜索”,但比网
格搜索聪明多了。
下面直接看代码。先定义一个适应度函数,用来评估每组(c,g)的好坏。这里用分类准确率
作为评价标准:
```matlab
function accuracy = fitness(position)
% 解包参数
c = position(1);
g = position(2);
% 训练 LSSVM 模型
model = trainlssvm({X_train, Y_train, 'c', c, g, 'RBF_kernel'});
% 预测并计算准确率
Y_pred = simlssvm(model, X_test);
accuracy = sum(Y_pred == Y_test) / numel(Y_test);
end
```
这段代码的关键在于`trainlssvm`函数的参数传递。注意这里用了 RBF 核,也就是高斯核
,g 参数控制核函数的宽度。c 参数过大容易过拟合,过小则欠拟合。
接下来是 PSO 主循环。设置粒子群规模为 20,迭代 50 次:
```matlab
% 参数范围设置
c_range = [0.1, 100];
g_range = [0.01, 10];
% 初始化粒子群