日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

社交网络算法

發(fā)布時間:2024/8/1 编程问答 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 社交网络算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

社交網(wǎng)絡(luò)算法

1、應(yīng)用場景

在社交網(wǎng)絡(luò)中社區(qū)圈子的識別

基于好友關(guān)系為用戶推薦商品或內(nèi)容

社交網(wǎng)絡(luò)中人物影響力的計算

信息在社交網(wǎng)絡(luò)上的傳播模型

虛假信息和機器人賬號的識別

基于社交網(wǎng)絡(luò)信息對股市的預(yù)測

互聯(lián)網(wǎng)金融行業(yè)中的反欺詐模型

2、社交網(wǎng)絡(luò)算法的分析指標

1)度(Degree)

連接點活躍性的度量;與點相連的邊的數(shù)目。在有向圖中,以頂點A為起點記為出度(out degree)OD(A),以頂點A為終點入度(In degree)ID(A),則頂點A的度為D(A) = OD(A) + ID(A)。

計算方法:

g = Graph([(0,1), (0,2), (2,3), (3,4), (4,2), (2,5), (5,0), (6,3), (5,6)])

g.degree()

?

ecount = g.ecount()#統(tǒng)計邊的數(shù)目

vcount = g.vcount()#統(tǒng)計節(jié)點數(shù)目

maxdegree = g.maxdegree()#最大度值

?

2)緊密中心性(closness centrality)

節(jié)點V到達其他節(jié)點的難易程度,也就是到其他所有節(jié)點距離的平均值的倒數(shù)。

?

?

實現(xiàn)方法:

ccvs = []

for p in zip(g.vs, g.closeness()):

??? ccvs.append({"name": p[0], ["name"], "cc": p[1]})

sorted(ccvs, key=lambda k: k['cc'], reverse=True)[:10]

?

3)介數(shù)中心性

如果一個成員A位于其他成員的多條最短路徑上,那么成員A的作用就比較大,也具有較大的介數(shù)中心性。

本質(zhì):網(wǎng)絡(luò)中包含成員B的所有最短路徑條數(shù)占所有最短路徑條數(shù)的百分比。

?

?

計算步驟:

1.計算每對節(jié)點(i,j)的最短路徑(需要得到具體的路徑)

2. 對各節(jié)點判斷v是否在最短路徑下

3. 累加經(jīng)過v的最短路徑條數(shù)

btvs = []

for p in zip(g.vs, g.betweenness()):

??? btvs.append({"name": p[0]["name"], "bt": p[1]})

sorted(btvs, key=lambda k: k['bt'], reverse=True)[:10]

?

3、社區(qū)發(fā)現(xiàn)算法

3.1 GN 算法

邊介數(shù)(betweenness):

網(wǎng)絡(luò)中經(jīng)過該邊的最短路徑占所有最短路徑的比例。

?

GN算法計算步驟:

1. 計算網(wǎng)絡(luò)中所有邊的介數(shù)

2. 找到介數(shù)最高的邊,并將它從網(wǎng)絡(luò)中移除

3. 重復(fù)以上步驟,直到每個節(jié)點就是一個社區(qū)為止。

?

?

3.2 Louvain 算法

Louvain算法是基于模塊度的算法,其優(yōu)化目標就是最大化整個社區(qū)網(wǎng)絡(luò)結(jié)構(gòu)的模塊度。

?

模塊度

它的物理含義是社區(qū)內(nèi)節(jié)點的連邊數(shù)與隨機情況下節(jié)點的連邊數(shù)之差,它可以衡量一個社區(qū)緊密程度的度量。因此模塊度就可以作為優(yōu)化函數(shù)優(yōu)化社區(qū)的分類。

計算方法如下:

?

?

其中,Aij節(jié)點i和節(jié)點j之間邊的權(quán)重,網(wǎng)絡(luò)不是帶權(quán)圖時,所有邊的權(quán)重可以看做是1;ki=∑jAij表示所有與節(jié)點i相連的邊的權(quán)重之和(度數(shù));ci表示節(jié)點i所屬的社區(qū);m=∑ijAij表示所有邊的權(quán)重之和(邊的數(shù)目), 取值范圍:[-1/2, 1)。

?

公式中Aij?=Aij?ki,節(jié)點j連接到任意一個節(jié)點的概率是現(xiàn)在節(jié)點i有ki的度數(shù),因此在隨機情況下節(jié)點i與j的邊為.

?

δ(ci, cj)將所有的節(jié)點都限制在一個社區(qū)中,另一個重點是ki和kj都是包括與其他社區(qū)相連的邊數(shù),因此是在隨機情況下節(jié)點i和節(jié)點j的邊數(shù)。

?

基于模塊度的社區(qū)發(fā)現(xiàn)算法,都是以最大化模塊度Q為目標。

?

?

?

算法思想

Louvain算法的思想很簡單:

?

1)將圖中的每個節(jié)點看成一個獨立的社區(qū),次數(shù)社區(qū)的數(shù)目與節(jié)點個數(shù)相同;

?

2)對每個節(jié)點i,依次嘗試把節(jié)點i分配到其每個鄰居節(jié)點所在的社區(qū),計算分配前與分配后的模塊度變化Delta Q,并記錄Delta Q最大的那個鄰居節(jié)點,如果maxDelta Q>0,則把節(jié)點i分配Delta Q最大的那個鄰居節(jié)點所在的社區(qū),否則保持不變;

?

3)重復(fù)2),直到所有節(jié)點的所屬社區(qū)不再變化;

?

4)對圖進行壓縮,將所有在同一個社區(qū)的節(jié)點壓縮成一個新節(jié)點,社區(qū)內(nèi)節(jié)點之間的邊的權(quán)重轉(zhuǎn)化為新節(jié)點的環(huán)的權(quán)重,社區(qū)間的邊權(quán)重轉(zhuǎn)化為新節(jié)點間的邊權(quán)重;

?

5)重復(fù)1)直到整個圖的模塊度不再發(fā)生變化。

?

使用圖來表示算法的過程:

?

?

?

?

3.3 LPA與SLPA

LPA算法思想:

1. 初始化每個節(jié)點,并賦予唯一標簽

2. 根據(jù)鄰居節(jié)點最常見的標簽更新每個節(jié)點的標簽

3. 最終收斂后標簽一致的節(jié)點屬于同一社區(qū)

?

SLPA算法思想:

SLPA是LPA的擴展。

1. 給每個節(jié)點設(shè)置一個list存儲歷史標簽

2. 每個speaker節(jié)點帶概率選擇自己標簽列表中標簽傳播給listener節(jié)點。(兩個節(jié)點互為鄰居節(jié)點)

3. 節(jié)點將最熱門的標簽更新到標簽列表中

4. 使用閥值去除低頻標簽,產(chǎn)出標簽一致的節(jié)點為社區(qū)。

?

轉(zhuǎn)載于:https://www.cnblogs.com/yongfuxue/p/10039202.html

總結(jié)

以上是生活随笔為你收集整理的社交网络算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。