尤潔,李勁,2,張賽,李婷
(1. 云南大學(xué) 軟件學(xué)院,云南 昆明 650091; 2. 云南省軟件工程重點(diǎn)實(shí)驗(yàn)室,云南 昆明 650091)
圖上的鏈路預(yù)測(cè)是指通過(guò)已有的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和節(jié)點(diǎn)屬性信息等預(yù)測(cè)網(wǎng)絡(luò)中尚未產(chǎn)生連邊的兩個(gè)節(jié)點(diǎn)之間產(chǎn)生鏈接的可能性,或者是已經(jīng)產(chǎn)生但是并未發(fā)現(xiàn)的鏈接信息,是圖數(shù)據(jù)挖掘的重要方向之一,受到廣泛的關(guān)注。
當(dāng)前,關(guān)于鏈路預(yù)測(cè)的研究方法主要包括3種:1)基于極大似然估計(jì)的方法。該方法將網(wǎng)絡(luò)鏈接看作是內(nèi)在層次的反映,采用極大似然估計(jì)進(jìn)行預(yù)測(cè)。但該方法的預(yù)測(cè)準(zhǔn)確性與樣本數(shù)據(jù)量有關(guān),高質(zhì)量的預(yù)測(cè)需要大的樣本數(shù)據(jù),導(dǎo)致計(jì)算復(fù)雜度高,不適用于大規(guī)模網(wǎng)絡(luò)[1-2];2)基于概率模型方法。通過(guò)建立可調(diào)參數(shù)模型再現(xiàn)網(wǎng)絡(luò)的結(jié)構(gòu)和關(guān)系特征,將預(yù)測(cè)問(wèn)題轉(zhuǎn)化為預(yù)測(cè)邊的屬性問(wèn)題進(jìn)行預(yù)測(cè),此類(lèi)方法具有較高預(yù)測(cè)精度,但預(yù)測(cè)過(guò)程中涉及到非普適性的參數(shù)和節(jié)點(diǎn)屬性信息,使得應(yīng)用范圍受限,計(jì)算復(fù)雜度高[3];3)基于節(jié)點(diǎn)相似性預(yù)測(cè)方法[4-14]。假設(shè)節(jié)點(diǎn)之間存在鏈接的可能性與節(jié)點(diǎn)之間的相似性緊密相關(guān),通過(guò)預(yù)測(cè)節(jié)點(diǎn)之間的相似性來(lái)進(jìn)行鏈路預(yù)測(cè)。其中,基于節(jié)點(diǎn)相似性模型的預(yù)測(cè)方法由于方法簡(jiǎn)單,鏈接預(yù)測(cè)質(zhì)量較好等成為目前主流的鏈接預(yù)測(cè)方法。
針對(duì)已有研究工作的不足,本文在保證鏈路預(yù)測(cè)質(zhì)量的前提下,降低預(yù)測(cè)算法的計(jì)算復(fù)雜性角度,提出基于圖勾勒[16]的鏈路預(yù)測(cè)算法。首先,基于圖勾勒技術(shù)對(duì)現(xiàn)有的鏈路預(yù)測(cè)方法進(jìn)行擴(kuò)展,定義了基于ADS(all-distances sketches)結(jié)構(gòu)的鏈路預(yù)測(cè)相似性度量指標(biāo),提出了基于圖勾勒的鏈路預(yù)測(cè)算法,將一般鏈路預(yù)測(cè)算法的計(jì)算復(fù)雜度由降低至,其中是ADS勾勒參數(shù),是網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)。其次,基于并行圖計(jì)算平臺(tái)Spark,提出了ADS的并行計(jì)算方法以及基于ADS技術(shù)的并行鏈路預(yù)測(cè)實(shí)現(xiàn)方法。從算法運(yùn)算時(shí)間和預(yù)測(cè)精度兩方面驗(yàn)證算法的有效性,實(shí)驗(yàn)結(jié)果表明:基于ADS技術(shù)的鏈路預(yù)測(cè)算法可以保證一定預(yù)測(cè)精度,同時(shí)降低預(yù)測(cè)方法的時(shí)間復(fù)雜度,提升運(yùn)算效率。
下面分別給出本文中采用的3種節(jié)點(diǎn)間相似度度量指標(biāo)及定義:
定義1Common Neighbor(CN)[5]:如果圖中兩個(gè)節(jié)點(diǎn)擁有的共同鄰居節(jié)點(diǎn)越多,那么這兩個(gè)節(jié)點(diǎn)就越相似,則它們之間存在或者未來(lái)發(fā)生鏈接的可能性就越大。相似度定義為
定義2Adamic Adar(AA)[6]:AA在CN的基礎(chǔ)上,賦予鄰居節(jié)點(diǎn)權(quán)重,它認(rèn)為共同鄰居節(jié)點(diǎn)的節(jié)點(diǎn)度對(duì)相似度也有影響,共同鄰居節(jié)點(diǎn)度越大,它對(duì)節(jié)點(diǎn)相似度的貢獻(xiàn)越小,反之,共同鄰居節(jié)點(diǎn)度越小,它對(duì)節(jié)點(diǎn)的相似度的貢獻(xiàn)越大。因此在求相似度的公式中,對(duì)共同鄰居節(jié)點(diǎn)度賦予一個(gè)懲罰因子。其相似度定義為
定義 3Resource Allocation(RA)[7]:RA 從資源分配的角度考慮節(jié)點(diǎn)相似性。它認(rèn)為沒(méi)有直接相連的兩個(gè)節(jié)點(diǎn),資源可以從一個(gè)節(jié)點(diǎn)傳遞到另一個(gè)節(jié)點(diǎn),它們的共同鄰居節(jié)點(diǎn)是兩個(gè)節(jié)點(diǎn)傳遞資源的媒介,每一個(gè)媒介都有一個(gè)單位的資源,它將自己的資源平均分配給它的鄰居節(jié)點(diǎn),另一個(gè)節(jié)點(diǎn)接收到的資源數(shù)就是這兩個(gè)節(jié)點(diǎn)的相似度。其相似度定義為
評(píng)估指標(biāo):鏈路預(yù)測(cè)結(jié)果的衡量指標(biāo)主要包括Precision(準(zhǔn)確率)[17]和AUC(曲線下面積)[18],Precision針對(duì)局部結(jié)果進(jìn)行評(píng)估,AUC基于全局進(jìn)行評(píng)估,本文討論的是整體性能,故以AUC作為預(yù)測(cè)精度的評(píng)估標(biāo)準(zhǔn)。AUC的值越高,則鏈路預(yù)測(cè)整體性能較好。
定義4對(duì)于邊集進(jìn)行數(shù)據(jù)劃分,有E =,假設(shè)是屬于全集,但是不屬于邊集,從中取出一條邊的預(yù)測(cè)值記為,從中選出一條邊的預(yù)測(cè)值記為,比較次,若,若,否則不計(jì)數(shù),具體如下:
ADS(all-distances sketches)是定義在圖節(jié)點(diǎn)上的數(shù)據(jù)摘要結(jié)構(gòu)。通過(guò)對(duì)圖中各節(jié)點(diǎn)的可達(dá)鄰居節(jié)點(diǎn)集進(jìn)行抽樣,抽樣結(jié)果與原節(jié)點(diǎn)的集合構(gòu)成了該節(jié)點(diǎn)的Sketch結(jié)構(gòu)。在大圖上,基于ADS可有效進(jìn)行節(jié)點(diǎn)相似關(guān)系,中心度等度量計(jì)算[16]。v
定義5節(jié)點(diǎn)的All-Distances Sketches(ADS)的定義如下[16]:
例1圖的ADS結(jié)構(gòu)如圖1所示,該圖為有向圖帶權(quán)圖。節(jié)點(diǎn)上的數(shù)值為勾勒ADS結(jié)構(gòu)所對(duì)應(yīng)生成的0 ~ 1的隨機(jī)數(shù)。
圖 1 圖的ADS示例Fig. 1 An illustration of ADS in a graph
圖中每個(gè)節(jié)點(diǎn)的ADS結(jié)構(gòu)是一個(gè)集合。以節(jié)點(diǎn) 1 為例,ADS(1)()={(1,0),(2,8),(3,9),(4,18),(6,18)}表示在圖中隨機(jī)值取值情況下,ADS勾勒參數(shù)為2時(shí)節(jié)點(diǎn)1的ADS結(jié)構(gòu),集合中元素(4,18)表示節(jié)點(diǎn)1到節(jié)點(diǎn)4的最短距離是18。例如:
ADS是對(duì)節(jié)點(diǎn)的全局鄰居節(jié)點(diǎn)進(jìn)行抽樣,而CN、AA、RA 3種算法的默認(rèn)情況是基于1跳鄰居進(jìn)行計(jì)算的,故為了排除多跳鄰居對(duì)相似度的影響,基于節(jié)點(diǎn)的ADS結(jié)構(gòu)的鏈路預(yù)測(cè)算法中也只考慮一跳鄰居節(jié)點(diǎn)。基于1跳鄰居的ADS的大小永遠(yuǎn)不大于節(jié)點(diǎn)的1跳鄰居數(shù),所以在求兩個(gè)集合的相似度時(shí),運(yùn)算量也相應(yīng)減少。在AA算法和RA算法中還涉及到求共同鄰居節(jié)點(diǎn)的度,其他相似性度量指標(biāo)也涉及到節(jié)點(diǎn)中心度的計(jì)算等,這個(gè)過(guò)程中需要耗費(fèi)大量的計(jì)算時(shí)間,而ADS抽樣的過(guò)程中會(huì)過(guò)濾掉一部分的鄰居節(jié)點(diǎn),故在一定程度上減少了部分求節(jié)點(diǎn)度、中心度的運(yùn)算量。
對(duì)圖勾勒后,得到的ADS結(jié)構(gòu)不再是單一的節(jié)點(diǎn)集、邊集所構(gòu)成的圖數(shù)據(jù),而是由節(jié)點(diǎn)及其部分鄰居節(jié)點(diǎn)構(gòu)成的集合,這部鄰居節(jié)點(diǎn)包括了一跳至多跳另?yè)?jù)節(jié)點(diǎn),還帶有相應(yīng)的可達(dá)距離,故ADS需要根據(jù)自身結(jié)構(gòu)定義合適的相似性指標(biāo),具體定義如下:
定義6基于ADS的CN度量指標(biāo)(ADS-CN)定義如下:
定義7基于ADS的AA度量指標(biāo)(ADS-AA)如下:
定義8基于ADS技術(shù)擴(kuò)展的RA度量指標(biāo)(ADS-RA)定義如下:
公式中符號(hào)含義同定義6。
首先簡(jiǎn)要介紹鏈路預(yù)測(cè)算法的基本思想,鏈路預(yù)測(cè)算法首先將待預(yù)測(cè)數(shù)據(jù)集劃分為訓(xùn)練集和測(cè)試集。找出訓(xùn)練集中不存在連邊的節(jié)點(diǎn)對(duì),得到中不存在連邊的數(shù)據(jù)集和,并計(jì)算節(jié)點(diǎn)對(duì)的相似度值,隨機(jī)從和中各選出一條邊,比較它們的相似度的值,重復(fù)多次,根據(jù)AUC公式定義,得到預(yù)測(cè)精度?;贏DS勾勒技術(shù)的鏈路預(yù)測(cè)算法的基本思想:在計(jì)算節(jié)點(diǎn)對(duì)相似度之前,構(gòu)造出邊集的圖結(jié)構(gòu),對(duì)圖進(jìn)行ADS勾勒處理,得到中每個(gè)節(jié)點(diǎn)的ADS結(jié)構(gòu),根據(jù)基于ADS結(jié)構(gòu)定義的相似性度量指標(biāo)進(jìn)行鏈路預(yù)測(cè)。由于節(jié)點(diǎn)的ADS是獨(dú)立于圖的,這樣帶來(lái)的優(yōu)勢(shì)是原圖有些節(jié)點(diǎn)發(fā)生變化以后,只需要更新變化節(jié)點(diǎn)的ADS,帶來(lái)的好處是可以獨(dú)立動(dòng)態(tài)更新節(jié)點(diǎn)的ADS結(jié)構(gòu),更新代價(jià)小;處理后的數(shù)據(jù)另一個(gè)優(yōu)點(diǎn)是利于并行化處理,每個(gè)節(jié)點(diǎn)及其ADS結(jié)構(gòu)與其他節(jié)點(diǎn)時(shí)獨(dú)立的,在其他并行框架下,每個(gè)節(jié)點(diǎn)ADS互不干擾,利于并行?;贏DS勾勒技術(shù)的鏈路預(yù)測(cè)算法的具體描述如算法1。
分析算法1的時(shí)間復(fù)雜度。首先,由文獻(xiàn)[16]可知,對(duì)于圖中的一個(gè)節(jié)點(diǎn),的期望大小為其中是從節(jié)點(diǎn)出發(fā)的可達(dá)鄰居節(jié)點(diǎn)數(shù),是第i個(gè)調(diào)和級(jí)數(shù),由于()且,所以的期望大小為。于是,基于ADS技術(shù)求圖中節(jié)點(diǎn)相似度的時(shí)間復(fù)雜度為。
算法1基于ADS勾勒技術(shù)的鏈路預(yù)測(cè)算法
輸入,預(yù)測(cè)值比較次數(shù)n,勾勒參數(shù)K;
輸出AUC值。
1) 切割邊集E為訓(xùn)練集Er和測(cè)試集Ep,;
//找出訓(xùn)練集中不存在連邊的結(jié)點(diǎn)對(duì)集合
為提高鏈路預(yù)測(cè)算法的執(zhí)行效率,在算法1基礎(chǔ)上,進(jìn)一步提出了基于Spark的并行化的鏈路預(yù)測(cè)算法。該算法具體描述如算法2。算法2的執(zhí)行過(guò)程與算法1一致,但算法2將算法1中的每一步驟采用彈性分布式數(shù)據(jù)集(RDD)進(jìn)行了實(shí)現(xiàn)?;赗DD表示,采用對(duì)RDD的Map-reduce并行化操作有效提升鏈接預(yù)測(cè)算法的執(zhí)行效率。RDD轉(zhuǎn)換和操作細(xì)節(jié)詳見(jiàn)算法2中的描述。
算法2基于Spark的并行化鏈路預(yù)測(cè)算法G(V,E)
輸入,預(yù)測(cè)值比較次數(shù)n;
輸出AUC值。
//找出訓(xùn)練集中不存在連邊的結(jié)點(diǎn)對(duì)集合
//求出各頂點(diǎn)的鄰居節(jié)點(diǎn)
//求出各結(jié)點(diǎn)的節(jié)點(diǎn)度
//求結(jié)點(diǎn)x, y的相似度
表 1 實(shí)驗(yàn)數(shù)據(jù)集拓?fù)浣Y(jié)構(gòu)信息Table 1 Experimental dataset topology information
本文實(shí)驗(yàn)在USAir97(美國(guó)航空網(wǎng)絡(luò)數(shù)據(jù)[17])、Yeast(酵母菌蛋白質(zhì)相互作用網(wǎng)絡(luò)數(shù)據(jù)[18])、Grid(美國(guó)電力網(wǎng)絡(luò)數(shù)據(jù)[19])3個(gè)數(shù)據(jù)集上進(jìn)行測(cè)試,實(shí)驗(yàn)結(jié)果主要對(duì)鏈路預(yù)測(cè)算法和基于ADS勾勒技術(shù)的鏈路預(yù)測(cè)算法兩種算法的運(yùn)行時(shí)間和預(yù)測(cè)精度進(jìn)行對(duì)比分析。實(shí)驗(yàn)環(huán)境包括內(nèi)存:64 GB;處理器:inter(R) Xeon(R) CPU E5-2620 v3 @ 2.40 GHz 2.40 GHz;開(kāi)發(fā)平臺(tái):Intellij IDEA 2016.2.5+Spark GraphX;開(kāi)發(fā)語(yǔ)言:Scala。
本次所有實(shí)驗(yàn)結(jié)果均是對(duì)數(shù)據(jù)集進(jìn)行10次劃分,求平均值,由于程序運(yùn)行時(shí)間存在誤差,故每次劃分結(jié)果得到訓(xùn)練集在運(yùn)行相關(guān)算法的程序時(shí),運(yùn)行20次求平均值作為劃分一次的數(shù)據(jù)值。AUC計(jì)算公式中的統(tǒng)一取10萬(wàn)次。
ADS勾勒技術(shù)是對(duì)原數(shù)據(jù)的一種抽樣方法,通過(guò)抽樣達(dá)到降低計(jì)算復(fù)雜度的目的,但是由于它只是對(duì)數(shù)據(jù)的近似勾勒,所以用勾勒的結(jié)果進(jìn)行數(shù)據(jù)的分析與挖掘,在精度上會(huì)有一定的損失,是不可避免的,但是損失一定范圍內(nèi)的精度,卻提升了較大的計(jì)算效率。
3.2.1 兩種算法執(zhí)行效率
圖 2~4分別給出了 USAir97、Yeast、Grid數(shù)據(jù)集基于CN、AA、RA3種相似性度量指標(biāo)的兩種算法的執(zhí)行效率。從圖中可以看出基于ADS勾勒技術(shù)的鏈路預(yù)測(cè)算法執(zhí)行時(shí)間均低于原鏈路預(yù)測(cè)算法的執(zhí)行時(shí)間,由于鏈路預(yù)測(cè)算法不涉及到值得變化,故在值變化過(guò)程中結(jié)果不改變。而基于圖勾勒技術(shù)的鏈路預(yù)測(cè)算法隨著值的變化算法執(zhí)行時(shí)間有所增加,但是均低于原鏈路預(yù)測(cè)算法,計(jì)算效率提高了約百分之15%~25%,這是由于ADS結(jié)構(gòu)是原數(shù)據(jù)集的一個(gè)抽樣,每個(gè)節(jié)點(diǎn)的一跳鄰居節(jié)點(diǎn)集的數(shù)目遠(yuǎn)遠(yuǎn)小于原圖的一跳鄰居節(jié)點(diǎn)集的數(shù)目,當(dāng)值足夠大時(shí),抽樣的結(jié)果也只能等于原圖的數(shù)據(jù)。
圖 2 CN、AA、RA度量指標(biāo)運(yùn)行時(shí)間對(duì)比(USAir97)Fig. 2 CN, AA, RA metrics comparison of run time(USAir97)
3.2.2 兩種算法的預(yù)測(cè)精度
圖5~7給出了3個(gè)數(shù)據(jù)集在兩種算法下的預(yù)測(cè)精度,實(shí)驗(yàn)結(jié)果顯示,基于ADS的鏈路預(yù)測(cè)算法的預(yù)測(cè)精度隨著值的增加而逐漸接近于原鏈路預(yù)測(cè)算法的精度,數(shù)據(jù)線最后趨于重合。
圖 3 CN、AA、RA度量指標(biāo)運(yùn)行時(shí)間對(duì)比(Yeast)Fig. 3 CN,AA,RA metrics comparison of run time(Yeast)
圖 4 CN、AA、RA度量指標(biāo)運(yùn)行時(shí)間對(duì)比(Grid)Fig. 4 CN,AA,RA metrics comparison of run time(Grid)
從表1中可以看出USAir97數(shù)據(jù)集節(jié)點(diǎn)遠(yuǎn)小于Yeast數(shù)據(jù)集和Grid數(shù)據(jù)集,但是圖中結(jié)果顯示USAir97數(shù)據(jù)集較為理想的預(yù)測(cè)結(jié)果對(duì)應(yīng)的值要比其余兩個(gè)數(shù)據(jù)集對(duì)應(yīng)的值要大,這是由于USAir97數(shù)據(jù)集要比Yeast數(shù)據(jù)集和Grid數(shù)據(jù)集稠密,在網(wǎng)絡(luò)刻畫(huà)中對(duì)精度的要求更高,所以相對(duì)而言預(yù)測(cè)結(jié)果較為理想的情況下對(duì)應(yīng)的值要大。
圖5和圖6中精度的變化逐漸上升最后趨于穩(wěn)定,但是圖7中精度的變化有波動(dòng),在千分之一上下波動(dòng),存在原因可能有兩個(gè):1)計(jì)算AUC過(guò)程中抽取的次數(shù)不夠所造成的誤差;2)ADS節(jié)點(diǎn)隨機(jī)值變化過(guò)程中產(chǎn)生的誤差。
圖 5 CN,AA,RA度量指標(biāo)AUC對(duì)比(USAir97)Fig. 5 Comparison of the CN, AA, RA metrics AUC(USAir97)
圖 6 CN、AA、RA度量指標(biāo)AUC對(duì)比(Yeast)Fig. 6 Comparison of the CN,AA,RA metrics AUC(Yeast)
圖 7 CN、AA、RA度量指標(biāo)AUC對(duì)比(Grid)Fig. 7 comparison of the CN,AA,RA metrics AUC(Grid)
DeepWalk[20]是一種基于隨機(jī)游動(dòng)的網(wǎng)絡(luò)表示學(xué)習(xí)方法。通過(guò)DeepWalk可獲得圖中節(jié)點(diǎn)的向量化表示,進(jìn)而可基于向量點(diǎn)積進(jìn)行鏈接預(yù)測(cè)。在真實(shí)圖數(shù)據(jù)上將本文方法與基于Deep-Walk的鏈接預(yù)測(cè)方法進(jìn)行了實(shí)驗(yàn)對(duì)比。測(cè)試數(shù)據(jù)為蛋白質(zhì)交互網(wǎng)絡(luò)[21](protein-Protein Interactions)。該數(shù)據(jù)包括19 706 個(gè)節(jié)點(diǎn)、390 633條邊。采用CN-ADS與DeepWalk在算法執(zhí)行時(shí)間和AUC值上進(jìn)行了比較。其中DeepWalk的參數(shù)設(shè)置為:向量學(xué)習(xí)模型為Skip-Gram,向量維數(shù)設(shè)為64。實(shí)驗(yàn)結(jié)果如圖8、9所示。從圖8、9結(jié)果可知,小值可保證算法執(zhí)行效率,然而,AUC較DeepWalk差。提高值后,在執(zhí)行時(shí)間仍小于D e e p W a l k的情況下,可顯著改善AUC值。特別地,當(dāng)>32后,AUC值優(yōu)于DeepWalk。對(duì)于鏈接預(yù)測(cè)而言,本文算法在一定條件下優(yōu)于DeepWalk的結(jié)果。
圖 8 PPI數(shù)據(jù)集上CN-ADS與DeepWalk的時(shí)間對(duì)比Fig. 8 Time comparison of CN-ADS and DeepWalk on PPI
圖 9 PPI數(shù)據(jù)集上CN-ADS與DeepWalk的AUC對(duì)比Fig. 9 AUC comparison of CN-ADS and DeepWalk on PPI
本文針對(duì)大規(guī)模網(wǎng)絡(luò)數(shù)據(jù)在鏈路預(yù)測(cè)中存在時(shí)間復(fù)雜度高、運(yùn)算量大等問(wèn)題,對(duì)現(xiàn)有的鏈路預(yù)測(cè)方法進(jìn)行擴(kuò)展,結(jié)合現(xiàn)有的圖勾勒技術(shù),提出了基于ADS技術(shù)的鏈路預(yù)測(cè)方法,根據(jù)勾勒的結(jié)果結(jié)合現(xiàn)有的預(yù)測(cè)方法,定義了基于ADS結(jié)構(gòu)的鏈路預(yù)測(cè)方法,在算法預(yù)測(cè)精度和預(yù)測(cè)時(shí)間中取得了較好的折衷,并在真實(shí)網(wǎng)絡(luò)數(shù)據(jù)中驗(yàn)證了算法的有效性。
本文是基于局部信息相似度進(jìn)行鏈路預(yù)測(cè)的,更精確的預(yù)測(cè)方法是基于全局信息進(jìn)行預(yù)測(cè)的,如何更好地在圖勾勒技術(shù)的基礎(chǔ)上基于全局信息定義預(yù)測(cè)方法,是將來(lái)展開(kāi)的要點(diǎn)之一。此外,為驗(yàn)證圖勾勒技術(shù)在鏈路預(yù)測(cè)問(wèn)題上面的有效性,本文是通過(guò)實(shí)驗(yàn)數(shù)據(jù)進(jìn)行驗(yàn)證分析的,缺少?lài)?yán)謹(jǐn)?shù)睦碚撟C明,后續(xù)工作將會(huì)致力于從理論方面證明圖勾勒技術(shù)對(duì)鏈路預(yù)測(cè)的有效性。