原文题目:A differential evolution based feature combination selection algorithm for high-dimensional data
摘要:特征组合选择用于对象分类,以选择能够产生强大组合的互补特征。选择特征组合的一个活跃领域是全基因组关联研究(GWAS)。然而,(问题)从高维GWAS数据中选择特征组合面临着计算复杂度高的严重问题。本文提出了一种快速进化优化方法,(方法)搜索历史引导微分进化(HGDE)来解决这一问题。该方法应用二进制空间划分树中记忆的搜索历史,增强其选择特征组合的能力。我们(实验)使用合成数据集对所提出的HGDE算法和其他最先进的算法进行了比较研究,然后使用HGDE算法在一个真实的年龄相关性黄斑变性数据集上进行实验。实验结果表明,(结果)该算法在特征组合的选择方面具有较好的性能。本研究结果还为研究年龄相关性黄斑变性的功能机制提供了参考。
一、introduction
1 GWAS的目的是检测单核苷酸多态性(SNPs)与主要人类疾病等性状之间的关联
2 GWAS在检测与复杂疾病相关的易感SNPs面临重大障碍,其中一个原因是许多复杂疾病的攻击会受到snp之间的相互作用的影响,这种SNPs的相互作用被称为上位性或上位性相互作用
上位性(epistasis)原意是指某一基因受不同位点上别的基因抑制而不能表达的现象。 现在上位性的涵义已有了扩展,在群体遗传学和数量遗传学中非等位基因的遗传效应为非相加性时,常统称之为上位性。 也就是位于不同座位上的基因间的非相加性相互作用。(来自百度百科)
3 GWAS数据集很大,但仅有一小部分与疾病相关,所以计算量很大
4 目前有几种可以处理选择特征组合的搜索算法,根据其优化策略,这些方法可分为四类:穷举搜索算法、基于机器学习的算法、随机搜索算法和进化算法。随机搜索算法和进化算法可以处理高维数据,但通常在准确性和稳定性方面表现较差
5 差分进化(DE)是一种有效的基于种群的启发式搜索算法,然而使用传统的DE算法很难选择与疾病相关的组合
所以提出了一种新的微分演化算法,该算法采用BSP树,可以记忆搜索历史,搜索历史记录了评估后的方案的位置,因此提出的算法可以避免重新评估的方案,并指导重新评估的方案找到一个未访问的位置,将所提出的算法称为搜索历史引导的微分进化(HGDE)。HGDE在三个方面具有压倒性的优势:
1.快,因为不需要评估所有的特征组合;
2.可以去除重复序列,保持种群的多样性,从而降低了落入局部最优的概率;
3.通过搜索历史记录来指示搜索的方向。如果一个个体在种群中重复,搜索历史可以引导重复个体找到一个未访问的位置。
Binary space partitioning(BSP)是一种使用超平面递归划分空间到凸集的一种方法。 使用该方法划分空间可以得到表示空间中对象的一个树形数据结构。 这个树形数据结构被我们叫做BSP树(来自知乎)
二、related work
上面提到的四类方法:穷举搜索算法、基于机器学习的算法、随机搜索算法和进化算法
穷举搜索算法适用于小数据集,大数据集计算量大而不适用,达咩;
基于机器学习的算法不能确定SNP组合和疾病之间的真正因果关系,达咩;
随即搜索算法因在搜索过程中使用随机因子而受到批评,但随着搜索空间的指数扩展而往往无效,达咩;
所以就要用到进化算法了!然后介绍了很多很多方法,都用来干什么,怎么怎么好,比如CINOEDV(P)、IEACO、epiACO、FHSA-SED和HS结合。。。巴拉巴拉一堆。
三、Materials
3.1 问题定义
在GWAS领域,SNP是双等位基因标记。一般来说,大写字母表示主要等位基因,小写字母表示次要等位基因,有三种基因型组合:纯合子主要基因型(AA)、杂合子基因型(Aa)和纯合子次要基因型(aa)。对基因型数据{AA,Aa,aa}进行编码,将其表示为{0,1,2}。
这里首先假设有N个样本(包括Nd(cases)病例和Nu(controls)对照)(这里我不确定百度翻译的对不对,总之N=Nd+Nu,Nd和Nu具体什么意思我也很挠头)和L个SNPs。基因型数据集可以表示为一个大小为N×(L+1)的表,其中行为样本,列为SNPs。表中的每个元素(sj,ri)为第j个样本在第i个SNP位点上的基因型,C表示类标签(0表示对照(controls),1表示病例(cases))。例如,表1展示了一个由6个样本和8个SNPs组成的数据集,分别记为{s1,s2,...,s6}和{r1,r2,...,r8}。
在一个基因型数据集中,有一个或多个与该疾病相关的SNP组合。这个检测疾病相关SNP组合的问题可以被建模为一个特征组合选择问题。因此,一个双位点疾病相关的SNP组合可以被认为是一个特征组合,它可以由来定义。
3.2 适应度函数
适应度函数用来度量所搜索的特征组合与疾病之间的关联,这里用卡方检验作为适应度函数:
这里Oevent和Eevent表示一个事件的观测频率和预期频率
表示SNPrp和表型C的卡方检验值,表示SNPrp、rq和表型C的卡法检验值,某些事件的观测值被记录在列联表中,表2给出了单个SNP的卡方检验列联表:
表3为一个SNP组合的卡方检验列联表 :
原假设是特征组合与疾病之间没有关系;备择假设是当检验统计量的p值低于显著性阈值α时,特征组合与疾病之间存在一定程度的相关性。
显著性阈值α设置为0.1,并假定表1中某些特征组合的卡方值,比如:,然后得到对应的p值0.34,对应的p值为0.25,对应的p值为0.03,由于最优对应的p值小于α,因此可以认为r1和r3的组合与该疾病相关。(这些数怎么得到的呀,望大佬指教)
四、Methods
4.1 HGDE框架
算法步骤:
1 初始化种群
2 获得当前最好个体
3 循环:1)突变
2)交叉
3)选择
4)应用以搜索历史记录为引导的策略
5)计算p值,如果p值小于显著性阈值α,则记录当前向量
6)获得当前最好个体
4 代数G+1,下一代
4.1.1 初始化
4.1.2 突变
来自当前一代的父母个体称为目标个体,通过差异突变操作获得的突变个体称为供体个体。对每一个目标个体一个供体个体是通过得到的,其中
是当前最好个体,是从当前种群中随机选择的两个不同的个体。F是通常在0.4到1之间的标量数。
所得到的供体向量的分量可能在最小边界和最大边界之外。因此,将边界内的向量视为
由于特征组合选择问题的离散性,将实值向量投影到一个整数值向量上。投影操作可以定义为
这里是适应度函数,是最接近这个整数向量的四个整数向量,在这个等式中,将值最高的分配给。投影操作如图1所示
4.1.3 交叉
为了增加种群的多样性,将预先确定的目标向量和供体向量交叉得到一个试验向量。交叉操作被写为
其中是特征为的供体向量, 是特征为的目标向量, 是特征为的试验向量,rand(0,1)是均匀随机值,CR是交叉率,它可以在0到1之间变化。
4.1.4 选择
根据下式选择下一代个体
是一个随机选择的索引,它保证至少有一个被添加到下一代的种群中。如果试验向量的适应度值优于目标向量,则试验向量将在下一代中取代目标向量。否则,目标向量将被保留。在选择操作之后,种群要么得到改善,要么保持不变。
4.2 搜索历史引导策略
搜索历史引导策略用于快速查询个体是否被重复。HGDE使用存储在二进制空间分区(BSP)树中的搜索历史记录,以保证在搜索过程中不存在重复项。
对于一个M个个体的种群,不等于除非m=n。BSP树的根表示整个搜索空间,每个非根节点表示的一个子空间。一个父节点有两个子节点l和r,这两个子节点的子空间之和为其父节点的空间。当生成一个新的个体时,该个体将作为一个节点插入到BSP树中。算法2给出了搜索历史引导策略的伪代码。从算法的角度来看,一个重复的个体在其父节点所表示的子空间中随机突变到一个未访问的位置。如果已经访问了子空间中的所有位置,则将重新初始化重复的个体。
举个栗子:
有五个特征r1-r5,经过突变交叉等操作后,生成五个随机特征组合,
初始整个搜索空间大小为Ω=[1,5]×[1,5],根节点为R
算法第四行和第七行的r和l我觉得不太对,尤其是原文提到这里我觉得反了,求大佬指教。
浅写了个计算步骤:
五、Experiments
同时使用合成数据集和真实数据集来评估HGDE的性能。在合成数据集上,我们将HGDE在检测能力、运行时间和稳定性等方面与五种最先进的算法进行了比较。对于真实世界的生物数据集,这六种比较算法分别在年龄相关性黄斑变性(AMD)数据集上运行。
5.1 合成数据集上的实验
5.1.1 合成数据集
本实验采用了三种具有边际效应的疾病模型:乘法模型(模型1)、阈值模型(模型2)和具体模型(模型3)[20]。疾病模型依赖于外显率表,对外显率表的详细解释见表4。表中的元素表示该基因型受到该疾病影响的概率,记为P(D|Sk),其中D为该疾病,Sk为第k个基因型组合。这些因素与三个参数相关:遗传力(h²)、次要等位基因频率(MAF)和疾病流行率(P(D))。在外显率表中,每个边际外显率都相当于P(D)。
表四:一个疾病模型的外显率表。P(D|Sk)表示基因型组合受到疾病影响的概率,Wx(Wy)表示边际外显率,P(D)为疾病患病率。
对这三种模型,h²和P(D)值固定,乘法模型中为h²=0.005和P(D)=0.1,阈值模型和具体模型中为0.02和0.1,MAF在四个给定值(0.05、0.10、0.20和0.50)下设置为变量,因此,可以获得12个具有不同参数设置的不同外显率表(见表5)。对于每个外显率表,使用模拟器GAMETES_2.0生成200个数据集。在前100个数据集中,每个数据集包含4000个样本和1000个snp。在其他100个数据集中,SNPs的数量增加到3000个,以模拟高维数据。此外,每个生成的数据集中都包含一个与疾病相关的SNP组合。
5.1.2 参数设置
在本合成数据集的实验中,在Bonferroni校正前,将显著性阈值a设置为0.1。bonferroni校正后的显著性被定义为
其中,α0为用户指定的显著性阈值,L为数据集的特征数,k为特征组合大小。 为了评价这六种算法的性能,根据
其中,Q表示从同一外显率表生成的所有100个数据集中成功检测到的SNP数据集的数量。
对于这六种算法,指定适应度函数的最大评估数作为算法终止条件。对于具有1000个SNPs的数据集,该值设置为10万,对于具有3000个SNPs的数据集,该值设置为50万。算法的其他参数根据作者的建议(见表6)进行设置。
从表6中可以看出,HGDE有三个参数:个体数M、标量数F和交叉率CR。M设置为500;M值越大,运行时间增加;M值越小,检测能力越小。F设置为0.9,CR设置为0.8。这两个参数的值是通过在同一数据集的1000个snp(MAF=0.05)上多次运行HGDE获得的。这些参数的细节如表7所示。
5.1.3 能力比较
所有算法在每个外显率表中独立运行10次,我们记录了这10次运行的最佳结果。图3为对1000个SNPs数据集的检测能力的比较结果。
在模型1和模型2上,HGDE算法在所有参数设置下获得所有最佳功率值。在模型3上,除了MAF=分别为0.20和0.50外,HGDE比其他算法具有更好的检测性能。此外,HGDE在四个外显率表中检测到所有真实的特征组合,即该算法获得的功率达到1。在其他5种比较算法中,只有在MAF=分别为0.20和0.50的模型3上,FHSA-SED算法获得的功率值等于1。
图4为对具有3000个SNPs的数据集的检测能力的比较结果。
从图中可以看出,HGDE得到的功率值远远高于其他五种算法,该算法在检测故障关联特征组合方面比其他算法更有效 。
5.1.4 运行时间比较
表8给出了六种比较算法在具有1000个SNPs的数据集上的平均运行时间和标准差,同时,表9给出了这些算法在有3000个SNPs的数据集上的平均运行时间和标准差。
在有1000个SNPs的数据集上,HGDE是最快的,即,每次运行大约需要25秒;在具有3000个SNPs的数据集上,所提出的算法每次运行大约需要99秒。这个运行速度比其他五种算法都要快得多。
5.1.5 稳定性比较
为了比较这六种算法的稳定性,我们使用每个比较算法在上述10次运行中获得的所有功率结果来绘制方框图。图5显示了六种比较算法在具有1000个SNPs的数据集上的框图,图6显示了在有3000个SNPs的数据集上的框图。
在箱形图中,中值用来描述功率结果的浓度,不受最大值或最小点的影响。从这两个图中可以看出,HGDE的中位数都低于其他比较算法。此外,盒子的长度也直观地显示了集中的程度。HGDE的盒子长度在大多数盒子图中是最短的。以上分析表明,HGDE的分布最集中,即所提出的算法最稳定。
5.2 在真实的AMD数据集上的实验
我们使用了一个真实的AMD数据集,其中包含103,611个SNPs和146个样本(96病例和50个对照)。本实验将显著性阈值α设为1e-04.这六种比较算法在AMD数据集上运行了一次。六种比较算法检测到的特征组合如表10所示。
说了一堆生物相关,我不懂,大概就是表10里面哪个特征位于哪个基因,有什么功能,复杂的很。
六、结论
本文提出了一种简单而有效的高维数据特征组合选择算法HGDE。HGDE可以去除重复序列以保持种群多样性,并通过搜索历史策略的指导下提出搜索方向,从而降低了陷入局部最优的概率。HGDE通过与西诺德夫、IEACO、epiACO、FHSA-SED和DESeeker在合成数据集上的比较来进行评估。实验结果表明,该算法在检测能力、运行时间和稳定性等方面均优于其他算法。此外,在真实的AMD数据集上进行的实验证明了HGDE在全基因组研究中的可行性。此外,还发现了一些新的与疾病相关的SNP组合;这些都需要进一步的检查和验证。
HGDE算法仍然有一些局限性。首先,当前版本的HGDE不能检测高阶特征组合(交互>2中SNPs的数量)。据我们所知,在GWAS中还不存在一种选择高阶特征组合的强大方法。其次,必须在不影响检测能力的情况下进一步提高HGDE的运行时间。第三,该算法对模型1的选择能力较低,h2较小。因此,HGDE还有改进的空间。