【超参数寻优】粒子群算法(PSO) 超参数寻优的python实现
粒子群优化算法(Particle swarm optimization,PSO)是模拟鸟群捕食行为的优化算法。不同于遗传算法(Genetic Alogrithm,GA),粒子群算法是有记忆的,之前迭代过程中的最优位置和最优方向都会保留下来并作用于粒子群的更新【参考资料1】。
一、算法原理
1、粒子群算法的名词解释
粒子群长度:粒子群长度等于每一个参数取值范围的大小。
粒子群维度:粒子群维度等于待寻优参数的数量。
粒子群位置:粒子群位置包含参数取值的具体数值。
粒子群方向:粒子群方向表示参数取值的变化方向。
适应度函数:表征粒子对应的模型评价指标。
pbest:(局部最优)pbest的长度等于粒子群长度,表示每一个参数取值的变化过程中,到目前为止最优适应度函数值对应的取值。
gbest:(全局最优)gbest的长度为1,表示到目前为止所有适应度函数值中最优的那个对应的参数取值。
惯性因子 w w w:惯性因子表示粒子保持的运动惯性。
局部学习因子 c 1 {c_1} c1:表示每个粒子向该粒子目前为止最优位置运动加速项的权重。
全局学习因子 c 2 {c_2} c2:表示每个粒子向目前为止全局最优位置运动加速项的权重。
2、粒子更新
粒子方向更新方程为:
v i = w × v i + c 1 × r a n d ( ) × ( p b e s t i − x i ) + c 2 × r a n d ( ) × ( g b e s t − x i ) {v_i} = w \times {v_i} + {c_1} \times rand() \times (pbes{t_i} - {x_i}) + {c_2} \times rand() \times (gbest - {x_i}) vi=w×vi+c1×rand()×(pbesti−xi)+c2×rand()×(gbest−xi)
其中 v i {v_i}