1. 程式人生 > >社交網路中的Link Prediction

社交網路中的Link Prediction

介紹

給你一段時間內的社交網路關係,我們能否預測出成員之間在未來的互動? 我們稱該問題為Link prediction Problem.他還有另外一些常見的應用,比如社交網站的好友推薦,預測蛋白質間的相互影響,預測犯罪嫌疑人的關係,商品推薦等等。

在基於社交網路的Link predition問題中,我們通常要考慮社交網路所帶有的特有的特質。所以我們先介紹一下社交網路的幾個有趣的性質:

  • power law degree distribution

  • the small world phenomenon

  • the community structure (clustering effect)

  • etc

Power law degree distribution: 大部分人都只有很少的連結,但是有一小部分人,他們的連結的數量遠遠多於其他人。
這裡寫圖片描述

Small-World Phenomenon: 或者叫六度空間,你和任何一個陌生人之間所間隔的人不會超過六個

community structure (clustering effect): 社交網路裡面會有很多個小群體,他們都相互認識彼此。

那麼到底要怎麼去做link predction呢,目前傳統的方法,有Path-based Methods,Neighbor-based Methods等等。下面是他們的介紹。

Path-based Methods

Graph Distance

一個最直接的預測方法就是計算兩個結點間的距離,然後根據距離的大小來預測,兩個結點越近那麼就越容易在未來建立聯絡。但是在上百萬的結點下直接用dijkstra演算法是非常低效的。相反,我們可以利用small world phenomenon來提高我們的效率。

比如說要計算x,y兩點距離,我們先初始化兩個集合 S={x},D={y},然後開始擴充套件S和D的集合,擴充套件的方法就是不斷地把集合裡面元素的鄰居放進去,比如一開始就是把x的鄰居放進集合S中,y的鄰居放進D中,一直迴圈,直到S和D出現相同的元素為止。根據small world phenomenon來說,擴充套件的次數不會太多。另外效率起見,我們一般選擇元素數量較少的那個來擴充套件。

Katz (Exponentially Damped Path Counts)

我們還可以考慮用x,y之間存在的路徑的數量來衡量它們的距離。然而,路徑有長有短,一般認為,那些很長的路徑其實是沒什麼說服力的,於是引入指數衰減機制隨著路徑長度進行衰減。

Score(x,y)=l=1βl|pathx,yl|
β就是指數衰減的係數,pathl表示那些長度為l的路徑。

Hitting Time

為了加快計算速度,可以使用蒙特卡洛的技術來估計x,y的路徑的數量。從x出發,在附近隨機的跳轉,如果到達y,則記錄下這次到達y的所需跳轉次數。最後我們用 總跳轉次數/到達y的次數 來表示距離。

Score(x,y)=Hx,y
其中Hx,y為總跳轉次數/到達y的次數,我們取負H來表示評分,H越小表示越近則越好。

Rooted PageRank

然而,如果y是一個非常有影響力的人,那麼很多人都能在非常少的跳轉次數下到達y,為了減輕這效應,我們增加一個隨機”reset”以及繼續遊走的機制。當到達y時,以概率α跳回x,以1α繼續隨機遊走。並記錄下經過y的次數。

Score(x,y)=Hx,yπy
其中πy表示那麼多次跳轉經過y概率。

Neighbor-based Methods

Common Neighbors

當兩個使用者有著很多個相同的鄰居,我們就認為這兩個使用者很有可能建立聯絡。所以兩個使用者的相似性就用他們相同鄰居的數量表示:

Score(x,y)=|T(x)T(y)|
其中T(x)表示x的鄰居。實際上這個方法揭示了一個叫“closing a trangle”的現象

Jaccard’s Coefficient

然而Common Neighbors有一個很大的問題,假設有一個人有非常多的鄰居,那麼所有人都會傾向於預測跟他產生互動,為此,我們還要把他們鄰居的數量考慮進去,於是我們認為,如果兩個人共同鄰居的數量在他們所有好友數量中佔比越大,就認為可能建立聯絡。即

Score(x,y)=|T(x)T(y)||T(x)T(y)|

Adamic/Adar (Frequency-Weighted Common Neighbors)

這個方法同樣是對Common Neighbors的改進,當我們計算兩個相同鄰居的數量的時候,其實每個鄰居的“重要程度”都是不一樣的,我們認為這個鄰居的鄰居數量越少,就越凸顯它作為“中間人”的重要性,畢竟一共只認識那麼少人,卻恰好是x,y的好朋友。

Score(x,y)=ZT(x)T(y)1log|T(z)|

Friendes-mearsure

既然兩個人有相同的好友可以表達他們間的距離,那麼我們可以把這一個思想推廣,我們認為,他們的好友之間很有可能互為好友。我們就計算他們好友之間互為好友的數量作為評價標準。

friends-measure

Preferential Attachment

另外,如果兩個使用者擁有的好友數量越多,那麼就越有可能更願意去建立聯絡。也就是“富人越富”原則,基於這思想,用他們兩個使用者的好友數量的乘積作為評分。

Score(x,y)=|T(x)||T(y)|

上面的方法只考慮了結構,現在介紹一種考慮了使用者行為的方法,比如轉發,評論,點贊等。

這裡考慮一種低秩表達,S和T,使得未來會建立聯絡的使用者i和使用者j有,

SiTj>SiTn
其中(i,n)是那些不會建立聯絡的人。
這裡寫圖片描述
這裡寫圖片描述

用一個sigmoid函式來表達下一時刻會active的概率。這裡的f使用了log函式,主要考慮了其影響是隨著次數指數衰減的。
這裡寫圖片描述

最後給出一個目標函式通過優化得到S和T。

還有另外一個方法,它考慮了subgraph.
這裡寫圖片描述

基本思想就是,每個結點,用廣度優先搜尋就可以得到不同深度的子圖,然後利用這些結構資訊來embedding,最後通過將不同深度得到的embedding concat在一起,就得到了這個結點的embedding. 最後就用這些embedding的餘弦相似度來做link prediction.

References

Link Prediction via Subgraph Embedding-Based Convex Matrix Completion. *Zhu Cao, Linlin Wang, Gerard De melo.*AAAI 2018.

Link Prediction with Personalized Social Influence. Huo, Zepeng, Xiao Huang, Xia Hu. AAAI 2018。

作為分享主義者(sharism),本人所有網際網路釋出的圖文均遵從CC版權,轉載請保留作者資訊並註明作者a358463121專欄:http://blog.csdn.net/a358463121,如果涉及原始碼請註明GitHub地址:https://github.com/358463121/。商業使用請聯絡作者。