本發(fā)明涉及數(shù)據(jù)挖掘和可視分析技術(shù),尤其涉及一種基于聚類的多維流數(shù)據(jù)可視分析方法。
背景技術(shù):
隨著物聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,產(chǎn)生了大量的多維流數(shù)據(jù),如金融數(shù)據(jù)、圖像數(shù)據(jù)、文本數(shù)據(jù)。相比于傳統(tǒng)的靜態(tài)數(shù)據(jù),流數(shù)據(jù)具有如下特點(diǎn):1)數(shù)據(jù)潛在大小是無(wú)限的;2)數(shù)據(jù)在線不斷到達(dá),需要實(shí)時(shí)處理;3)數(shù)據(jù)到達(dá)的順序與數(shù)量每時(shí)每刻不同;4)除非可以保存,每條數(shù)據(jù)只能被處理一次。
這類數(shù)據(jù)復(fù)雜性更高、特點(diǎn)更難發(fā)現(xiàn),且隱含的信息更加豐富。面對(duì)復(fù)雜繁多的數(shù)據(jù),如何進(jìn)行數(shù)據(jù)分析,能夠發(fā)現(xiàn)信息背后深層的信息與規(guī)律,一直是困擾學(xué)術(shù)界的一大難題。采用可視化的方式可以使用戶更直觀、更高效的獲取數(shù)據(jù)流中潛藏的、未知的、有價(jià)值的信息,發(fā)覺(jué)數(shù)據(jù)流中的內(nèi)在模式,為管理者進(jìn)行決策提供強(qiáng)有力的支持,多維數(shù)據(jù)的可視化技術(shù)有平行坐標(biāo),散點(diǎn)圖矩陣,徑向坐標(biāo)等。對(duì)多維流數(shù)據(jù)進(jìn)行可視分析,離不開(kāi)人和計(jì)算機(jī)的相互協(xié)作。多維流數(shù)據(jù)的可視分析方法可以從兩個(gè)維度展開(kāi)。其一是以人為分析主體出發(fā),強(qiáng)調(diào)符合人類認(rèn)知的分析方法,這個(gè)維度的分析方法以交互式可視分析為代表;其二是從計(jì)算機(jī)角度出發(fā),強(qiáng)調(diào)高性能的數(shù)據(jù)挖掘算法,例如數(shù)據(jù)聚類。結(jié)合流數(shù)據(jù)挖掘方法,提出一種基于聚類的多維流數(shù)據(jù)可視分析方法,能夠幫助人們更直觀、更高效地了解多維流數(shù)據(jù)內(nèi)在結(jié)構(gòu)和潛在規(guī)律,從而更好地發(fā)現(xiàn)有價(jià)值的信息,輔助人們進(jìn)行決策。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問(wèn)題在于針對(duì)現(xiàn)有技術(shù)中的缺陷,提供一種基于聚類的多維流數(shù)據(jù)可視分析方法。
本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:一種基于聚類的多維流數(shù)據(jù)可視分析方法,該方法包括:
1)接收多維流數(shù)據(jù),對(duì)多維流數(shù)據(jù)進(jìn)行數(shù)據(jù)聚類,將聚類結(jié)果存儲(chǔ)至可視化數(shù)據(jù)庫(kù)中;
2)通過(guò)web后端訪問(wèn)可視化數(shù)據(jù)庫(kù),得到需要可視化的數(shù)據(jù)信息,然后使用websocket將可視化信息發(fā)送至web前端;
3)在web前端利用數(shù)據(jù)聚類的結(jié)果進(jìn)行視覺(jué)聚類,使用平行坐標(biāo)法進(jìn)行多維流數(shù)據(jù)的動(dòng)態(tài)加載。
按上述方案,所述步驟1)多維流數(shù)據(jù)進(jìn)行數(shù)據(jù)聚類的具體方法如下:
1.1)設(shè)流數(shù)據(jù)s是一個(gè)m維的數(shù)據(jù)集合,用
其中,n為數(shù)據(jù)集的樣本數(shù)量,ωi為對(duì)象
1.2)當(dāng)流數(shù)據(jù)對(duì)象
其中,m為數(shù)據(jù)集的維度,xij為第i個(gè)對(duì)象第j個(gè)維度上的值。
1.3)比較mindx與用戶自己設(shè)定的閾值半徑dc,若mindx<dc,則將當(dāng)前流數(shù)據(jù)對(duì)象
1.4)計(jì)算每一個(gè)微簇中最后到達(dá)的m個(gè)流數(shù)據(jù)對(duì)象的平均時(shí)間戳cft(m),并選擇最小值mincft(m),然后比較mincft(m)與用戶輸入的時(shí)間閾值h;若mincft(m)<h,則合并兩個(gè)最早的(若沒(méi)有最早的,則合并規(guī)模最小的兩個(gè))舊微簇;否則,刪除對(duì)應(yīng)的舊微簇。
按上述方案,所述步驟1)中利用spark平臺(tái)對(duì)多維流數(shù)據(jù)進(jìn)行數(shù)據(jù)聚類。
按上述方案,所述步驟3)在web前端利用數(shù)據(jù)聚類的結(jié)果進(jìn)行視覺(jué)聚類的具體方法如下:
3.1)根據(jù)多維流數(shù)據(jù)聚類的結(jié)果,計(jì)算每一個(gè)類簇的簇心在平行坐標(biāo)上的映射位置;
3.2)根據(jù)公式計(jì)算每一個(gè)數(shù)據(jù)對(duì)象在(m-1)個(gè)數(shù)值軸相鄰空間中聚合軸上的坐標(biāo)位置;
q′i=(1-β)qi+βci
其中,q′i為聚合軸上的坐標(biāo)位置,qi是原始折線與聚合軸相交的位置,β為曲線的聚合程度,決定q′i距離聚類中心的長(zhǎng)度。
3.3)根據(jù)公式計(jì)算每一個(gè)相鄰空間上的貝塞爾曲線;
b(t)=(1-t)3(i,pi)+3t(1-t)2(i+α,b1)+3t2(1-t)(i+1/2-α,b2)+t3(i+1/2,qi)其中,b(t)相鄰空間上的貝塞爾曲線,α為曲線的平滑程度,(i,pi)為貝塞爾曲線的起始點(diǎn)坐標(biāo)位置,(i+α,b1)、(i+1/2-α,b2)分別為三次貝塞爾曲線控制點(diǎn)的坐標(biāo),(i+1/2,qi)為q′i的坐標(biāo)位置,t從0到1不斷增加。
3.4)使用不同的顏色編碼來(lái)表示不同的類簇信息,同時(shí)進(jìn)行渲染與繪制。
按上述方案,所述步驟3)中面向多維流數(shù)據(jù)的動(dòng)態(tài)加載方法,具體步驟為:
使用vrsc對(duì)流數(shù)據(jù)進(jìn)行數(shù)據(jù)聚類,并將聚類結(jié)果保存到可視化數(shù)據(jù)庫(kù)中;
web服務(wù)器不斷查詢可視化數(shù)據(jù)庫(kù),并將實(shí)時(shí)的數(shù)據(jù)聚類結(jié)果推送給web前端;
web前端接收到當(dāng)前數(shù)據(jù)聚類結(jié)果后,將其緩存到數(shù)組中,根據(jù)數(shù)據(jù)聚類結(jié)果中各個(gè)類簇的中心,使用曲線聚合模型計(jì)算數(shù)組中各數(shù)據(jù)項(xiàng)的貝塞爾曲線控制點(diǎn)坐標(biāo);
清空平行坐標(biāo)上前一時(shí)刻滑動(dòng)窗口中的所有曲線,并通過(guò)貝塞爾曲線控制點(diǎn)的位置,利用公式(8)逐條繪制每個(gè)數(shù)據(jù)項(xiàng)的貝塞爾曲線,從而完成流數(shù)據(jù)的動(dòng)態(tài)加載。
本發(fā)明產(chǎn)生的有益效果是:
首先,從數(shù)據(jù)聚類出發(fā),引入了時(shí)間衰減因子,并使用spark計(jì)算平臺(tái)進(jìn)行并行化處理,從數(shù)據(jù)挖掘的角度探究多維流數(shù)據(jù)的內(nèi)在結(jié)構(gòu);
其次,在數(shù)據(jù)聚類的基礎(chǔ)上,利用平行坐標(biāo)對(duì)多維流數(shù)據(jù)進(jìn)行視覺(jué)聚類,使用貝塞爾曲線代替折線并進(jìn)行視覺(jué)編碼操作,從而對(duì)數(shù)據(jù)聚類結(jié)果進(jìn)行有效地可視化表征,讓用戶更好地發(fā)現(xiàn)流數(shù)據(jù)中的潛在規(guī)律。
附圖說(shuō)明
下面將結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明,附圖中:
圖1是本發(fā)明實(shí)施例的方法流程圖;
圖2是本發(fā)明實(shí)施例的多維流數(shù)據(jù)可視分析流程示意圖;
圖3是本發(fā)明實(shí)施例的多維流數(shù)據(jù)的數(shù)據(jù)聚類方法流程圖;
圖4是本發(fā)明實(shí)施例的平行坐標(biāo)折線示意圖;
圖5是本發(fā)明實(shí)施例的基于平行坐標(biāo)的曲線聚合模型示意圖;
圖6是本發(fā)明實(shí)施例的面向多維流數(shù)據(jù)的動(dòng)態(tài)加載方法流程圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
如圖1和圖2所示,一種基于聚類的多維流數(shù)據(jù)可視分析方法,該方法包括:
1)接收多維流數(shù)據(jù),對(duì)多維流數(shù)據(jù)進(jìn)行數(shù)據(jù)聚類,將聚類結(jié)果存儲(chǔ)至可視化數(shù)據(jù)庫(kù)中;本實(shí)施例中步驟1)采用基于流數(shù)據(jù)聚類的可視化表征算法實(shí)現(xiàn);
2)通過(guò)web后端訪問(wèn)可視化數(shù)據(jù)庫(kù),得到需要可視化的數(shù)據(jù)信息,然后使用websocket將可視化信息發(fā)送至web前端;
3)在web前端利用數(shù)據(jù)聚類的結(jié)果進(jìn)行視覺(jué)聚類,使用平行坐標(biāo)法進(jìn)行多維流數(shù)據(jù)的動(dòng)態(tài)加載。
如圖3,基于流數(shù)據(jù)聚類的可視化表征算法具體步驟:
本發(fā)明改進(jìn)了傳統(tǒng)的流數(shù)據(jù)聚類算法,引入衰減時(shí)間因子,使得離當(dāng)前時(shí)間越近的數(shù)據(jù)點(diǎn)權(quán)重越大,反之則越小,各數(shù)據(jù)點(diǎn)的權(quán)重隨著時(shí)間的流逝不斷的衰減,動(dòng)態(tài)地反映流數(shù)據(jù)的演化信息,提出了基于流數(shù)據(jù)聚類的可視化表征算法vrsc(visualrepresentationalgorithmbasedonstreamdataclustering)。
設(shè)流數(shù)據(jù)s是一個(gè)m維的數(shù)據(jù)集合,用
定義1衰減時(shí)間微簇特征dtcf
在引入衰減時(shí)間窗口后,可以將微簇的特征向量更新為衰減時(shí)間微簇特征(decaytimeclusterfeature,記作dtcf)。dtcf具體描述為:
其中,
定義2衰減函數(shù)f(t)
選用公式(2)作為衰減衰減函數(shù),其中λ>0,λ的值代表流數(shù)據(jù)的衰減速率,λ越大說(shuō)明歷史數(shù)據(jù)的權(quán)重隨著時(shí)間衰減的越快。
f(t)=2-λt(λ>0)(2)
定義3實(shí)時(shí)權(quán)重
基于公式(2),使用公式(3)定義數(shù)據(jù)點(diǎn)
定義4加權(quán)簇心cω,j
在傳統(tǒng)的聚類算法中,類簇的中心一般都是簇內(nèi)全部數(shù)據(jù)點(diǎn)的幾何中心,但是由于時(shí)間衰減導(dǎo)致數(shù)據(jù)對(duì)象的實(shí)時(shí)權(quán)重不一,幾何中心的方法不能夠確定簇的中心。針對(duì)衰減時(shí)間因子的微簇特征,類簇的中心可以定義為簇內(nèi)數(shù)據(jù)點(diǎn)的加權(quán)線性均值,如公式(4)所示,其中q為微簇的數(shù)目。
定義5加權(quán)距離dx
當(dāng)流數(shù)據(jù)對(duì)象
定義6平均時(shí)間戳cft(m)
由公式(1)可知,cf1t是流數(shù)據(jù)時(shí)間戳的線性加權(quán)和,n是微簇中數(shù)據(jù)對(duì)象的個(gè)數(shù),流數(shù)據(jù)對(duì)象的平均時(shí)間戳為cf1t/n,記cft(m)為最后m個(gè)到達(dá)數(shù)據(jù)的平均時(shí)間戳,tc為當(dāng)前時(shí)刻,那么cft(m)可以用公式(6)定義。
基于流數(shù)據(jù)聚類的可視化表征算法流程圖如圖3,具體的實(shí)現(xiàn)步驟為:
1.1)對(duì)于給定的微簇個(gè)數(shù)q,通過(guò)公式(4)計(jì)算出對(duì)應(yīng)的加權(quán)簇心cω,j;
1.2)當(dāng)流數(shù)據(jù)對(duì)象
1.3)比較mindx與用戶自己定義的閾值半徑dc,若mindx<dc,則將當(dāng)前流數(shù)據(jù)對(duì)象
1.4)計(jì)算每一個(gè)微簇中最后到達(dá)的m個(gè)流數(shù)據(jù)對(duì)象的平均時(shí)間戳cft(m),并選擇最小值mincft(m),然后比較mincft(m)與用戶輸入的時(shí)間閾值h。若mincft(m)<h,則合并兩個(gè)最早的舊微簇;否則,刪除對(duì)應(yīng)的舊微簇。
實(shí)現(xiàn)上述算法采用多維流數(shù)據(jù)的數(shù)據(jù)聚類方法的并行化策略是:
1)sparkstreaming創(chuàng)建對(duì)象streamingcontext并配置參數(shù),將輸入的多維流數(shù)據(jù)按照batchsize分成一個(gè)一個(gè)的離散流dstream(discretizedstream);
2)dstream結(jié)構(gòu)可以將各種運(yùn)算流都轉(zhuǎn)化成為一系列短時(shí)間間隔的無(wú)狀態(tài)、確定性的批計(jì)算,然后將每一個(gè)dstream都轉(zhuǎn)換為spark平臺(tái)中的rdd,緩存到內(nèi)存空間中;
3)根據(jù)spark資源管理器的任務(wù)分配算法,將各個(gè)離散流rdd分配到各自的worker節(jié)點(diǎn)上,執(zhí)行dp-clustream算法的在線微聚類操作;
4)由主節(jié)點(diǎn)匯總所有的worker節(jié)點(diǎn),并結(jié)合用戶輸入的內(nèi)容,完成vrsc的離線宏聚類操作,最終將結(jié)果存儲(chǔ)到數(shù)據(jù)庫(kù)中;
5)每當(dāng)有數(shù)據(jù)流入時(shí),sparkstreaming都會(huì)迭代上述的過(guò)程,從而實(shí)現(xiàn)多維流數(shù)據(jù)的并行聚類處理。
步驟3)在web前端利用數(shù)據(jù)聚類的結(jié)果進(jìn)行視覺(jué)聚類的具體方法如下:
記經(jīng)過(guò)數(shù)據(jù)聚類且標(biāo)準(zhǔn)化后的多維數(shù)據(jù)集為xm×n,其中,m為數(shù)據(jù)集的維度,n為數(shù)據(jù)集的樣本數(shù)量,那么需要m個(gè)平行坐標(biāo)軸表示這個(gè)數(shù)據(jù)集,記這m個(gè)坐標(biāo)軸分別為a1,a2,…,am。對(duì)于數(shù)據(jù)集xm×n中的一個(gè)數(shù)據(jù)點(diǎn)xi=(xi1,xi2,…,xim),可以在平行坐標(biāo)上用折線p1,p2,…,pm表示,p1,p2,…,pm分別是平行坐標(biāo)軸a1,a2,…,am上的數(shù)值點(diǎn),如圖4所示。
使用貝塞爾曲線代替折線p1,p2,…,pm,并通過(guò)數(shù)據(jù)聚類中心將同類簇的曲線進(jìn)行聚合,讓用戶能夠在平行坐標(biāo)視圖上直觀的觀察到多維數(shù)據(jù)集的數(shù)據(jù)聚類情況。
考慮兩個(gè)相鄰的平行坐標(biāo)數(shù)值軸ai和ai+1圍成的空間,聚合軸vi將這個(gè)空間均分為兩個(gè)部分,每個(gè)部分分別定義兩條控制軸,每個(gè)控制軸與對(duì)應(yīng)的數(shù)值軸與聚合軸的距離都為α(數(shù)值軸ai和ai+1之間的距離為1),如圖5所示。折線pipi+1與聚合軸vi相交于點(diǎn)qi。折線pipi+1被均分成了piqi與qipi+1兩個(gè)部分,可以使用兩條三次貝塞爾曲線表示這兩條線段。附圖5中,ci為該折線所在聚簇的聚類中心,q′i的位置由公式(7)決定。
q′i=(1-β)qi+βci(7)
參數(shù)α與β用于調(diào)整貝塞爾曲線的形狀。α決定貝塞爾曲線控制點(diǎn)的位置,稱作曲線的平滑程度;β決定q′i距離數(shù)據(jù)聚類中心的長(zhǎng)度,稱作曲線的聚合程度。
第一條三次貝塞爾曲線的起點(diǎn)是pi,終點(diǎn)是q′i,兩個(gè)控制點(diǎn)分別落在控制軸yi,1、zi,1上,如附圖5中的紅色點(diǎn)所示。同理,第二條三次貝塞爾曲線的兩個(gè)控制點(diǎn)會(huì)在控制軸yi,2、zi,2上(未標(biāo)出)。這兩條三次貝塞爾曲線會(huì)共享同一個(gè)控制點(diǎn)q′i,所以兩條曲線會(huì)在q′i保持曲線的連續(xù)性。
記第一條貝塞爾曲線的起始點(diǎn)pi的坐標(biāo)向量為(i,pi),終點(diǎn)q'i的坐標(biāo)向量為(i+1/2,qi)(qi由公式(7)決定),控制點(diǎn)b1、b2的坐標(biāo)向量分別為(i+α,b1),(i+1/2-α,b2),那么曲線piq′i可以描述為:
b(t)=(1-t)3(i,pi)+3t(1-t)2(i+α,b1)+3t2(1-t)(i+1/2-α,b2)+t3(i+1/2,qi)(8)
其中,t從0到1不斷變化。
m個(gè)平行坐標(biāo)軸上會(huì)形成m-1個(gè)區(qū)域,一個(gè)數(shù)據(jù)項(xiàng)在每一個(gè)區(qū)域都有兩條三次貝塞爾曲線,一共需要繪制2(m-1)條三次貝塞爾曲線。當(dāng)有n個(gè)數(shù)據(jù)項(xiàng)時(shí),共需繪制2n(m-1)條三次貝塞爾曲線。具體實(shí)現(xiàn)步驟為:
3.1)根據(jù)多維流數(shù)據(jù)聚類的結(jié)果,計(jì)算每一個(gè)類簇的簇心在平行坐標(biāo)上的映射位置;
3.2)根據(jù)公式(7)計(jì)算每一個(gè)數(shù)據(jù)對(duì)象在(m-1)個(gè)數(shù)值軸相鄰空間中聚合軸上的坐標(biāo)位置;
3.3)根據(jù)公式(8)計(jì)算每一個(gè)相鄰空間上的貝塞爾曲線;
3.4)使用不同的顏色編碼來(lái)表示不同的類簇信息,同時(shí)進(jìn)行渲染與繪制。
面向多維流數(shù)據(jù)的動(dòng)態(tài)加載方法,如圖6,具體步驟為:
1)使用vrsc對(duì)流數(shù)據(jù)進(jìn)行數(shù)據(jù)聚類,并將聚類結(jié)果保存到可視化數(shù)據(jù)庫(kù)中;
2)web服務(wù)器不斷查詢可視化數(shù)據(jù)庫(kù),并將實(shí)時(shí)的數(shù)據(jù)聚類結(jié)果推送給web前端。
3)web前端接收到當(dāng)前數(shù)據(jù)聚類結(jié)果后,將其緩存到數(shù)組中,根據(jù)數(shù)據(jù)聚類結(jié)果中各個(gè)類簇的中心,使用曲線聚合模型計(jì)算數(shù)組中各數(shù)據(jù)項(xiàng)的貝塞爾曲線控制點(diǎn)坐標(biāo)。
4)清空平行坐標(biāo)上前一時(shí)刻滑動(dòng)窗口中的所有曲線,并通過(guò)貝塞爾曲線控制點(diǎn)的位置,利用公式(8)逐條繪制每個(gè)數(shù)據(jù)項(xiàng)的貝塞爾曲線,從而完成流數(shù)據(jù)的動(dòng)態(tài)加載。
應(yīng)當(dāng)理解的是,對(duì)本領(lǐng)域普通技術(shù)人員來(lái)說(shuō),可以根據(jù)上述說(shuō)明加以改進(jìn)或變換,而所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。