AI Technology Community
コミュニティ検出Graph Community Detection
私たちのデータがネットワークまたはグラフとして表現できる場合、グラフコミュニティ検出方法を使用してクラスタリングを行うことができます。このアルゴリズムでは、グラフコミュニティ(graph community)は通常、頂点(vertice)の部分集合として定義され、その中の頂点はネットワークの他の部分と比較してより密に接続されています。以下の図は、最近閲覧した8つのウェブサイトを示す簡単なグラフで、それらのウィキペディアページ内のリンクに基づいて接続されています。
モジュラリティは以下の式を使用して計算できます:
ここで、Lはネットワーク内の辺の数を表し、Aijは頂点iとjの間の実際の辺の数を表し、ki、kjは各頂点の次数(degree)を表し、各行や各列の要素を合計することで得られます。両者を掛け合わせて2Lで割ると、ネットワークがランダムに割り当てられた場合の頂点iとjの間の予想される辺の数を表します。したがって、は、ネットワークの実際の構造とランダムな組み合わせの場合の予想される構造との差を表します。Aijが1で、
が小さい場合、その戻り値は最大になります。つまり、頂点iとjの間に予想外の辺が存在する場合により高い値が得られます。
はクロネッカーのデルタ関数(Kronecker - delta function)です。以下はそのPythonによる説明です:
def Kronecker_Delta(ci,cj): if ci==cj: return 1 else: return 0
上記の式を使用してグラフのモジュラリティを計算することができ、モジュラリティが高いほど、ネットワークが異なるコミュニティにクラスタリングされる程度が良くなります。したがって、最適化手法を使用して最大のモジュラリティを見つけることで、ネットワークをクラスタリングする最適な方法を見つけることができます。
組合せ論によると、たった8つの頂点を持つネットワークでも4140通りの異なるクラスタリング方法が存在し、16個の頂点を持つネットワークのクラスタリング方法は100億通りを超え、32個の頂点を持つネットワークの可能なクラスタリング方法は10^21通りを超えます。したがって、すべての可能性を試す必要がないヒューリスティックな方法を見つける必要があります。この方法はFast - Greedy Modularity - Maximization(高速貪欲モジュラリティ最大化)アルゴリズムと呼ばれ、このアルゴリズムはある程度、上記で説明した凝集型階層クラスタリングアルゴリズムに似ています。ただし、このアルゴリズムは距離に基づいてコミュニティを融合するのではなく、モジュラリティの変化に基づいてコミュニティを融合します。
具体的な手順:
1. まず、各頂点をそれ自身のコミュニティに初期割り当てし、次にネットワーク全体のモジュラリティMを計算します。
2. ステップ1では、各コミュニティペア(community pair)が少なくとも1本の辺で接続されている必要があります。2つのコミュニティが融合した場合、アルゴリズムはそれによって生じるモジュラリティの変化ΔMを計算します。
3. ステップ2では、ΔMが最大に増加するコミュニティペアを選択し、融合します。次に、このクラスタリングに対して新しいモジュラリティMを計算し、記録します。
4. ステップ1とステップ2を繰り返します。毎回コミュニティペアを融合し、最終的にΔMの最大増分を得て、新しいクラスタリングパターンとそれに対応するモジュラリティスコアMを記録します。
5. ステップ1とステップ2を繰り返します。毎回コミュニティペアを融合し、最終的にΔMの最大増分を得て、新しいクラスタリングパターンとそれに対応するモジュラリティスコアMを記録します。
11
item of content
クラスタリング(Cluster)分析はいくつかのパターン(Pattern)から構成されています。通常、パターンは測定値(Measurement)のベクトルであるか、多次元空間内の一点です。
クラスタリング分析は相似性に基づいており、同一クラスタ内のパターン間には、異なるクラスタに属するパターン間よりも多くの相似性があることが特徴です。このため、クラスタリング分析はデータ内の自然なグループやパターンを見つけ出すのに非常に有用です。
- 776hits
- 0replay
-
2like
- collect
- send report