特征选择|一种提升预测模型性能的方法(原理及其优化实现,Matlab)

文章来源于我的个人公众号:KAU的云实验台,主要更新智能优化算法的原理、应用、改进
在这里插入图片描述

如今,生成的数据集呈指数级增长,这将产生具有大量特征和样本的数据集,而显然,某些特征是不相关/冗余的,它们对预测器会产生负面影响。

而特征选择作为一种能够有效降低数据维度、缩减计算成本、提高学习性能的数据预处理方法,现在已广泛地应用于机器学习和数据挖掘中。

主要的特征选择方法包括4种:过滤式、封装式、嵌入式、集成式。

本文主要介绍封装式,它的优点是:在已知后续学习算法的条件下,其选出的特征效果更优于其他方法,但对于高维数据其计算成本较大。

封装式特征选择方法可视为优化问题(准确率最高、特征选择量最少),因此可与KAU前面介绍的多种优化算法相结合,本文将多种优化算法(DBO、GWO、WOA、BWO)应用于特征选择问题,并选用了KNN、SVM、​随机森林作为分类器。

00 目录

1 特征选择相关

2 优化算法相关

2 代码目录

3 算法性能

4 源码获取

01 特征选择相关

1.1 个体的初始化及离散化

特征选择是二值决策优化问题,存在的理论解是指数级的,以1表示选择该特征,0表示不选择该特征。

而多数优化算法都是针对连续优化问题的,因此不仅要将个体的运动范围加以限制,还要将连续的位置转化为二进制。

针对上述问题,首先在个体初始化上,采用下述方法:若产生的随机数小于0.5,则赋为0,反之为1。在这里插入图片描述

其中,xji为第i个个体的第j维,d为特征数量;rand为一个随机数。其图示如下:
在这里插入图片描述

图源文献1

其次,在个体位置更新后,利用Sigmoid函数将其离散化,从而将连续位置向量映射到{0,1}:
在这里插入图片描述

在这里插入图片描述

1.2 适应度函数

特征选择作为组合优化问题,有两个主要目标。第一个目标是提高分类性能,第二个目标是所选择的特征数量尽可能少。因此其适应度函数可表达为:找到一个特征子集(即最优解的编码),使分类错误率和所选特征比率加权和最小:

在这里插入图片描述

其中,ER(D)为分类器的分类错误率,|S|是所选特征子集中特征个数,|F|是原始特征集中特征总数。α 和β 用于平衡分类错误率和所选特征比率的关系。

1.3 特征选择算法设计

有了前面两步后,特征选择模型就已经建成,可以用优化算法进行优化了,其流程如下:

在这里插入图片描述

02 优化算法相关

KAU在往期文章中更新过很多优化算法的原理及代码实现,也更新过许多原创改进算法

03 算法性能

3.1 数据集

本文选择UCI机器学习库中的数据集进行测试,直接从数据库中下载的数据为.data格式,这里KAU已将其转化为matlab更易读取的mat格式,部分数据集如下:在这里插入图片描述

3.2 评估指标

由于优化算法具有一定随机性,因此对每个数据集执行n次独立实验以降低偶然因素的影响,采用以下指标对性能进行评估。

①平均分类正确率

即n次运行后获得的平均分类性能。ACC越高则算法性能越好

在这里插入图片描述

②平均特征子集大小

即n次运行后,所选特征子集的平均大小。Size越小则特征选择算法性能越好

在这里插入图片描述

③最佳适应度

即n次运行得到的适应度中的最小值。

在这里插入图片描述

④标准差

标准差是衡量优化算法稳定性的指标,标准差的值越小,意味着算法的稳定性越强。

在这里插入图片描述

⑤平均适应度

即n次运行得到的适应度取均值。值越小则性能越好。
在这里插入图片描述

3.3 运行结果

本文选取了GWO、WOA、DBO、BWO进行优化,同时,可用的分类器包括KNN、SVM、随机森林。当然也可以添加BPNN、LSTM等分类器。部分效果,以UCI数据库中的zoo数据集为例:

SVM(左) ,RF(右)

在这里插入图片描述

KNN

在这里插入图片描述

除迭代曲线外,还会生成相应的数据文件:
在这里插入图片描述

除以上优化算法外,KAU也引入了一些原创算法,获得了更优的性能,部分效果如下:

算法 :AAMCWOA 分类器:SVM
在这里插入图片描述
在这里插入图片描述

算法:MSGWO 分类器:KNN

在这里插入图片描述
在这里插入图片描述

算法:MSIDBO 分类器:KNN
在这里插入图片描述

在这里插入图片描述

算法:MSBWO 分类器:KNN

在这里插入图片描述
在这里插入图片描述

06 源码获取

本文提供几个版本的源码以供不同的需要:

6.1免费版

包含了基本的封装式特征选择算法,代码源于一篇开源的文献,其通过PSO优化SVM的特征选择,可以帮助想要学习特征选择算法的同学。除代码外,考虑到UCI数据库多数数据都是.data格式,在Matlab中使用比较麻烦,KAU也将这些数据转换为.mat格式,更方便调用。

获取方式:公众号后台回复 FS1

6.2 付费版1

即包含了GWO、WOA、DBO、BWO优化的特征选择算法,代码是我重新写的,注释明了,运行逻辑更清晰,能够产生相应的评估指标excel文件,迭代对比曲线(Matlab代码)

获取方式:公众号后台回复 FS2

部分代码:
在这里插入图片描述

6.3 付费版2

除包含付费版1的内容外,还有KAU的原创优化算法优化的特征选择以及相应的函数测试,同样能够产生相应的评估指标excel文件,性能出色,可用于论文中。

获取方式:公众号后台回复 FS3

例如
在这里插入图片描述

封装式特征选择计算成本高,面对高维数据集,还可以考虑基于粗糙集的过滤式特征选择,该方法同样为NP-难问题,可以与优化算法结合,后面KAU也会介绍该方法。

参考文献

[1] 储安琪,丁志军.基于灰狼优化算法的信用评估样本均衡化与特征选择同步处理[J].计算机科学,2022,49(4):134-139.

另:如果有伙伴有待解决的优化问题(各种领域都可),可以发我,我会选择性的更新利用优化算法解决这些问题的文章。

如果这篇文章对你有帮助或启发,可以点击右下角的赞/在看(ง •̀_•́)ง(不点也行),你们的鼓励就是我坚持的动力!若有定制需求,可私信作者。​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2808389.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

LabVIEW燃料电池船舶电力推进监控系统

LabVIEW燃料电池船舶电力推进监控系统 随着全球经济一体化的推进,航运业的发展显得尤为重要,大约80%的世界贸易依靠海上运输实现。传统的船舶推进系统主要依赖于柴油机,这不仅耗能高,而且排放严重,对资源和环境的影响…

三 . 运算符和流程控制——Java基础篇

三 . 运算符和流程控制 1. 运算符 1 . 赋值运算符 1.2.1 基本语法 符号: 当“”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。支持连续赋值。 扩展赋值运算符: 、 -、*、 /、% 赋值运算符符号解释将符号左…

网络原理 HTTP _ HTTPS

回顾 我们前面介绍了HTTP协议的请求和响应的基本结构 请求报文是由首行请求头空行正文来组成的 响应报文是由首行形影头空行响应正文组成的 我们也介绍了一定的请求头之中的键值对的属性 Host,Content-type,Content-length,User-agent,Referer,Cookie HTTP协议中的状态码 我们先…

sql-labs第46关(order by盲注脚本)

一、环境 网上有自己找 二、解释 order by 注入我们看他的true和false来进行注入出来 二、实操 让我们用sort 看看源码 最终我们的id是放到order by后面了 如果我们直接用列去排序 ?sortusername/password username: password: 可以看到顺序是不…

谈谈Redis的哈希槽和一致性哈希

一 . 前言 在 Redis 集群里面主要涉及到两种 Hash 算法 : 一种是一致性哈希 , 这种算法在 适用dis Cluster方案中并没有实现,主要在外部的代理模式 (Twemproxy)一种是 Slot 哈希槽算法 ,这种算法就是 Cluster 的核心算法所以谈到这个问题的时候,不能只讲一部分。在 Red…

simpleini开源库使用

源码下载:GitHub - brofield/simpleini: Cross-platform C library providing a simple API to read and write INI-style configuration files 1.加载simpleini库 下载后解压 2.simpleini库的简单使用 (1)加载ini文件 // 定义ini文档对象…

第10届蓝桥杯Scratch图形化编程 选拔赛初级组编程题1:小猫走城堡

准备工作: 导入育最库中的“Castle 3 小猫从坐标点(-165,-93)出发向城堡走去。随着位置的移动,角色大小逐渐变小,最后在城堡前消失。注意1.角色大小在逐渐变化,运行结束再次点击绿旗,程序应还能再次扶行。2.角色应该是…

大数据信用查询一般能查到什么?这几点要清楚

大数据信用查询一般能查到什么?当我们谈论大数据信用查询时,我们不只是查看一些干瘪的数据,而是深入探索了一个人的大数据信用特征。这些查询结果为我们提供了一个全面的、多维度的个人信用画像,本文带大家详细了解一下,一起去看…

STM32F103学习笔记(六) RTC实时时钟(原理篇)

目录 1. RTC简介 2. STM32F103的RTC模块概述 2.1 RTC模块的基本原理 2.2 RTC的工作原理 2.3 备份寄存器的功能和特点 2.4 RTC的工作流程 3. RTC的常见应用场景 4. 常见问题与解决方案 1. RTC简介 实时时钟(RTC)是嵌入式系统中的一种重要组件&…

ThreadLocal“你”真的了解吗?(二)

《ThreadLocal“你”真的了解吗?(一)》这篇文章梳理了ThreadLocal的基础知识,同时还梳理了java中线程的创建方法以及这两者之间的关系,本篇文章我们将继续梳理与ThreadLocal相关,在上一节也提过的另一组件T…

函数——递归6(c++)

角谷猜想 题目描述 日本一位中学生发现一个奇妙的 定理,请角谷教授证明,而教授 无能为力,于是产生了角谷猜想。 猜想的内容:任给一个自然数, 若为偶数则除以2,若为奇数则乘 3加1,得到一个新的…

深入理解JS的执行上下文、词法作用域和闭包(下)

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

mvn版本导致的Failed to execute goal on project问题与解决

目录 一,报错情况与原因二,maven的下载与安装1,卸载maven2,安装mvn3,指定mvn的默认版本: 一,报错情况与原因 使用命令mvn package时会报如下错误: Failed to execute goal on proj…

prometheus+grafana监控nginx的简单实现

1.编译安装NGINX 加入编译安装nginx-module-vts模块,目的是为了获取更多的监控数据(虚拟主机,upstream等) nginx下载 http://nginx.org/download/nginx-1.20.2.tar.gz nginx-module-vts下载 https://github.com/vozlt/nginx-module-vts/archive/refs/tags/v0.2…

9.5K Star,又一款超棒开源轻量自动化运维平台

Hi,骚年,我是大 G,公众号「GitHub指北」会推荐 GitHub 上有趣有用的项目,一分钟 get 一个优秀的开源项目,挖掘开源的价值,欢迎关注。 一个好的运维平台就变得非常重要了,可以节省大量的人力和物…

冯诺依曼体系结构 与 操作系统

一、冯诺依曼体系结构 深入理解冯诺依曼体系结构 计算机的出现就是为了解决实际问题, 所以把问题交给计算机,计算机经过处理,得到一个结果反馈给我们,所以这中间就必然涉及到了输入设备,中央处理器(包括运算器和控制器)和输出设备…

【读后感】《枪炮、病菌与钢铁》人类社会的命运

初看这个书名其实感到困惑,风马牛不相及的三个名词怎么就凑到一起了,这书是讲什么的。 先说结论,讲的是人类历史,具体是1.3万年前开始至今的历史以及现代世界格局的形成,1.3万年前从这个时间节点以后,不论…

勇宝趣学JavaScript ES6第二章(解构赋值)

在ES6中,我们经常使用到解构赋值这个知识点,今天我们就来好好讲讲这一小部分知识点。咱们争取这回一次性讲明白。 今天是元宵节,祝大家节日快乐,只有我自己还在无聊的码字。 给我点个赞吧,嘿嘿!&#xff01…

MySQL数据库进阶第四篇(视图/存储过程/触发器)

文章目录 一、视图简单介绍与基础语法二、视图的检查选项三、视图的更新四、视图的作用五、存储过程的概念与特点六、存储过程的 创建,调用,查看,删除七、存储过程 — 系统变量八、存储过程 — 用户定义变量九、存储过程 — 局部变量十、存储…

acwing算法学习笔记 ------ 双链表

1、定义 这里可以做一个投机取巧,我们不再像单链表去用head去存头和尾,直接让r[0] 1,l[1] 0; idx 2.进行初始化, 解释一下l[N] 和 r[N] l[N]:是表示指向左面下一个节点下标, r[N]:表示指向下一个节点的下标。大家不用担心i…