崔衍,薛源
(南京郵電大學(xué)物聯(lián)網(wǎng)學(xué)院,南京 210003)
各種生物的生命活動(dòng)都是由基因調(diào)控的,近年來(lái)DNA微陣列技術(shù)憑借其優(yōu)點(diǎn)成為研究基因的主要技術(shù)[1]。DNA微陣列技術(shù)產(chǎn)生的基因表達(dá)數(shù)據(jù)是一個(gè)矩陣,反映的是基因轉(zhuǎn)錄產(chǎn)物mRNA在細(xì)胞中的豐度,通過(guò)分析這些數(shù)據(jù)能夠得到當(dāng)前細(xì)胞的生理活動(dòng)狀態(tài)。該矩陣的行代表的是基因,列代表的是條件(實(shí)驗(yàn)環(huán)境)。對(duì)基因表達(dá)數(shù)據(jù)進(jìn)行分析的傳統(tǒng)方法是聚類,但是傳統(tǒng)的聚類只能對(duì)基因進(jìn)行聚類或者對(duì)條件進(jìn)行聚類,這樣得到的是部分基因在所有條件下相似的表達(dá)模式或者所有基因在部分條件下相似的表達(dá)模式[2],并且得到的聚類元素集合沒(méi)有相交,即一個(gè)基因或者條件只能在一個(gè)聚類里,不能屬于多個(gè)聚類[3],這并不能很好的應(yīng)用于對(duì)基因表達(dá)數(shù)據(jù)進(jìn)行分析,因?yàn)橐徊糠只蚩赡茉诙鄠€(gè)條件下調(diào)節(jié)同一生物功能[4]。Cheng和Church[5]在2000年首次將雙聚類應(yīng)用于基因表達(dá)數(shù)據(jù)分析。雙聚類顧名思義,就是同時(shí)對(duì)行(基因)和列(條件)進(jìn)行聚類,得到一個(gè)具有相似表達(dá)模式的子矩陣。雙聚類已經(jīng)被證明是一個(gè)NP-hard問(wèn)題,智能優(yōu)化算法在解決NP-hard問(wèn)題方面有著獨(dú)特的優(yōu)勢(shì),因此將智能優(yōu)化算法應(yīng)用于雙聚類算法是一個(gè)很好的研究方向。
Yang[6]在2010年根據(jù)蝙蝠回聲定位提出了蝙蝠算法(bat algorithm,BA)。BA算法在解決復(fù)雜的優(yōu)化問(wèn)題方面有著很好的性能,引起了學(xué)者的極大關(guān)注,現(xiàn)在已經(jīng)應(yīng)用于多個(gè)領(lǐng)域來(lái)解決問(wèn)題。本文提出了一個(gè)基于改進(jìn)蝙蝠算法的雙聚類算法。改進(jìn)了原始蝙蝠算法的位置和速度更新公式,并引入變異算子來(lái)提高局部搜索能力。最后在酵母菌數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),與多個(gè)雙聚類算法的實(shí)驗(yàn)結(jié)果進(jìn)行比較。結(jié)果表明本文提出的基于蝙蝠算法設(shè)計(jì)雙聚類算法是一個(gè)可行的方法,能夠挖掘出更優(yōu)的雙聚類。
Cheng和Church提出CC算法的時(shí)候給出了雙聚類的定義[5],定義如下:
定義1設(shè)M行N列的基因表達(dá)矩陣為A,G為包含M個(gè)基因的基因集,C為包含N個(gè)條件的條件合,a i j為基因表達(dá)矩陣A的一個(gè)元素。雙聚類定義為B=(I,J),其中I為G的一個(gè)子集,J為C的一個(gè)子集,b ij為子矩陣B的元素,子矩陣B的平均平方殘差為:
其中:a iJ、a Ij、a IJ分別為子矩陣B的第i行平均值、子矩陣B的第j列平均值和子矩陣B(I,J)的平均值。存在一個(gè)δ≥0,如果子矩陣B(I,J)滿足H(I,J)≤δ,則稱該子矩陣為一個(gè)δ-bicluster。
雙聚類的目的就是在基因表達(dá)數(shù)據(jù)矩陣中尋找滿足條件的子矩陣,使得子矩陣中基因集在對(duì)應(yīng)的條件集上具有相似的表達(dá)模式。
蝙蝠算法是基于蝙蝠的回聲定位行為提出來(lái)的[7]。蝙蝠的回聲定位能夠幫助蝙蝠探測(cè)到目標(biāo)的方向和位置,還可以幫助蝙蝠躲避障礙物。蝙蝠算法中將蝙蝠的一些行為理想化,理想化的規(guī)則如下:
(1)所有的蝙蝠都利用回聲定位來(lái)感知自身與目標(biāo)的距離,并且以某種特殊的方式區(qū)別目標(biāo)與障礙物。
(2)每只蝙蝠都擁有相同的脈沖頻率f、不同的波長(zhǎng)λ和不同的響度A,在位置x以速度v隨機(jī)飛行。它們根據(jù)目標(biāo)的接近程度調(diào)整發(fā)射脈沖的波長(zhǎng)λ(或頻率f),并調(diào)整脈沖發(fā)射頻率r。
(3)假設(shè)響度從最大值A(chǔ)0變化到Amin。
該算法的主要思想是基于以上理想化規(guī)則,改變脈沖發(fā)射頻率、脈沖頻率、聲音響度,來(lái)尋找最優(yōu)解[8]。定義蝙蝠的頻率、速度、位置更新公式:
其中f i為第i只蝙蝠的脈沖頻率,fmax和fmin分別為脈沖頻率的最大值和最小值,β是一個(gè)服從均勻分布的隨機(jī)值且β∈[0,1],和分別是第i只蝙蝠在第t代和t-1代的飛行速度;和分別為第t代和第t-1代的位置;x*為當(dāng)前群體中蝙蝠的最優(yōu)位置(最優(yōu)解)。
為了改善算法的局部搜索能力,使用如下公式更新進(jìn)行局部搜索:
其中,At為第t次迭代所有蝙蝠的平均響度,ε∈[-1,1]是一個(gè)隨機(jī)數(shù)。隨著迭代的進(jìn)行,響度A i和發(fā)射脈沖率r i都會(huì)進(jìn)行更新,更新公式如下:
其中,α和γ是常數(shù),是第i只蝙蝠的初始脈沖發(fā)射率。
蝙蝠算法的偽代碼如下所示:
算法1原始蝙蝠算法
目標(biāo)函數(shù):f(x),x=(x1,x2,…,x d)T;
1.初始化蝙蝠種群x i,速度v i,蝙蝠x i的頻率f i,脈沖發(fā)射率r i,響度A0,i=1,2,…,n
2.初始化參數(shù)蝙蝠種群數(shù)n,α,γ和最大迭代數(shù)ge nmax
3.根據(jù)目標(biāo)函數(shù)找到當(dāng)前全局最優(yōu)解
4.fori=1 togenmax:
5.根據(jù)公式(4),(5),(6)生成新解
6.ifrand>r i(rand是一個(gè)隨機(jī)數(shù),且rand∈[0,1])
7.根據(jù)公式(7)生成一個(gè)新解
8.end if
9.通過(guò)目標(biāo)函數(shù)評(píng)價(jià)新解