←記事一覧

Community Detection — グラフの中に潜む「仲間」を見つけ出す科学

グラフを密につながったノードのグループに分ける Community Detection について、研究の歴史、主要アルゴリズム、定義の曖昧さや検出限界といった原理的な難しさ、目的に応じた手法の選び方を、インタラクティブな可視化とともに扱います。

Graph TheoryCommunity DetectionAlgorithmsNetwork Science

はじめに — なぜ「コミュニティー」を見つけたいのか

現実世界のネットワークには、ほぼ必ず「仲間のかたまり」が存在します。SNS の友人グループ、Web のテーマの近いページ群、タンパク質相互作用ネットワークの機能モジュール、論文引用ネットワークの研究分野などです。このように密に結合したノードの集団をコミュニティー (community) と呼びます。

Community Detection とは、グラフ G=(V,E)G = (V, E) が与えられたとき、ノード(頂点)の集合 VV を「内部の辺が密で、外部との辺が疎」なグループに分割する問題です。単純に聞こえますが、「コミュニティー」には普遍的な定義がなく、代表的な指標である Modularity の最大化は NP 困難で、さらにどのアルゴリズムでも検出できない領域まであります。そのため実務では、完璧な手法を探すより、ネットワークの性質と分析の目的に合う手法を選ぶことになります。

動画で読む4:27合成音声ナレーション・字幕付き
文字起こしを表示

グラフの中に潜む仲間のかたまりを、どう見つければよいのでしょうか。Community Detectionの歴史、代表的なアルゴリズム、そして本質的な限界をたどります。

現実のネットワークには、ほぼ必ず密につながったグループがあります。SNSの友人グループ、Webのテーマ別ページ、タンパク質の機能モジュールなどです。目標は、内部の辺が密で、外部との辺が疎な分割を見つけることです。

この分野の前史は、VLSI回路設計のグラフ分割問題にあります。1970年のKernighan-Lin法は、均等な2分割でカット辺を最小化する手法でした。しかしコミュニティ検出では、分割数もサイズも事前には分かりません。

2002年、GirvanとNewmanは逆転の発想を示しました。コミュニティ内の辺を探すのではなく、コミュニティ間の橋を取り除きます。全頂点ペアの最短経路が集中する辺ほど、辺媒介中心性が高くなります。媒介中心性が最大の辺の除去と再計算を繰り返すため、計算量はO(m²n)で、大規模グラフには重すぎます。

次の問いは、どの分割が良いのか、でした。2004年、NewmanとGirvanはModularity Qを定義しました。Qは、実際のコミュニティ内の辺の割合から、ランダムに張り替えた場合の期待割合を引いたものです。この期待値は、次数列を保つConfiguration Modelに基づきます。

2008年のLouvain法は、実用上の標準になりました。まず各ノードを、Qが最も増える隣接コミュニティへ局所的に動かします。次に各コミュニティを超ノードへ集約し、同じ処理を縮約グラフで繰り返します。高速ですが、1つのコミュニティが内部で非連結になり得る欠陥があります。

2019年のLeiden法は、この欠陥を精錬フェーズで修正しました。局所移動、精錬、集約の3段階で、内部連結なコミュニティを保証します。一方、2007年のLabel Propagationは、近傍で最多のラベルへ更新するだけです。1反復はほぼO(m)で最速級ですが、順序と同票処理に結果が左右されます。

他の手法は、コミュニティの見方そのものが異なります。Spectral Clusteringはラプラシアンの固有ベクトルでノードを埋め込みます。Infomapは、ランダムウォークの経路を最も短く記述できる分割を探します。確率的ブロックモデル(SBM)は生成モデルで、観測グラフに当てはめて最もありそうなコミュニティ割り当てを推論します。

難しさの第一は、コミュニティの普遍的な定義がないことです。密度、カット、ランダムウォーク、確率モデルは、同じグラフに別の答えを返し得ます。さらにBrandesらは2008年、Modularity最大化がNP困難であることを示しました。ただし真に難しいのは、そもそも何を最適化すべきかという選択です。

ModularityにはResolution Limitという構造的な盲点があります。FortunatoとBarthélemyは2007年、グラフが大きいと明確な小コミュニティも統合され得ると示しました。2つのコミュニティからなるSBMでは、どんなアルゴリズムもランダムな推測を超えられない検出限界もあります。シグナルは、コミュニティ内とコミュニティ間の辺確率の差の二乗です。このシグナルが平均次数に比例するノイズを下回ると、検出は不可能になります。

だから実務では、目的に応じて道具を選びます。エッジに向きがない大きなグラフならLeiden、向きのあるグラフやフロー構造ならInfomapが有力です。構造が本当にあるかを問うなら、Nested SBMのモデル選択が役立ちます。完璧な検出ではなく、前提を理解して使い分けることが重要です。

記事では、年表、Modularity、Louvain、Resolution Limit、検出限界を図で確認できます。インタラクティブなデモで、グラフの中の仲間探しを一歩ずつ試してみてください。

研究の歴史 — ソシオグラムから Leiden まで

Community Detection の研究には 100 年近い歴史があります。主な節目は次のタイムラインのとおりです。

Community Detection 研究の歴史

1933 年のソシオグラムから 2019 年の Leiden アルゴリズムまでの主要なマイルストーン

1933

社会ネットワーク分析の萌芽

Moreno がソシオグラムを発表。人間関係をグラフとして描いた最初期の例。

1970

グラフ分割問題

Kernighan-Lin アルゴリズム。回路設計のため、グラフを同じ大きさの 2 つに分け、カット辺が減るようにノードの交換を繰り返す。

2002

Girvan-Newman

辺媒介中心性(Edge Betweenness)が最大の辺(多くはコミュニティー間の橋)を順に取り除いてグラフを分けるトップダウン法。

2004

Modularity Q の定式化

Newman & Girvan が Modularity Q を定義。コミュニティー分割の良さを測る定量的な基準になる。

2007

Resolution Limit 発見

Fortunato & Barthélemy が Modularity の Resolution Limit を発見。大きなグラフでは、小さなコミュニティーが Modularity 最適化で隣のコミュニティーと統合され得る。

2008

NP 困難性の証明

Brandes らが Modularity 最大化の NP 困難性を証明(IEEE TKDE 掲載)。P ≠ NP なら、最適解を効率的に求めるアルゴリズムはない。

2008

Louvain アルゴリズム

Blondel らが提案した貪欲法。局所移動と集約を繰り返す。原論文では 1 億 1800 万ノードの Web グラフに適用。事実上の標準に。

2008

LFR ベンチマーク

Lancichinetti-Fortunato-Radicchi ベンチマーク。次数とコミュニティーサイズがべき乗則に従う合成グラフを生成し、アルゴリズム評価の標準になる。

2011

Stochastic Block Model の復権

Karrer & Newman が Degree-Corrected SBM を提案。統計的推論に基づくコミュニティー検出が盛んに。

2011

検出限界の導出

Decelle らが cavity 法で検出限界の閾値を導き、コミュニティーが原理的に検出できなくなる相転移を予想(証明は 2014–2018 年に発表)。

2019

Leiden アルゴリズム

Traag らが Louvain の欠陥(非連結なコミュニティー)を修正。各反復後のコミュニティーが内部で連結であることを保証。

前史: グラフ分割問題 (Graph Partitioning)

Community Detection の直接の祖先は、VLSI 回路設計におけるグラフ分割問題です。1970 年に Kernighan と Lin が提案した KL アルゴリズムは、ノード集合を同じ大きさの 2 つの部分に分けるヒューリスティックで、部分をまたぐ辺(カット辺)の数ができるだけ少ない分け方を探します。

Kernighan-Lin アルゴリズム (1970):
  入力: グラフ G = (V, E)、初期 2分割 (A, B) で |A| = |B|
  繰り返し:
    1. 全ノードを「未ロック」にする
    2. n/2 回の交換を順に行う:
       a. 未ロックのペア (a ∈ A, b ∈ B) で交換利得 g(a,b) が最大のものを選択
       b. a と b を交換し、両方を「ロック」(以後このパスでは動かさない)
       c. 累積利得を記録
    3. 累積利得が最大となる接頭辞 k を見つけ、最初の k 個の交換のみ確定
       → このバックトラック機構により局所最適を脱出できる
    4. 改善がなくなるまで繰り返す

KL アルゴリズムは、その時点ではカットを悪化させる交換も実行して先を探索し、累積利得が最大の接頭辞まで巻き戻します。この先読み (look-ahead) によって、単純な貪欲法では抜け出せない局所最適から脱出できます。

ただし、グラフ分割問題と Community Detection は次の点で異なります。

グラフ分割Community Detection
分割数事前に指定 (通常 2)未知 — アルゴリズムが決定
分割サイズ均等が前提不均等でも良い
目的カット辺の最小化内部密度の最大化
応用回路設計、並列計算社会ネットワーク分析、生物学

この違いによって、Community Detection は独自の研究分野になりました。コミュニティーの数もサイズも分からない状況で、意味のあるグループを自動的に見つけることが中心的な課題です。

転換点: Girvan-Newman (2002)

2002 年、Michelle Girvan と Mark Newman は、コミュニティー内の辺を探す代わりに、コミュニティー間をつなぐ橋(ブリッジ)を取り除いてグラフを分けるという方法を提案しました。

橋を見分けるのに使うのが辺媒介中心性 (Edge Betweenness Centrality) です。全ノードペア間の最短経路のうち、ある辺を通るものの数をその辺の betweenness と呼びます。コミュニティー間のブリッジ辺には多くの最短経路が集中するため、betweenness が高くなります。

Girvan-Newman アルゴリズム:
  1. 全辺の betweenness を計算
  2. betweenness 最大の辺を除去
  3. betweenness を再計算
  4. グラフが完全に分断されるまで繰り返す
  → デンドログラム(階層的な分割の木)が得られる

ノード数を nn、辺数を mm とすると、全辺の betweenness の計算には全ノードからの幅優先探索(BFS)が必要で O(mn)O(mn) かかり、これを辺の除去ごとに最大 O(m)O(m) 回繰り返すため、計算量は O(m2n)O(m^2 n) です。大規模グラフには適用できませんが、コミュニティー構造を定量的に評価する方向への出発点になりました。

Modularity Q — 「良い分割」とは何か

Girvan-Newman 法はデンドログラムを作りますが、どの階層で切ればよいかは決めてくれません。この問いに答えるため、Newman と Girvan は 2004 年に Modularity (モジュラリティー) Q という指標を定義しました。

定義

Q=12m∑ij[Aij−kikj2m]δ(ci,cj)Q = \frac{1}{2m} \sum_{ij} \left[ A_{ij} - \frac{k_i k_j}{2m} \right] \delta(c_i, c_j)

各記号の意味は次のとおりです。

  • AijA_{ij}: 隣接行列の要素。ノード ii と jj の間に辺があれば 1、なければ 0
  • kik_i: ノード ii の次数(ii から出ている辺の本数)。人間関係で言えば友人の数
  • mm: グラフ全体の辺の総数。各辺は両端で 1 ずつ数えられるので、全ノードの次数の合計は 2m2m
  • cic_i: ノード ii が所属するコミュニティーの番号
  • δ(ci,cj)\delta(c_i, c_j): クロネッカーのデルタ。ci=cjc_i = c_j(同じコミュニティー)なら 1、違えば 0。この項によって、同じコミュニティー内のペアだけが合計に寄与する

角括弧の中は、次の 2 つの量の差です。

  • AijA_{ij} は、ノード ii と jj の間に実際に辺があるかを表します。
  • kikj2m\frac{k_i k_j}{2m} は、各ノードの次数を保ったまま辺をランダムに張り直したときに、ii と jj の間に期待される辺の数です。次数が高い(友人が多い)ノード同士ほど、ランダムでもつながりやすくなります。

差 Aij−kikj2mA_{ij} - \frac{k_i k_j}{2m} が正なら ii と jj はランダムより強くつながっており、負ならランダムほどにはつながっていません。これを同一コミュニティー内の全ペアについて足し合わせ(δ(ci,cj)\delta(c_i, c_j) で制限)、12m\frac{1}{2m} で正規化したものが Modularity Q です。

Modularity Q の直感

実際のコミュニティー内辺数と、ランダムに辺を張り直した場合の期待値を比較

良い分割 (Q が高い)

内部辺 ≫ 期待値

悪い分割 (Q が低い)

内部辺 ≈ 期待値
Modularity Q= (コミュニティー内辺の割合) − (ランダムに辺を張った場合の期待割合)。Q が高いほど、コミュニティー内の結合がランダムな場合より密であることを示します。理論上の範囲は [-0.5, 1] で、コミュニティー構造がはっきりしたネットワークでは 0.3〜0.7 が典型的です(Newman & Girvan, 2004)。

比較基準にしている「次数を保ったまま辺をランダムに張り直したグラフ」は、Configuration Model(配置モデル)と呼ばれる帰無モデル(null model)です。次数列を保存するため、単なるランダムグラフ(Erdős-Rényi モデル)よりも現実的な比較対象になります。

つまり Modularity Q は次のように書けます。

Q=(実際のコミュニティー内辺の割合)−(ランダムに辺を張った場合の期待割合)Q = \text{(実際のコミュニティー内辺の割合)} - \text{(ランダムに辺を張った場合の期待割合)}

Q は、コミュニティー内の結合がランダムに比べてどれだけ密かを測ります。値は次のように読みます。

  • Q=0Q = 0: コミュニティー内の辺の数が、ランダムに張った場合の期待値と変わらない(構造なし)
  • Q>0Q > 0: ランダムより密な内部結合がある(構造あり)
  • Q≈0.3∼0.7Q \approx 0.3 \sim 0.7: コミュニティー構造がはっきりしたネットワークで典型的な値 (Newman & Girvan, 2004)
  • QQ の理論的な範囲は [−0.5,1][-0.5, 1] (Brandes et al., 2008) だが、実際には負の値はほとんど見られない

Modularity の功績と限界

Modularity は Community Detection に定量的な評価基準を与え、この分野の研究が急速に広がるきっかけになりました。提唱後に登場した最初の実用的な最適化アルゴリズムは、Clauset-Newman-Moore (CNM) の凝集型貪欲法 (2004) です。凝集型(agglomerative)とは、各ノードを単独のコミュニティーとして始め、統合したときの Q の増加量 ΔQ\Delta Q が最大のペアを順に統合していくボトムアップの方法です。計算量は O(mdlog⁡n)O(md \log n)(dd はデンドログラムの深さ)で、Girvan-Newman (2002) と Louvain (2008) の間を埋める手法でした。

一方で、次の 2 つの根本的な問題も明らかになりました。

  1. NP 困難性 (Brandes et al., 2008): Modularity の最大化は NP 困難で、厳密解を現実的な時間で求めることはできない
  2. Resolution Limit (Fortunato & Barthélemy, 2007): 小さなコミュニティーを見落とす構造的な欠陥

どちらも「Community Detection の本質的な難しさ」の節で詳しく扱います。

主要アルゴリズムの詳解

主要アルゴリズム比較表

手法年アプローチ計算量大規模対応強み
Girvan-Newman2002辺媒介中心性(除去)O(m²n)★☆☆☆☆直感的、階層的デンドログラム
Louvain2008貪欲な Modularity 最適化≈ O(m)★★★★★高速、大規模グラフ対応
Leiden2019改良 Louvain + 精錬フェーズ≈ O(m)★★★★★連結性を保証、Modularity も高い
Label Propagation2007近傍ラベルの多数決伝播O(m)★★★★★最速の手法の一つ
Infomap2008ランダムウォークの圧縮(Map Equation)O(m)★★★★☆情報理論に基づく、フロー構造を捉える
Spectral Clustering~2000ラプラシアン固有ベクトルO(n³)★★☆☆☆理論的基盤が強固
SBM2011確率的ブロックモデル推論O(n log²n)★★★☆☆モデル選択で k や構造の有無も推論

1. Louvain アルゴリズム (2008)

Blondel, Guillaume, Lambiotte, Lefebvre が 2008 年に提案した Louvain アルゴリズムは、Community Detection の事実上の標準(de facto standard)になりました。貪欲な局所移動と階層的な集約を組み合わせることで、大規模なグラフにも適用できます。

アルゴリズムの 2 フェーズ

Phase 1 — 局所移動 (Local Moving):

各ノード ii について、隣接するコミュニティー CC へ移動したときの Modularity Q の変化量 ΔQ\Delta Q を計算します。

ΔQ=[Σin+2ki,in2m−(Σtot+ki2m)2]−[Σin2m−(Σtot2m)2−(ki2m)2]\Delta Q = \left[ \frac{\Sigma_{in} + 2k_{i,in}}{2m} - \left(\frac{\Sigma_{tot} + k_i}{2m}\right)^2 \right] - \left[ \frac{\Sigma_{in}}{2m} - \left(\frac{\Sigma_{tot}}{2m}\right)^2 - \left(\frac{k_i}{2m}\right)^2 \right]

各記号の意味は次のとおりです。

  • Σin\Sigma_{in}: コミュニティー CC の内部辺(CC 内のノード同士をつなぐ辺)の重みの合計。各辺を両端から 1 回ずつ、計 2 回数える
  • Σtot\Sigma_{tot}: コミュニティー CC に接続する全ての辺の重みの合計。CC 内のノードから出ている辺を内部辺・外部辺の区別なく足したもの
  • ki,ink_{i,in}: ノード ii から CC 内のノードへの辺の重みの合計。ii が CC のメンバーとどれだけつながっているかを表す
  • kik_i: ノード ii の次数(ii から出ている辺の総数)

式は「移動後の寄与」から「移動前の寄与」を引いた形をしています。

ΔQ=[移動後の Modularity への寄与]−[移動前の Modularity への寄与]\Delta Q = [\text{移動後の Modularity への寄与}] - [\text{移動前の Modularity への寄与}]

  • 前半の角括弧は、ノード ii が CC に加わった後の、CC の Modularity への寄与です
    • Σin+2ki,in2m\frac{\Sigma_{in} + 2k_{i,in}}{2m}: ii と CC 内ノードを結ぶ ki,ink_{i,in} 本分の辺が内部辺になる。両端で数えるので 2ki,in2k_{i,in} 増える
    • (Σtot+ki2m)2\left(\frac{\Sigma_{tot} + k_i}{2m}\right)^2: 期待値の項も ii の次数分だけ増える
  • 後半の角括弧は移動前の寄与で、CC と ii がそれぞれ独立に持っていた寄与の合計です

CC のメンバーと多くつながっているノードほど(ki,ink_{i,in} が大きいほど)、CC に移動したときの ΔQ\Delta Q は大きくなります。

各ノードは、ΔQ\Delta Q が最大かつ正となるコミュニティーに移動します。全ノードを順に処理し、移動がなくなるまで繰り返します。

実際の実装では、ノードを現在のコミュニティーから取り出すコストと、新しいコミュニティーに挿入する利得の 2 段階で ΔQ\Delta Q を計算します。上の式は、孤立ノード(自分だけのコミュニティー)を CC に挿入する場合の利得です。

Phase 2 — 集約 (Aggregation):

Phase 1 で得られた各コミュニティーを 1 つの「超ノード」に縮約します。コミュニティー内辺は自己ループ、コミュニティー間辺は超辺になります。この縮約グラフに対して再び Phase 1 を適用します。

次のデモで、2 つのフェーズの動きを追えます。

Louvain アルゴリズム ステップ実行

10 ノードのグラフで、Louvain の 2 フェーズ(局所移動 → 集約)を 1 ステップずつ追います

初期化
Q = -0.1020
0123456789

Louvain アルゴリズムの開始。各ノードを自分だけのコミュニティーに置いた状態から Phase 1(局所移動)を始めます。グラフは 10 ノード・14 辺で、3 つのクラスターがあります。

1 / 10

なぜ速いのか

局所移動で全ノードを 1 巡するコストは、調べる隣接辺の数にほぼ比例します。また、集約するたびにコミュニティー数が急減するので、計算時間の大半は最初の局所移動と集約に集中します。原論文 (Blondel et al., 2008) によると、人工的なモジュール構造を持つ大規模ネットワークでのシミュレーションから、典型的な疎なデータでは計算量がネットワークの規模に対して線形になることが示唆されています。これは実験から得られた傾向で、最悪計算量の保証ではありません。同じ論文では、1 億 1800 万ノード・約 10 億辺の Web グラフを 152 分で処理しています。

Louvain の欠陥

Louvain には根本的な問題もあります。Phase 1 ではノードを個別に動かし、その後の集約で内部構造が見えなくなるため、コミュニティーの結合が極端に弱くなったり、非連結(disconnected)になったりすることがあります。非連結とは、同じコミュニティーに属するのに、コミュニティー内を通るパスでは互いに行き来できないノードがある状態です。Traag ら (2019) は、実ネットワークでもこの現象が起こることを報告しています。

2. Leiden アルゴリズム (2019)

Traag, Waltman, van Eck が 2019 年に Louvain の欠陥を修正するために提案した Leiden アルゴリズムは、次の 3 フェーズで構成されます。

  1. 局所移動 — Louvain と同様だが、近傍が変化したノードだけをキューに入れて再訪問する
  2. 精錬 (Refinement) — 集約前にコミュニティー内部を部分分割し、非連結または結合の弱い部分をそのまま持ち越さない
  3. 集約 — 精錬後のコミュニティーで縮約

Leiden は Louvain の速さを保ったまま、各反復後のコミュニティーが内部で連結であることを保証します。反復を続けると、コミュニティー内のどの部分集合も局所最適に割り当てられた分割に近づきます。Modularity が高いだけでなく、よく結合したコミュニティーが得られるため、Louvain に代わる標準になりつつあります。

3. Label Propagation (2007)

Raghavan, Albert, Kumara が提案した Label Propagation Algorithm (LPA) は、次のように単純な規則で動く高速なアルゴリズムです。

Label Propagation:
  1. 各ノードにユニークなラベルを割り当て
  2. ランダムな順序で各ノードを処理:
     - 隣接ノードの中で最も多いラベルに更新
  3. ラベルが変化しなくなるまで繰り返す
  → 同じラベルのノード群がコミュニティ

1 反復あたりの計算量はほぼ O(m)O(m) で最速の部類ですが、結果は非決定的で、ノードの処理順序やタイブレーク(同票の場合の選択)によって変わります。全ノードを一斉に更新する同期的更新では振動状態に陥ることがあるため、実用上はノードを 1 つずつ順に更新する非同期更新がよく使われます。

4. Spectral Clustering(スペクトラルクラスタリング)

線形代数を使う方法です。まずグラフラプラシアン L=D−AL = D - A を作ります。

  • AA: 隣接行列(辺があれば 1、なければ 0)
  • DD: 次数行列(対角行列で、Dii=kiD_{ii} = k_i)

この LL を固有値分解します。

Lv=λvL \mathbf{v} = \lambda \mathbf{v}

固有値分解は、行列 LL を掛けても向きが変わらず、スカラー λ\lambda 倍になるだけのベクトル v\mathbf{v}(固有ベクトル)と、その倍率 λ\lambda(固有値)の組を求める問題です。

LL の固有値を小さい順に並べると、λ1=0\lambda_1 = 0(常に存在)、λ2\lambda_2、λ3\lambda_3、... となります。固有値 0 の個数は連結成分の数に等しく、0 に近い固有値が多いほど、グラフは互いに弱くしかつながっていない部分に分かれやすくなります。分割に使うのは、2 番目に小さい固有値 λ2\lambda_2 に対応する固有ベクトル、通称 Fiedler ベクトルです。

Fiedler ベクトルの各成分は各ノードに対応する実数値で、同じコミュニティーのノードには近い値、異なるコミュニティーのノードには離れた値が割り当てられる傾向があります。そこで、成分の正負でノードを 2 分割できます。kk 個のコミュニティーを見つけたい場合は、最小の kk 個の固有ベクトルでノードを kk 次元空間に埋め込み、k-means などでクラスタリングします。

利点: 理論的な基盤がある。グラフカット最小化の連続緩和として導かれ、Cheeger 不等式によって Fiedler ベクトルによる 2 分割の品質に保証がある

欠点: コミュニティー数 kk を事前に指定する必要がある。完全な固有値分解の計算量は O(n3)O(n^3) だが、疎グラフでは Lanczos 法などの反復法で必要な kk 個の固有ベクトルだけを O(k⋅m)O(k \cdot m) で計算できる

実用上は、組合せ的ラプラシアン L=D−AL = D - A よりも正規化ラプラシアン Lsym=D−1/2LD−1/2L_{sym} = D^{-1/2}LD^{-1/2} や Lrw=D−1LL_{rw} = D^{-1}L がよく使われます(Shi & Malik, 2000)。正規化版は、次数分布が不均一なグラフでも安定した結果を返します。

Newman (2006) は、Modularity 行列 Bij=Aij−kikj/2mB_{ij} = A_{ij} - k_i k_j / 2m の主要固有ベクトルを使って Modularity を最適化できることを示しました。BijB_{ij} は Modularity Q の式の ∑\sum の中にある Aij−kikj2mA_{ij} - \frac{k_i k_j}{2m} そのものです。目的関数は異なりますが、Modularity 最適化の一部の手法とスペクトラル法は、固有ベクトルで分割するという同じ線形代数の道具を共有しています。

5. Infomap — 情報理論的アプローチ (2008)

Rosvall と Bergstrom が提案した Infomap は、ランダムウォークの経路を最も効率よく記述(圧縮)するコミュニティー構造を見つけます。

中心にあるのは次の Map Equation(マップ方程式)です。

L(M)=q↶H(Q)+∑i=1cp↺iH(Pi)L(M) = q_{\curvearrowleft} H(\mathcal{Q}) + \sum_{i=1}^{c} p_{\circlearrowleft}^i H(\mathcal{P}^i)

各記号の意味は次のとおりです。

  • MM: コミュニティーの分割方法(最適化の対象)
  • cc: コミュニティー数
  • L(M)L(M): 分割 MM のもとでランダムウォークを記述するのに必要な平均コード長(小さいほど良い)
  • q↶q_{\curvearrowleft}: ランダムウォーカーがコミュニティー間を移動する確率の合計
  • H(Q)H(\mathcal{Q}): コミュニティー間の移動パターンのエントロピー(不確実さ)
  • p↺ip_{\circlearrowleft}^i: ランダムウォーカーがコミュニティー ii 内のノードにいる確率と、ii から出る確率の和
  • H(Pi)H(\mathcal{P}^i): コミュニティー ii 内での移動パターンのエントロピー

第 1 項 q↶H(Q)q_{\curvearrowleft} H(\mathcal{Q}) は、コミュニティー間の移動を記述するコストです。コミュニティー間の移動が頻繁だと、次にどのコミュニティーへ行くかを記述するのに多くのビットが必要になります。

第 2 項 ∑p↺iH(Pi)\sum p_{\circlearrowleft}^i H(\mathcal{P}^i) は、各コミュニティー内部での移動を記述するコストです。コミュニティーが小さければ内部ノードが少なく、短いコードで記述できます。

コミュニティーを細かく分けすぎると第 1 項が増え、大きくしすぎると第 2 項が増えます。この 2 項のバランスでコミュニティーの大きさが決まります。

コミュニティー構造をうまく捉えた分割では、ランダムウォーカーがコミュニティー内に長く留まります。コミュニティー内のノードには短いコードワードを割り当てれば済むので、全体の記述長が短くなります。電話の市外局番と同じ仕組みで、同じ市内(コミュニティー)には短い番号でかけられ、市外(別コミュニティー)にかけるときだけ市外局番が必要になります。

Modularity がランダムモデルとの比較という統計的な視点を取るのに対し、Infomap は情報圧縮という情報理論的な視点から問題を定式化しています。ランダムウォークの流れを直接扱うので、有向グラフやフロー構造を持つネットワークに特に適しています。

6. Stochastic Block Model (SBM) — 統計的推論アプローチ

統計的推論 (Statistical Inference) に基づくアプローチは、Modularity ベースの手法とは根本的に異なる考え方を取ります。代表的な SBM は、次のような生成モデルです。

  1. 各ノードはコミュニティー ci∈{1,...,k}c_i \in \{1, ..., k\} に属する
  2. コミュニティー rr と ss の間の辺の確率は ωrs\omega_{rs} で決まる
  3. 観測されたグラフから、最もありそうなコミュニティー割り当てとパラメーターを推論する

尤度は次の式で表されます。

P(G∣{ci},ω)=∏i<jωcicjAij(1−ωcicj)1−AijP(G | \{c_i\}, \omega) = \prod_{i < j} \omega_{c_i c_j}^{A_{ij}} (1 - \omega_{c_i c_j})^{1-A_{ij}}
  • ωcicj\omega_{c_i c_j}: コミュニティー cic_i と cjc_j の間に辺ができる確率。同じコミュニティー内では高く、異なるコミュニティー間では低いのが典型的なコミュニティー構造
  • AijA_{ij}: 実際のグラフで辺があるか(0 か 1)
  • ωcicjAij\omega_{c_i c_j}^{A_{ij}}: 辺がある場合(Aij=1A_{ij}=1)に寄与する、辺が存在する確率 ω\omega
  • (1−ωcicj)1−Aij(1 - \omega_{c_i c_j})^{1-A_{ij}}: 辺がない場合(Aij=0A_{ij}=0)に寄与する、辺が存在しない確率 1−ω1-\omega
  • ∏i<j\prod_{i < j}: 全てのノードペアについての積(同時確率)

この式は、コミュニティー割り当て {ci}\{c_i\} と辺確率行列 ω\omega のもとで、観測されたグラフ GG が生成される確率です。SBM の推論では、この尤度を最大にする {ci}\{c_i\} と ω\omega を探します。機械学習の最尤推定(MLE)と同じ考え方です。

Degree-Corrected SBM (Karrer & Newman, 2011) は、ノードの次数のばらつきを考慮した拡張です。実ネットワークの次数分布はべき乗則に従うことが多く、元の SBM ではこれを適切にモデル化できません。

SBM の推論:
  パラメータ: コミュニティ割り当て {c_i}, 辺確率行列 ω
  目的: 事後確率 P({c_i}, ω | G) の最大化
  手法: 期待値最大化法 (EM)、変分推論、MCMC、Belief Propagation

SBM の最も重要な特徴はモデル選択です。コミュニティー数 kk も推論の対象とし、過剰適合を避けるために記述長最小化(Minimum Description Length)などの基準を使います。これにより、コミュニティー構造が本当に存在するのかという問いに答えられます。

Peixoto (2014) は、Resolution Limit が Modularity 最適化だけでなく、通常の SBM のモデル選択にも現れることを指摘しました。同じ論文の階層的 SBM (Nested SBM) は、SBM 自体を再帰的にブロック構造化してネットワークの階層全体を記述することで、ノンパラメトリックなモデル選択を実現し、この限界も回避します。

Community Detection の本質的な難しさ

ここまでのアルゴリズムはそれぞれ異なる目的関数を最適化しますが、どれを使っても避けられない難しさがあります。

1. 問題の不良設定性 (Ill-Definedness)

最も根本的な困難は、「コミュニティー」の普遍的な定義が存在しないことです。

「コミュニティー内が密で、コミュニティー間が疎」という直感は共有されていますが、それを数学的に定式化する方法は無数にあります。

  • カット辺の最小化: グラフ分割の伝統
  • 内部密度の最大化: Modularity 的な発想
  • ランダムウォークの居住時間: Infomap の発想
  • 確率モデルの適合度: SBM の発想
  • クリーク的構造: 部分グラフの密度に注目

これらは同じグラフに対して異なる「正解」を返すことがあり、どれが正しいかは、分析の文脈で何をコミュニティーと呼ぶかによって決まります。

2. NP 困難性

Modularity の最大化は NP 困難です(Brandes et al., 2008)。P ≠ NP を仮定すれば、最適解を効率的に見つけるアルゴリズムは存在しません。nn 個のノードの分割の総数はベル数 BnB_n で、ノード数に対して超指数的に増えるため(B30B_{30} は約 8.5×10238.5 \times 10^{23})、全探索は数十ノードのグラフでも現実的ではありません。実用的なアルゴリズムはどれも近似法で、局所最適に陥るリスクを常に抱えています。

とはいえ、NP 困難性はある意味で見かけ上の問題でもあります。何を最適化するかの選択自体が恣意的なので、本当に難しいのは何を最適化すべきかという問題設定のほうです。

3. Resolution Limit

Resolution Limit(解像度限界)

Fortunato & Barthélemy (2007): Modularity 最大化は小さなコミュニティーを見落とすことがある

大規模コミュニティー誤って統合
グラフ全体の辺数 m が大きいと、Modularity Q の最適解では、内部辺が約 √(m/2) 本未満の小さなクリークが、明確なコミュニティーであっても隣のクリークと統合され得ます。グラフが大きいほど小さなコミュニティーを区別しにくくなるのが Resolution Limit です。

Fortunato と Barthélemy (2007) が発見した Resolution Limit は、Modularity ベースの手法に対する本質的な批判です。

グラフの総辺数を mm とします。帰無モデルで期待される辺の数 kikj2m\frac{k_i k_j}{2m} は mm に反比例するので、大きなグラフの中の小さな 2 つのコミュニティーの間では、期待される辺の数が 1 本未満になり得ます。そのとき、2 つの間に辺が 1 本あるだけで、統合したほうが Q が大きくなります。

統合が起こるかどうかは、コミュニティーの大きさだけでなく周囲のグラフ構造にも左右されます。Fortunato と Barthélemy は、クリーク(どの 2 ノードも辺で結ばれた部分グラフ)を 1 本ずつの辺で環状につないだ構成 (ring of cliques) を例に挙げています。この構成では、内部辺数が m\sqrt{m} スケールを下回るクリークは、明確なコミュニティーであるにもかかわらず、Modularity 最適解で隣のクリークと統合され得ます。この境界はよく「内部辺が約 m/2\sqrt{m/2} 本未満」、あるいは「内部次数合計が約 2m\sqrt{2m} 未満」と要約されます。

例えば 100 万辺規模のグラフでは 2×106≈1414\sqrt{2 \times 10^6} \approx 1414 なので、内部次数合計がこれより小さいコミュニティーは、周囲の結合パターンによっては Modularity 最適化で区別できない可能性があります。

実ネットワークの多くはマルチスケール構造を持つため、この限界は深刻です。例えば社会ネットワークには、数人の親密なグループから数千人のコミュニティーまで、幅広い大きさのグループが共存しています。

Resolution Limit には次のような対策があります。

  • Resolution parameter γ\gamma の導入 (Reichardt & Bornholdt, 2006): Qγ=12m∑ij[Aij−γkikj2m]δ(ci,cj)Q_\gamma = \frac{1}{2m} \sum_{ij} \left[ A_{ij} - \gamma \frac{k_i k_j}{2m} \right] \delta(c_i, c_j) γ\gamma は拡大鏡の倍率のように働きます。γ>1\gamma > 1 ではランダムモデルのペナルティーが強まり、より小さなコミュニティーが検出されやすくなります。γ<1\gamma < 1 では大きなコミュニティーが検出されます
  • マルチスケール解析: 異なる γ\gamma で繰り返し検出し、複数のスケールのコミュニティーを同時に把握する
  • Nested SBM への移行: 帰無モデルとの比較を使わず、階層的なモデル選択で小さなコミュニティーまで検出する (Peixoto, 2014)

4. 検出限界 — 原理的に検出できない領域

検出限界(Detectability Threshold)

コミュニティー構造が原理的に検出不可能になる情報理論的限界

コミュニティー内外の辺確率の差 (c_in − c_out)ランダムを上回る精度検出限界検出不可能検出可能最適アルゴリズム
同じ大きさの 2 コミュニティーからなる SBM で、コミュニティー内・間の辺確率をそれぞれ cin/n、cout/n とします。n が十分大きく (cin − cout)² < 2(cin + cout) のとき、どのアルゴリズムでもランダムな割り当てよりうまく検出できません。この閾値は Decelle ら (2011) が cavity 法で予想し、Mossel, Neeman & Sly (2015, 2018) と Massoulié (2014) が証明しました。曲線は、平均次数を固定したときに閾値で起こる相転移の模式図です。

検出限界 (Detectability Threshold) は、Decelle ら (2011) が統計物理の cavity 法(数学的に厳密ではない手法)で導いた閾値で、後に数学的に証明されました。特定のアルゴリズムの性能ではなく、どのアルゴリズムにも越えられない限界を示した点で、Community Detection の理論の中でも特に重要です。

同じ大きさの 2 コミュニティーからなる SBM で、コミュニティー内の辺確率パラメーターを cin/nc_{in}/n、コミュニティー間の辺確率パラメーターを cout/nc_{out}/n とします(各ノードのコミュニティー内期待次数は ≈cin/2\approx c_{in}/2、コミュニティー間期待次数は ≈cout/2\approx c_{out}/2 で、平均次数は (cin+cout)/2(c_{in} + c_{out})/2)。次の不等式が成り立つとき、ノード数が十分大きければ、どのアルゴリズムでもコミュニティーをランダムな割り当てよりうまく検出できません。

(cin−cout)2<2(cin+cout)(c_{in} - c_{out})^2 < 2(c_{in} + c_{out})
  • 左辺 (cin−cout)2(c_{in} - c_{out})^2: コミュニティー内とコミュニティー間の辺確率パラメーターの差の 2 乗。コミュニティー構造の強さ、つまりシグナルに相当し、cinc_{in} と coutc_{out} の差が大きいほど内と外の違いがはっきりする
  • 右辺 2(cin+cout)2(c_{in} + c_{out}): 平均次数に比例する量。ランダムな変動、つまりノイズに相当する。cinc_{in} と coutc_{out} を同じ比率で小さくすると左辺は 2 乗で、右辺は 1 乗で小さくなるので、グラフが疎(辺が少ない)なほど、ノイズはシグナルに比べて相対的に大きくなる

この不等式は、シグナルがノイズに埋もれる条件です。コミュニティー内の接続がコミュニティー間の接続とあまり変わらないときや、グラフが疎すぎるときには、コミュニティーの痕跡がランダムな揺らぎに消されてしまいます。

この結果は統計物理学のスピングラスの理論と深い関係があり、コミュニティー構造の検出に相転移 (phase transition) が存在することを示しています。閾値を下回ると検出は原理的に不可能で、このことは Mossel, Neeman & Sly (2015) が証明しました。閾値を上回ると検出は突然可能になり、効率的な(多項式時間の)アルゴリズムで検出できることを Massoulié (2014) と Mossel, Neeman & Sly (2018) が独立に証明しています。計算に時間がかかるという計算困難性とは違い、閾値を下回る領域での不可能性は情報理論的な限界です。

5. Ground Truth の不在

機械学習の分類問題とは異なり、Community Detection には一般に正解ラベル(ground truth)が存在しません。

  • LFR (Lancichinetti-Fortunato-Radicchi, 2008) ベンチマークは、次数分布とコミュニティーサイズ分布の両方がべき乗則に従う合成グラフを生成し、実ネットワークの統計的性質をある程度模倣できるため、標準的なベンチマークとして広く使われている。ただし、こうしたベンチマークの正解は人工的に与えたもので、実ネットワークの複雑さまでは反映しない
  • メタデータ(論文の分野、ユーザーの属性など)を正解として使うことがあるが、メタデータに基づくグループとネットワーク構造から導かれるコミュニティーは必ずしも一致しない(Peel, Larremore & Clauset, 2017)
  • NMI(正規化相互情報量)や ARI(調整ランド指数)などの評価指標は、正解がある前提で設計されている

SBM ベースのアプローチでは、モデルの適合度によって正解なしでも結果を評価できますが、モデルの仮定自体が正しい保証はありません。

6. 重複コミュニティー (Overlapping Communities)

現実のネットワークでは、ノードが複数のコミュニティーに同時に属するのが自然です。例えば大学の研究者は、「機械学習」と「計算理論」の両方のコミュニティーに属することがあります。

COPRA、BigCLAM、Mixed-Membership SBM など重複を許すアルゴリズムもありますが、定式化と評価はさらに難しくなります。重複の度合いをどう測るか、何をもって正しい重複構造とするかは未解決の問題です。

Modularity 以外の目的関数 — なぜ多様なアプローチが存在するのか

Modularity は Community Detection で最も広く使われる指標ですが、手法ごとに使う目的関数は異なります。「コミュニティー」の捉え方が異なるためです。

目的関数視点手法
Modularity Qランダムモデルとの比較Louvain, Leiden
Map Equationランダムウォークの圧縮Infomap
尤度 / ベイズ推論確率的生成モデルの適合度SBM
正規化カットグラフのカット値 / 体積Spectral Clustering
Conductance ϕ(S)=cut(S,Sˉ)min⁡(vol(S),vol(Sˉ))\phi(S) = \frac{\text{cut}(S, \bar{S})}{\min(\text{vol}(S), \text{vol}(\bar{S}))}コミュニティー境界の「漏れやすさ」Local methods

Conductance の式の各項は次のとおりです。

  • cut(S,Sˉ)\text{cut}(S, \bar{S}): コミュニティー SS とその外部 Sˉ\bar{S} を横断する辺の数(境界線をまたぐ辺の数)
  • vol(S)\text{vol}(S): SS 内のノードの次数の合計(コミュニティーの「ボリューム」)
  • min⁡\min をとるのは、SS と Sˉ\bar{S} を対称に扱い、グラフの大半を含む集合がボリュームの大きさだけで低い値を得ないようにするため

Conductance が小さいほど境界が明確で外に漏れにくく、良いコミュニティーだとみなされます。

どの目的関数が適切かは、ネットワークの性質と分析の目的によって決まります。

現代の展開と未解決問題

コンセンサスクラスタリング

Label Propagation や Louvain の結果は、ノードの処理順序によって変わります。この非決定性に対処するため、コンセンサスクラスタリング (Lancichinetti & Fortunato, 2012) が提案されました。アルゴリズムを複数回実行し、ノード ii と jj が同じコミュニティーに属した頻度からコンセンサス行列を作ります。この行列にもう一度 Community Detection を適用して、安定した結果を得ます。

高次構造 (Higher-Order) に基づく検出

従来のアプローチはペアワイズ(2 ノード間)の辺のみを考慮しますが、モチーフ(特定の部分グラフパターン)に基づく Community Detection も発展しています (Benson, Gleich & Leskovec, 2016)。例えば三角形の密度に基づくコミュニティーは、単なる辺密度では捉えられない構造を明らかにします。

GNN ベースのアプローチ

Graph Neural Network (GNN) を用いた Community Detection も研究されています (Tsitsulin et al., 2023)。ノードの特徴量を学習し、コミュニティー割り当てをエンドツーエンドで最適化するアプローチです。Modularity などの教師なし目的関数を微分可能にして勾配降下で最適化する手法や、対照学習を使う手法がありますが、モデルの解釈性や汎化性には課題が残っています。

動的・多重ネットワーク

時間とともに変化するネットワークでは、コミュニティーの誕生・成長・分裂・消滅を追跡する必要があり、検出はさらに難しくなります。Mucha et al. (2010) は、時間依存・マルチスケール・多重ネットワークでの Community Detection を統一的に定式化しました。temporal modularity やスナップショット間の対応付けなどが研究されています。

大規模分散処理

SNS の友人関係や Web グラフのような数十億ノード規模のネットワークは、単一マシンでは処理できません。MapReduce や Pregel に基づく分散 Louvain/Leiden の研究が進んでいます。

実践的なアルゴリズム選択ガイド

ここまでの比較を踏まえた、状況ごとの推奨手法です。

状況推奨アプローチ
大規模無向グラフ、kk 不明Leiden(品質・速度のバランスが最良)
有向グラフ / フロー構造Infomap(フロー感度が高い)
構造の有無自体を判定したいNested SBM(モデル選択が可能)
最速が必要、品質は二の次Label Propagation(O(m)O(m))
kk が既知、理論保証が必要Spectral Clustering
マルチスケール構造の探索Resolution parameter γ\gamma のスキャン、または Nested SBM
結果の安定性が重要コンセンサスクラスタリング

まとめ

Community Detection は「グラフの中に隠れた構造を見つける」という単純そうな問題ですが、次のような本質的な難しさを抱えています。

  1. 定義の曖昧さ: 「コミュニティー」の普遍的な定義が存在しない
  2. 計算困難性: Modularity 最大化は NP 困難
  3. Resolution Limit: スケールに依存した検出の限界
  4. 検出限界: 情報理論的に検出不可能な領域の存在
  5. Ground Truth の不在: 正解が分からない問題を「解く」難しさ
  6. 重複構造: 現実はハード分割では捉えきれない

100 年近い研究を経て、完璧な Community Detection は原理的に不可能だということが分かり、目的に応じて適切なツールを選ぶという実用的な姿勢が定着しました。大規模なグラフを速く分割するなら Louvain/Leiden、コミュニティー数や構造の有無まで推論するなら SBM、フローを持つネットワークなら Infomap が向いています。

シリーズの続き: 第 2 編では高次構造・動的ネットワーク・多重ネットワークを扱います。さらに 第 3 編ではストリーミング Community Detection を扱います。

参考文献

  • Kernighan, B. W., & Lin, S. (1970). An efficient heuristic procedure for partitioning graphs. Bell System Technical Journal, 49(2), 291–307.
  • Shi, J., & Malik, J. (2000). Normalized cuts and image segmentation. IEEE TPAMI, 22(8), 888–905.
  • Girvan, M., & Newman, M. E. J. (2002). Community structure in social and biological networks. PNAS, 99(12), 7821-7826.
  • Newman, M. E. J., & Girvan, M. (2004). Finding and evaluating community structure in networks. Physical Review E, 69(2), 026113.
  • Clauset, A., Newman, M. E. J., & Moore, C. (2004). Finding community structure in very large networks. Physical Review E, 70(6), 066111.
  • Newman, M. E. J. (2006). Modularity and community structure in networks. PNAS, 103(23), 8577-8582.
  • Reichardt, J., & Bornholdt, S. (2006). Statistical mechanics of community detection. Physical Review E, 74(1), 016110.
  • Brandes, U., et al. (2008). On modularity clustering. IEEE TKDE, 20(2), 172-188.
  • Fortunato, S., & Barthélemy, M. (2007). Resolution limit in community detection. PNAS, 104(1), 36-41.
  • Raghavan, U. N., Albert, R., & Kumara, S. (2007). Near linear time algorithm to detect community structures in large-scale networks. Physical Review E, 76(3), 036106.
  • Blondel, V. D., et al. (2008). Fast unfolding of communities in large networks. JSTAT, P10008.
  • Rosvall, M., & Bergstrom, C. T. (2008). Maps of random walks on complex networks reveal community structure. PNAS, 105(4), 1118-1123.
  • Lancichinetti, A., Fortunato, S., & Radicchi, F. (2008). Benchmark graphs for testing community detection algorithms. Physical Review E, 78(4), 046110.
  • Fortunato, S. (2010). Community detection in graphs. Physics Reports, 486(3-5), 75-174.
  • Mucha, P. J., et al. (2010). Community structure in time-dependent, multiscale, multiplex networks. Science, 328(5980), 876–878.
  • Karrer, B., & Newman, M. E. J. (2011). Stochastic blockmodels and community structure in networks. Physical Review E, 83(1), 016107.
  • Decelle, A., et al. (2011). Asymptotic analysis of the stochastic block model for modular networks and its algorithmic applications. Physical Review E, 84(6), 066106.
  • Lancichinetti, A., & Fortunato, S. (2012). Consensus clustering in complex networks. Scientific Reports, 2, 336.
  • Massoulié, L. (2014). Community detection thresholds and the weak Ramanujan property. STOC 2014, 694–703.
  • Peixoto, T. P. (2014). Hierarchical block structures and high-resolution model selection in large networks. Physical Review X, 4(1), 011047.
  • Mossel, E., Neeman, J., & Sly, A. (2015). Reconstruction and estimation in the planted partition model. Probability Theory and Related Fields, 162(3–4), 431–461.
  • Benson, A. R., Gleich, D. F., & Leskovec, J. (2016). Higher-order organization of complex networks. Science, 353(6295), 163–166.
  • Fortunato, S., & Hric, D. (2016). Community detection in networks: A user guide. Physics Reports, 659, 1-44.
  • Peel, L., Larremore, D. B., & Clauset, A. (2017). The ground truth about metadata and community detection in networks. Science Advances, 3(5), e1602548.
  • Mossel, E., Neeman, J., & Sly, A. (2018). A proof of the block model threshold conjecture. Combinatorica, 38(3), 665–708.
  • Traag, V. A., Waltman, L., & van Eck, N. J. (2019). From Louvain to Leiden: guaranteeing well-connected communities. Scientific Reports, 9, 5233.
  • Tsitsulin, A., et al. (2023). Graph clustering with graph neural networks. JMLR, 24(127), 1–21.