重み付けされたソーシャルネットワーク/グラフでコミュニティを検出する方法


42

重みのある無向のエッジを持つグラフでコミュニティ検出/グラフ分割/クラスタリングを実行することに関して、誰かが良い出発点を提案できるかどうか疑問に思っています。問題のグラフには約300万のエッジがあり、各エッジは接続する2つの頂点間の類似度を表します。特に、このデータセットでは、エッジは個人であり、頂点は観測された動作の類似性の尺度です。

過去に私はstats.stackexchange.comでここに着いた提案に従い、Newmanのモジュール性クラスタリングのigraphの実装を使用し、結果に満足しましたが、それは重みのないデータセットにありました。

私が見るべき特定のアルゴリズムはありますか?

回答:


20

Newmanのモジュール性クラスタリング(fastgreedy関数)のigraph実装は、重み付きエッジでも使用できます。エッジに重み属性を追加して、通常どおりに分析します。私の経験では、結びつきが少ないため、ウェイトを使用するとさらに速く実行されます。


私にこれを指摘してくれてありがとう、私はドキュメントの重みへの参照を完全に逃していました。
laramichaels

9

Gephiは無向の重み付きグラフを処理できることは知っていますが、CSVまたはUcinet DLにかなり近いGDFに保存する必要があることを覚えているようです。まだアルファ版リリースであることに注意してください。現在、グラフのクラスタリングについて、Gephiにはクラスタリングパイプラインが欠けているようです。ただし、最新バージョンで利用可能なMCLアルゴリズムを除きます。ありましたGoogle Codeのプロジェクトは、2009年にGephiネットワーク統計は、(メトリック例えばニューマンのモジュール性を備えた)、しかし、何かがこの方向でリリースされているかどうかは知りません。とにかく、ある種のモジュール性/クラスタリング計算を許可するようですが、RとGephiを使用したソーシャルネットワーク分析RとGephiを使用したソーシャルネットワーク分析のデータ準備(@Talに感謝します)。

Pythonに慣れている場合は、NetworkXを試してみる価値があります(対応するコードを使用した重み付きグラフの例です)。次に、分析を実行する多くの方法があります。

INSNA- 複雑なネットワークと複雑さに関するソーシャルネットワーク分析ソフトウェアまたはティムエバンスのWebページもご覧ください。


こんにちは、Gephiは、重み付き無向グラフを処理してモジュール方式でコミュニティを識別することができないことをお知らせします。ありがとう。-Gautam

@Gautam知っていただきありがとうございます。私はGephiにあまり精通していませんが、活発に開発されていると思いました。
-chl

7

GephiはLouvain Modularityメソッドを実装していますhttp ://wiki.gephi.org/index.php/Modularity

乾杯


@Seb Rで知っている実装はありますか?
ジョンコルビー

4

Louvainモジュール方式アルゴリズムは、C ++で利用できます:https : //sites.google.com/site/findcommunities/

数百万のノードとエッジの重み付きネットワークを扱い、Newmanアルゴリズムよりもはるかに高速であることが実証されています。


Louvainモジュール性アルゴリズムは高速で安定しています。マップリデュースバージョンはあるのでしょうか。
ページ

3

pythonを使用していて、NetworkXを使用して加重グラフを作成している場合は、python-louvainを使用してクラスタリングできます。Gは重み付きグラフです。

import community 
partition = community.best_partition(G, weight='weight')

1

Rのtnetパッケージに出会いました。作成者は、重み付きおよび2部(2モード)グラフでコミュニティの発見を研究しているようです。

http://opsahl.co.uk/tnet/content/view/15/27/

まだ使っていません。


1

SLPA(現在GANXiSと呼ばれています)は、ソーシャルネットワーク内のばらばらのコミュニティと重複するコミュニティ(無向/有向および無加重/加重)の両方を検出できる高速アルゴリズムです。このアルゴリズムは、実際の社会的および遺伝子ネットワーク上で意味のある結果を生成することが示されています。それは最先端の1つです。それはで利用可能です

https://sites.google.com/site/communitydetectionslpa/

詳細については、素晴らしいレビューarxiv.org/abs/1110.5813を参照してください。


1

私は、おそらく300万ノードを処理できるオーバーラップしない、重み付け/非重み付けネットワークのJava実装を持っています(100万ノードのデータセットでテストしました)。ただし、k-meansのように機能し、パーティションの数を入力として検出する必要があります(kはkmeans)。あなたはより多くの情報を見つけることができ、ここで、ここでのコードgithubのに

乾杯、

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.