用遗传算法进行特征选择

2023-11-02

一、问题举例

要求:在Sonar和Iris数据集上进行验证遗传算法特征选择性能
对比算法:顺序前进法和顺序后退法
特征选择由类别可分性判据+搜索算法实现

二、算法描述

1、基于类内类间距离的可分性判据

  要进行特征选择,首先要确定选择的准则,也就是如何评价选出的一组特征。确定了评价准则后,特征选择问题就变成从D个特征中选出使准则函数最优的d个特征(d < D)。
  Fisher线性判别采用了使样本投影到一维后类内离散度尽可能小,类间离散度尽可能大的准则来确定最佳的投影方向,这其实就是一个直观的类别可分性判据。可以用两类中的任意两两样本之间的距离的平均来代表两个类之间的距离,现在可以将其推导到多类情况。
  令 x_k^((i)), x_l^((j)) 分别为 ω_i 类及 ω_i 类中的D维特征向量,δ(x_k((i))+x_l((j)) ) 为这两个向量间的距离,则各类特征向量之间的平均距离为
在这里插入图片描述
  式中c为类别数,ni为 ωi类中的样本数,nj为 ωj类中的样本数,Pi 、Pj是相应类别的先验概率。
  多维空间中两个向量之间有很多种距离度量,在欧式距离情况下有

在这里插入图片描述
  用 m_i表示第i类样本集的均值向量
在这里插入图片描述  用 ??表示所有各类的样本集的总平均向量
在这里插入图片描述
  将上述式子代入到平均距离的公式得
在这里插入图片描述
  也可以用下面定义的矩阵写出 Jd(x)的表达式,令
在这里插入图片描述
  因为要保证类间离散度尽可能大,类内离散度尽可能小,故定义以下距离判据
在这里插入图片描述
  基于距离的可分性判据定义直观、易于实现,因此比较常用。没有直接考虑 样本的分布情况,很难在理论上建立起它们与分类错误率的联系,而且当两类样 本的分布有重叠时,这些判据不能反映重叠的情况。为了简化计算,采用基于类 内类间距离的可分性判据,且根据公式可知,Jd(x)的值越大,表示特征的可分离性越好.

2、遗传算法(Genetic Algorithm)

   遗传算法把候选对象编码为一条染色体(chromesome),在特征选择中,如 果目标是从 D 个特征中选择 d 个,则把所有特征描述为一条由 D 个 0/1 字符组 成的字符串,0 代表该特征没有被选中,1 代表该特征被选中,这个字符串就叫 做染色体,记作 m。显然,要求的是一条有且仅有 d 个 1 的染色体,这样的染色 体共有 ?? ?种。 优化的目标被描述成适应度(fitness)函数,每一条染色体对应一个适应 度值 f(m)。可以用前面定义的基于类内类间距离的类别可分性判据 Jd(x)作 为适应度。
   遗传算法具体步骤如下

1) 初始化种群

   以 sonar 数据集为例,一条染色体为一个 1*60 维的行向量,假设我们要从 60 个特征中选 30 个特征,则初始化的一个染色体为将一个零向量的随机 30 位 变成 1,这样就从 60 维特征中随机选了 30 维,如下所示
在这里插入图片描述

   重复上述过程 n 次,则可以得到一个有 n 条染色体的初代种群 M(0),每条 染色体都不尽相同。

2)计算当前种群 M(t)中每条染色体的适应度值 f(m)

   将每一条染色体的适应度值(fitness)求出,即将每一条染色体所代表的 d 维特征选出,将原 Sonar 数据集变成一个 208*d 维的矩阵,计算出基于类内类 间距离的可分性判据 Jd(x),作为该染色体的适应度值 f(m)。
   经过 n 次计算之后,可以得到每条染色体的适应度值。

3)基于适应度值的选择

   按照选择概率 p(f(m))对种群中的染色体进行采样,由采样出的染色体经过 一定的操作繁殖出下一代染色体,组成下一代的种群 M(t+1)。
   将种群中每条染色体的适应度值逐个累加,得到一些从 0 到 1 的区间,如图所示
在这里插入图片描述
   假设一个种群有 4 个条染色体,每条染色体的适应度值为 0.14、0.49、0.06、 0.31,则将这些适应度值逐个累加起来,得到四个区间(0,0.14)、(0.14,0.63)、 (0.63,0.69)、( 0.69,1),每个区间的长度所代表着对应染色体的适应度值。 我们从 0 到 1 中取一个随机数,该数落在哪个区间,就取哪条染色体。重复 n 次, 得到了基于上一代种群适应度值的新子代种群 M(t+1), 而且保证了种群的染色 体数目不改变,恒为 n。

4)交叉

  首先将一个种群平均分成两部分,称为两个父代种群,将这两个父代种群随 机打乱,再从两个父代中分别取一个染色体进行交叉,这样就完成了一次随机匹 配的过程。
   为了使交叉之后的染色体特征维数不变,采用了如下方法:
   先从一个父代染色体中随机选取一个片段(长度为 k),统计该片段中有几 个为 1 的基因,再从与之匹配的父代染色体中寻找长度相同、1 基因数目相同的片段,若找到,则进行交叉操作;若未找到,则寻找下一对父代染色体,直到将 所有父代种群遍历完毕。

5)变异

   基因突变是染色体的某一个位点上基因的改变。同样地,为了使变异之后染 色体中特征数量不变,采用了以下方法:
   先按一定的概率(称为变异概率)选择是否进行变异操作,若是,则随机从 种群中选择一个个体,再随机地选择一个基因进行反转,若该基因由 1 变为了0, 则再随机选一个 0 变成 1,反之也执行同样的操作。直至遍历完种群中所有的个 体。这样就能保证每个染色体的特征个数不会被改变。

6)重复迭代

   在进行完选择、交叉、和变异操作之后,上一代的种群 M(t)已经变成了新 一代的种群 M(t+1)。重复过程(2),在遗传算法迭代的过程中,种群中的染色 体会趋于所选特征数中的最优解,达到一定的迭代次数 t 后,算法停止,输出最 终种群中适应度值最大的染色体,即完成了在 D 维特征中选择 d 个最优的特征。

3、顺序前进法和顺序后退法

   顺序前进法是一种自底向上的方法。第一个特征选择单独最优的特征,第二 个特征从其余所有特征中选择与第一个特征组合在一起后准则最优的特征,后面 的每一个特征都选择与已经入选的特征组合起来最优的特征。
   顺序后退法是一种从顶向下的方法,与顺序前进法相对应。从所有特征逐一 剔除不被选中的特征。每次剔除的特征都是使得剩余的特征的准则函数值最优的 特征。

三、结果

1、在 sonar 数据集上验证遗传算法

   首先看在取 30 维特征的时候,随着遗传算法的迭代,每一代种群的适应度 值收敛情况
在这里插入图片描述
   从图中可以很明显地看出,随着遗传算法迭代次数的增加,每一代种群的适 应度值在逐渐变大。当迭代次数达到 60 次的时候,种群中的最大适应度值趋于 最大,在之后收敛与 0.07 左右.
   经过遗传算法迭代 150 次求得的最优种群如下图
在这里插入图片描述
   图中红色代表 0,蓝色代表 1,横坐标表示特征,纵坐标表示每个染色体。 图中只显示了一部分。可以看见,在迭代后,每个个体所选择的特征趋于一致。
   所选出的适应度值最优的染色体和特征为
在这里插入图片描述
   现在扩展到选择其他个数的特征的情况,将 d 从 1 取到 60,每个 d 都对应 着一个最优适应度值,现横向将其比较
在这里插入图片描述
   从图中可以看出,用遗传算法从 60 维中取 1 到 5 维的时候得出的最优染色 体适应度值最大,在 20 维之后适应度值呈现平稳下降的趋势,最终收敛于 0.03 左右。

2、在 Iris 数据集上验证遗传算法

  由于 Iris 数据集的特征只有 4 维,特征选择的情况较简单,这里不再赘述。

3、顺序前进法和顺序后退法

  以 Sonar 数据集为例,验证从 60 维中选择 30 维特征的选择情况。
在这里插入图片描述
在这里插入图片描述

5、对比算法:顺序前进法和顺序后退法

   以 Sonar 数据集为例,从 60 维特征中取 1 到 10 维,分别看遗传算法、顺序 前进法、顺序后退法的每一维最优适应度值
在这里插入图片描述

四、总结

  1、遗传算法作为一种解决最优化的一种搜索启发式算法,是进化算法的一 种,在选择特征方面具有显著效果。随着遗传算法迭代次数的增加,每一代种群 的适应度值逐渐收敛于局部最优解,从而能够找到所选择的最优特征。
   2、顺序前进法与单独最优特征的选择方法相比,考虑了一定的特征间组合 的因素,但是其第一个特征仍是仅靠单个特征的准则来选择的,而且每个特征一旦入选 后就无法再剔除,即使它与后面选择的特征并不是最优的组合。
  3、顺序后退法也考虑了特征间的组合,但是由于是自顶向下的方法,很多 进行高维空间进行,计算量比顺序前进法大些。而且顺序后退法在一旦剔除了某 一特征后就无法再把它选入。
  4、通过上图的对比可以看出,遗传算法和顺序前进法选出的最优染色体的 适应度值受维数影响较大,但遗传算法的适应度值要大于顺序前进法。顺序后退 法选出的最优染色体的适应度值不但不受维数影响,而且都要大于遗传算法。得 出的结果为:顺序后退法>遗传算法>顺序前进法。

五、代码

实验环境Python3.6
GitHub地址如下
Pattern recognition / GA
https://github.com/Fangzhenxuan/AI_Projects.git

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用遗传算法进行特征选择 的相关文章

  • 模式识别:最小错误率贝叶斯决策分类

    一 引言 1 用贝叶斯决策理论分类要事先知道两个条件及要求 xff1a 各类的先验概率 xff1a 及特征向量的条件概率密度 xff1a 或后验概率 xff1a 决策分类的类别一定 2 解决的问题 xff1a 已知一定数目的样本 xff0c
  • 最小二乘曲线拟合——C语言算法实现一

    最小二乘曲线拟合 给定一组数据 我们要对这组数据进行曲线拟合 假定要拟合的曲线方程为 y a0 a1 x 1 a2 x 2 a3 x 3 an x n x y 0 995119 7 620000 2 001185 2 460000 2 99
  • 【模式识别4】YOLO目标检测数据集xml格式转txt格式

    YOLO目标检测数据集xml格式转txt格式 1 转换前的xml格式 2 xml格式转txt格式代码 2 1 源代码 2 2 需要修改的地方 3 转换后的txt格式 代码资源 voc2txt py 1 转换前的xml格式 如果我们使用Lab
  • 四:SVM

    硬间隔最大化SVM SVM 介绍 SVM转化为最优解问题 KKT KKT图解 KKT定理 KKT例子 求解SVM最优化问题 拉格朗日对偶 拉格朗日对偶例子 用拉格朗日对偶解决问题 KKT在SVM中的意义 测试 SVM 介绍 SVM是一种分类
  • ICCV2019论文题目中文列表

    英文题目 中文题目 FaceForensics Learning to Detect Manipulated Facial Images FaceForensics 学习检测操纵的面部图像 DeepVCP An End to End Dee
  • CNN中感受野的计算

    感受野 receptive field 是怎样一个东西呢 从CNN可视化的角度来讲 就是输出featuremap某个节点的响应对应的输入图像的区域就是感受野 比如我们第一层是一个3 3的卷积核 那么我们经过这个卷积核得到的featurema
  • 用遗传算法进行特征选择

    文章目录 一 问题举例 二 算法描述 1 基于类内类间距离的可分性判据 2 遗传算法 Genetic Algorithm 1 初始化种群 2 计算当前种群 M t 中每条染色体的适应度值 f m 3 基于适应度值的选择 4 交叉 5 变异
  • 最大公约数、最小公倍数、辗转相除法的求解和证明

    两个正整数的最大公约数 Greatest Common Divisor GCD 在计算机中通常使用辗转相除法计算 最小公倍数 Least Common Multiple LCM 可以使用GCD来计算 下面首先介绍GCD和LCM 然后介绍辗转
  • 什么是模式识别,模式识别主要识别什么?

    模式识别诞生于20实际20年代 随着40年代计算机的出现 50年代人工智能的兴起 模式识别在60年代初迅速发展成为一门学科 简单点说 模式识别是根据输入的原始数据对齐进行各种分析判断 从而得到其类别属性 特征判断的过程 为了具备这种能力 人
  • 模式识别(1)协方差矩阵相关和K-means聚类算法实现(含源码)

    模式识别实验一 实验一 协方差矩阵和矩阵特征值 特征向量的计算 题目简介 给定一组数据 实现该组数据的协方差矩阵的计算 并用代码实现计算一个方阵的特征值和特征向量 一 协方差部分 1 协方差的定义 协方差在概率论和统计学中用于衡量两个变量的
  • pytorch 的 dataset 中使用 onnxruntime

    如果在 dataset 中预处理图像时 用到了 onnxruntime 的 cudaep 出现这样的错误 1 2022 12 13 13 53 01 554864883 E onnxruntime Default cuda call cc
  • 基于深度学习的图像检索 image retrieval based on deep learning (code ,代码)

    本次代码分享主要是用的caffe框架 至于caffe框架的安装过程不再说明 代码修改自 cross weights 的一篇2016年的文章 但是名字忘记了 谁记得 提醒我下 一 环境要求 1 python 2 gcc 3 opencv 4
  • 模式识别、计算机视觉、机器学习领域的顶级期刊和会议(整理)

    部分AI刊物影响因子05 SCIIF 2005 2004 JMLR 4 027 5 952 机器学习 PAMI 3 810 4 352 模式识别 IJCV 3 657 2 914 计算机视觉 TOIS 4 529 4 097 AIJ 2 6
  • 【行人重识别】Unsupervised Salience Learning for Person Re-identification

    Abstract 人眼可以基于 一些较小的显着区域来识别人的身份 然而 当使用现有方法计算图像的相似度时 通常会隐藏这种有价值的显着信息 此外 许多现有的方法学习区别性特征并以监督的方式处理急剧的视点变化 并要求为不同的摄像机视图对标注新的
  • 使用pytorch版faster-rcnn训练自己数据集

    使用pytorch版faster rcnn训练自己数据集 引言 faster rcnn pytorch代码下载 训练自己数据集 接下来工作 参考文献 引言 最近在复现目标检测代码 师兄强烈推荐FPN 但本文只针对Faster RCNN 大家
  • 目标检测mAp

    目标检测的mAp的计算是根据不同的IoU下的对应的recall和precision计算得到
  • 模式识别 - 名词解释整理

    模式识别 模式识别是指把对象根据其特征归到若干类别中适当的一类 模式识别也称为模式分类 模式 模式是指因素间存在确定性或随机性规律的对象 过程或事件的集合 识别 识别就是把对象分门别类地认出来 样本 sample 所研究对象的一个个体 样本
  • 什么是模式识别,模式识别概念的基本介绍

    模式识别又常称作模式分类 从处理问题的性质和解决问题的方法等角度 模式识别分为有监督的分类 Supervised Classification 和无监督的分类 Unsupervised Classification 两种 模式还可分成抽象的
  • 算法笔记-DTW动态时间规整

    算法笔记 DTW动态时间规整 简介 简单的例子 定义 讨论 约束条件 步模式 标准化 点与点的距离函数 具体应用场景 分类 点到点匹配 算法笔记 DTW动态时间规整 动态时间规整 规划 Dynamic Time Warping DTW 是一
  • 什么是模式、什么是模式识别、模式识别的方法、过程

    什么是模式 pattern 模式是存在于时间和空间中可观察的物体 如果可以区分相同或者相似的物体类别 可区分的物体称之为模式 模式不是指具体的物体 而是抽象的类别 例如 人这个类别是一种模式 自行车这个类别是一种模式 什么是模式识别 1 模

随机推荐

  • 毕业1年从事软件测试拿下11.5k,没有给98后丢脸吧...

    自我介绍一下 本人是20年毕业的专科生 专业软件技术 21年8月拿到月薪11 5k的offer 开启我的软件测试之路 现在把本人的经历写出来 希望能给像我一样想要从事软件测试的朋友们一些建议 学还是不学 这是个问题 19年底我找到软件开发的
  • 大语言模型之九- BERT

    Natural Language Processing NLP 包括自然语言理解和自然语言生成 自然语言理解的应用包括语义分析 机器客服 语音识别 机器翻译等 transformer这一深度网络架构在NLP领域占有举足轻重的地位 BERT是
  • linux7重置密码操作,linux重置管理员密码的操作方法

    linux重置管理员密码的操作方法 发布时间 2020 04 02 11 08 01 来源 亿速云 阅读 34 作者 小新 今天小编给大家分享的是linux重置管理员密码的操作方法 很多人都不太了解 今天小编为了让大家更加了解linux重置
  • mysql myisam 数据丢失_用Myisamchk进行崩溃恢复MySQL

    由MySQL用来存储数据的文件格式以已经被广泛地测试过 但是总是有外部情况可以导致数据库表被破坏 mysqld进程在一个写入当中被杀死 计算机的意外关闭 例如 如果计算机掉电 一个硬件错误 这章描述如何检查和处理在MySQL数据库中的数据损
  • 这 7个 AI 写作助手,太实用了

    想象一下 你正在办公桌前为你的广告输入标题 但你突然思维阻塞并卡住了 可惜这时还没有神奇的软件可以帮助你想出点子 或许是有的 2023 年 AI 写作工具似乎不可避免地会很快融入我们的工作流程中 现代知识工作者已经看到了 ChatGPT 的
  • 流形学习(Manifold Learning)以及推导

    流形学习 Manifold Learning 前言 流行学习简介 主要的代表方法 1 Isomap 等距映射 Isomap算法步骤 2 LLE Locally Linear Embedding 局部线性嵌入 LLE基本思想 LLE算法步骤
  • ggplot2读书笔记5:工具箱——误差线、加权数、展示数据分布

    今天我们学习第三章的最后几节 其中的 绘制地图 部分 因为我木有顺利安装maps package 而且在我们的工作中也不常用 暂时跳过 下面继续 6 添加误差线和误差范围 数据中的不确定信息的展示也很重要 ggplot2中 四类几何对象可以
  • 【嵌入式百科】001——字长、比特、字节、字、双字

    一 字长 计算机的每个字所包含的位数称为字长 计算的字长是指它一次可处理的二进制数字的数目 一般地 大型计算机的字长为32 64位 小型计算机为12 32位 而微型计算机为4 16位 二 比特 bit 数据传输大多是以 位 bit 又名 比
  • 异常、业务状态码、错误码的使用分析

    url http www iteye com topic 1112683 url 好吧 看了各位的发言 我突然觉的自己蛋疼了 我的公司也蛋疼了 不过可别说我经历的项目初级 从日pv超百万的论坛和价值几亿的银行项目我都经历过 现在我经历的最大
  • QT 面试题 个人标注重点

    一 讲述Qt信号槽机制与优势与不足 优点 类型安全 需要关联的信号槽的签名必须是等同的 即信号的参数类型和参数个数同接受该信号的槽的参数类型和参数个数相同 若信号和槽签名不一致 编译器会报错 松散耦合 信号和槽机制减弱了Qt对象的耦合度 激
  • VMware虚拟机添加新磁盘

    一 VMware虚拟机添加磁盘 1 关闭你要添加硬盘的虚拟机 点击 编辑虚拟机设置 2 在打开的界面中点击 添加 按钮 3 在新打开的界面中点击 硬盘 下一步 4 在打开的界面中 选择硬盘类型 保持默认即可 点击 下一步 5 在打开的界面中
  • 贴片钽电容封封装及规格和参数资料

    贴片钽电容简述 贴片钽电容 以下简称钽电容 作为电解电容器中的一类 广泛应用于各类电子产品 特别是一些高密度组装 内部空间体积小产品 如手机 便携式打印机 钽电容是一种用金属钽 Ta 作为阳极材料而制成的 按阳极结构的不同可分为箔式和钽烧粉
  • 第一章 Vue项目的创建

    1 第一步 Node js的下载 方法 去node js官网进行下载 描述 node js自带npm的包 管理依赖 2 第二步VUE脚手架下载安装 方法 1 打开cmd 2 输入 npm install g vue cli 3 第三步 检查
  • 14.ES 之 nested 详解(2019-05-22)

    1 问题引入 由于在 ES 里新建 删除 更新单个文档都是原子性的 那么将相关实体保存在同一文档里面是有意义的 PUT blog doc 1 title Nest eggs body Making your money work tags
  • html 纯数字、英文不换行的两种解决办法

    1 在需要纯数字或英文换行的标签加入样式 word break break all 强制换行 2 如果需要将html代码通过html2canvas转为图片 word break break all 结果失效 我的解决办法是将纯数字使用sub
  • Dart基础语法1

    Dart基础 学习一门新的语言 我们可以以自己现有的熟悉的语言来类比 比如我们非常熟悉Java 那么剩下的就是需要掌握与Java不同的Dart语法 剩下的就需要靠自己多写多看来慢慢熟悉 国际惯例 使用Dart完成一个 Hello World
  • web前端面试之基础面试题(一)(含答案)

    前端面试题 一 今天我们整理一下前端面试题 15个 此面试题答案自己书写总结 有问题或疑问请指出问题 谢谢 1 HTML中行内元素与块元素的区别 并举例 行内元素怎么转化为块级元素 块级元素 block element 在浏览器中占据整行
  • 一文看懂yolov7;yolov7详解

    免责声明 1 此方法仅提供参考 2 搬了其他博主的操作方法 以贴上路径 3 场景一 yolo v7 场景二 yolo系列未完待续 Yolo系列强推 gt Yolo v1 v5 Yolox 场景一 yolo v7 强推先看 gt yolov7
  • 7-52 两个有序链表序列的交集

    include
  • 用遗传算法进行特征选择

    文章目录 一 问题举例 二 算法描述 1 基于类内类间距离的可分性判据 2 遗传算法 Genetic Algorithm 1 初始化种群 2 计算当前种群 M t 中每条染色体的适应度值 f m 3 基于适应度值的选择 4 交叉 5 变异