(一) 应用背景
在svm(支持向量机)模型训练过程中,往往存在多个变量影响模型的准确度,如惩罚因子c和径向基函数的γ参数 。为了寻找最佳的模型,我们需要对这两个变量进行寻优。常用的算法有网格搜索算法、遗传算法、粒子群算法。这里简单介绍下粒子群算法。
粒子群算法是一种进化算法,源于对鸟群捕食的研究。假设鸟群在一个空间中捕食,那么对于每一只鸟,它具有两个属性:位置和速度。假设它可以感知与食物之间的距离(称为适应度),同时鸟群之间可以互相通信分享自己的位置。每一只鸟都可以记录自己的飞行轨迹,通过学习自身的经验和同伴的经验来动态的调整飞行速度和方向,通过不断的迭代调整,不断的逼近食物。
(二) 标准粒子群算法
标准的粒子群算法的一般步骤是:
1. 初始化飞行空间,并在空间内初始化一定数量的粒子,粒子随机分布在飞行空间内,并具有随机的速度。
粒子位置表示为(D为空间维度,即需要寻优的变量个数):
粒子速度表示为:
2. 计算每个粒子的适应度。
3. 每个粒子学习自身经验,在自身飞行过程中寻找适应度最好的个体最优位置,记为pBest。
4. 每个粒子学习群体的经验,寻找整个群体飞行历史中适应度最佳的全局最优位置,记为gBest。
5. 粒子根据经验更新自身的飞行速度和位置。
速度更新公式为:
其中,w为惯性权重,和分别为个体最优和全局最优位置,rand()和Rand()为[0,1]范围内的随机数,和为学习因子