本發(fā)明涉及模式識(shí)別及數(shù)據(jù)挖掘領(lǐng)域,尤其是一種基于密度的并行聚類方法。
背景技術(shù):
聚類,是指將物理或抽象的集合分成由類似的對(duì)象組成的多個(gè)類的過(guò)程。由聚類生成的簇是一組數(shù)據(jù)對(duì)象的集合,這些對(duì)象與同一個(gè)簇中的對(duì)象彼此相似,與其他簇中的對(duì)象相異。在自然科學(xué)和社會(huì)科學(xué)中,存在著大量的分類問(wèn)題,聚類分析又稱群分析,它是研究(樣品或指標(biāo))分類問(wèn)題的一種統(tǒng)計(jì)分析方法。在商業(yè)上,聚類可以幫助市場(chǎng)分析人員從消費(fèi)者數(shù)據(jù)庫(kù)中區(qū)分出不同的消費(fèi)群體來(lái),并且概括出每一類消費(fèi)者的消費(fèi)模式或者說(shuō)習(xí)慣。它作為數(shù)據(jù)挖掘中的一個(gè)模塊,可以作為一個(gè)單獨(dú)的工具以發(fā)現(xiàn)數(shù)據(jù)庫(kù)中分布的一些深層的信息,并且概括出每一類的特點(diǎn),或者把注意力放在某一個(gè)特定的類上以作進(jìn)一步的分析;并且,聚類分析也可以作為數(shù)據(jù)挖掘算法中其他分析算法的一個(gè)預(yù)處理步驟。
聚類的算法可以分為劃分法、層次法、基于密度的方法、基于網(wǎng)格的方法和基于模型的方法等。劃分法指給定一個(gè)有N個(gè)元組或者記錄的數(shù)據(jù)集,采用分裂法構(gòu)造K(K<N)個(gè)分組,每一個(gè)分組就代表一個(gè)聚類,以后采用啟發(fā)式方法反復(fù)迭代以改變分組,使得每一次改進(jìn)之后的分組方案都較前一次好;層次法對(duì)給定的數(shù)據(jù)集按照“自底向上”或“自頂向下”進(jìn)行層次似的分解,直到滿足某種條件為止;基于密度的方法從數(shù)據(jù)對(duì)象的分布密度出發(fā),將密度足夠大的相鄰區(qū)域連接起來(lái),從而可以發(fā)現(xiàn)具有任務(wù)形狀的簇,并能有效處理異常數(shù)據(jù);基于網(wǎng)格的聚類從對(duì)數(shù)據(jù)空間劃分的角度出發(fā),利用屬性空間的多維網(wǎng)格數(shù)據(jù)結(jié)構(gòu),將空間劃分為有限數(shù)目的單元以構(gòu)成一個(gè)可以進(jìn)行聚類分析的網(wǎng)格結(jié)構(gòu),該方法可以處理任意類型的數(shù)據(jù),但以降低聚類的質(zhì)量和準(zhǔn)確性為代價(jià);基于模型的方法給每一個(gè)聚類假定一個(gè)模型,然后去尋找能夠很好地滿足這個(gè)模型的數(shù)據(jù)集。這樣一個(gè)模型可能是數(shù)據(jù)點(diǎn)在空間中的密度分布函數(shù)或者其它。它的一個(gè)潛在的假定就是:目標(biāo)數(shù)據(jù)集是由一系列的概率分布所決定的。
上述聚類方法各有優(yōu)缺點(diǎn),但它們有一個(gè)共同的缺點(diǎn),即它們采用單個(gè)計(jì)算結(jié)點(diǎn)進(jìn)行聚類,無(wú)法對(duì)超過(guò)單個(gè)計(jì)算結(jié)點(diǎn)存儲(chǔ)容量限制的大規(guī)模數(shù)據(jù)集進(jìn)行快速聚類。近年來(lái),有學(xué)者針對(duì)此問(wèn)題提出了一些并行化聚類方法,如基于消息傳輸模型和 MapReduce模型的K-means并行聚類方法,但在該方法中,各計(jì)算節(jié)點(diǎn)耦合嚴(yán)重,在每一個(gè)迭代步驟都要進(jìn)行大量通信,且具有不能發(fā)現(xiàn)任意形狀簇等繼承自原始K-means聚類方法的缺點(diǎn)。
技術(shù)實(shí)現(xiàn)要素:
為了克服現(xiàn)有技術(shù)的不足,本發(fā)明提出一種基于密度的并行聚類方法來(lái)實(shí)現(xiàn)對(duì)大規(guī)模二維數(shù)據(jù)集的聚類,該方法將二維數(shù)據(jù)集劃分為若干子數(shù)據(jù)集,每一子數(shù)據(jù)集可由一個(gè)從計(jì)算節(jié)點(diǎn)單獨(dú)利用圖像縮放法進(jìn)行聚類,之后各個(gè)從計(jì)算節(jié)點(diǎn)將其聚類結(jié)果傳遞給主計(jì)算節(jié)點(diǎn)進(jìn)行融合,完成聚類過(guò)程。
本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案具體包括如下步驟:
步驟1:將需要進(jìn)行聚類分析的二維數(shù)據(jù)作為一個(gè)數(shù)據(jù)集,并表示為S={s1,s2,…,sp,…,sn},其中sp表示第p個(gè)樣本,n是數(shù)據(jù)集包含樣本的個(gè)數(shù),其中sp=(xp,yp),xp,yp分別為第p個(gè)樣本在兩個(gè)維度上的坐標(biāo)分量,利用5個(gè)計(jì)算節(jié)點(diǎn)對(duì)二維數(shù)據(jù)集S進(jìn)行聚類分析,其中1個(gè)計(jì)算節(jié)點(diǎn)為主計(jì)算節(jié)點(diǎn),其余4個(gè)計(jì)算節(jié)點(diǎn)為從計(jì)算節(jié)點(diǎn),主計(jì)算節(jié)點(diǎn)按照空間位置將二維數(shù)據(jù)集S分為4個(gè)子數(shù)據(jù)集,即將二維數(shù)據(jù)集S在兩個(gè)維度上分別在數(shù)值范圍中點(diǎn)處一分為二,得到4個(gè)子數(shù)據(jù)集,并將這四個(gè)子數(shù)據(jù)集表示為表示第j個(gè)數(shù)據(jù)集的第p個(gè)樣本,N(j)表示第j個(gè)子數(shù)據(jù)集包含的數(shù)據(jù)點(diǎn)的個(gè)數(shù),主計(jì)算節(jié)點(diǎn)將4個(gè)子數(shù)據(jù)集分別傳送給4個(gè)從計(jì)算節(jié)點(diǎn);
步驟2:4個(gè)從計(jì)算節(jié)點(diǎn)各自對(duì)于相應(yīng)子數(shù)據(jù)集S(j)(j=1,2,3,4)進(jìn)行局部聚類,具體步驟如下:
(1)根據(jù)數(shù)據(jù)集特征確定相關(guān)參數(shù)
根據(jù)子數(shù)據(jù)集S(j)的統(tǒng)計(jì)特性確定掃描半徑Eps(j),密度限λ(j)和最大簇內(nèi)間距ε(j),掃描半徑Eps(j)表示計(jì)算子數(shù)據(jù)集各點(diǎn)密度時(shí)所選取的范圍,確定掃描半徑Eps(j)后需計(jì)算S(j)中各數(shù)據(jù)點(diǎn)的密度ρj,數(shù)據(jù)點(diǎn)的密度為該數(shù)據(jù)點(diǎn)在Eps(j)鄰域內(nèi)包含的子數(shù)據(jù)集中其它數(shù)據(jù)點(diǎn)的個(gè)數(shù),根據(jù)密度限確定各數(shù)據(jù)點(diǎn)是否為核心點(diǎn),即密度大于密度限的數(shù)據(jù)點(diǎn)為核心點(diǎn),否則數(shù)據(jù)點(diǎn)為噪音點(diǎn),最大簇內(nèi)間距ε(j)為兩個(gè)數(shù)據(jù)點(diǎn)隸屬于同一個(gè)簇的最大距離,具體確定參數(shù)的步驟如下:
(a)構(gòu)造距離矩陣其中
其中表示第j個(gè)子數(shù)據(jù)集中第p個(gè)點(diǎn)和第q個(gè)點(diǎn)之間的距離,和分別為的橫坐標(biāo)和縱坐標(biāo),和分別為的橫坐標(biāo)和縱坐標(biāo),dist為距離函數(shù),采用歐拉距離;
(b)計(jì)算掃描半徑Eps(j),按公式(2)進(jìn)行計(jì)算:
(c)計(jì)算子數(shù)據(jù)集各點(diǎn)的密度
首先定義鄰域函數(shù),二值鄰域函數(shù)Nei(sp,sq,Eps)表示數(shù)據(jù)點(diǎn)sq是否在sq的Eps鄰域內(nèi),按公式(3)計(jì)算:
計(jì)算子數(shù)據(jù)集內(nèi)各點(diǎn)的密度,計(jì)算方法如公式(4)所示:
其中,表示數(shù)據(jù)點(diǎn)的密度,即在Eps(j)領(lǐng)域內(nèi)包含該子數(shù)據(jù)點(diǎn)的數(shù)目;
(d)計(jì)算子數(shù)據(jù)集S(j)的平均密度ρ(j)和密度標(biāo)準(zhǔn)差平均密度表示子數(shù)據(jù)集密度的整體水平,密度標(biāo)準(zhǔn)差表示子數(shù)據(jù)集密度的分布情況,計(jì)算方法如公式(5)所示:
(e)計(jì)算子數(shù)據(jù)集S(j)的平均最鄰近距離τ(j)和最近鄰距離標(biāo)準(zhǔn)差
首先計(jì)算S(j)內(nèi)各點(diǎn)的最鄰近距離最鄰近距離表示數(shù)據(jù)集內(nèi)其它點(diǎn)距該點(diǎn)最近的距離,即:
然后用公式(7)計(jì)算數(shù)據(jù)集的平均最鄰近距離和最近鄰距離標(biāo)準(zhǔn)差
(f)計(jì)算子數(shù)據(jù)集S(j)的密度限λ(j),密度限為確定數(shù)據(jù)點(diǎn)為核心點(diǎn)或噪音點(diǎn)的界限,即密度高于密度限的數(shù)據(jù)點(diǎn)為核心點(diǎn),否則為噪音點(diǎn),密度限計(jì)算方法如公式(8)所示:
(g)計(jì)算最大簇內(nèi)間距ε(j),最大簇內(nèi)間距為子數(shù)據(jù)集內(nèi)任意兩個(gè)點(diǎn)歸為一簇的最大距離,計(jì)算方法如公式(9)所示:
(2)確定子數(shù)據(jù)集的核心點(diǎn)集
子數(shù)據(jù)集S(j)的核心點(diǎn)集記為且其中為數(shù)據(jù)點(diǎn)的密度,簡(jiǎn)記為為Cor(j)中第p個(gè)核心點(diǎn)的下標(biāo),nj為Cor(j)中核心點(diǎn)的數(shù)目,其中表示Cor(j)中第p個(gè)核心點(diǎn);
子數(shù)據(jù)集核心點(diǎn)集進(jìn)行聚合,即對(duì)核心點(diǎn)分配簇編號(hào),簇編號(hào)用于區(qū)分不同的簇,在同一個(gè)子數(shù)據(jù)集內(nèi)編號(hào)相同的核心點(diǎn)隸屬于同一個(gè)簇,否則隸屬于不同的簇,本發(fā)明用正整數(shù)表示簇編號(hào),即1,2,3,……,在對(duì)子數(shù)據(jù)集進(jìn)行聚合時(shí),若兩個(gè)核心點(diǎn)為一簇,則它們的編號(hào)相同,否則不同,采用深度遍歷算法,對(duì)子數(shù)據(jù)集核心點(diǎn)集進(jìn)行聚合,使得聚合后產(chǎn)生的簇滿足如下三個(gè)條件:
a)若則劃為一簇,即分配相同的編號(hào);
b)若且x≠p且x≠q使得為一簇, 為一簇,則均同為一簇,即簇編號(hào)相同;
c)若不滿足a)和b)兩個(gè)條件,則隸屬于不同的簇,即簇編號(hào)不同;
經(jīng)過(guò)深度遍歷,將Cor(j)劃分為R(j)個(gè)子簇,各個(gè)子簇編號(hào)為1,2,…,R(j);
步驟3:融合子簇
通過(guò)步驟2,數(shù)據(jù)集S的核心點(diǎn)集Cor被劃分為了m=R(1)+R(2)+R(3)+R(4)個(gè)子簇,表示為C(1),C(2),…,C(j),…,C(m),每個(gè)簇由原數(shù)據(jù)集S中的若干點(diǎn)組成,即 n(j)為子簇C(j)中包含數(shù)據(jù)點(diǎn)的個(gè)數(shù),記 和分別為數(shù)據(jù)點(diǎn)的橫坐標(biāo)和縱坐標(biāo);
對(duì)核心點(diǎn)集Cor中的簇進(jìn)行重新編號(hào)以使各子簇編號(hào)不重復(fù),來(lái)自S(1)的子簇的編號(hào)保持不變,來(lái)自S(2)的各子簇編號(hào)在原編號(hào)的基礎(chǔ)上加上R(1),即分別修改為R(1)+1,R(1)+2,…,R(1)+R(2),來(lái)自S(3)的各子簇編號(hào)在原編號(hào)的基礎(chǔ)上均加上R(1)+R(2),即分別修改為R(1)+R(2)+1,R(1)+R(2)+2,…,R(1)+R(2)+R(3),來(lái)自S(4)的各子簇編號(hào)在原編號(hào)的基礎(chǔ)上均加上R(1)+R(2)+R(3),即分別修改為R(1)+R(2)+R(3)+1,R(1)+R(2)+R(3)+2,…,m;
利用邊緣檢測(cè)法對(duì)每個(gè)子簇進(jìn)行去冗余操作,對(duì)子簇C(j)(j=1,2,…,m)去冗余操作具體包括如下步驟:
(1)對(duì)于子簇C(j),構(gòu)造與之對(duì)應(yīng)的集合其中為二維向量,為整數(shù),且具體計(jì)算公式如下:
其中,floor為向下取整函數(shù);
(2)構(gòu)造一個(gè)零矩陣M=(mij)100×100,根據(jù)集合F(j)進(jìn)行填充1操作,即 即將矩陣M中第行第列的元素置1;
(3)對(duì)于M中的元素mij(i,j=2,3,…,99),若同時(shí)滿足如下5個(gè)條件:
a.mij=1
b.使得
c.使得
d.使得
e.使得
即mij=1且在mij的上、下、左、右方向至少有一個(gè)為1,則將mij置0即mij=0,對(duì)于不滿足以上任一條件的元素則保持原值;
(4)將矩陣M中為1的元素的坐標(biāo)反映射到子簇C(j)的坐標(biāo)空間,得到簡(jiǎn)化的子簇其中和分別為數(shù)據(jù)點(diǎn)的兩個(gè)坐標(biāo)值,nsc(j)為簡(jiǎn)化子簇SC(j)包含的數(shù)據(jù)點(diǎn)的個(gè)數(shù),反映射按照如下公式進(jìn)行:
根據(jù)各子數(shù)據(jù)集的統(tǒng)計(jì)特性計(jì)算整體數(shù)據(jù)集的聚類密度限Λ和子簇融合間距E,計(jì)算方法如下:
(a)計(jì)算簡(jiǎn)化子簇間的距離矩陣其中為簡(jiǎn)化子簇SC(p)和SC(q)內(nèi)數(shù)據(jù)點(diǎn)最近的距離,即
(b)計(jì)算各簇C(j)的簇密度Ρ(j)
P(p)=n(j) (13)
(c)計(jì)算全局近似平均密度Ρ和近似密度標(biāo)準(zhǔn)差ΣΡ:
(d)計(jì)算全局近似平均鄰近距離T和鄰近距離標(biāo)準(zhǔn)差ΣT:
(e)計(jì)算子簇密度限Λ
(f)計(jì)算子簇融合間距E
E=1.152T+2.704ΣT (17)
采用深度遍歷算法融合子簇,即任意兩個(gè)簡(jiǎn)化子簇,若它們之間的距離小于簇融合間距E,則將產(chǎn)生這兩個(gè)簡(jiǎn)化子簇的原來(lái)的子簇融合,即其中一個(gè)子簇內(nèi)所有數(shù)據(jù)點(diǎn)的編號(hào)修改為另一個(gè)子簇內(nèi)數(shù)據(jù)點(diǎn)的編號(hào);
步驟4:為噪聲點(diǎn)分配簇編號(hào)
每個(gè)噪聲點(diǎn)分配簡(jiǎn)化子簇中距離噪聲點(diǎn)最近的核心點(diǎn)所在的聚類,完成整個(gè)聚類過(guò)程。
本發(fā)明的有益效果是由于采用了將聚類數(shù)據(jù)集分割并使用多個(gè)計(jì)算節(jié)點(diǎn)同時(shí)對(duì)子數(shù)據(jù)集進(jìn)行局部聚類,之后對(duì)局部聚類結(jié)果進(jìn)行融合形成最終結(jié)果的方法,可處理比傳統(tǒng)聚類方法更大規(guī)模的數(shù)據(jù)集,且本聚類方法為基于密度的聚類,因此可以發(fā)現(xiàn)任意形狀的簇,聚類時(shí)無(wú)須指定任何參數(shù),在融合階段,首先采用邊緣檢測(cè)法對(duì)子簇進(jìn)行簡(jiǎn)化,使得子簇融合可以高效地進(jìn)行,本發(fā)明消除了模式識(shí)別和數(shù)據(jù)挖掘等領(lǐng)域中 聚類數(shù)據(jù)集規(guī)模的瓶頸。
附圖說(shuō)明
圖1為本發(fā)明并行聚類方法的整體流程圖。
圖2為本發(fā)明子數(shù)據(jù)集局部聚類的流程圖。
圖3為本發(fā)明對(duì)數(shù)據(jù)集的劃分示意圖,圖中1,2,3,4分別表示四個(gè)子數(shù)據(jù)集。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)一步說(shuō)明。
本發(fā)明解決了傳統(tǒng)聚類方法只能由單個(gè)計(jì)算節(jié)點(diǎn)聚類、聚類速度慢、必須指定參數(shù)的問(wèn)題,使得大規(guī)模數(shù)據(jù)集背景下的聚類問(wèn)題得到很好的解決。
本發(fā)明的目的在于提供一種基于圖像縮放的并行聚類方法,聚類流程如圖1所示。將原始二維數(shù)據(jù)集劃分為若干個(gè)子數(shù)據(jù)集,每個(gè)子數(shù)據(jù)集由單個(gè)計(jì)算節(jié)點(diǎn)利用圖像縮放法進(jìn)行聚類,得到若干簇?cái)?shù)據(jù),這些簇?cái)?shù)據(jù)利用本發(fā)明提出的邊緣檢測(cè)法從中選擇代表點(diǎn),并將代表點(diǎn)坐標(biāo)發(fā)送到主計(jì)算節(jié)點(diǎn),主計(jì)算節(jié)點(diǎn)接收所有從計(jì)算節(jié)點(diǎn)的代表點(diǎn)信息,并對(duì)這些代表點(diǎn)所表示的簇進(jìn)行融合并為融合后的簇分配唯一編號(hào),主計(jì)算節(jié)點(diǎn)將融合信息和唯一編號(hào)反饋給從計(jì)算節(jié)點(diǎn),完成聚類過(guò)程。圖像縮放聚類法無(wú)須指定參數(shù),可自動(dòng)根據(jù)數(shù)據(jù)集統(tǒng)計(jì)特性自主確定參數(shù),極大地方便了聚類過(guò)程;邊緣檢測(cè)法可將各簇?cái)?shù)據(jù)中冗余點(diǎn)進(jìn)行移除,提高了簇融合的效率。
在模式識(shí)別和數(shù)據(jù)挖掘領(lǐng)域,聚類分析是一種常用的分析方法,其基本形式是對(duì)于一組來(lái)自于實(shí)際問(wèn)題的一組包含多個(gè)屬性的數(shù)據(jù),通過(guò)一定的方法,將屬性相近的數(shù)據(jù)劃分為一簇,屬性不同的數(shù)據(jù)劃分為不同的簇。其結(jié)果就是在各個(gè)劃分的簇的內(nèi)部,數(shù)據(jù)點(diǎn)間屬性相近,而在不同類之間的數(shù)據(jù)點(diǎn)屬性差別較大。通過(guò)對(duì)簇的劃分,可以發(fā)現(xiàn)隱藏在數(shù)據(jù)點(diǎn)間的信息。在聚類分析中,以對(duì)二維數(shù)據(jù)集的聚類最為典型,在二維聚類的基礎(chǔ)上可以衍生出高維數(shù)據(jù)的聚類方法。目前常用聚類分析方法主要是針對(duì)單個(gè)節(jié)點(diǎn)進(jìn)行的,存在聚類數(shù)據(jù)量小、無(wú)法滿足大規(guī)模數(shù)據(jù)聚類的缺點(diǎn)。基于K-means的并行聚類方法雖然可以利用多個(gè)節(jié)點(diǎn)進(jìn)行聚類,但無(wú)法發(fā)現(xiàn)任意形狀的簇。本發(fā)明提出的一種針對(duì)二維數(shù)據(jù)集的基于圖像縮放的并行聚類方法不僅可以對(duì)大規(guī)模數(shù)據(jù)進(jìn)行聚類,而且可以發(fā)現(xiàn)數(shù)據(jù)中任意形狀的簇。
步驟1:將需要進(jìn)行聚類分析的二維數(shù)據(jù)作為一個(gè)數(shù)據(jù)集,并表示為 S={s1,s2,…,sp,…,sn},其中sp表示第p個(gè)樣本,n是數(shù)據(jù)集包含樣本的個(gè)數(shù),其中sp=(xp,yp),xp,yp分別為第p個(gè)樣本在兩個(gè)維度上的坐標(biāo)分量,利用5個(gè)計(jì)算節(jié)點(diǎn)對(duì)二維數(shù)據(jù)集S進(jìn)行聚類分析,其中1個(gè)計(jì)算節(jié)點(diǎn)為主計(jì)算節(jié)點(diǎn),其余4個(gè)計(jì)算節(jié)點(diǎn)為從計(jì)算節(jié)點(diǎn),主計(jì)算節(jié)點(diǎn)按照空間位置將二維數(shù)據(jù)集S劃分為4個(gè)子數(shù)據(jù)集,劃分方式如圖3所示,即將二維數(shù)據(jù)集S在兩個(gè)維度上分別在數(shù)值范圍中點(diǎn)處一分為二,得到4個(gè)子數(shù)據(jù)集,并將這四個(gè)子數(shù)據(jù)集表示為表示第j個(gè)數(shù)據(jù)集的第p個(gè)樣本,N(j)表示第j個(gè)子數(shù)據(jù)集包含的數(shù)據(jù)點(diǎn)的個(gè)數(shù),主計(jì)算節(jié)點(diǎn)將4個(gè)子數(shù)據(jù)集分別傳送給4個(gè)從計(jì)算節(jié)點(diǎn);
步驟2:4個(gè)從計(jì)算節(jié)點(diǎn)各自對(duì)于相應(yīng)子數(shù)據(jù)集S(j)(j=1,2,3,4)進(jìn)行局部聚類,局部聚類流程如圖2所示,具體步驟如下:
(1)根據(jù)數(shù)據(jù)集特征確定相關(guān)參數(shù)
根據(jù)子數(shù)據(jù)集S(j)的統(tǒng)計(jì)特性確定掃描半徑Eps(j),密度限λ(j)和最大簇內(nèi)間距ε(j),掃描半徑Eps(j)表示計(jì)算子數(shù)據(jù)集各點(diǎn)密度時(shí)所選取的范圍,確定掃描半徑Eps(j)后需計(jì)算S(j)中各數(shù)據(jù)點(diǎn)的密度ρj,數(shù)據(jù)點(diǎn)的密度為該數(shù)據(jù)點(diǎn)在Eps(j)鄰域內(nèi)包含的子數(shù)據(jù)集中其它數(shù)據(jù)點(diǎn)的個(gè)數(shù),根據(jù)密度限確定各數(shù)據(jù)點(diǎn)是否為核心點(diǎn),即密度大于密度限的數(shù)據(jù)點(diǎn)為核心點(diǎn),否則數(shù)據(jù)點(diǎn)為噪音點(diǎn),最大簇內(nèi)間距ε(j)為兩個(gè)數(shù)據(jù)點(diǎn)隸屬于同一個(gè)簇的最大距離,具體確定參數(shù)的步驟如下:
(a)構(gòu)造距離矩陣其中
其中表示第j個(gè)子數(shù)據(jù)集中第p個(gè)點(diǎn)和第q個(gè)點(diǎn)之間的距離,和分別為的橫坐標(biāo)和縱坐標(biāo),和分別為的橫坐標(biāo)和縱坐標(biāo),dist為距離函數(shù),采用歐拉距離;
(b)計(jì)算掃描半徑Eps(j),按公式(2)進(jìn)行計(jì)算:
(c)計(jì)算子數(shù)據(jù)集各點(diǎn)的密度
首先定義鄰域函數(shù),二值鄰域函數(shù)Nei(sp,sq,Eps)表示數(shù)據(jù)點(diǎn)sq是否在sq的Eps鄰域內(nèi),按公式(3)計(jì)算:
計(jì)算子數(shù)據(jù)集內(nèi)各點(diǎn)的密度,計(jì)算方法如公式(4)所示:
其中,表示數(shù)據(jù)點(diǎn)的密度,即在Eps(j)領(lǐng)域內(nèi)包含該子數(shù)據(jù)點(diǎn)的數(shù)目;
(d)計(jì)算子數(shù)據(jù)集S(j)的平均密度ρ(j)和密度標(biāo)準(zhǔn)差平均密度表示子數(shù)據(jù)集密度的整體水平,密度標(biāo)準(zhǔn)差表示子數(shù)據(jù)集密度的分布情況,計(jì)算方法如公式(5)所示:
(e)計(jì)算子數(shù)據(jù)集S(j)的平均最鄰近距離τ(j)和最近鄰距離標(biāo)準(zhǔn)差
首先計(jì)算S(j)內(nèi)各點(diǎn)的最鄰近距離最鄰近距離表示數(shù)據(jù)集內(nèi)其它點(diǎn)距該點(diǎn)最近的距離,即:
然后用公式(7)計(jì)算數(shù)據(jù)集的平均最鄰近距離和最近鄰距離標(biāo)準(zhǔn)差
(f)計(jì)算子數(shù)據(jù)集S(j)的密度限λ(j),密度限為確定數(shù)據(jù)點(diǎn)為核心點(diǎn)或噪音點(diǎn)的界限,即密度高于密度限的數(shù)據(jù)點(diǎn)為核心點(diǎn),否則為噪音點(diǎn),密度限計(jì)算方法如公式(8)所示:
(g)計(jì)算最大簇內(nèi)間距ε(j),最大簇內(nèi)間距為子數(shù)據(jù)集內(nèi)任意兩個(gè)點(diǎn)歸為一簇的最大距離,計(jì)算方法如公式(9)所示:
(2)確定子數(shù)據(jù)集的核心點(diǎn)集
子數(shù)據(jù)集S(j)的核心點(diǎn)集記為且其中為數(shù)據(jù)點(diǎn)的密度,簡(jiǎn)記為為Cor(j)中第p個(gè)核心點(diǎn)的下標(biāo),nj為Cor(j)中核心點(diǎn)的數(shù)目,其中表示Cor(j)中第p個(gè)核心點(diǎn);
子數(shù)據(jù)集核心點(diǎn)集進(jìn)行聚合,即對(duì)核心點(diǎn)分配簇編號(hào),簇編號(hào)用于區(qū)分不同的簇,在同一個(gè)子數(shù)據(jù)集內(nèi)編號(hào)相同的核心點(diǎn)隸屬于同一個(gè)簇,否則隸屬于不同的簇,本發(fā)明用正整數(shù)表示簇編號(hào),即1,2,3,……,在對(duì)子數(shù)據(jù)集進(jìn)行聚合時(shí),若兩個(gè)核心點(diǎn)為一簇,則它們的編號(hào)相同,否則不同,采用深度遍歷算法,對(duì)子數(shù)據(jù)集核心點(diǎn)集進(jìn)行聚合,使得聚合后產(chǎn)生的簇滿足如下三個(gè)條件:
a)若則劃為一簇,即分配相同的編號(hào);
b)若且x≠p且x≠q使得為一簇, 為一簇,則均同為一簇,即簇編號(hào)相同;
c)若不滿足a)和b)兩個(gè)條件,則隸屬于不同的簇,即簇編號(hào)不同;
經(jīng)過(guò)深度遍歷,將Cor(j)劃分為R(j)個(gè)子簇,各個(gè)子簇編號(hào)為1,2,…,R(j);
步驟3:融合子簇
通過(guò)步驟2,數(shù)據(jù)集S的核心點(diǎn)集Cor被劃分為了m=R(1)+R(2)+R(3)+R(4)個(gè)子簇,表示為C(1),C(2),…,C(j),…,C(m),每個(gè)簇由原數(shù)據(jù)集S中的若干點(diǎn)組成,即 n(j)為子簇C(j)中包含數(shù)據(jù)點(diǎn)的個(gè)數(shù),記 和分別為數(shù)據(jù)點(diǎn)的橫坐標(biāo)和縱坐標(biāo);
對(duì)核心點(diǎn)集Cor中的簇進(jìn)行重新編號(hào)以使各子簇編號(hào)不重復(fù),來(lái)自S(1)的子簇的編號(hào)保持不變,來(lái)自S(2)的各子簇編號(hào)在原編號(hào)的基礎(chǔ)上加上R(1),即分別修改為R(1)+1,R(1)+2,…,R(1)+R(2),來(lái)自S(3)的各子簇編號(hào)在原編號(hào)的基礎(chǔ)上均加上R(1)+R(2),即分別修改為R(1)+R(2)+1,R(1)+R(2)+2,…,R(1)+R(2)+R(3),來(lái)自S(4)的各子簇編號(hào)在原編號(hào)的基礎(chǔ)上均加上R(1)+R(2)+R(3),即分別修改為R(1)+R(2)+R(3)+1,R(1)+R(2)+R(3)+2,…, m;
利用邊緣檢測(cè)法對(duì)每個(gè)子簇進(jìn)行去冗余操作,對(duì)子簇C(j)(j=1,2,…,m)去冗余操作具體包括如下步驟:
(1)對(duì)于子簇C(j),構(gòu)造與之對(duì)應(yīng)的集合其中為二維向量,為整數(shù),且具體計(jì)算公式如下:
其中,floor為向下取整函數(shù);
(2)構(gòu)造一個(gè)零矩陣M=(mij)100×100,根據(jù)集合F(j)進(jìn)行填充1操作,即 即將矩陣M中第行第列的元素置1;
(3)對(duì)于M中的元素mij(i,j=2,3,…,99),若同時(shí)滿足如下5個(gè)條件:
a)mij=1
b)使得
c)使得
d)使得
e)使得
即mij=1且在mij的上、下、左、右方向至少有一個(gè)為1,則將mij置0即mij=0,對(duì)于不滿足以上任一條件的元素則保持原值;
(4)將矩陣M中為1的元素的坐標(biāo)反映射到子簇C(j)的坐標(biāo)空間,得到簡(jiǎn)化的子簇其中和分別為數(shù)據(jù)點(diǎn)的兩個(gè)坐標(biāo)值,為簡(jiǎn)化子簇SC(j)包含的數(shù)據(jù)點(diǎn)的個(gè)數(shù),反映射按 照如下公式進(jìn)行:
根據(jù)各子數(shù)據(jù)集的統(tǒng)計(jì)特性計(jì)算整體數(shù)據(jù)集的聚類密度限Λ和子簇融合間距E,計(jì)算方法如下:
(a)計(jì)算簡(jiǎn)化子簇間的距離矩陣其中為簡(jiǎn)化子簇SC(p)和SC(q)內(nèi)數(shù)據(jù)點(diǎn)最近的距離,即
(b)計(jì)算各簇C(j)的簇密度Ρ(j)
P(p)=n(j) (30)
(c)計(jì)算全局近似平均密度Ρ和近似密度標(biāo)準(zhǔn)差ΣΡ:
(d)計(jì)算全局近似平均鄰近距離T和鄰近距離標(biāo)準(zhǔn)差ΣT:
(e)計(jì)算子簇密度限Λ
(f)計(jì)算子簇融合間距E
E=1.152T+2.704ΣT (34)
采用深度遍歷算法融合子簇,即任意兩個(gè)簡(jiǎn)化子簇,若它們之間的距離小于簇融合間距E,則將產(chǎn)生這兩個(gè)簡(jiǎn)化子簇的原來(lái)的子簇融合,即其中一個(gè)子簇內(nèi)所有數(shù)據(jù)點(diǎn)的編號(hào)修改為另一個(gè)子簇內(nèi)數(shù)據(jù)點(diǎn)的編號(hào);
步驟4:為噪聲點(diǎn)分配簇編號(hào)
每個(gè)噪聲點(diǎn)分配簡(jiǎn)化子簇中距離噪聲點(diǎn)最近的核心點(diǎn)所在的聚類,完成整個(gè)聚類過(guò)程。
具體來(lái)說(shuō),用且表示第j個(gè)子數(shù)據(jù)集中的所有噪音點(diǎn)的集合,用Noi=Noi(1)∪Noi(2)∪Noi(3)∪Noi(4)表示所有噪音點(diǎn)的集合,簡(jiǎn)記Noi={r1,r2,…,rp,…,rm},其中rp為噪音點(diǎn)集中第p個(gè)噪音點(diǎn),m為噪音點(diǎn)數(shù)目。同樣Cor=Cor(1)∪Cor(2)∪Cor(3)∪Cor(4)表示所有核心點(diǎn)的集合,簡(jiǎn)記為Cor={c1,c2,…,cq,…,cn},其中cq為噪音點(diǎn)集中第q個(gè)噪音點(diǎn),n為噪音點(diǎn)數(shù)目。對(duì)于每一個(gè)噪音點(diǎn)rp(p=1,2,…,m),計(jì)算距離其最近的核心點(diǎn)的下標(biāo)ap,即:
其中argmin為數(shù)學(xué)函數(shù),表示使得某個(gè)函數(shù)取得最小值時(shí)自變量的取值,dist表示距離函數(shù),然后確定噪音點(diǎn)rp的簇編號(hào),即rp的簇編號(hào)與核心點(diǎn)的簇編號(hào)相同。
所有核心點(diǎn)與噪音點(diǎn)的簇編號(hào)確定后,聚類完成,所有簇編號(hào)相同的數(shù)據(jù)點(diǎn)(包括核心點(diǎn)和噪音點(diǎn))隸屬于同一個(gè)簇,否則隸屬于不同的簇。