1. 文献信息
H. Xu, B. Xue, and M. Zhang, A duplication analysis based evolutionary algorithm for bi-objective feature selection, IEEE Transactions on Evolutionary Computation, 2021, 25(2): 205-218.
% <multi> <binary>
2. 摘要
特征选择是一个复杂的优化问题,具有重要的现实应用。通常,它的主要目标是降低数据集的维数,提高分类的有效性。由于受群体启发的特征,在过去的几十年里,人们提出了不同的进化算法(EAs)来解决特征选择问题。然而,它们中的大多数只考虑单目标优化,而现实世界中的许多问题都有多个目标,这就需要设计更合适且有效的EAs来处理多目标特征选择。多目标特征选择问题通常包括两个目标:一是使选择的特征数量最小化,二是使分类误差最小化。本文提出了一种基于重复分析的双目标特征选择方法(DAEA)。在算法中,我们对基于支配的EA基本框架进行了三个方面的改进:一是修改了繁殖过程,提高了后代的质量;其次,提出了一种重复分析方法来过滤冗余解;第三,采用基于多样性的选择方法,进一步选择保留解。在实验中,我们将所提出的算法与五种最先进的多目标进化算法(MOEAs)进行了比较,并使用两种广泛使用的性能指标在20个分类数据集上进行了测试。从实证结果来看,DAEA在大多数数据集上表现最好,说明DAEA不仅获得了突出的优化性能,而且获得了良好的分类和泛化效果。
3. Background
3.1 Major motivations
EA已经广泛应用于多目标特征选择[6],[9],[15],[20],[21],[80],但大多数研究只是简单地应用了EA,而没有考虑特征选择本身的特征[3]。特征选择的一个重要特征是在决策空间和目标空间中都经常出现解的重复。正如我们所知,连续优化问题在目标空间和决策空间中很少有重复的解。然而,对于像特征选择这样的离散或组合优化问题,解重复是一个常见而棘手的问题,特别是当有许多冗余特征或很少的训练实例时。如前所述,重复可以在两种情况下发生:1)决策向量重复和2)目标向量重复。前者可以通过仅保留决策空间中的唯一点来轻松处理。然而,由于以下原因,后者要复杂得多。
首先,如果保留目标空间中的所有重复解,则由于目标向量的重叠,会降低目标空间中的种群多样性。如果我们考虑最坏的情况,即所有的解都映射到相同的目标向量,那么在目标空间中就没有多样性了。其次,当每个重复的目标向量只保留一个解时,目标空间的种群多样性最好,唯一点的个数最多。然而,在优化或训练过程中很难决定哪些重复的解应该被删除,因为这些在目标空间中重复的解可能在决策空间中是唯一的,并且在未见过的测试数据上可能具有相当不同的分类精度。上述两种情况是相互冲突的,而去除目标空间中的重复解有利于优化,但可能会导致分类恶化。因此,我们需要在优化(即增加目标中的种群多样性)和分类(即保留尽可能多的测试数据的潜在最优解)之间找到一个折衷方案,这需要进行细致的重复分析。
3.2 Further discussion
事实上,本文关注的重复问题与文献[82]研究的多模态MOP有一些相似之处。多模态多目标特征选择允许算法保留多个映射到同一目标向量的特征子集,这实际上是本文中隐含的先决条件集。因此,在我们的实验中,所有的比较算法默认在多模态模式下运行。这是非常合理和普遍的,因为大多数传统的MOEA实际上对重复目标向量的选择没有限制,如NSGA-II[33]和MOEA/D[42],即最经典的两种MOEA。
尽管它们有相似之处,但它们在以下三个方面有本质的不同。首先,在[82]中,研究者将传统MOEA视为单峰MOEA,这与本文正好相反。其次,[82]的主要动机是寻找更多具有相同目标向量的特征子集,不仅为用户提供特征数量,而且为用户提供所选特征的位置,以便用户做出优先决策,而我们的主要目标是过滤掉一些具有相同目标向量的冗余或多样性较小的特征子集,以提高目标空间中的种群多样性。第三,文献[82]使用的算法框架是基于粒子群算法的,而我们提出的算法是基于遗传算法框架的,这使得它们的算法设计和进化机制完全不同。
4. Proposed algorithm
4.1 General framework
如算法1所示,DAEA的总体框架可分为三个部分:1)初始化;2)繁殖;3)环境选择。DAEA的初始化机制实际上针对大规模特征选择进行了优化。如第4行所示,当特征总数不超过种群大小的3倍时,DAEA仍然采用传统的初始化机制,从决策空间中随机选择特征,不受任何约束。然而,当特征数量变得更大时,DAEA将从决策空间随机抽样初始解,并约束每个解所选特征的数量不超过总体大小的三倍,如第2行所示。设置此约束有两个原因:首先,根据我们之前的研究[4],使用较少数量的特征进行初始化可以在一定程度上有利于特征选择的收敛;其次,较小的种群很难覆盖整个决策空间,因此将勘探规模缩小到种群规模的三倍是一个相对权衡的选择。
DAEA的终止准则基于目标函数评价的次数,每代增加N次。在while循环(第7-17行)中,繁殖过程(第8行)将在4.4节中说明,而环境选择过程从第10行到第16行。DAEA的选择操作主要分为三个部分:1)重复分析(第12行);2)非主导排序(第13-15行);3)多样性维护(第16行)。实际上,选择的第二部分与传统的基于支配的MOEA没有什么区别[33],[40],[79],而方法num(k)表示前k个前沿(第14行)的解的个数。非支配排序方法的更多细节可参考[33]。此外,应该注意的是,在环境选择的开始(第11行),决策空间中的所有重复解都被消除了。在计算复杂度方面,通常多目标进化特征选择中最耗时的部分是对目标值进行评估的过程,即用选择的特征子集训练分类模型。由于该算法不需要额外的目标函数求值,例如使用额外的局部搜索,因此其计算复杂度保持在合理的水平。
4.2 Duplication analysis
创新点1:提出了一种重复分析方法来判断目标空间中哪些重复解应该被过滤掉。主要思想是利用决策空间中解之间的距离来估计它们的不相似度,而那些不相似度较低的解更有可能被删除。这样可以很好地保持目标空间中的种群多样性,同时更有可能保留测试数据上的潜在最优解。
如算法2所示,重复分析的主要思想是利用决策空间中解之间的曼哈顿距离来估计它们的不相似度,从而决定目标空间中哪些重复解应该被删除。在第5行中,变量j是满足具有相同目标向量条件的解的一组对应的索引,目的是找出所有具有重复目标向量的解。在第8-12行中,一个解的不相似度是通过它到决策空间中所有其他解的最小曼哈顿距离来计算的,该距离的值应该在0到1之间。两个决策向量之间的曼哈顿距离实际上揭示了它们所选择的特征有多么不同。
在第13行中,根据所选特征数(t)和总特征数(D)去除阈值(δ)。δ的值在0.2 ~ 0.8之间变化,因为t的值从D变为1,使得去除标准更具包容性。然后,在第14行和第15行中,根据不同程度将这些重复解分为两组:1)不相似度大于或等于去除阈值的远程解和2)不相似度低于去除阈值的聚类解。其中,保留所有远程解和只保留一个聚类解,而randi(k, |k|−1)方法表示从数组k(第15行)中随机选择(|k|−1)成员。因此,较大的δ值将使重复解更有可能被去除。此外,由于δ被设置为与t负相关(第13行),因此对于保留较少数量的选定特征的解,它需要更高的不相似性。
function Population = EnvironmentalSelection(Population, N)
% Get unique individuals in decision space
[~, U_Decs, ~] = unique(Population.decs, 'rows');
UP = Population(U_Decs);
Objs = UP.objs;
Decs = UP.decs;
if length(UP) > N
% Calculate solution difference in decision space
SD = pdist2(Decs, Decs, 'cityblock');
SD(logical(eye(length(SD)))) = inf;
% remove some duplicated solutions in objective space
[U_Objs, ~, I_Objs] = unique(Objs, 'rows');
duplicated = [];
D = size(Decs, 2);
for i = 1 : size(U_Objs, 1)
j = find(I_Objs == i);
if length(j) > 1
t = sum(Decs(j(1), :));
d = min(SD(j, j), [], 2) / 2;
p = d / t;
r = find(p < 0.8 - 0.6 * (t - 1) / (D - 1));
if ~isempty(r)
duplicated = [duplicated; j(r(randperm(length(r), length(r) - 1)))];
end
end
end
% reset population
if length(UP) - length(duplicated) > N
UP(duplicated) = [];
Objs = UP.objs;
end
% nondominated sorting
[Front, MaxF] = NDSort(Objs, N);
Selected = Front < MaxF;
Candidate = Front == MaxF;
% Calculate crowding distance
CD = CrowdingDistance(Objs,Front);
% select last front
while sum(Selected) < N
S = Objs(Selected, 1);
IC = find(Candidate);
[~, ID] = sort(CD(IC), 'descend');
IC = IC(ID);
C = Objs(IC, 1);
Div_Vert = zeros(1, length(C));
for i = 1 : length(C)
Div_Vert(i) = length(find(S == C(i)));
end
[~, IDiv_Vert] = sort(Div_Vert);
IS = IC(IDiv_Vert(1));
% reset Selected and Candidate
Selected(IS) = true;
Candidate(IS) = false;
end
Population = UP(Selected);
else
Population = [UP, Population(randperm(length(Population), (N - length(UP))))];
end
end
4.3 Diversity maintenance
创新点2:提出了一种基于多样性的选择方法,在非支配排序后进一步选择解[79]。与传统的拥挤距离方法[33]忽视特征选择的本质不同,本文方法将选择的特征子集具有相同大小的解的个数作为第一选择准则,并将拥挤距离作为补充准则。
多样性维护过程的伪代码如算法3所示,其中输入变量α和β来自算法1的第15行和第16行,对应于非支配前沿的解的索引。如算法3所示,本文提出的基于多样性的选择方法采用两个选择标准:1)多样性评分(第5-11行)和 2)拥挤距离(第2-4行)。前者作为主要标准,后者作为补充标准。更具体地说,第4行中的排序使具有较大拥挤距离的解优先出现。然后,在第7行和第8行中,将未选择解的多样性得分设置为具有相同数量的已选择特征的已选择解的个数,即与Section II-A第一段中已经定义的第一目标f1的值相同。最后,选择最小的解多样性得分(第10和11行),虽然拥挤距离时才生效有多个解相同的最小的多样性得分,根据事先的排序(第4行)。由于训练数据上的最优解可能不是最佳的解的测试数据,也就是说,可能有一个过度拟合的问题,重要的是要保持良好的多样性为每个所选特征子集的大小,也就是说,在f1目标方向上。
4.4 Reproduction modification
创新点3:改进了繁殖过程,采用小生境交配法在目标空间中组合相邻解,k-位交叉法避免繁殖与亲本相同的后代,采用混合突变法平衡选择和未选择特征的变异率。
如算法4所示,DAEA的繁殖过程主要分为三个部分:①小生境交配(第1-12行);②k-位交叉(第13-20行);③混合突变(第21行)。
小生境交配法与常规设置相似,即[9]中为85%/15%,[43]中为90%/10%,随机从局部邻域或全局种群中选择80%/20%的亲本。我们采用了小生境的思想,因为它是一种更稳定、更有效的方法,可以在具有相似目标向量的两个解之间交换进化信息,许多研究工作已经证明了这一点[9]、[43]、[46]、[47]。在第2行中,邻域大小设置为种群大小的20%,类似于[46]中常规设置的10%,考虑到目标空间的左、右、上、下四个方向,邻域大小至少为4个。在第3行中,每个目标方向上的目标值分别归一化为相同的尺度,以便在之后选择相邻解时公平(第4行)。
在算法4的第13-20行中,提出的k-位交叉方法,随机修改两个父节点之一上至少一个但不超过(|j|−1)个决策变量 [例如,第15行中的Pop(i)和Par(i)]。在这里,DAEA只对两个父节点的决策变量值不同的位进行交叉(例如,第15行中的j)。例如,如果我们将图1中的解x1和x3作为双亲来生成后代,我们将只在第1,4,5,6,7,8位随机交叉(因为决策变量值在这些位上是不同的),而忽略第2和第3位。这样,通过k-位交叉方法产生的后代更有可能与其父母不同。
算法5中详细介绍了混合突变方法,其中修改后的突变方法(第2-10行)和传统的突变方法(第11-18行)分别以大致设定的20%和80%的比例随机应用[83]、[84]。需要注意的是,我们并没有试图找到最佳的比值,但是使用传统的位突变方法的概率应该设置得比较大,因为它提供了一个更一般和稳定的变异。然而,如果所选特征的数量远远小于决策空间维度(即第12行中的D),则添加新特征(将0变为1)的概率将远远大于删除旧特征(将1变为0)的概率。相比之下,修改后的突变机制通过分别处理选择和未选择的特征(即分别在第3行和第9行中的t1和t0)来平衡添加和删除特征的概率。需要注意的是,第3行和第9行中的t1和t0不是解的索引,而是某个解决策向量中值为1或0的基因的索引,分别对应被选择和未被选择的特征。而且,算法5(第6行和第15行)中的特定突变动作其实很简单,只需要翻转第6行中索引为或第15行中索引为
的特定基因,将1变为0或0变为1。
让我们以具有两个选择特征(值为1 bits)的子代为例来说明上述观点,决策空间维数为10,未选择特征(值为0 bits)的数量为8。因此,在传统的突变方法中,去除至少一个选定特征的概率为1-(1-1/10)^2 = 0.19,而添加至少一个未选中特征的概率为1-(1-1/10)^8≈0.57。显然,在大约三倍的概率差下,更有可能增加特征而不是去除特征,这对后代的变异是不利的。相比之下,在改进的突变方法中,删除至少一个选定特征的概率为1-(1-1/(1+ 2))^2≈0.56,添加至少一个未选中特征的概率为1-(1-1/(1+8))^8≈0.61。可以看出,它们的概率差大大缩小,概率几乎相同,这使得对0和1个决策变量进行突变更加公平,增加了所选特征刷新的机会。
function Offspring = NicVariation(Problem,Population)
Objs = Population.objs;
Decs = Population.decs;
[N,D] = size(Decs);
% Selecting parents
T = max(4, ceil(N * 0.2));
normObjs = (Objs-repmat(min(Objs,[],1),N,1))./repmat(max(Objs,[],1)-min(Objs,[],1),N,1);
ED = pdist2(normObjs, normObjs, 'euclidean');
ED(logical(eye(length(ED)))) = inf;
[~, INic] = sort(ED, 2);
INic = INic(:, 1 : T);
IP_1 = (1 : N);
IP_2 = zeros(1, N);
for i = 1 : N
if rand < 0.8 % local mating
IP_2(i) = INic(i, randi(T, 1));
else % global mating
IG = (1 : N);
IG(i) = [];
IP_2(i) = IG(randi(N - 1, 1));
end
end
Parent_1 = Decs(IP_1, :);
Parent_2 = Decs(IP_2, :);
Offspring = Parent_1;
% do crossover
for i = 1 : N
k = find(xor(Parent_1(i, :), Parent_2(i, :)));
t = length(k);
if t > 1
j = k(randperm(t, randi(t - 1, 1)));
Offspring(i, j) = Parent_2(i, j);
end
end
% do mutation
for i = 1 : N
if rand < 0.2
j1 = find(Offspring(i, :));
j0 = find(~Offspring(i, :));
k1 = rand(1, length(j1)) < 1 / (length(j1) + 1);
k0 = rand(1, length(j0)) < 1 / (length(j0) + 1);
Offspring(i, j1(k1)) = false;
Offspring(i, j0(k0)) = true;
else
k = rand(1, D) < 1 / D;
Offspring(i, k) = ~Offspring(i, k);
end
end
% get unique offspring and individuals (function evaluated)
Offspring = unique(Offspring, 'rows');
Offspring = Problem.Evaluation(Offspring);
end
5. Conclusions and future work
本文的目的是建立一种基于重复分析的双目标特征选择新方法。通过分析和处理决策空间和目标空间的重复,提出特征选择的多样性机制,修改EA的复制过程,成功地实现了这一目标。在20个基准分类数据集上,从13到7070多个不同数量的特征,对新方法(DAEA)进行了检验,并与五种最先进的算法进行了比较。结果表明,DAEA在HV和IGD方面都优于所有竞争算法,并且成功地选择了更少的特征,同时在大多数数据集上取得了更好的分类精度。此外,DAEA算法具有较好的收敛性和多样性。进一步分析结果表明,重复分析与处理、基于多样性的选择和改进的复制方法对新算法DAEA的成功都有积极的贡献,但将它们组合到DAEA中对最终的最佳结果贡献最大。
在未来,我们计划进一步分析DAEA的参数敏感性,并研究DAEA在更多分类数据集上的性能,特别是在多模态进化环境下的性能。