用于分类和特征选择的遗传编程(规划)


前言

对遗传编程(GP)的简要介绍,主要关注分类器设计的问题以及特征选择 (文章阅读笔记)


一、遗传编程:特殊的编码方案

遗传编程作为遗传算法的一个特殊分支,其最优解不是适应度函数的最优参数,而是寻找一个程序来解决问题,即遗传规划的最优解是一个计算机程序。关于遗传编程的详细内容,请参考这篇文章:遗传编程(Genetic Programming)学习手记

二、分类和特征选择&遗传编程

1.分类和特征选择

分类,简而言之,就是将给定的数据集(X)里的每一个数据(x),贴上一个类别标签(y),这个类别标签(y)包含于给定的标签集(Y)中。这个”贴标签“的过程,就需要分类器的参与。
分类器的一系列评价标准是依靠一系列特征构建的,因此,特征选择(FS)成为分类过程中的重要部分。
FS可以定义为选择相关特征子集的过程,这些特征可以令人满意地解决目标问题。
FS主要有以下三个目的:
(i)简化模型以增强其可解释性,
(ii)获得更短的训练时间,
(iii)通过降低其自由度来增强分类器的泛化能力。

值得注意的是,遗传编程(GP)可能不会(大多数情况下不会)使用给定数据集的所有特征。因此,基于GP的系统隐式执行FS,至少在某种程度上,即使GP不是专门为FS设计的。
此外,基于判别功能的遗传编程还隐式地从一组初始测量特征中执行特征提取(FE)。其得到的特征应该是少冗余的,信息量较小,并且能够促进后续的学习和增强泛化,也可能有更好的可解释性。
对于给定的分类任务,可能至少有四种类型的特征:
(i)基本
(ii)坏
(iii)冗余
(iv)无影响
FS方案的目标应该是(i)选择基本特征,(ii)拒绝不良特征,(iii)明智地选择一些冗余特征,以及(iv)拒绝无差异特征。

2.用于分类和特征选择的遗传编程:一个简单的例子

要分类的数据集由两个圆圈内均匀分布的点组成,分别由“◦”和“+”表示。
每个圆内的点表示一个类。
人工二元分类数据集和一些二元分类器
C1 : (x1 − 1)2 +(x2 + 1)2 = 0.98
C2 : (x1 + 1)2 + (x2 − 1)2 = 0.98
对应于 C1 的点属于类 1,对应于 C2 的点属于类 2。
尝试使用一个基于GP的二分类器来划分这个数据集。分类过程中,基于 GP 的系统中的每个候选解决方案都由一个编码判别函数的树组成。
当我们使用数据点 x 递归地计算树T (·) 时,它返回实值.。 在这里插入图片描述 。如果 T(x)> 0,则二元分类器预测 x 属于类 1,否则它预测 x 属于类 2。
设运算符集(内部节点)为 F = {+,−,×,÷},操作数集(叶节点)为在这里插入图片描述 F = {x1, x2} 是特征集。
为了进一步说明,我们在图 1 中显示了三个二元分类器,它们由a : (x1 − x2) − 0.1、b : (x1 × x2) − 0.1、c : (x1 × x1) − x2 分别表示。
a
在这里插入图片描述
在这里插入图片描述
可以看到,树a的解将准确预测所有点;树b则认为所有点都属于类2;树 c 的解将准确预测类 1 的某些点和类 2 的所有点。

对于任何基于GP的方法,在编码方案之后,第二个最重要的问题是制定用于评估解决方案的目标函数。在这里,为了评估二元分类器,我们使用训练数据集的预测准确性作为评估/目标函数,这是一个简单,直接但有效的策略。
基于GP的系统设计中的第三个最重要的问题是算子的选择。此问题在这里不作过多叙述。仅仅简单介绍一下原始的交叉运算变异运算
交叉运算需要两个亲本 S1 和 S2 来生成新的后代 O。为了生成O树,它选择两个随机节点(可能是叶或非叶),其中一个来自S1树,另一个来自S2树。为了用一个例子来说明这一点,我们假设与 S1 和 S2 关联的树分别是 c 和 a。随机选择的交叉点及其各自的子树也如Fig2和Fig4所示。
在将 c 的选定子树(见Fig 4)替换为 a 的选定子树(见Fig 2)后,交叉运算符生成一个具有树 d : x1 − x2 的后代 O,如Fig5 所示。
CROSS 树 d 的分类器与树 a 的分类器具有相同的精度,但由于其简单性(树的较小大小),树 d 的分类器是更好的选择。
突变运算只需要一个解 S。从与 S关联的树中随机选择一个节点。如果节点是终端节点,则从 [0 ,1] 中提取一个随机数 随机数 。如果条件 在这里插入图片描述 选择变量的预先设定的概率),所选终端节点被随机选择的变量(特征)替换。否则,节点将被随机生成的常量 rc ∈ Rc 替换(应明智地选择 Rc)。例如,在这个标准示例中,Rc 的一个不错的选择可能是 [−2, 2]。


三、三种现有的GP方法

第一种方法引入了一种分类策略,采用单一的基于GP的客观搜索技术。
第二种方法 以集成方式执行分类和 FS 任务。这两个方案使用相同的多树表示形式。
相反,第三种方法将c类分类问题转化为c二元分类问题,然后,同时执行分类和 FS。然而,与前两种方案不同,它使用遗传进程(二元分类器)的集合和否定投票方案。


用于同步特征选择和分类器设计的遗传编程

我们已经提到过,以上提及的算法不显式执行任何FS,仅关注分类准确性。但是,它可能隐式执行 FS。
也有人提出将 FS 集成到分类器设计任务中的方法,即同时选择一个好的特征子集,并使用选定的特征构造一个分类器。具体方法是提出两个新的交叉运算符,使用它们执行 FS 过程。同样也使用了分类器的多树表示。

两种交叉算子

同质交叉算子(homogeneous crossover):

仅使用处于相同特征子集的解,进行交叉

异质交叉算子(heterogeneous crossover):

偏向于使用更常规特征的两个解,进行交叉

用于特征选择和分类的多目标集成遗传编程

将 c 类分类问题划分为 c 个二元分类问题,然后,进化出c个用于遗传编程的种群来找到c个集成分类器的数据集,分别解决这些c个二元分类问题。为了解决每个二元分类问题,使用了一种基于多目标档案的稳态微遗传规划(ASMiGP)。这种方案为了促进FS(特征选择),它利用了突变操作期间特征的适应度值和不拟合值(考察适应度值以将该特征加入到GP树中,根据不拟合值考察将该特征变异删除)。特征的适应性和不适应性都会随着代际而动态变化,以期获得一组具有低冗余的相关特征。在这方面引入了一种新的否定投票策略。

基于ASMiGP的学习策略:

c 个种群中的每个解都是一个二元分类器,它由单个树编码。当数据点 x 通过第 i 个种群的二元分类器树时,二元分类器树的正输出和负输出分别表示 x 属于第 i 类或者不属于第 i 类。
通常,随着基于GP的系统的进化,其种群的平均树大小可能会增加,却不会提高解决方案的性能,这种现象叫做“滞涨”(bloating )。其解决方法中一个较为突出的方法是添加限制树的大小作为附加目标函数。

投票策略:

在学习结束后,使用特殊的否定投票策略。该策略使用了“净归属感”(net belongingness)  net belongingness 值得注意的是,净归属感位于 [0, 1] 中,并且此度量值的值越大,表示属于相应类的机会越高。

评价

在设计用于基于GP的分类和FS系统时,应牢记几个重要问题。在本节中,我们将讨论其中一些突出问题的详细信息以及解决这些问题的一些方法。这些问题中的大多数不仅取决于基于 GP 的策略,还取决于数据集,即特征数、类数、数据在不同(多数和少数)类中的分布、特征与样本的比率、特征空间中数据的分布等。因此,没有普遍的规则来处理所有这些问题。

在为多类分类设计基于 GP 的系统时,第一个问题是如何处理数据的多类性质。
主要有两种方法。
较为常用的方案是将c类问题分解为c二元分类问题,然后为每个二元分类问题开发单独的基于GP的系统。第 i 个二元分类系统的每个候选解都可以有一个树,其中给定点的树的正输出将指示该点属于第 i 类。为了解决每个二元分类问题,人们可以选择使用在每个二元系统中发现的最好的二元分类器(遗传编程进化得到的),或者可以选择使用从这些二进制系统获得的一组二元分类器(集成分类器)。如果使用基于集成的策略,则需要有一个投票(聚合)方案。如果明智地设计了加权和/或否定投票方法,投票计划可能会变得更加有效。同样,为了决定最终的类标签,需要累积和处理每个二进制系统的输出(决策)。在这里,也可以开发一些(加权的,否定的)投票方案,或者一些专门设计的决策系统。
另一个相对不常用的策略如下。每个解决方案都由一棵树组成,其中树的输出使用 (c − 1) 阈值划分为 c 窗口。这些值中的每个窗口都将具有一对一的窗口到类的关系。如果树的输出落在第 i 个窗口内,则该树将预测该点属于第 i 个类。不建议采用第二种方法,因为它不太可能产生令人满意的结果。此外,即使产生了相对满意的结果,其基于GP的规则(分类器)的可解释性也会很低。

如果将c类数据集(c>2)分解为c二元分类数据集,即使按类分布接近均匀,分解后,每个二元数据集都会不平衡。在这种情况下,不平衡的性质随着c的增加而增加。如果不特别注意,只使用准确性(或分类误差)作为目标,则每个二进制模块可能会产生几乎(c − 1)/ c×100%的准确性来预测每个数据点的“NO”。这个问题的一个可能的解决方案可能是使用多目标方法或加权和方法,同时考虑多数类和少数类的准确性。

我们认为,多目标方法是一个更好的选择,因为多数和少数类精度的权重选择很难决定,他们的选择可能会对系统的性能产生重大影响。

GP在推广存储在特定数据集中的隐藏模式方面存在一些有趣的问题。例如,考虑图6所示的“异或”型二进制分类数据集。人工“异或”型二元分类数据集和具有树的二元分类器
但是,如果我们尝试用多层感知器类型分类器来学习这个数据集,由于数据的“异或”类型模式,它可能不是很容易学习。
这个例子可能显然说明了GP是一个强大的工具,然而,GP的这种特化能力有时可能会导致泛化不良。GP的这种特化能力有时可能会导致泛化不良
“滞涨”(bloating )是另一个需要解决的重要问题,以开发性能良好的基于GP的系统。
以下两种膨胀控制策略非常简单。
首先,如果使用单一目标方法,则可以将树的大小与目标函数合并为惩罚因子,从而将惩罚降至最低。
其次,如果使用多目标方法,则可以将树的大小添加为附加目标。

正如我们已经讨论过的,GP内含FS功能。若要进一步强制实施 FS,每当选择要包含在任何树中的特征时,模型都应尝试为该方案选择最佳可能的特征。同样,每当从任何分类器中删除功能节点时,它都不应该是该方案下的重要特征。请注意,如果使用基于集成的策略,为了增强性能,集成的成员应该是多样化但准确的。为了利用这个属性,模型应该尝试开发成员分类器,即遗传编程,它们在使用的特征方面是多样化的。同样,对于单个二进制分类器,它使用的特征应具有受控的冗余级别,但这些特征应与预期任务具有最大的相关性。

总结

我们已经简要回顾了一些基于GP的分类器设计方法,其中一些是FS。在此背景下,以合理的细节讨论了三种方法,以期全面了解与适应性,不适应性,选择和遗传操作相关的各个方面。
我们还简要讨论了与参数和协议选择相关的问题,这些问题可以显着改变基于GP的分类器的性能。然而,有一些重要问题我们没有讨论过。例如,如何在大数据环境中有效地设计基于GP的分类器以及特征选择?如何提高GP分类器的可读性?如何处理非数字数据以及数字数据来设计基于GP的分类器?这些都是需要广泛调查的重要问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值