要求:在Sonar和Iris数据集上进行验证遗传算法特征选择性能 对比算法:顺序前进法和顺序后退法 特征选择由类别可分性判据+搜索算法实现 123
要进行特征选择,首先要确定选择的准则,也就是如何评价选出的一组特征。确定了评价准则后,特征选择问题就变成从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)的值越大,表示特征的可分离性越好.
遗传算法把候选对象编码为一条染色体(chromesome),在特征选择中,如 果目标是从 D 个特征中选择 d 个,则把所有特征描述为一条由 D 个 0/1 字符组 成的字符串,0 代表该特征没有被选中,1 代表该特征被选中,这个字符串就叫 做染色体,记作 m。显然,要求的是一条有且仅有 d 个 1 的染色体,这样的染色 体共有 ?? ?种。 优化的目标被描述成适应度(fitness)函数,每一条染色体对应一个适应 度值 f(m)。可以用前面定义的基于类内类间距离的类别可分性判据 Jd(x)作 为适应度。
遗传算法具体步骤如下
以 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 次计算之后,可以得到每条染色体的适应度值。
按照选择概率 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。
首先将一个种群平均分成两部分,称为两个父代种群,将这两个父代种群随 机打乱,再从两个父代中分别取一个染色体进行交叉,这样就完成了一次随机匹 配的过程。
为了使交叉之后的染色体特征维数不变,采用了如下方法:
先从一个父代染色体中随机选取一个片段(长度为 k),统计该片段中有几 个为 1 的基因,再从与之匹配的父代染色体中寻找长度相同、1 基因数目相同的片段,若找到,则进行交叉操作;若未找到,则寻找下一对父代染色体,直到将 所有父代种群遍历完毕。
基因突变是染色体的某一个位点上基因的改变。同样地,为了使变异之后染 色体中特征数量不变,采用了以下方法:
先按一定的概率(称为变异概率)选择是否进行变异操作,若是,则随机从 种群中选择一个个体,再随机地选择一个基因进行反转,若该基因由 1 变为了0, 则再随机选一个 0 变成 1,反之也执行同样的操作。直至遍历完种群中所有的个 体。这样就能保证每个染色体的特征个数不会被改变。
在进行完选择、交叉、和变异操作之后,上一代的种群 M(t)已经变成了新 一代的种群 M(t+1)。重复过程(2),在遗传算法迭代的过程中,种群中的染色 体会趋于所选特征数中的最优解,达到一定的迭代次数 t 后,算法停止,输出最 终种群中适应度值最大的染色体,即完成了在 D 维特征中选择 d 个最优的特征。
顺序前进法是一种自底向上的方法。第一个特征选择单独最优的特征,第二 个特征从其余所有特征中选择与第一个特征组合在一起后准则最优的特征,后面 的每一个特征都选择与已经入选的特征组合起来最优的特征。
顺序后退法是一种从顶向下的方法,与顺序前进法相对应。从所有特征逐一 剔除不被选中的特征。每次剔除的特征都是使得剩余的特征的准则函数值最优的 特征。
首先看在取 30 维特征的时候,随着遗传算法的迭代,每一代种群的适应度 值收敛情况
从图中可以很明显地看出,随着遗传算法迭代次数的增加,每一代种群的适 应度值在逐渐变大。当迭代次数达到 60 次的时候,种群中的最大适应度值趋于 最大,在之后收敛与 0.07 左右.
经过遗传算法迭代 150 次求得的最优种群如下图
图中红色代表 0,蓝色代表 1,横坐标表示特征,纵坐标表示每个染色体。 图中只显示了一部分。可以看见,在迭代后,每个个体所选择的特征趋于一致。
所选出的适应度值最优的染色体和特征为
现在扩展到选择其他个数的特征的情况,将 d 从 1 取到 60,每个 d 都对应 着一个最优适应度值,现横向将其比较
从图中可以看出,用遗传算法从 60 维中取 1 到 5 维的时候得出的最优染色 体适应度值最大,在 20 维之后适应度值呈现平稳下降的趋势,最终收敛于 0.03 左右。
由于 Iris 数据集的特征只有 4 维,特征选择的情况较简单,这里不再赘述。
以 Sonar 数据集为例,验证从 60 维中选择 30 维特征的选择情况。
以 Sonar 数据集为例,从 60 维特征中取 1 到 10 维,分别看遗传算法、顺序 前进法、顺序后退法的每一维最优适应度值
1、遗传算法作为一种解决最优化的一种搜索启发式算法,是进化算法的一 种,在选择特征方面具有显著效果。随着遗传算法迭代次数的增加,每一代种群 的适应度值逐渐收敛于局部最优解,从而能够找到所选择的最优特征。
2、顺序前进法与单独最优特征的选择方法相比,考虑了一定的特征间组合 的因素,但是其第一个特征仍是仅靠单个特征的准则来选择的,而且每个特征一旦入选 后就无法再剔除,即使它与后面选择的特征并不是最优的组合。
3、顺序后退法也考虑了特征间的组合,但是由于是自顶向下的方法,很多 进行高维空间进行,计算量比顺序前进法大些。而且顺序后退法在一旦剔除了某 一特征后就无法再把它选入。
4、通过上图的对比可以看出,遗传算法和顺序前进法选出的最优染色体的 适应度值受维数影响较大,但遗传算法的适应度值要大于顺序前进法。顺序后退 法选出的最优染色体的适应度值不但不受维数影响,而且都要大于遗传算法。得 出的结果为:顺序后退法>遗传算法>顺序前进法。
实验环境Python3.6
GitHub地址如下
Pattern recognition / GA
https://github.com/Fangzhenxuan/AI_Projects.git
相关知识
遗传算法
遗传算法原理与详解
人工智能 6.1遗传算法
遗传算法Python 教程(1)
遗传算法的基本原理与流程
使用p5.js实现神经网络与遗传算法示例
遗传算法+改良圈算法
基于规则集遗传算法模型的斑体花蜱在中国适生区预估
遗传算法Matlab代码实现及其在推荐系统中的应用
基于改进遗传算法的工程施工进度优化
网址: 遗传算法特征选择 https://m.huajiangbk.com/newsview1546807.html
上一篇: 华南地区花鰶的个体生物学特征及种 |
下一篇: 矮牵牛花朵大小及相关性状遗传分析 |