賈蘇 符精晶 張君
摘要:互聯(lián)網(wǎng)的發(fā)展也帶動(dòng)了社會(huì)網(wǎng)絡(luò)的發(fā)展,但社會(huì)網(wǎng)絡(luò)規(guī)模較大,網(wǎng)絡(luò)結(jié)構(gòu)較為稀疏,都給實(shí)際應(yīng)用帶來(lái)了挑戰(zhàn),且單線程算法對(duì)算力的使用不充分,因此在單機(jī)上開(kāi)展了對(duì)算法并行化研究,使用線程池技術(shù),通過(guò)實(shí)驗(yàn)證明減少了算法運(yùn)行的實(shí)際時(shí)間。
關(guān)鍵詞:社會(huì)網(wǎng)絡(luò);影響力最大化;線程池
中圖分類號(hào):TP391? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2022)19-0119-03
1 引言
隨著互聯(lián)網(wǎng)的快速發(fā)展,越來(lái)越多的人開(kāi)始從傳統(tǒng)的線下社交轉(zhuǎn)移到線上社交,這給社交網(wǎng)絡(luò)[1]的發(fā)展帶來(lái)了前所未有的機(jī)遇,涌現(xiàn)出了一批像Facebook、Twitter、QQ等知名互聯(lián)網(wǎng)社交產(chǎn)品。社交網(wǎng)絡(luò)在方便人們溝通的同時(shí),也會(huì)影響著人們實(shí)際的社會(huì)行為,這給我們對(duì)社交網(wǎng)絡(luò)的分析與應(yīng)用帶來(lái)了機(jī)遇,比如商家想要通過(guò)在線上的活躍用戶的推薦獲取其銷量上的提升,也就是病毒式營(yíng)銷(virtal -marketing)[2]。病毒式營(yíng)銷基于具有較大影響力的個(gè)體群體向其他的個(gè)體進(jìn)行推薦,感化其他不具有購(gòu)買意愿的個(gè)體,因此如何找出社交網(wǎng)絡(luò)中影響力最大的群體是病毒式營(yíng)銷開(kāi)展的關(guān)鍵。
影響力最大化問(wèn)題(Influence Maximization)最先由Domingos和Richardson等人[3]提出并定義,Kempe等人[4]在此基礎(chǔ)上進(jìn)一步研究,提出了top-k的影響力最大化問(wèn)題,并證明了影響力最大化問(wèn)題是一個(gè)NP-hard問(wèn)題。并提出了一個(gè)貪心算法,可以保證在[1-1/e]的范圍內(nèi)接近最優(yōu)解。
2 背景知識(shí)
2.1 影響力最大化問(wèn)題(Influence Maximization)
將社交網(wǎng)絡(luò)抽象為一個(gè)圖[G=V,E],其中[V]是網(wǎng)絡(luò)中個(gè)體的集合,[E]是網(wǎng)絡(luò)中個(gè)體之間關(guān)系的集合。網(wǎng)絡(luò)中的個(gè)體我們使用[v∈V]來(lái)代表,節(jié)點(diǎn)[v]的狀態(tài)有兩種,一種是活躍(active),在營(yíng)銷中表示具有購(gòu)買欲望,另一種是不活躍(inactive),營(yíng)銷中表示不具有購(gòu)買欲望。個(gè)體間的關(guān)系使用[e∈E] 來(lái)代表。網(wǎng)絡(luò)上不同節(jié)點(diǎn)之間的影響力是不同的,我們使用[Pu,v→(0,1)] 代表節(jié)點(diǎn)[u]對(duì)節(jié)點(diǎn)[v]的影響力即集合E中邊[u,v]上的值。
影響力最大化問(wèn)題就是希望從[V]中選擇k(0<=k<=|V|)個(gè)節(jié)點(diǎn)作為種子集合[S],種子集合中所有節(jié)點(diǎn)的狀態(tài)均為活躍。非種子集合的節(jié)點(diǎn)均為不活躍。然后在擴(kuò)散模型下,種子集合中的節(jié)點(diǎn)去激活非激活狀態(tài)的節(jié)點(diǎn)。節(jié)點(diǎn)一旦激活便不再改變。我們希望最終的被激活的節(jié)點(diǎn)是最多的,即找到這樣的一個(gè)種子集合[S]:
[S*=argmaxInf(S)]
表示種子集合S的影響力擴(kuò)散的大小。
2.2 影響力傳播模型-獨(dú)立級(jí)聯(lián)模型(Independent Cascade Model)
獨(dú)立級(jí)聯(lián)模型[4-6]最初是Jacob Goldenberg提出,是一個(gè)離散的概率模型。在此模型下,節(jié)點(diǎn)的狀態(tài)分為兩種,一種是激活狀態(tài),另一種是不激活狀態(tài)。激活狀態(tài)的節(jié)點(diǎn)會(huì)嘗試激活不激活狀態(tài)的節(jié)點(diǎn),節(jié)點(diǎn)對(duì)節(jié)點(diǎn)的激活作用是相互獨(dú)立的,不會(huì)累積,而且只能嘗試激活一次,只能從不激活狀態(tài)變?yōu)榧せ顮顟B(tài)且激活之后狀態(tài)不再發(fā)生改變。節(jié)點(diǎn)間激活狀態(tài)的改變模擬了信息的傳播,在此傳播模型下,連續(xù)的信息傳播被分解為獨(dú)立、離散的過(guò)程,也更有利于分析統(tǒng)計(jì)。
Kempe首次使用獨(dú)立級(jí)聯(lián)模型作為影響力傳播的模型,節(jié)點(diǎn)激活的狀態(tài)代表節(jié)點(diǎn)被影響力影響了,處于非激活的狀態(tài)代表此時(shí)節(jié)點(diǎn)尚未被影響。此模型下的影響力傳播過(guò)程如下:
初始時(shí)刻[t=0], 網(wǎng)絡(luò)中只有種子節(jié)點(diǎn)處于激活狀態(tài),其余非種子節(jié)點(diǎn)處于未激活狀態(tài)。
在任意時(shí)刻[t>0] , 任意一個(gè)[t-1]時(shí)刻被激活的節(jié)點(diǎn)[u]有且僅有一次機(jī)會(huì)以概率[puv]去嘗試激活它的每一個(gè)處于非激活狀態(tài)的鄰居[v]。[puv]是節(jié)點(diǎn)[u]和[v]邊上的傳播概率。
如果存在多個(gè)處于激活狀態(tài)的節(jié)點(diǎn)同時(shí)嘗試激活它們的共同鄰居節(jié)點(diǎn)[v],按照獨(dú)立級(jí)聯(lián)模型的定義,節(jié)點(diǎn)間的激活順序是獨(dú)立的,那么這些節(jié)點(diǎn)以隨機(jī)且獨(dú)立的順序去嘗試激活[v],一旦激活,節(jié)點(diǎn)[v]的狀態(tài)即改變,不再受其他節(jié)點(diǎn)的影響。
在[t]時(shí)刻被激活的節(jié)點(diǎn),會(huì)在[t+1]時(shí)刻也嘗試激活其鄰居節(jié)點(diǎn)。
重復(fù)上述過(guò)程,直到某一個(gè)時(shí)刻網(wǎng)絡(luò)中不再有新的節(jié)點(diǎn)被激活,影響力傳播過(guò)程終止。此時(shí),網(wǎng)絡(luò)中被激活的非種子節(jié)點(diǎn)數(shù)就是此種子集合影響力的規(guī)模。
3 影響力最大化算法及其多線程實(shí)現(xiàn)
影響力最大化的貪心算法如下:
其中[InfS?v] 為種子集合加入節(jié)點(diǎn)[v]之后的影響力規(guī)模,為了準(zhǔn)確地度量,我們使用Monto-carlo模擬來(lái)模擬影響力擴(kuò)散的過(guò)程。由于每加入一個(gè)節(jié)點(diǎn)都需要多次的模擬,所以造成了算法所需要的時(shí)間很高。解決此問(wèn)題有兩種思路:第一種是對(duì)其算法進(jìn)行一定的改進(jìn),第二種是使用并行化手段完成算法的運(yùn)行。
為了縮短算法運(yùn)行所需要的時(shí)間,我們使用了多線程技術(shù)。針對(duì)當(dāng)前機(jī)器核心數(shù)為4,我們使用了大小為4的線程池,其中每一個(gè)線程都去度量在當(dāng)前種子集合的影響力大小,使用Callable接口去持有線程返回的結(jié)果。篩選出具有最大增益的非種子節(jié)點(diǎn)后更新種子集合,完成此輪種子節(jié)點(diǎn)選擇。線程池的使用可以降低傳統(tǒng)多線程創(chuàng)建和銷毀帶來(lái)的開(kāi)銷,并對(duì)線程進(jìn)行了統(tǒng)一的分配和監(jiān)控,處理大量計(jì)算任務(wù)時(shí)其優(yōu)勢(shì)更加明顯。
使用線程池具體代碼如下:
private Set
// 線程池
ExecutorService threadPool = Executors.newFixedThreadPool(4);
// 初始化非種子節(jié)點(diǎn)
noseeds.addAll(fromNodes);
for (int i = 0; i < k; i++) {
Map
int ca_c = 0;
for (Integer candidate : noseeds) {
if(edges.get(candidate).size() == 0) //當(dāng)節(jié)點(diǎn)->目的節(jié)點(diǎn)的個(gè)數(shù)不為0
continue;
int count_Once = 0;
for (int j = 0; j < 100; j++) { // monto_carlo
Callable
// 執(zhí)行任務(wù)并獲取Future對(duì)象
Future
while (!f.isDone()) { // no execute end loop it
//System.out.println("? ?In while");
}
count_Once += f.get(); // spread的累加
} //end for
candidate_Spread.put(candidate, count_Once);
}
// refresh seeds
Optional
.max(Map.Entry.comparingByValue());
// 這里避免了每次都加入具有最大值spred值的candidate
if (!seeds.contains(max_vlu.get().getKey())) {
seeds.add(max_vlu.get().getKey());// 更新seeds
noseeds.remove(max_vlu.get().getKey());// 從noseeds中刪除當(dāng)前種子
}
}
return seeds;
}
4 數(shù)據(jù)集以及實(shí)驗(yàn)結(jié)果
4.1 數(shù)據(jù)集及實(shí)驗(yàn)相關(guān)設(shè)置
本文選擇了DBLP數(shù)據(jù)集和LiveJournal作為實(shí)驗(yàn)的數(shù)據(jù)集(來(lái)自:http://snap.stanford.edu/data/com-DBLP.html)。DBLP是一個(gè)關(guān)于科研論文發(fā)表共同作者的網(wǎng)絡(luò),其中如果兩位作者至少發(fā)表一篇論文,則可以將他們聯(lián)系起來(lái),即將作者看成是社交網(wǎng)絡(luò)中的節(jié)點(diǎn),聯(lián)系則是節(jié)點(diǎn)間的邊。LiveJournal是一個(gè)擁有近1000萬(wàn)會(huì)員的免費(fèi)在線社區(qū),它允許成員維護(hù)日志、個(gè)人日志和組日志,并且允許人們標(biāo)記其他成員是他們的朋友。數(shù)據(jù)集的具體的拓?fù)湫畔⑷绫?所示:
實(shí)驗(yàn)代碼使用Java進(jìn)行編寫(xiě),運(yùn)行于Windows10機(jī)器上,處理器為I5 9500,內(nèi)存8GB。實(shí)驗(yàn)中使用獨(dú)立級(jí)聯(lián)模型(IC)作為影響力傳播模型。為了保證實(shí)驗(yàn)結(jié)果的準(zhǔn)確性,我們?cè)O(shè)置蒙特卡洛模擬的次數(shù)[R=2000],這個(gè)過(guò)程也是實(shí)驗(yàn)中最為耗時(shí)的過(guò)程,為了縮短運(yùn)行所需要的時(shí)間,我們?cè)谶@個(gè)過(guò)程中加入了多線程。
4.2 實(shí)驗(yàn)結(jié)果
(1) 在DBLP上的實(shí)驗(yàn)結(jié)果
(2) 在LiveJournal上的實(shí)驗(yàn)結(jié)果
5 總結(jié)和展望
本文回顧了社會(huì)網(wǎng)絡(luò)上影響力最大化的發(fā)展及在其上的應(yīng)用—病毒式營(yíng)銷,針對(duì)影響力最大化的貪心算法做出了多線程的實(shí)現(xiàn),在不影響實(shí)驗(yàn)結(jié)果精度的情況下,縮短了實(shí)驗(yàn)運(yùn)行所需要的時(shí)間,并在DBLP和LiveJournal這兩個(gè)真實(shí)的社會(huì)網(wǎng)絡(luò)集合上進(jìn)行了實(shí)驗(yàn),將影響力最大化的貪心算法進(jìn)行了并行化 ,并將實(shí)驗(yàn)運(yùn)行時(shí)使用單線程和線程池所需的時(shí)間進(jìn)行了對(duì)比。實(shí)驗(yàn)證明通過(guò)并行化可以減少算法運(yùn)行的時(shí)間。
在企業(yè)的實(shí)際操作中,希望很快地獲取他們期待的結(jié)果以供做出相對(duì)應(yīng)的決策。因此,即使加入了多線程,也難以滿足企業(yè)級(jí)的實(shí)時(shí)性。下一步,我們將對(duì)算法進(jìn)行一定的改進(jìn)以提高算法的效率,并使用服務(wù)器集群技術(shù)完成現(xiàn)有計(jì)算任務(wù)。
參考文獻(xiàn):
[1] 汪小帆,李翔,陳關(guān)榮.網(wǎng)絡(luò)科學(xué)導(dǎo)論[M].北京:高等教育出版社,2012.
[2] Bass F M.A new product growth for model consumer durables[J].Management Science,1969,15(5):215-227.
[3] Domingos P, Richardson M. Mining the network value of customers[J].Proceedings of the 7th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. San Francisco,USA,2001.
[4] Kempe . Maximizing the spread of influence through a social network[J]. Proc.of Acm Sigkdd Intl Conf.on Knowledge Discovery & Data Mining, 2003.
[5] Goldenberg J , Muller L E . Talk of the Network: A Complex Systems Look at the Underlying Process of Word-of-Mouth[J]. Marketing Letters, 2001, 12(3):211-223.
[6] Goldenberg J, Libai B, Muller E. Using complex systems analysis to advance marketing theory development: Modeling heterogeneity effects on new product growth through stochastic cellular automata[J]. Academy of Marketing Science Review,2001,2001:1.
收稿日期:2021-09-18
基金項(xiàng)目:沙洲職業(yè)工學(xué)院青年教師基金(SGJJ2021B09)
作者簡(jiǎn)介:賈蘇(1993—),江蘇寶應(yīng)人,男,沙洲職業(yè)工學(xué)院電子信息工程系助教;符精晶(1994—),江蘇江都人,女,沙洲職業(yè)工學(xué)院電子信息工程系助教;張君(1986—),江蘇張家港人,男,沙洲職業(yè)工學(xué)院電子信息工程系助教。