グラフィックアルゴリズム-Community検出アルゴリズム
2844 ワード
🧐 Community detection algorithms
ネットワークにおいて他のクラスタよりも密集しているクラスタ,すなわちモジュール化の度合いが高いクラスタをコミュニティと呼ぶ.Community detectionアルゴリズムは、クラスタ全体にどのようなコミュニティがあるか、およびこれらのコミュニティがどのような特性を持っているかを分析する方法です.
1. Louvain
LouvainアルゴリズムはCommunity検出の1つの方法であり,関係密度を適切に定義されたランダムネットワークと比較することによってコミュニティの品質を測定する.
第1段階:1つのノードを隣接する他のコミュニティに配置してモジュール性を測定する.モジュール化の度合いがより高いコミュニティがある場合、ノードはコミュニティに属します.モジュール性が最も高くなるまで繰り返します.
フェーズ2:フェーズ1で作成したコミュニティを使用して新しいコミュニティを作成します.既存のコミュニティ間で接続されているリンクウェイトは、新しいコミュニティ内のノード間のリンクがself-loopで置き換えられるリンクに結合されます.
2. Label Propagation Algorithm(LPA)
LPAは,ネットワーク構造のみを用いてコミュニティを検索する高速アルゴリズムである.私の所属するコミュニティは直感的な観点から、つまり私の周りの人が所属するコミュニティの確率が高いということです.
各ノードにはそれぞれ一意のlabelがあります.ノード順序のランダムなリストを作成し、ノードのlabelをノードの周囲のノードが持つlabelの中で最も頻度の高いlabelに変更します.すべてのノードが最高周波数のlabelになるまで繰り返します.
🙉 Practice in Neo4j!
2-1)データの作成
CREATE
(alice:User {name: 'Alice', seed_label: 52}),
(bridget:User {name: 'Bridget', seed_label: 21}),
(charles:User {name: 'Charles', seed_label: 43}),
(doug:User {name: 'Doug', seed_label: 21}),
(mark:User {name: 'Mark', seed_label: 19}),
(michael:User {name: 'Michael', seed_label: 52}),
(alice)-[:FOLLOW {weight: 1}]->(bridget),
(alice)-[:FOLLOW {weight: 10}]->(charles),
(mark)-[:FOLLOW {weight: 1}]->(doug),
(bridget)-[:FOLLOW {weight: 1}]->(michael),
(doug)-[:FOLLOW {weight: 1}]->(mark),
(michael)-[:FOLLOW {weight: 1}]->(alice),
(alice)-[:FOLLOW {weight: 1}]->(michael),
(bridget)-[:FOLLOW {weight: 1}]->(alice),
(michael)-[:FOLLOW {weight: 1}]->(bridget),
(charles)-[:FOLLOW {weight: 1}]->(doug)
2-2)Louvain結果CALL gds.louvain.stream({nodeProjection:'User', relationshipProjection:'FOLLOW'})
YIELD nodeId, communityId AS Community
RETURN gds.util.asNode(nodeId).name AS Name, Community
ORDER BY Community, Name
2-3)LPA結果
CALL gds.labelPropagation.stream({nodeProjection:'User', relationshipProjection:'FOLLOW'})
YIELD nodeId, communityId AS Community
RETURN gds.util.asNode(nodeId).name AS Name, Community
ORDER BY Community, Name
Reference
この問題について(グラフィックアルゴリズム-Community検出アルゴリズム), 我々は、より多くの情報をここで見つけました https://velog.io/@eunzin/community-detection-algorithmsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol