Lecture 13. Community Detection in Networks


Overlapping Communities

Imgur

Imgur

여기까지 잘 따라오셨나요? 여지껏 우리는 위 그림의 제일 왼쪽 그래프에서 보시는 것과 같이 서로 겹치지 않는 커뮤니티에 대해서만 다뤄왔습니다. 하지만, 실생활의 네트워크의 커뮤니티는 서로 겹칠 가능성이 훨씬 높기 때문에 이런 서로 겹치는 커뮤니티를 detect하는 방법도 공부해야 합니다. 서로 겹치는 커뮤니티는 그래프를 인접 행렬로 표현하면 시각적으로 더욱 명확하게 확인할 수 있는데요, 상단 오른쪽 그림과 같이 인접 행렬의 밀집된 부위 일부가 겹치는 것을 볼 수 있습니다. 들어가기에 앞서 먼저 실제 네트워크 데이터의 커뮤니티 구조를 직접 확인해보는 시간을 갖도록 하겠습니다.

Imgur Imgur

< SNS 소셜 네트워크의 커뮤니티 구조 >

Imgur Imgur

< 단백질 상호 작용 네트워크의 커뮤니티 구조 >

Plan of Action

이렇게 서로 겹치는 커뮤니티 구조 또한 detect하기 위해 어떻게 할 것인지 전체적인 계획을 간단히 설명한 후, 각 부분의 세부 사항으로 넘어가겠습니다.

  1. Step 1
    • 여러 노드가 각각 어떤 커뮤니티에 소속되어 있는지 나타내는 node community affiliation을 가지고 전체 그래프를 생성하는 생성 모델인 Community Affiliation Graph Model(AGM)을 정의합니다. 쉽게 말해 노드 집합 $V$에 소속된 노드 간에 엣지를 생성하는 모델이라고 생각하면 됩니다.

    💡 AGM: Community Affiliation → Network

  2. Step 2
    • 반대로 그래프 $G$가 주어졌을 때 어떤 AGM 모델이 어떤 인풋 community affiliation을 가지고 그래프 $G$를 생성했는지 역으로 찾아나갑니다.
    • $G$를 생성했을 법한 가장 그럴싸한 AGM 모델을 찾음으로써 각 노드의 커뮤니티 소속 정보를 알 수 있게 됩니다.

AGM: Community-Affiliation Graph Model

Imgur

  • 모델 파라미터 $F = (V,C,M,\{p_c\})$
    • $V$: 노드 집합
    • $C$: 커뮤니티 집합
    • $M$: 소속 여부
    • $p_c$: 각 커뮤니티마다 갖고 있는 하나의 확률 값으로, 동일 커뮤니티 내에 속한 노드 사이에 엣지가 형성될 확률을 의미함
  • 네트워크 생성 과정
    1. 동일 커뮤니티 $c$ 내에 있는 노드 사이에 $p_c$의 확률로 엣지를 형성합니다.
    2. 만약 두 노드가 여러 커뮤니티에 동시에 소속되어 있다면(”overlapping community”), 적어도 하나의 커뮤니티로부터 $p_c$가 충족되어 엣지가 형성되었으면 두 노드는 연결되었다고 봅니다. → 즉, 여러 커뮤니티에 동시에 소속되어 있는 노드들은 그만큼 엣지로 연결된 가능성이 높다는 말이지요! 🤩

    따라서, 노드 $u$와 $v$ 사이에 엣지가 형성될 확률은 $p(u,v) = 1-\prod_{c\in M_u\cap M_v} (1-p_c)$로 표현할 수 있습니다. AGM은 이러한 방식으로 non-overlapping, overlapping, hierarchical(nesting) 등 다양한 커뮤니티 구조를 다룰 수 있다고 합니다!

Imgur Imgur

💡 만약 노드 $u$와 $v$가 서로 공통으로 소속된 커뮤니티가 없다면, 두 노드는 절대 엣지로 연결될 수 없을 것입니다. 이러한 문제를 해결하기 위해 $p_{background}=\epsilon$를 갖는 background community를 정의합니다. background community에는 모든 노드가 소속되어 있으므로, 노드 $u$와 $v$도 $\epsilon$의 확률로 연결될 수 있겠죠?

Graph Fitting

Imgur

이제 우리는 반대로 네트워크 구조가 주어졌다고 했을 때 이를 생성했을 법한 AGM 모델 $F$를 구해볼 것입니다. 즉 그래프 $G$를 알고 있는 조건에서,

  • Community Affiliation 그래프 $M$
  • 커뮤니티의 집합 $C$
  • 각 커뮤니티에 대응되는 엣지 생성 확률 $p_c$

를 찾아야 합니다.

Imgur

가장 그럴싸한 AGM 모델 $F$는 Maximum Likelihood Estimation으로 구할 수 있는데요, 수식은 위 그림과 같이 적을 수 있습니다. 즉, 모델 $F$로 부터 생성된 합성 그래프가 실제 그래프 $G$와 유사할 확률을 최대화하는 모델 파라미터 $F$를 구하는 것이 목적이라고 해석해 볼 수 있겠죠. 위 수식을 풀기 위해 우리는 다음 두 가지를 정의해야 합니다.

  1. $P(G|F)$를 전개하여 목적 함수(Objective function)를 수학적으로 정리해야 합니다!
  2. 1단계에서 만들어진 목적 함수를 모델 파라미터 $F$에 대해 최대화하기 위해 최적화 기법을 선택해야 합니다! (예. Gradient ascent)

Graph Likelihood $P(G|F)$

Imgur

만약 모델 $F$와 결과 그래프 $G$가 각각 위의 그림과 같이 주어졌다고 가정해봅시다. 여기서 $F$ 옆의 행렬은 community affiliation 그래프로부터 각 노드 쌍에 대해 엣지가 생성될 확률을 구한 것이고, $G$는 알고 있는 그래프 구조를 활용하여 인접 행렬을 구한 것입니다. 이 경우 $P(G|F)$는 그림 아래의 식과 같이 전개할 수 있습니다. 즉, 그래프 상 존재하는 엣지들에 대해서는 엣지가 생성될 확률을, 존재하지 않는 엣지들에 대해서는 엣지가 생성되지 않을 확률을 각각 구한 후 모두 곱함으로써 $P(G|F)$를 구할 수 있습니다.

💡 $P(G|F)=\prod_{(u,v)\in G} P(u,v) \prod_{(u,v)\notin G} 1-P(u,v)$

하지만 문제가 있습니다! 🙄 우리는 현재 community affiliation 그래프를 모르는 상황입니다. 즉, 어떤 노드가 어떤 커뮤니티에 소속되어 있는지, 또 커뮤니티마다 갖는 $p_c$의 확률이 무엇인지 전혀 알 수 없습니다. 따라서 우리는 $p(u,v)$를 위와 같이 구할 수 없게 되는데요, 그렇기 때문에 AGM의 조건을 “Relaxing”하여 $p(u,v)$를 구해보도록 하겠습니다.

Imgur

일단 노드의 커뮤니티 소속(membership) 여부를 몰라도 되도록, 기본적으로 모든 노드가 각각 모든 커뮤니티에 소속되어 있고, 각 membership에는 0 이상의 강도가 부여된다고 가정합시다. 예를 들어 $F_{uA}$는 노드 $u$가 커뮤니티 $A$에 소속되는 강도가 됩니다. 위 그림에서 노드 $v$는 커뮤니티 $A$의 소속이 아닌 것처럼 그려졌는데, 사실상 소속되어 있지만 강도가 0, 즉 $F_{vA}=0$으로 해석하는 것이 올바릅니다.

이 경우 기존에 AGM 모델에서 사용하던 notation $p_c$는 $p_c(u,v)=1-exp(-F_{uC}\cdot F_{vC})$ 로 바꿔 쓸 수 있습니다. $F$값이 항상 0보다 크거나 같기 때문에 $0\le p_c(u,v)\le 1$의 조건이 항상 만족되며, 아래와 같이 해석할 수 있습니다.

Imgur

  • 두 노드 $u$와 $v$가 각각 커뮤니티 $C$에 높은 강도로 소속되어 있다면 → $p_c(u,v)$ 값이 큼 (1에 가까워짐)
  • 두 노드 $u$와 $v$중 하나 이하만이 커뮤니티 $C$에 소속되어 있다면 → $p_c(u,v)=0$로 두 노드는 서로 연결되지 않음

존재하는 모든 커뮤니티의 집합을 $\Gamma$라고 하였을 때, 기존에 $p(u,v) = 1-\prod_{c\in M_u\cap M_v} (1-p_c)$로 표현되던 식은 비슷하게 $p(u,v)=1-\prod_{C\in\Gamma} (1-P_c(u,v))$로 바꾸어 쓸 수 있습니다.

💡 $p_c(u,v)=1-exp(-F_{uC}\cdot F_{vC})$ ····· (1)

$p(u,v)=1-\prod_{C\in\Gamma} (1-P_c(u,v))$ ····· (2)

자, 이제 다왔습니다. 위 (2)식에 (1)식을 대입하여 최종적으로 식을 전개하면 최종적으로 아래와 같은 수식을 얻을 수 있습니다.

Imgur

BigCLAM Model (1) — Objective Function

📢 $P(G|F)=\prod_{(u,v)\in G} P(u,v) \prod_{(u,v)\notin G} 1-P(u,v)$

$p(u,v)=1-exp(-F_u^TF_v)$

앞에서 다룬 두 수식을 이용하여 최종적으로 $P(G|F)$ 수식을 전개해보도록 하겠습니다.

Imgur

사실 $1-exp(-F_u^TF_v)$와 $exp(-F_u^TF_v)$로 표현되는 likelihood 값은 0과 1 사이의 작은 값으로 서로 연속해서 곱하다보면 굉장히 작은 수가 되는 등 수치적으로 불안정한 값을 만들어 냅니다. 따라서 우리는 로그 함수를 도입하여 곱을 합으로 바꿈으로써 이 문제를 해결할 수 있습니다.

Imgur

최종적으로 우리의 목적 함수는 $log(P(G|F))$로 우리는 이를 최대화 함으로써 그래프 $G$를 만들었을 법한 AGM 모델 $F$의 파라미터를 추정할 수 있게 됩니다. 앞서 다룬 목적 함수를 최대화함으로써 overlapping 커뮤니티를 detect하는 이 모델은 BigCLAM이라고 합니다.

💡 $l(F) = \sum_{(u,v)\in E} log(1-exp(-F_u^TF_v))-\sum_{(u,v)\notin E} F_u^TF_v$

BigCLAM Model (2) — Optimization

지금까지 BigCLAM의 목적 함수를 알아보았습니다. 그렇다면 이 목적 함수를 최적화(최대화)하는 방법은 무엇일까요? 여느 최적화 과정과 다를 바 없이 목적 함수 $l(F)$의 최적화는 아래 단계를 반복하며 일어납니다.

  1. 랜덤한 소속 강도 $F$로 초기화 합니다.
  2. 모든 노드 $u$에 대해 각각,
    1. 목적 함수의 gradient을 갖고 Gradient Ascent를 진행합니다. 이 말인즉슨, $F_u$ 값이 커지는 방향으로 이동한다는 것으로 생각할 수 있습니다. 노드 $u$의 소속 강도 $F_u$에 대해 업데이트를 진행할 때, 다른 모든 노드의 $F$값은 고정해 놓음에 주의하십시오!
  • 상기 과정을 수렴 시까지 반복합니다.

Imgur

이 때, 위에서 정의한 목적 함수에 대한 gradient는 위 식과 같지만, 이를 바로 사용하여 최적화를 진행하기에는 무리가 있습니다. 전체 그래프 상 노드 $u$의 이웃 노드는 한정적인 반면 이웃 노드가 아닌 노드에 대해서 뒷 term을 계속 반복하여 계산하는 것은 연산 부담이 매우 크기 때문입니다.

Imgur

여기서 살짝 트릭을 사용하여, 뒷 term을 위와 같이 바꿔줍니다. 이렇게 바꿀 경우, 모든 노드에 대해 계산하는 첫 번째 term은 처음에 한번만 계산해 놓으면 계속해서 재사용 할 수 있기 때문에 효율적이며, 뒤따르는 두,세 번째 term은 노드 $u$와 노드 $u$의 이웃 노드들에 대해서만 계산하면 되기 때문에 훨씬 빨리 계산할 수 있습니다. 이렇게 변형하여 gradient ascent를 진행하면 한번의 가중치 업데이트에 노드 $u$의 차수에 선형 비례하는 시간 복잡도를 가지게 됩니다.

BigCLAM: Summary

마지막으로 지금까지 다룬 BigCLAM 모델을 정리하고 오늘 포스트를 마무리 하도록 하겠습니다! 수고하셨습니다~ 🤗

Imgur

  • BigCLAM은 overlapping 커뮤니티 구조를 파악하기 위한 모델($F$)을 우선 정의합니다.
  • 어떤 그래프 $G$가 주어졌을 때, 모델 $F$로 $G$를 생성할 log likelihood를 최대화함으로써 각 노드가 각 커뮤니티에 소속될 강도 ($F_u$)를 추정할 수 있습니다.