麻雀优化算法 优化XGBoost的参数 python代码

article/2025/9/23 10:29:20

文章目录

  • 麻雀优化算法
  • 麻雀优化算法的改进
    • 加入Ten混沌序列
  • XGBoost原理
  • 麻雀优化算法优化XGBoost
    • 参数范围
    • 部分代码
    • 画图
  • 优化结果
    • 评价结果和运行时间
    • 适应度曲线
    • 训练集结果
    • 测试集结果


麻雀优化算法

 麻雀优化算法是2020年提出来的,该算法利用麻雀的角色分工和协作机制高效搜索,具有全局优化性能好、寻优性能强的特点,适合与其他技术相融合以改进算法性能。具体的代码可以看我写的这一篇。麻雀优化算法的python实现

麻雀优化算法的改进

加入Ten混沌序列

 Tent混沌序列,用此混沌序列对部分陷入局部最优的个体进行混沌扰动,促使算法跳出限制继续搜索。Tent混沌序列产生初始种群Tent映射表达式为,
在这里插入图片描述
 详细的算法过程见论文

吕鑫,慕晓冬,张钧,王震.混沌麻雀搜索优化算法[J].北京航空航天大学学报,2021,47(08):1712-1720.

XGBoost原理

 这几年来各种机器学习比赛中什么算法风头最盛,XGBoost可谓是独孤求败了。从2016年开始,各大竞赛平台排名前列的解决方案逐渐由XGBoost算法统治,业界甚至将其称之为“机器学习竞赛的胜利女神”。Github上甚至列举了在近年来的多项比赛中XGBoost斩获的冠军列表,其影响力可见一斑。
它由陈天奇所设计,致力于让提升树突破
 自身的计算极限,以实现运算快速,性能优秀的工程目标。和传统的梯度提升算法相比,XGBoost进行了许多改进,它能够比其他使用梯度提升的集成算法更加快速,并且已经被认为是在分类和回归上都拥有超高性能的先进评估器。
 该算法在梯度提升决策树(GBDT)算法的基础上对损失函数进行二阶泰勒展开并且添加了正则项,有效地避免了过拟合同时加快了收敛的速度。XGBoost算法可以表示成一种加法的形式,如式所示, 代表第 个子模型,
在这里插入图片描述
 XGBoost的目标函数由损失函数和正则项两个部分组成,表示前 次迭代的预测值并且.他们防止决策树过拟合或过于复杂。
在这里插入图片描述
 对式所示的目标函数使用泰勒公式展开可得:
在这里插入图片描述
 主要原理可以参考其他博客。

麻雀优化算法优化XGBoost

 主要对XGBoost中的n_estimator,learning_rate,max_depth,gamma这四个参数进行优化。以R2为目标函数,进行寻优。使用的是python自带的数据集——波士顿房价数据集。

参数说明
n_estimator也作num_boosting_rounds这是生成的最大树的数目,也是最大的迭代次数。
learning_rate每一步迭代的步长,很重要。太大了运行准确率不高,太小了运行速度慢。我们一般使用比默认值小一点,0.1左右就很好。
max_depth我们常用3-10之间的数字。这个值为树的最大深度。这个值是用来控制过拟合的。max_depth越大,模型学习的更加具体。设置为0代表没有限制,范围: [0,∞]
gamma系统默认为0,我们也常用0。在节点分裂时,只有分裂后损失函数的值下降了,才会分裂这个节点。gamma指定了节点分裂所需的最小损失函数下降值。 这个参数的值越大,算法越保守。因为gamma值越大的时候,损失函数下降更多才可以分裂节点。所以树生成的时候更不容易分裂节点。范围: [0,∞]

参数范围

'''分别为n_estimator,learning_rate,max_depth,gamma四个参数的范围'''
UP = [1500, 1, 500, 1]
DOWN = [0.1, 0.1, 1, 0.1]

部分代码

def training(X):temp1 = model.score(X_test, y_test)r2 = 1 - temp1print(r2)return r2
UP = [1500, 1, 500, 1]
DOWN = [0.1, 0.1, 1, 0.1]
# 开始优化
#SSA
ssa = SSA(training, n_dim=4, pop_size=30, max_iter=100, lb=DOWN, ub=UP,verbose=True)
ssa.run()
print('best_params is ', ssa.gbest_x)
print('best_precision is', ssa.gbest_y)
# ten-SSA优化
pop = 30 #种群数量
MaxIter = 100
dim =4
fobj = training
lb = [ 0.1, 0.1, 1, 0.1]
ub =[1500, 1, 500, 1]
GbestScore,GbestPositon,Curve = Tent_SSA.Tent_SSA(pop,dim,lb,ub,MaxIter,fobj)

画图

plt.plot(Curve,'r-',linewidth=2,label='Tent_SSA')
plt.plot(ssa.gbest_y_hist, label='SSA')
plt.xlabel('迭代次数')
plt.ylabel('适应度值')
a = ssa.gbest_y_hist
plt.legend()
plt.grid()
#plt.savefig('SSA与Ten_SSA.png', dpi=500, bbox_inches='tight')
plt.show()

优化结果

评价结果和运行时间

在这里插入图片描述

适应度曲线

在这里插入图片描述

训练集结果

在这里插入图片描述

测试集结果

在这里插入图片描述
 可以看出预测效果很好,精度很高。


http://chatgpt.dhexx.cn/article/sHLJjf9x.shtml

相关文章

KNN算法优化

在之前所写的KNN算法python实现里,KNN对k的选取很敏感,因为它给所有的近邻分配相同权重,无论距离测试样本有多远。为了降低该敏感性,可以使用加权KNN,给更近的近邻分配更大的权重,给较远的样本权重相应减少…

【常见的优化算法介绍】

常见的优化算法介绍 1. 批量梯度下降算法(batch gradient descent BGD) 每次迭代都需要把所有样本都送入,这样的好处是每次迭代都顾及了全部的样本,做的是全局最优化,但是有可能达到局部最优。 2. 随机梯度下降算法(…

常用优化算法介绍

作者:Walker 在机器学习的世界中,通常我们会发现有很多问题并没有最优的解,或是要计算出最优的解要花费很大的计算量,面对这类问题一般的做法是利用迭代的思想尽可能的逼近问题的最优解。我们把解决此类优化问题的方法叫做优化算法,优化算法本质上是一种数学方法,常见的…

十大经典算法及其优化

本文转自:https://blog.csdn.net/qq_40803710/article/details/80642703 算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn)&#…

虚拟机里CDlinux 里的水滴 minidwep-gtk

假如什么都没有使用虚拟机打开这个系统,就搞这个 会显示 下方 表示 网卡 必须是3070 或者 8187的 网卡,自带的网卡是不支持的

CDLINUX——minidwep-gtk

1.下载CDLinux http://fastsoft.onlinedown.net/down/minidwep.zip 解压后是 2.使用虚拟机安装iso 注:版本选择“其他linux 2.6x内核” 安装参考:http://www.downza.cn/soft/12715.html 3.使用 使用参考:http://soft.onlinedown.net/s…

CDliux--minidwep 无线密码渗透测试

CDliux–minidwep 无线密码破解渗透测试 一. 工具准备 1.首先下载CDLinux 用虚拟机安装,教程有很多 CDLINUX:cdlinux 2.支持cdlinux 的无线网卡选择RT 3070/或者 RT8187 某宝上有很多 二.渗透测试 1.cdlinux 安装好后链接无线网卡 2.打开minidwep-gtk …

IPWorks S/MIME Delphi Edition

IPWorks S/MIME是一套用于电子邮件加密和文档安全的综合组件。IPWorks S/MIME使用公钥密码标准(PKCS)实现加密和解密的S/MIME标准。 IPWorks S/MIME包括通用的S/MIME组件以及支持S/MIME的IPWorks POP3、IMAP、SMTP、FileMailer和HTMLMailer组件版本。还…

MinIO客户端mc使用

官网: 英文网址(最好查看英文网址):https://min.io/中文网址(没有及时更新,容易被坑):http://www.minio.org.cn/ 使用的 minio 版本是:RELEASE.2021-11-* 一、MinIO 客…

MinIO的介绍以及简单的使用

什么是MinIO MinIO是在GUN Affero通用公共许可证 v3.0 下发布的高性能对象存储.他与AmazonS3云存储服务API兼容.使用MinIO为机器学习,分析和应用程序数据工作负载构建高性能基础架构. MinIO是一个高兴能的对象存储,什么是对象存储(Object Storage Service),对象存储是支持海量用…

【LWIP】stm32用CubeMX(6.4版)配置LwIP+Ping+TCPclient+TCPserver发送信息到PC(操作部分)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言零、更新(2022.08.07)一、实验平台二、手把手全程配置步骤1.配置电脑环境2.配置cubeMX3.配置MDK(Keil5)4.配置TC…

minicap介绍

从WEB 端批量移动设备管理控制工具 STF 的环境搭建和运行文章了解到STF这个工具,然后试用了一下。最近在做一个测试工具,发现Android原生的截图工具截图非常缓慢,然后想起了stf工具中截图非常快,甚至连执行monkey的动作都能在web端…

​ MinIO​使用

引言:为什么要使用minio MinIO是对象存储服务,它基于Apache License 开源协议,兼容Amazon S3云存储接口。适合存储非结构化数据,如图片,音频,视频,日志等。对象文件最大可以达到5TB。类似于腾讯的oss或者阿…

MiniApp Dev

小程序开发 MiniApp Dev 2_WinkeyTseng_YongTai的博客-CSDN博客 MiniApp Dev 3_WinkeyTseng_YongTai的博客-CSDN博客 MiniApp Dev 4_spencer_tseng的博客-CSDN博客

MinIO的简单实用(一)

一、什么是MinIO MinIO是在GNU Affero 通用公共许可证v3.0下发布的高性能对象存储。它与AmazonS3云存储服务API兼容。使用MinIO为机器学习、分析和应用程序工作负载构建高性能基础架构。 MinIO是高性能对象存储,什么是对象存储(Object Storage Service&…

取代奶瓶Minidwep-gtk破解WPA 全攻略

原文地址为: 取代奶瓶Minidwep-gtk破解WPA 全攻略 取代奶瓶Minidwep-gtk 破 WPA 全攻略 目录 1、 CDlinux 下使用 minidwepgtk 获取握手包并使用自带的字典破解 2、 自带的字典破解不出密码时使用 U 盘外挂字典继续暴力破解密码 3、 将握手包拷贝到 Windows 系统下…

Minidwep-gtk字典 破 WPA

取代奶瓶Minidwep-gtk 破 WPA 全攻略 目录 1、 CDlinux 下使用 minidwepgtk 获取握手包并使用自带的字典破解 2、 自带的字典破解不出密码时使用 U 盘外挂字典继续暴力破解密码 3、 将握手包拷贝到 Windows 系统下使用 ewsa 工具高速破解密码 4、破解 WPA 加密“握手包”字典的…

无线密码破解----minidwep-gtk的PIN破解方法

原文地址为: 无线密码破解----minidwep-gtk的PIN破解方法 使用虚拟机对minidwep-gtk进行PIN破解 用CDLINUX支持8187和3070_30211版.iso系统PJpin码 1.用虚拟机的好处是方便,可以一边破解,一边上网做其他事情。 虚拟机的安装非常简单&#xf…

完整安装minidwep-gtk教程

完整安装minidwep-gtk教程 一:安装Aircrack-ng 安装依赖软件包 sudo apt-get install build-essential libssl-dev iw 下载软件包并解压缩 wget http://download.aircrack-ng.org/aircrack-ng-1.1.tar.gz tar-zxvf aircrack-ng-1.1.tar.gz cd aircrack-ng-1.1 …

移动网优大神VoLTE学习笔记(五):被叫信令流程

文/张阳,本文来源于微信公众号:网优小谈(wireless_talk) VoLTE的被叫信令流程相比主叫信令流程要复杂一点,一般通信系统的被叫信令流程相比主叫信令流程都要复杂一点,因为往往不知道用户的位置需要进行相应…