Correlation Clustering

2025. 2. 10. 09:33CS 이론/알고리즘

Correlation clustering은 그래프의 정점들을 cluster들로 분할하는데, 각 간선 ee에는 두 종류의 weight we+w_{e}^{+}wew_{e}^{-}가 있다. 두 endpoint가 같은 cluster에 있으면 we+w_{e}^{+}점, 다른 cluster에 있으면 wew_{e}^{-}점을 얻는다. 목표는 점수의 합을 최대화하는 clustering을 찾는 것이다. 이 문제는 NP-hard임이 알려져 있고, Max cut처럼 SDP를 이용한 constant factor approximation이 알려져 있다.
이번에도 직관적인 0.50.5-approximation이 있는데, 모든 정점을 한 cluster에 놓거나 / 정점을 다 다른 cluster에 두거나 둘 중 나은 것이 최적해의 절반 이상이 된다. SDP를 이용하여 0.750.75-approximation을 얻을 것이다.

사실 이런 maximization problem이라고 해도 22-approximation, 1.331.33-approximation 처럼 역수로 쓰는 게 보통인데, 혼란을 방지하기 위해 이번에는 11보다 작은 수로 표기한다.

NP-hardness

이거 대충 날먹하려고 했는데 생각보다 어렵다;; 정확히는 unweighted variant의 hardness를 구하는 것이 어렵다.
Multiway-cut problem은 terminal set s1,,sks_{1}, \cdots, s_{k}가 주어졌을 때 각각을 전부 disconnect하는 edge set의 weight를 minimize하는 문제이다. k=2k=2일 때 유명한 (s,t)(s, t) min cut 문제가 되지만, 일반적인 kk에 대해서는 NP-hard임이 알려져 있다.

Multiway cut problem의 instance가 주어졌을 때, 원래 간선 ee의 weight가 wew_{e}였다면 we+=0,we=wew_{e}^{+} = 0, w_{e}^{-} = w_{e}로 assign해주고, 특히 si,sjs_{i}, s_{j}를 잇는 w(si,sj)+=,w(si,sj)=0w(s_{i}, s_{j})^{+} = -\infty, w(s_{i}, s_{j})^{-} = 0의 간선을 추가해주고 correlated clustering을 찾으면 그게 곧 multiway cut이 되므로 NP-hardness가 증명된다.

그럼 Multiway cut의 hardness는 어떻게 보이냐? 그건 나중에 다룰 일이 있겠지..

SDP relaxation

지난 번 MAX-CUT 문제에서는 각 정점을 Sn1\mathbf{S}^{n-1}의 한 축을 기준으로 분할하는 방법을 생각했었다. 이번에도 아이디어는 비슷한데, 우선 원본 문제를 아래와 같이 나타낼 수 있다.
maximize(i,j)Ewij+(vivj)+wij(1vivj)s.t.vi{e1,,en}\begin{aligned} \mathrm{maximize} & \sum_{(i, j) \in E} w_{ij}^{+} (v_{i} \cdot v_{j}) + w_{ij}^{-} (1 - v_{i} \cdot v_{j}) \\ \mathrm{s.t.} & v_{i} \in \lbrace \mathbf{e} _ {1}, \cdots, \mathbf{e} _ {n} \rbrace \end{aligned}

이번에도 똑같이 vivi=1v_{i} \cdot v_{i} = 1로 relax한 뒤 SDP를 풀어주면 될 것 같다. 다만 이번엔 원본인 Integer program의 특성상 모든 성분이 양수면 좋을 것 같은데, 이 제약조건을 어떻게 modeling해줄 수 있을까? 단순히 생각해서, 두 벡터의 각도가 90도 이하여야 하니 vivj0v_{i} \cdot v_{j} \ge 0을 제약 조건으로 걸어주자. 이래도 여전히 SDP가 된다.

이제 이걸 rounding해줘야 한다. 놀랍게도 축을 두 개 잡아주는 것만으로 꽤 좋은 근사치를 얻을 수 있다.
두 독립인 벡터 r1,r2Sn1r_{1}, r_{2} \in \mathbf{S}^{n-1}에 대해 r1vi,r2vir_{1} \cdot v_{i}, r_{2} \cdot v_{i}의 부호에 따라, 총 4개의 cluster를 만들어주자.

MAX CUT에서, 두 벡터 vi,vjv_{i}, v_{j}r1r_{1}을 기준으로 같은 쪽에 있을 확률은 1cos1(vivj)π1 - \frac{\cos^{-1}(v_{i} \cdot v_{j})}{\pi}임을 보였다. 따라서, vi,vjv_{i}, v_{j}가 같은 클러스터에 있을 확률은 (1cos1(vivj)π)2(1 - \frac{\cos^{-1}(v_{i} \cdot v_{j})}{\pi})^{2}가 된다. 따라서 간선 (i,j)E(i, j) \in E에서 얻을 수 있는 점수의 기댓값은
wij+(1cos1(vivj)π)2+wij(1(1cos1(vivj)π)2)w_{ij}^{+}\left(1 - \frac{\cos^{-1}(v_{i} \cdot v_{j})}{\pi}\right)^{2} + w_{ij}^{-}\left(1 - \left(1 - \frac{\cos^{-1}(v_{i} \cdot v_{j})}{\pi}\right)^{2}\right)
가 된다. 당연하지만, 이제 이 식을 C×[wij+(vivj)+wij(1vivj)]C \times \left[ w_{ij}^{+} (v_{i} \cdot v_{j}) + w_{ij}^{-} (1 - v_{i} \cdot v_{j}) \right]로 lower bound해야 한다.

Lemma. 0x10 \le x \le 1에 대해, (1cos1(x)/π)20.75x(1 - \cos^{-1}(x)/\pi)^{2} \ge 0.75x.
또한, (1(1cos1(x)/π)2)0.75(1x)(1 - (1 - \cos^{-1}(x) / \pi)^{2}) \ge 0.75(1-x).

Proof. (1x/π)20.75cosx(1 - x/\pi)^{2} - 0.75\cos x[0,π/2][0, \pi/2]에서 [0,0.25][0, 0.25]에 들어감을 증명하면 된다. 남은 증명은 Wolframalpha가 해준다.

References