声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类算法的家人,可关注我的VX公众号:python算法小当家,不定期会有很多免费代码分享~
最新SCI算法:常青藤优化算法(IVY)原理及应用 Python代码
常青藤优化算法(IVY)是元启发式算法领域的最新研究,有多新?如下图,出版日期2024年7月8日。快来尝尝鲜,早用早发文!!!
IVY算法灵感来源于常春藤植物的生长模式,模拟了该植物的协调有序种群增长和扩展进化。和其他的动物行为算法相比,可以说是创意十足。
原作者通过12个工程优化问题的测试,充分证明了LVY算法的优越性;尤其是在解决优化问题方便的强大竞争力。
本期小编将复现该算法的Python算法,进行算法性能测试的同时将LVY算法应用于超参数优化。完整代码获取见文末
算法原理介绍
1、种群初始化
IVYA 以常春藤植物群体为模型,每个个体代表一个潜在的解决方案。初始化时,种群中的每个个体(即常春藤)的位置是随机生成的,这些位置代表了搜索空间中的潜在值。
2、生长速率模型
该算法采用一个微分方程来模拟常春藤的生长速率 G v ( t ) G_v(t) Gv(t)。该方程考虑了生长速率与时间的关系,通过调整生长速率和一个校正因子 ϕ ( G v ( t ) ) \phi(G_v(t)) ϕ(Gv(t)),来模拟常春藤对环境的适应和资源获取策略。
d G v ( t ) d t = ψ ⋅ G v ( t ) ⋅ ϕ ( G v ( t ) ) \frac{dG_v(t)}{dt} = \psi \cdot G_v(t) \cdot \phi(G_v(t)) dtdGv(t)=ψ⋅Gv(t)⋅ϕ(Gv(t))
其中 ψ \psi ψ和 ϕ \phi ϕ 分别表示生长速率和校正因子。
3、导向生长和扩散
在算法的迭代过程中,每个常春藤个体根据其附近的其他常春藤信息来确定生长方向,模拟了常春藤在自然界中通过向光源生长和依附于其他植物或结构来优化其生存和生长的行为。
4、适应性生长
常春藤个体根据适应度(即解决方案的质量)选择其生长路径,优先选择适应度最高的邻近个体作为生长方向。这一策略有助于算法快速定位到更优的解决方案区域。
5、种群更新和选择
算法每一次迭代结束时,会根据个体的适应度评估结果更新种群,保留适应度较高的个体,淘汰适应度较低的个体,从而实现算法对优秀解决方案的收敛。
6、算法伪代码
为方便读者理解,作者给出了算法的伪代码,十分清晰,再结合代码就能充分掌握该算法的来龙去脉!!!
基准函数测试
篇幅有限,小编展示算法在下面四个测试函数的表现,函数公式如下:
f ( x 1 ) = ∑ i = 1 n x i 2 f(x_1) = \sum_{i=1}^{n} x_i^2 f(x1)=i=1∑nxi2
f ( x 2 ) = ∑ i = 1 n ∣ x i ∣ + ∏ i = 1 n ∣ x i ∣ f(x_2)= \sum_{i=1}^{n} |x_i| + \prod_{i=1}^{n} |x_i| f(x2)=i=1∑n∣xi∣+i=1∏n∣xi∣
f ( x 3 ) = ∑ i = 1 n ( ∑ j = 1 i x j ) 2 f(x_3)= \sum_{i=1}^{n} \left(\sum_{j=1}^{i} x_j\right)^2 f(x3)=i=1∑n(j=1∑ixj)2
f ( x 4 ) = max ( ∣ x 1 ∣ , ∣ x 2 ∣ , … , ∣ x n ∣ ) f(x_4)=\max(|x_1|, |x_2|, \dots, |x_n|) f(x4)=max(∣x1∣,∣x2∣,…,∣xn∣)
测试结果如下,可以发现LVY算法的收敛速度是非常之快,并且其优化结果也是其他优化算法远不能及的,真的是amazing!!!
LVY-XGBoost分类预测
LVY凭借其强大的性能,可以帮助我们高效的寻找到分类模型的最佳参数组合,对我这种选择困难人群来说就是最好的工具。同时,LVY参数寻优不仅增加模型的创新深度,也增加参数选择结果的可信度。
下面就开始探究一下LVY优化XGBoost分类预测中参数寻优的效果。首先确定一下优化的模型参数如下:
num_leaves, learning_rate, colsample_bytree, subsample, max_depth
输入的数据为多输入单输出4分类数据,后续我们要替换其他数据也是十分方便的,直接把自己的数据复制到当前表格中,目标列放最后就行。下图为收敛曲线可视化,可以发现在17次迭代左右模型就已经收敛了,优化速度是相当之快!!!
运行代码的过程中,最优参数、适应度都会被打印出来,方便我们第一时间掌握优化情况;迭代结束后会打印出5个最后参数的具体情况,并保留最优参数训练好的模型。
# 保存训练好的模型joblib.dump(model, 'xgboost_optimized_model.pkl')
最后我们直接调用保存好的最后模型,运行结果如下:
代码获取
如需代码请关注 VX公众号 回复关键词:LVY
定制其他智能算法改进及应用可后台私信我~