一種基于AdaBoost的鏈路預(yù)測算法
【專利摘要】本發(fā)明提供了一種基于AdaBoost的鏈路預(yù)測算法,該方法適用于為當(dāng)前拓?fù)浣Y(jié)構(gòu)中的通信實(shí)體預(yù)測其將來發(fā)生通信的可能性。用戶輸入當(dāng)前網(wǎng)絡(luò)的通信關(guān)系,通過一系列的計算,能夠得到對下一時刻的通信實(shí)體是否發(fā)送通信的預(yù)測。該方法將Boosting方法中提升弱學(xué)習(xí)方法為強(qiáng)學(xué)習(xí)方法的思想應(yīng)用到鏈路預(yù)測之中。本發(fā)明的優(yōu)勢在于相對于現(xiàn)有的各種常用的預(yù)測算法而言,具有更高的靈敏度和更低的誤報率,能夠在顯著提高算法召回率的同時,保持計算結(jié)果的正確性。
【專利說明】一種基于AdaBoost的鏈路預(yù)測算法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)技術(shù),具體涉及一種鏈路預(yù)測的實(shí)現(xiàn)方法。
【背景技術(shù)】
[0002]鏈路預(yù)測是鏈路挖掘中將鏈接作為挖掘?qū)ο蟮膽?yīng)用。主要預(yù)測已經(jīng)存在但尚未被發(fā)現(xiàn)的鏈接以及尚未鏈接的節(jié)點(diǎn)間未來產(chǎn)生鏈接的可能性。隨著一些鏈路預(yù)測算法開始在商業(yè)領(lǐng)域得到應(yīng)用,與之相關(guān)的研究已經(jīng)成為一個熱門領(lǐng)域,其中基于拓?fù)鋱D的鏈路預(yù)測算法研究工作在近年來受到了廣泛重視。例如Facebook采用基于RWR(Random Walk withRestart)的方法預(yù)測用戶的朋友關(guān)系,據(jù)此提高好友推薦的成功率。
[0003]基于網(wǎng)絡(luò)拓?fù)鋱D的鏈路預(yù)測算法主要包括基于節(jié)點(diǎn)鄰居的相似性,基于最大似然估計以及基于概率模型等三種類型。代表性算法包括基于局部信息相似性的共同鄰居(CommonNeighbors)算法,基于路徑相似性的Katz算法和基于隨機(jī)游走相似性的RWR算法。其中,基于節(jié)點(diǎn)鄰居相似性的鏈路預(yù)測算法研究較早,在實(shí)際工作中取得了廣泛應(yīng)用。另一類取得實(shí)際推廣應(yīng)用的方法是基于隨機(jī)游走的鏈路預(yù)測算法。這類算法的基本思想都是對圖中節(jié)點(diǎn)所有可能的組合進(jìn)行排序,選擇其中最可能出現(xiàn)在新圖中的節(jié)點(diǎn)對(即圖中的邊)。然而近一兩年來,無論是在對已有算法的改進(jìn),還是在提出新算法方面,都沒有出現(xiàn)有突破性的成果,基于拓?fù)涞逆溌奉A(yù)測算法的召回率依然較低。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的是提供一種基于AdaBoost的鏈路預(yù)測算法。使用本發(fā)明提供的實(shí)施例,可以對當(dāng)前網(wǎng)絡(luò)拓?fù)鋱D中將來可能發(fā)生鏈接的節(jié)點(diǎn)對進(jìn)行預(yù)測。
[0005]為了克服當(dāng)前主流的基于網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的鏈路預(yù)測算法普遍存在召回率較低的問題。通過我們的研究發(fā)現(xiàn),現(xiàn)有的主流鏈路預(yù)測方法的預(yù)測結(jié)果并不完全相交,利用算法結(jié)果的疊加提高召回率。但是,直接累加求和并不可行,因?yàn)闀档涂偟乃惴ň?。?jù)此考慮采用Boosting方法對其進(jìn)行改進(jìn)。首先將鏈路預(yù)測問題看作二分類問題,對下一時刻網(wǎng)絡(luò)中每一條可能存在的邊(節(jié)點(diǎn)對),其分類結(jié)果為兩類:存在或不存在。接下來借用Boosting方法通過錯誤反饋提升弱學(xué)習(xí)算法得到強(qiáng)學(xué)習(xí)算法的思想,根據(jù)一定的原則選擇若干鏈路預(yù)測算法作為弱分類器,基于AdaBoost算法提出并實(shí)現(xiàn)了一個新的鏈路預(yù)測方法。
[0006]該方法的步驟包括:
[0007]讀取預(yù)測訓(xùn)練樣本以及預(yù)測測試樣本;
[0008]為預(yù)測訓(xùn)練樣本附上其真實(shí)所在類的標(biāo)簽值;
[0009]為每個樣本的權(quán)重賦初始值;
[0010]選取若干鏈路預(yù)測算法作為弱分類器;
[0011]使用各個分類器為訓(xùn)練樣本做分類;
[0012]計算每個分類器的投票權(quán)重;[0013]使用每個分類器為預(yù)測測試集合中的樣本做分類;
[0014]按上述各分類器的分類結(jié)果為預(yù)測測試集合中的樣本投票,做出最終預(yù)測;
[0015]輸出對預(yù)測測試集合中樣本的預(yù)測結(jié)果;
[0016]最后,實(shí)施本發(fā)明具有以下有益效果:
[0017]本發(fā)明實(shí)施例的有益效果是,將Boosting思想應(yīng)用于鏈接預(yù)測之中,相對于現(xiàn)有的各種常用算法而言,具有更高的靈敏度和更低的誤報率,能夠在顯著提高算法召回率的同時,保持計算結(jié)果的正確性。
【專利附圖】
【附圖說明】
[0018]附圖是本發(fā)明改進(jìn)現(xiàn)有鏈路預(yù)測算法提出的一種基于AdaBoost的鏈路預(yù)測算法的算法流程。
【具體實(shí)施方式】
[0019]下面結(jié)合附圖對本發(fā)明的【具體實(shí)施方式】進(jìn)行描述,以便本領(lǐng)域的技術(shù)人員更好地理解本發(fā)明。
[0020]在本實(shí)施例中,如圖所示,提供了一個優(yōu)化的算法流程:
[0021]步驟101、讀取預(yù)測訓(xùn)練樣本以及預(yù)測測試樣本;
[0022]對于預(yù)測訓(xùn)練樣本以及訓(xùn)練測 試樣本,讀取其信息并生成網(wǎng)絡(luò)拓?fù)鋱D。
[0023]步驟102、為預(yù)測訓(xùn)練樣本附上其真實(shí)所在類的標(biāo)簽值;
[0024]對于一組長度為m的預(yù)測訓(xùn)練集合C。Ω表示Xi被分類的類型值的集合。對于Xi,如果它確實(shí)出現(xiàn)在下一時間段的圖中,則Ii = I,反之,Yi = -1o
[0025]步驟103、為每個樣本的權(quán)重賦初始值;
[0026]每個樣本的權(quán)重初始值相等,是整個樣本長度的倒數(shù),即為1/m。
[0027]步驟104、選取若干鏈路預(yù)測算法作為弱分類器;
[0028]按照預(yù)測結(jié)果互補(bǔ)的原則選取基于節(jié)點(diǎn)鄰居的相似性,基于最大似然估計以及基于概率模型等三種類型鏈路預(yù)測的方法作為弱分類器。
[0029]步驟105、使用各個分類器為訓(xùn)練樣本做分類;
[0030]對每一種預(yù)測算法t,使用算法為C中每一對節(jié)點(diǎn)計算一個值,然后按照該值對節(jié)點(diǎn)對進(jìn)行降序排列,選取前?個節(jié)點(diǎn)對,形成集合P,表示算法t認(rèn)為這些節(jié)點(diǎn)對會在下一時刻的圖中存在,剩下的形成集合Q,表示算法t認(rèn)為這些節(jié)點(diǎn)對不會在下一時刻的圖中存在。y是集合C中實(shí)際存在于下一時間段的圖中的節(jié)點(diǎn)對的數(shù)目。將預(yù)測算法t看作一個弱分類器t, t做出的假設(shè)為ht。如果Xi e P,則Iit(Xi) = I,反之,若Xi e Q,Iit(Xi) =-1。
[0031]步驟106、計算每個分類器的投票權(quán)重;
[0032]進(jìn)行T次循環(huán),t = I,..,T:每一次循環(huán)時,首先為每個分類器計算當(dāng)前的錯誤率。對于每一個樣本,將分類器t對其的分類與其本身所屬類型相比,如果不一致,則在此分類器的錯誤率上加上該樣本的權(quán)重。計算并找出錯誤率最小的分類器作為當(dāng)前的分類器。但是如果錯誤率大于1/2,就停止算法。對錯誤率進(jìn)行歸一化處理,作為當(dāng)前分類器t的投票權(quán)重。更新每個樣本的權(quán)重,如果該樣本被當(dāng)前分類器錯誤分類,則它的權(quán)重上升。相對來說Xi如果被正確分類那么它的權(quán)重就降低了。T次循環(huán)后,得到每個分類器的投票權(quán)重。[0033]步驟107、使用每個分類器為預(yù)測測試集合中的樣本做分類;
[0034]預(yù)測測試集合D中,使用&表示D中的每個節(jié)點(diǎn)對,η為D中所有節(jié)點(diǎn)對的數(shù)目。對于每種預(yù)測算法t,為預(yù)測測試集合D中每一對節(jié)點(diǎn)計算一個值,然后進(jìn)行按照該值對節(jié)點(diǎn)對進(jìn)行降序排列,選取前m’個節(jié)點(diǎn)對,形成集合P’,剩下的形成集合Q’。m’是集合D中實(shí)際存在于下一時間的圖中的節(jié)點(diǎn)對的數(shù)目。如果e」e P’,則ht(ej) = 1,反之,若e」e Q’,ht (ej) = -1。
[0035]步驟108、為測試樣本做出最終預(yù)測;
[0036]對于每個ep由每個弱分類器t對其進(jìn)行投票。如果分類器t認(rèn)為&在下一時刻圖中存在,則&的權(quán)重加上此分類器的投票權(quán)重。如果分類器t認(rèn)為&在下一時刻圖中不存在,則為h的權(quán)重減去此分類器的投票權(quán)重。在所有分類器對h投票完成之后,若θ」的權(quán)重為正,即預(yù)測&會在下一時刻的圖中存在。反之,&的權(quán)重為負(fù),則預(yù)測&不會在下一時刻的圖中存在。
[0037]步驟109、輸出對預(yù)測測試樣本的預(yù)測結(jié)果
[0038]對預(yù)測結(jié)果進(jìn)行輸出
[0039]盡管上面對本發(fā)明說明性的【具體實(shí)施方式】進(jìn)行了描述,以便于本技術(shù)領(lǐng)的技術(shù)人員理解本發(fā)明,但應(yīng)該清楚,本發(fā)明不限于【具體實(shí)施方式】的范圍,對本【技術(shù)領(lǐng)域】的普通技術(shù)人員來講,只要各種變化在所附的權(quán)利要求限定和確定的本發(fā)明的精神和范圍內(nèi),這些變化是顯而易見的,一切利用本發(fā)明構(gòu)思的發(fā)明創(chuàng)造均在保護(hù)之列。
【權(quán)利要求】
1.一種基于AdaBoost的鏈路預(yù)測算法:其特征在于,首先讀取預(yù)測訓(xùn)練樣本以及預(yù)測測試樣本;為預(yù)測訓(xùn)練樣本附上其真實(shí)所在類的標(biāo)簽值;為每個樣本的權(quán)重賦初始值;按照算法結(jié)果互補(bǔ)原則選取若干鏈路預(yù)測算法作為弱分類器;使用各個分類器為訓(xùn)練樣本做分類;循環(huán)計算得到所有分類器投票權(quán)重,對每次循環(huán),按照分類結(jié)果是否正確計算各個分類器當(dāng)前錯誤率,選擇出錯誤率最小的分類器,計算其投票權(quán)重,并對所有的樣本進(jìn)行權(quán)重升級。循環(huán)結(jié)束后得到每個分類器的投票權(quán)重;使用每個分類器為預(yù)測測試集合中的樣本做分類;按上述各分類器的分類結(jié)果為預(yù)測測試集合中的樣本投票,最終投票結(jié)果為正的樣本即為預(yù)測其會在將來發(fā)生鏈接,投票結(jié)果為負(fù)的樣本即為預(yù)測其不會再將來發(fā)生鏈接。
【文檔編號】G06F19/00GK103886169SQ201210553291
【公開日】2014年6月25日 申請日期:2012年12月19日 優(yōu)先權(quán)日:2012年12月19日
【發(fā)明者】秦志光, 劉嶠, 梁棋, 秦臻, 鄭榮輝, 沐曉帆, 李汝佟 申請人:電子科技大學(xué)