宋仁旺,楊磊,余百千,石慧,董增壽
(太原科技大學(xué)電子信息工程學(xué)院,山西太原 030024)
基于統(tǒng)計(jì)學(xué)理論的SVM(Support Vector Machine,SVM)主要針對(duì)小樣本數(shù)據(jù)進(jìn)行故障診斷,但是復(fù)雜的裝備無(wú)時(shí)無(wú)刻不產(chǎn)生大規(guī)模的數(shù)據(jù),所以采用聚類之后構(gòu)造類簇凸殼超平面的方法處理大規(guī)模數(shù)據(jù)成為主流方法,其中構(gòu)造凸殼超平面是其中重要的一環(huán)[1]。
點(diǎn)集的凸殼問題在計(jì)算幾何中是最基本的問題,也有許多學(xué)者稱此為點(diǎn)集的凸包,它是指在平面點(diǎn)集中,由點(diǎn)集中若干個(gè)邊沿?cái)?shù)據(jù)點(diǎn)連接成的凸多邊形包含平面點(diǎn)集上的所有數(shù)據(jù)點(diǎn),這個(gè)凸多邊形就稱點(diǎn)集的凸殼[2-6]。CHAND和KAPUR[7]最早在1970年提出求凸多邊形的卷包裹法,經(jīng)過眾多學(xué)者的努力,現(xiàn)在已經(jīng)出現(xiàn)多種求點(diǎn)集凸殼的經(jīng)典算法,如GRAHAM[8]于1972提出格雷厄姆掃描算法,EDDY[9]于1977年提出快速凸包殼算法,此外還有學(xué)者提出實(shí)時(shí)算法、快速算法和Z3-8算法[10]等。
求取點(diǎn)集的凸殼問題在模式識(shí)別、圖像處理、地理測(cè)繪等領(lǐng)域中有廣泛的應(yīng)用[11],但是各種經(jīng)典算法一直存在算法復(fù)雜度較高的問題,因此眾多學(xué)者一直致力于降低凸殼算法的時(shí)間復(fù)雜度。如劉凱等人[12]提出一種簡(jiǎn)單易于實(shí)現(xiàn)的改進(jìn)Graham掃描算法,該算法首先對(duì)數(shù)據(jù)點(diǎn)橫坐標(biāo)和縱坐標(biāo)進(jìn)行掃面,分別提取縱橫坐標(biāo)上的極限點(diǎn),再求縱坐標(biāo)和橫坐標(biāo)極限點(diǎn)的交集,把交集作為Graham掃描算法的對(duì)象,從而降低算法復(fù)雜度。此方法對(duì)數(shù)據(jù)點(diǎn)分布密集十分有效,但是如果數(shù)據(jù)點(diǎn)分布較稀疏,則達(dá)不到預(yù)期效果。樊廣佺提出八方向極值快速凸殼算法,該算法是對(duì)快速凸殼算法的改進(jìn)[13]。通過8個(gè)方向的極值點(diǎn)構(gòu)造一個(gè)接近凸殼的原始子凸殼,以達(dá)到快速獲得凸殼的目的,但是此方法沒有進(jìn)行數(shù)據(jù)的預(yù)處理。
綜上可知,經(jīng)典的構(gòu)造凸殼超平面的算法存在著算法復(fù)雜度較高的問題,這對(duì)要求快速、高效的檢測(cè)和隔離裝備故障的影響十分顯著。由于凸殼超平面的頂點(diǎn)一定是數(shù)據(jù)集的邊界點(diǎn),所以可以通過提取數(shù)據(jù)集的邊界點(diǎn),去除點(diǎn)集內(nèi)部對(duì)構(gòu)造凸殼超平面無(wú)用的數(shù)據(jù)點(diǎn),降低算法復(fù)雜度。Alpha Shapes算法可用于提取數(shù)據(jù)集輪廓,但該算法的復(fù)雜度過高,所以本文作者對(duì)Alpha Shapes算法進(jìn)行簡(jiǎn)化和改進(jìn),首先結(jié)合數(shù)據(jù)排列隱含的信息,然后從X軸的極大值開始,只提取數(shù)據(jù)集的外圍輪廓線。簡(jiǎn)化和改進(jìn)后的算法可以快速有效地提取數(shù)據(jù)集的邊界數(shù)據(jù)點(diǎn),接著以邊界數(shù)據(jù)點(diǎn)為對(duì)象結(jié)合改進(jìn)的快速凸殼算法構(gòu)造點(diǎn)集的凸殼超平面,進(jìn)而縮短故障診斷的時(shí)間。
即文中算法的主要程序分兩步進(jìn)行:(1)使用簡(jiǎn)化和改進(jìn)后的Alpha Shapes算法對(duì)原始點(diǎn)集進(jìn)行預(yù)處理,以獲取點(diǎn)集少量邊界數(shù)據(jù)點(diǎn);(2)結(jié)合改進(jìn)的快速凸殼算法構(gòu)造凸殼超平面,最后把凸殼超平面的頂點(diǎn)作為數(shù)據(jù)集送入SVM中進(jìn)行模式識(shí)別。
為更加清晰地說(shuō)明文中提出的算法,首先對(duì)文中算法涉及的專用名詞局部密度進(jìn)行解釋。
對(duì)于點(diǎn)集中的任意一個(gè)數(shù)據(jù)點(diǎn)的局部密度定義如公式(1):
(1)
其中:x=dij-dc,dij為歐氏距離:
(2)
(3)
當(dāng)dij≤dc時(shí),x≤0,則f(x)=1;當(dāng)dij>dc時(shí),x>0,則f(x)=0。dc是所求密度區(qū)域的半徑,一般需要自行設(shè)定。
因此任意數(shù)據(jù)點(diǎn)的局部密度等價(jià)于以對(duì)象為圓心,以dc為半徑的圓內(nèi)的數(shù)據(jù)點(diǎn)個(gè)數(shù)。
Alpha Shapes算法是一個(gè)提取點(diǎn)集輪廓的算法,其基本思想可以理解為通過一個(gè)圓在數(shù)據(jù)集的邊緣或內(nèi)部滾動(dòng)來(lái)獲取數(shù)據(jù)集的輪廓線,通過設(shè)置圓的半徑參數(shù)的大小間接設(shè)置獲取點(diǎn)集邊緣的精度,當(dāng)半徑設(shè)置得過大時(shí),得到的點(diǎn)集邊緣偏凸,當(dāng)半徑偏小時(shí),得到的點(diǎn)集邊緣偏凹。因此Alpha Shapes算法可以直觀地獲取一個(gè)無(wú)序點(diǎn)集的輪廓,并且獲得的輪廓是一個(gè)多邊形且此多邊形由數(shù)據(jù)集和參數(shù)唯一確定。
若點(diǎn)集X中有n個(gè)數(shù)據(jù)點(diǎn),則此數(shù)據(jù)集共可形成[1+2+…+(n-1)]條線段,Alpha Shapes算法通過以下步驟判斷哪些線段是邊界點(diǎn)。
首先,以參數(shù)a為半徑,在數(shù)據(jù)集X中任取2個(gè)距離小于2a數(shù)據(jù)點(diǎn),過這2個(gè)數(shù)據(jù)點(diǎn)和半徑a作圓,若圓內(nèi)無(wú)其他數(shù)據(jù)點(diǎn),即認(rèn)為這2個(gè)數(shù)據(jù)點(diǎn)為邊界數(shù)據(jù)點(diǎn),則2個(gè)數(shù)據(jù)點(diǎn)的連線就是邊界線段。例如:已知數(shù)據(jù)點(diǎn)p1(x1,y1)、p2(x2,y2),圓的半徑為a,則求圓心c(x,y)的公式為
(4)
求取圓心之后,判斷2個(gè)點(diǎn)是否為邊界,就看由這2個(gè)點(diǎn)形成的圓內(nèi)是否有其他的數(shù)據(jù)點(diǎn),即等價(jià)于判斷:(1)若其他數(shù)據(jù)點(diǎn)到圓心p3的距離都大于或等于a值,則p1、p2為邊界點(diǎn)。(2)若其他數(shù)據(jù)點(diǎn)到圓心p3的距離小于a值,則p1、p2為非邊界點(diǎn)。
文中對(duì)Alpha Shapes算法進(jìn)行簡(jiǎn)化和改進(jìn),使其適用于文中算法并降低算法的復(fù)雜度。以圖1所示點(diǎn)集為例,簡(jiǎn)化和改進(jìn)后的Alpha Shapes算法具體步驟如下:
圖1 提取點(diǎn)集輪廓示意
(1)對(duì)點(diǎn)集X進(jìn)行排序,篩選出橫軸極大值點(diǎn)p1。
(2)從點(diǎn)p1開始,根據(jù)公式(2)計(jì)算距離p1小于2a的點(diǎn),構(gòu)成子集s1,在s1中任取一點(diǎn)p0,利用圓心公式(4)求出圓心c。
(3)在點(diǎn)集s1中依次求出(除p0、p1)所有點(diǎn)到圓心c的距離L。