python特征选择pso_粒子群优化算法(PSO)之基于离散化的特征选择(FS)(三)

作者:Geppetto

前面我们介绍了特征选择(Feature Selection,FS)与离散化数据的重要性,总览的介绍了PSO在FS中的重要性和一些常用的方法,介绍了FS与离散化的背景,介绍本文所采用的基于熵的切割点和最小描述长度原则(MDLP)。今天我们来学习利用PSO来进行离散化特征选择的一些方法。今天我们会介绍EPSO与PPSO。

EPSO和PPSO都遵循图一所示的基本步骤。初始化后,对粒子进行迭代评估和更新,直到满足停止条件为止。为了对粒子进行评价,首先对训练数据进行离散化,并根据进化的切点选择特征。然后将转换后的数据放入学习算法中,计算出适应度。基于这种适应性,pbest和gbest被更新并用于更新粒子的位置。

图一

在这两种方法中离散化和FS步骤的工作原理是相同的。为实现离散化,如果特征值小于某个截点,则将其转换为0;否则,它就是1。如果一个特性的所有值都转换为相同的离散值,那么它就被认为是一个无关的特性,因为它不能区分不同类的实例。FS是通过消除这些无用的特性来完成的。在整个离散化数据的分类性能改进的基础上,对剩余的离散特征进行了评价。

A.EPSO

EPSO的主要思想是使用BBPSO直接演化出一个可以在相应的特征值范围[MinF···MaxF]内任何值的切点。每个粒子的位置表示一个候选解,它是一个与问题的维数相对应的n维的实向量。图二给出了一个粒子位置及其相应候选解的例子。在这个例子中,粒子的第一个维度,表示第一个特性(F1)的切割点,需要在范围内有一个值[8.5,25.7]。如果一个特性F的更新点超出了这个范围,它将被设置到最近的边界。

图二

(1)粒子初始化:由于在高维数据上的多变量离散化的搜索空间是巨大的。这意味着对于那些在初始候选方案中未被选中的特性,它们的切点将被设置为相应特性的最大值。对于其他选择的特性,它们的切点是使用满足MDLP的最好的基于熵的切割点初始化的。原则上,它们可以根据对应特性范围内的任何值进行初始化。然而,完全随机的初始切点可能导致收敛速度较慢。此外,特征的最佳切点的信息增益是其相关性的指标。因此,具有较大信息增益的特性在初始化过程中被选择的概率更大。

(2)粒子评价:基于粒子所产生的切点,训练数据转换为离散值的新训练集和较少的特征数,这要归功于消除特征,其切割点等于最小值或最大值。例如,在图2中,F3切割点等于它的最大值,F5的切点等于它的最小值,这两个特征都将被丢弃。

然后根据转换训练集的分类精度,对每个粒子的离散化和FS解进行评估,通过对整个离散数据的评估,提出的方法可以对所有选定特征的分割点进行评估,同时考虑特征交互。适应度函数采用平衡分类精度,如下:

其中c是问题的类数,TPi是i类中正确识别的实例数,|Si|是类i的样本量,所有类的权重均为1/c。

B.PPSO

在EPSO中,BBPSO可以自由地在相应的范围内生成一个剪切点。这可能会导致一个巨大的搜索空间,特别是在多维数据的多变量方法中。因此,为了将搜索空间缩小到高度潜在的区域,在PPSO中,我们使用BBPSO来从每个特性的潜在断点中选择一个切点。潜在的切点是基于熵的切点,它们的信息增益满足前面所讲的MDLP准则。每个特征可能有不同数量的可能的切割点,它们被计算并存储在一个可能的切点表中。图3给出了该表和粒子位置以及相应候选方案的示例。每个粒子位置都是一个整数向量,表示所选的剪切点索引。因此,向量的大小等于原始特征的数量,而进化的值需要介于1和相应特征的潜在的切点数量之间。例如,在图3中,第一个特性(F1)有两个可能的剪切点,索引1和2。因此,粒子的第一个维度需要落在范围[1,2]。如果它是2,那么切割点6.8被选择来离散F1。

图三

在更新过程中,如果一个维度的更新值不在切点索引范围之外,则将其设置为0,这表明相应的特性没有一个好的切点,因此应该被忽略。

(1)粒子初始化:每个粒子位置都被初始化为一个随机特征子集,其中有一些被选中的特征,它们的切点索引与0不同。选中的特性将会将它们的切点索引设置为最佳MDLP剪切点的索引。与EPSO相似,具有较高信息增益的特性将有更高的选择机会。

为了使PPSO通用到所有的问题,PPSO使用一个限制的大小为所有数据集。然后在进化过程中,当BBPSO似乎卡在局部最优,如果当前的gbest fitness比最后一个gbest fitness至少有10%的优势,BBPSO将被重新设置为更大的尺寸(缩放机制)。这个机制的目的是开始搜索小的特性子集,同时打开更大更好的功能子集的机会。

(2)粒子评估:基于每个特性的选定的切点索引,从潜在的切点表中检索出切点值。然后用它来离散相应的特征。但是,如果一个特性的进化的剪切点索引为0,那么该特性就被认为是未被选中的。因此,在图3中,本例中没有选择F2和F4。

在EPSO中,分类精度被用来作为衡量每个粒子的适应度指标。这可能很难区分类与类之间的边界相当大的情况,使许多不同的模型获得相同的精度。此外,虽然包装器方法能够产生高精度的解决方案,但过滤方法通常更快、更普遍。将这两种方法的强度结合在评价函数中,有望产生更好的解决方案。此外,结合这两种方法,还可以更好地区分特征子集之间的细微差别,提供更平滑的适应度环境以方便搜索过程。然而,简单地结合这些措施在计算上可能是不切实际的。因此,我们需要找到一种聪明的方法来组合它们,而不需要更多的运行时间。在常用的滤波方法中,距离是一种多变量测量方法,可以对特征集的判别能力进行评估,并将其作为KNN的基本测量方法。因此,将该方法与KNN包装方法结合起来不会增加计算时间,因为距离测量只计算一次,但使用两次。

适应度函数使用两种平衡分类精度和距离测量加权系数(μ)与测量的距离,如下所示,用于最大化之间的距离不同的类的实例(DB)和减少之间的距离相同的类的实例(DW)。DB和DW采用以下公式计算:

其中Dis(Vi, Vj)是两个向量Vi和Vj之间的距离。在本文中,我们使用两个二进制向量之间的匹配或重叠的比例作为它们之间的距离。

参考文献:

文章:“A New Representation in PSO for Discretization-Based Feature Selection”

作者:Binh Tran, Student Member, IEEE, Bing Xue, Member, IEEE, and Mengjie Zhang, Senior Member, IEEE

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

postgresql_PostgreSQL开放自由

postgresqlOpen Liberty是源自WebSphere Liberty的有趣的新型OSS Java EE应用服务器。 您可以将Open Liberty配置为使用PostgreSQL作为其默认数据源&#xff0c;如下所示&#xff1a; 将<datasource> &#xff0c; <jdbcDriver>和<library>指令添加到server…

MySQL注释形式_可执行注释语句(/*!...*/)_数据库注释_数据库脚本注释_SQL脚本注释格式_SQL脚本注释分类

文章目录单行注释多行注释可执行注释为什么要把可执行的 SQL 语句写在注释里面呢&#xff1f;注释示例导入数据时禁止/激活索引测试禁止索引再导入数据的效率单行注释 SELECT * from tf_user; # 单行注释&#xff0c;从这个注释符号起直到该行结束 SELECT * from tf_user; -- …

苹果android投屏,iphone怎么投屏到mac?苹果手机投屏到苹果电脑方法

iphone和mac的使用人群越来越多,其中投屏功能却难倒了大部分新手用户,许多使用iPhone以及Mac的用户朋友都还不知道iPhone怎么投屏到mac,好奇的用户朋友马上点击查看iphone投屏到mac教程来实现这个具有科技革新感的功能吧。官方推荐方法1&#xff1a;用数据线- 1.使用lightning线…

微服务java模块内存管理_Java 9模块服务

微服务java模块内存管理接线与查找 Java长期以来都有一个ServiceLoader类。 它是在1.6中引入的&#xff0c;但是自Java 1.2以来就使用了类似的技术。 一些软件组件使用了它&#xff0c;但是使用并不广泛。 它可以用于模块化应用程序&#xff08;甚至更多&#xff09;&#xff0…

学python多大年龄可以学车_多大年龄可以学驾照?

展开全部最少要满 18 岁才32313133353236313431303231363533e4b893e5b19e31333365656662可以考部分车型的《机动车驾驶证》一、根据《中华人民共和国公安部令》第十一条规定申请《机动车驾驶证》的人&#xff0c;应当符合下列规定1. 年龄条件(1)申请小型汽车、小型自动挡汽车、…

Linux 命令之chgrp -- 用来改变文件或目录所属的用户组

文章目录命令介绍常用选项参考示例&#xff08;一&#xff09;修改指定目录及其所含的文件的用户组&#xff08;二&#xff09;更改指定文件的用户组&#xff08;三&#xff09;把指定文件的所属群组设成和参考文件的所属群组相同命令介绍 chgrp 是英语单词“change group”的…

signature=02d2eb69b4d24e2f9bb2956f66089339,Signature Balancing

摘要&#xff1a;Signatures are an important part of the design of a ship. In an ideal situation, signatures must be as low as possible. However, due to budget constraints it is most unlikely to reach this ideal situation. The arising question is which leve…

使用实例工厂方法实例化_一些工厂实例

使用实例工厂方法实例化我时不时地发现自己摸索了一些旧代码&#xff0c;找到了“我在哪里做过类似工厂的事情”的示例。 上周再次发生这种情况时&#xff0c;我决定只查找所有示例&#xff0c;并创建一个示例项目和有关该示例的博客文章。 所以在这篇文章中&#xff0c;我&a…

linux内核设计与实现 epub_Epoll学习服务器的简单实现-Linux内核Epoll结构

1.Begins~有的人学习linux编程很久&#xff0c;只知道网络编程是socket&#xff0c;bind&#xff0c; listen。。。&#xff0c;然而这些都是网络通信软件最基本的接口。在某网络公司待了y&#xff0c;也了解到公司的基础就是网络转发 &#xff0c;然而网络转发实现并非我们平时…

Linux 命令之 sftp -- 交互式的文件传输程序

文章目录一、命令介绍二、常用选项三、参考示例&#xff08;一&#xff09;使用 sftp 连接远程主机&#xff08;二&#xff09;使用 sftp 上传文件到远程主机&#xff08;三&#xff09;使用 sftp 从远程主机下载文件&#xff08;四&#xff09;查看远程主机的当前目录&#xf…

鸿蒙有安卓内核吗,华为鸿蒙2.0可以替代安卓吗,华为鸿蒙2.0优势在哪

在华为开发者大会上&#xff0c;华为消费业务CEO 余承东&#xff0c;正式发布鸿蒙OS2.0&#xff0c;并宣布华为鸿蒙OS将全面启用全场景生态&#xff0c;并将于2020年12月发布手机版。余承东还表示&#xff0c;明年&#xff0c;华为的智能手机将全面升级&#xff0c;以支持鸿蒙操…

命名对象实体对象_我的对象命名

命名对象实体对象这是最常见的辩论之一。 大多数人对此主题有自己的见解&#xff0c;却没人能真正说出哪个是正确的。 我当然不能&#xff0c;但是尽管如此&#xff0c;我还是决定与大家分享我的想法&#xff0c;投入两美分&#xff0c;也许对某人会有帮助。 当我创建一个新类…

python查看关键字列表的命令是_Python 41 完整查询语句 和 一堆关键字

一&#xff1a;完整查询语句1、拷贝表 ***create table copy_table select *from customer ; 拷贝结构 与数据create table copy_table select *from customer where 0 > 1; 仅拷贝结构共同点&#xff1a; 索引 不能拷贝 描述不能拷贝(自增)[ ] 表示可选的{ }表示必选的增…

程序员的技术人生

文章目录第一阶段&#xff0c;高级程序员第二阶段&#xff0c;技术经理第三阶段&#xff0c;技术总监第四阶段&#xff0c;架构师第五阶段&#xff0c;CTO人们常常把 CTO、架构师、技术经理的头衔&#xff0c;乱授予技术负责人。在国内这种现象尤其严重。比如&#xff0c;一个初…

python csv转为html,在Python中将CSV转换为HTML表格

首先安装熊猫&#xff1a;pip install pandas然后运行&#xff1a;import pandas as pdcolumns [age, week, opp, ACscr, OPPscr, location]df pd.read_csv(Crushers.csv, namescolumns)# This you can change it to whatever you want to getage_15 df[df[age] U15]# Othe…

python椭圆拟合_opencv python 轮廓特征/凸包/外接矩形/外接圆/拟合矩形/拟合直线/拟合圆...

Contour Features1 图像的矩cv2.moments()图像的矩可以帮助计算物体的某些特征&#xff0c;如对象的质心&#xff0c;对象的区域等.代码&#xff1a;import cv2import numpy as npimg cv2.imread(img7.png,0)ret,thresh cv2.threshold(img,127,255,0)im2,contours,hierarchy …

RPM 软件包命名规范

文章目录命名格式示例命名格式 name-version-release.os.arch.rpm&#xff0c;软件名称-版本号-发布次数.适合linux系统.硬件平台.rpm name&#xff1a;程序名称 version&#xff1a;程序版本号 release&#xff1a;用于标识 RPM 包本身的发行号&#xff0c;其实就是软件包…

junit5和junit4_JUnit 5符合AssertJ

junit5和junit4JUnit 5在断言库中带来了很多改进&#xff0c;这主要归功于Java 8和Lambda Expression的支持以及新断言&#xff08;如assertAll &#xff0c; assertTimeout或assertThrows 。 尽管我非常喜欢JUnit 5&#xff0c;但我相信AssertJ在生产级单元测试中仍然是必不可…

微信html人脸识别接口,微信人脸识别可视化的实现:

实现方式主要通过以下模块实现&#xff1a;DateFromWebChat (从网页版微信窗口下载好友头像)AI (识别模块&#xff0c;主要用于识别好友头像是否为人脸&#xff0c;并且计算人脸的数量与头像的总数且return)DateVisul (数据可视化模块&#xff0c;用与AI模块返回参数的可视化)u…

安卓手机端运行的adb工具_MQTT通信手机端接收生产车间设备运行信息3

应用场景&#xff1a;对车间重点设备的运行参数进行实时跟踪。比如烘干炉的烟囱温度、TNV的出口温度、喷漆室的温湿度、小时产量等等信息。以前这些信息的获取都需要在电脑端获取、相对比较繁琐。这里我们选择在手机端实现获取这些信息。尤其是对于作者这样的设备负责人而言&am…