이분 네트워크와 투영
SNA 이론 · 단계별 학습 차례

단원 3-6Two-mode Networks and Projection

이분 네트워크와 투영

SNA 이론 · 단계별 학습STAGED+ 스터디

1. 지난 시간 연습문제 확인 (Checking Last Session's Exercises)

단원 3-5에서 두 문제를 냈다. 답을 짚고 넘어간다.

문제 1 — 아령 그래프 HH의 구조적 등위성 (Solution 1 — Structural Equivalence in the Barbell)

HH는 삼각형 A(A1,A2,A3)와 삼각형 B(B1,B2,B3)를 다리 A1–B1로 이은 6명 7간선 그래프다. 완화 해밍 거리 D(i,j)=#{k{i,j}:A[i,k]A[j,k]}D(i,j)=\#\{k\notin\{i,j\}: A[i,k]\neq A[j,k]\}를 15쌍 전부 구하면:

A1A2A3B1B2B3
A1011433
A2100344
A3100344
B1433011
B2344100
B3344100

등위 쌍은 (A2,A3)(B2,B3) 둘뿐이다. 각각 이웃이 정확히 같고 (N(A2)=N(A3)={A1,A3}N(A2)=N(A3)=\{A1,A3\} 또는 {A1,A2}\{A1,A2\} — 서로를 뺀 나머지가 같다), 게다가 서로 간선이 있으므로 엄격 관례에서는 등위가 아니고 완화 관례에서만 등위다. 3-5에서 배운 서로 아는 쌍둥이(true twins)다.

완전 연결(complete linkage) 병합 높이는 0, 0, 1, 1, 4. 즉 (A2,A3)@0 → (B2,B3)@0 → A1이 {A2,A3}에 @1 → B1이 {B2,B3}에 @1 → 두 덩어리가 @4에 합쳐진다. h=0.5h=0.5로 자르면 위치 4개 {A1} {A2,A3} {B1} {B2,B3}가 나온다(소속 벡터 122344).

밀도 행렬{A1}{A2,A3}{B1}{B2,B3}
{A1}110
{A2,A3}1100
{B1}101
{B2,B3}0011

모든 칸이 0 아니면 1이므로 오차 0이다. 칸 수는 0+2+1+2  /  2+2+2+4  /  1+2+0+2  /  2+4+2+2=30=650+2+1+2\;/\;2+2+2+4\;/\;1+2+0+2\;/\;2+4+2+2=30=6\cdot 5로 딱 맞는다. 3-5의 WW와 달리 여기서는 두 대각 칸이 1이다 — {A2,A3}와 {B2,B3}는 서로 아는 쌍둥이라 자기들끼리도 다 이어져 있다(완전 블록).

문제 2 — WW에 S1–S2 간선을 더하면 (Solution 2 — Adding One Edge to W)

세 가지가 동시에 일어난다.

  • 등위는 살아남지만 종류가 바뀐다. A[1,2]=1A[1,2]=1이 되었으므로 엄격 등위는 깨지고 (all(W2[1,]==W2[2,]) → FALSE) 완화 등위만 남는다. S1,S2는 서로 모르는 쌍둥이 → 서로 아는 쌍둥이로 바뀌었다.
  • 정확히 12칸의 거리가 바뀐다. 그것도 양방향으로:
    바뀐 쌍이전이후
    (S1,S3) (S1,S4) (S1,S5) (S2,S3) (S2,S4) (S2,S5)21S1이 S2와 이어지자 S3·S4·S5의 이웃 목록과 더 닮아졌다
    (S1,S6) (S2,S6)45S6는 S2와 안 이어져 있는데 S1은 이어짐 → 어긋난 칸 하나 추가
    (S1,S7) (S1,S8) (S2,S7) (S2,S8)56같은 이유. S7·S8과는 더 멀어졌다
    간선 하나가 어떤 쌍은 가깝게, 어떤 쌍은 멀게 만든다. 구조적 등위 거리는 "연결"이 아니라 "연결 패턴의 일치"를 재기 때문이다.
  • 블록모델은 딱 한 칸만 바뀐다. 새 병합 높이는 0, 0, 0, 1, 1, 2, 6이고 h=0.5h=0.5로 자르면 위치는 그대로 5개(11223455)다. 밀도 행렬에서 P1 ⁣ ⁣P1P_1\!\to\! P_1 칸만 0에서 1로 — 영 블록(null block)이 완전 블록(complete block)으로 바뀐다. 오차는 여전히 0이다. (h=1.5h=1.5로 자르면 11112333, 위치 3개가 된다.)

2. 오늘의 질문: 명단밖에 없을 때 (Today's Question: When All You Have Is a Roster)

단원 1-1부터 3-5까지, 우리가 다룬 행렬 AA는 예외 없이 학생 × 학생이었다. A[i,j]=1A[i,j]=1은 "iijj가 친구다"라는 뜻이었고, 그 자료를 얻으려면 누군가에게 "너는 누구와 친하니?"라고 직접 물어야 했다.

그런데 실제 교실에서 교사가 손에 쥐고 있는 자료는 대개 그런 모양이 아니다. 동아리 신청서, 모둠 배정표, 방과후 수업 명단, 도서 대출 기록, 체험학습 조 편성표 — 전부 학생 × 무엇이다. 아무도 교우관계를 조사하지 않았지만, "누가 어디에 속해 있는가"는 이미 다 적혀 있다.

오늘의 질문
소속 명단만으로 교우관계망을 만들 수 있는가? — 만들 수 있다. 그것이 투영(projection)이다.
그렇다면 두 번째 질문: 그렇게 만든 망은 무엇을 재는가? 그리고 만드는 과정에서 무엇을 잃는가?

이 단원의 절반은 만드는 법(§3–§8), 나머지 절반은 잃는 것(§9–§15)에 관한 이야기다. 그리고 잃는 쪽이 훨씬 중요하다.

3. 이분 네트워크와 소속행렬 (Two-mode Networks and the Incidence Matrix)

이분(bipartite) 네트워크 또는 2-모드(two-mode) 네트워크는 정점이 두 종류로 나뉘고, 간선이 서로 다른 종류 사이에만 놓이는 네트워크다. 학생끼리는 이어지지 않고, 활동끼리도 이어지지 않는다. 오직 "학생 — 활동"만 이어진다.

소속행렬 (Incidence Matrix / Affiliation Matrix)
nn명의 행위자와 mm개의 사건에 대해 n×mn\times m 행렬 AA를 다음과 같이 정의한다. A[i,k]={1학생 i가 활동 k에 속해 있으면0아니면 A[i,k] = \begin{cases} 1 & \text{학생 } i \text{가 활동 } k \text{에 속해 있으면}\\ 0 & \text{아니면}\end{cases} 정사각행렬이 아니다. 지금까지 다룬 인접행렬과 가장 크게 다른 점이다. 따라서 A[i,j]A[i,j]A[j,i]A[j,i]를 비교하는 일 자체가 성립하지 않는다.

이 단원 내내 쓸 예제를 정한다. 학생 6명(S1–S6), 활동 4개(E1=축구부, E2=독서부, E3=밴드부, E4=봉사부).

AAE1E2E3E4행합 rir_i
S111002
S211002
S310102
S400101
S500112
S600011
열합 ckc_k323210

행합과 열합은 서로 다른 것을 센다.

  • 행합 ri=kA[i,k]r_i=\sum_k A[i,k] = 학생 ii가 참여한 활동 수. S1은 2개, S4는 1개.
  • 열합 ck=iA[i,k]c_k=\sum_i A[i,k] = 활동 kk의 인원 수. E1은 3명, E2는 2명.

둘의 총합은 반드시 같다. 둘 다 행렬 안의 1을 전부 센 값이기 때문이다.

i=16ri=2+2+2+1+2+1=10,k=14ck=3+2+3+2=10   \sum_{i=1}^{6} r_i = 2+2+2+1+2+1 = 10, \qquad \sum_{k=1}^{4} c_k = 3+2+3+2 = 10 \;\checkmark
이분 네트워크 B와 블록 구조
그림 21. 왼쪽: 이분 네트워크. 학생(원)과 활동(사각형) 사이에만 간선이 있다. 오른쪽: 같은 것을 10×10 인접행렬로 본 모습 — 대각 블록이 통째로 0이다.

4. 하나의 인접행렬로 합치기 (Folding It into One Adjacency Matrix)

AA는 정사각행렬이 아니라서 지금까지 배운 도구(거듭제곱, 중심성, 컴포넌트)를 바로 쓸 수 없다. 그래서 학생과 활동을 전부 정점으로 취급(n+m)×(n+m)(n+m)\times(n+m) 정사각 인접행렬로 다시 쓴다.

이분 인접행렬 (Bipartite Adjacency Matrix) B  =  (0n×nAAT0m×m) B \;=\; \begin{pmatrix} \mathbf{0}_{n\times n} & A \\[2pt] A^{\mathsf T} & \mathbf{0}_{m\times m} \end{pmatrix} 크기는 (6+4)×(6+4)=10×10(6+4)\times(6+4)=10\times 10. 왼쪽 위와 오른쪽 아래 대각 블록이 0인 것이 "같은 모드끼리는 이어지지 않는다"를 그대로 옮긴 것이다.

BB는 대칭이고 간선 수는 A=10\sum A = 10개다. 소속행렬의 1 하나가 간선 하나가 된다. 그림 21의 오른쪽 패널이 바로 이 BB를 그린 것이다. 빨간 선으로 나눈 네 블록 중 대각 두 블록이 완전히 비어 있고, 비대각 두 블록이 서로 전치 관계다.

정점 번호 주의BB에서 1–6번은 학생, 7–10번은 활동이다. 그래서 degree(B)[7]은 "7번 학생"이 아니라 "활동 E1"의 인원 수다. 교재 bipartite_1.Rdegree(B)[1:n]degree(B)[(n+1):(n+m)]을 따로 잘라 쓰는 이유가 이것이다.

5. 이분 네트워크에는 삼각형이 없다 (No Triangles: Odd Cycles Are Impossible)

BB 위를 걷는다고 생각해 보자. 학생에서 출발하면 반드시 활동으로 가고, 활동에서는 반드시 학생으로 온다. 한 걸음마다 모드가 바뀐다. 따라서 출발점으로 돌아오려면 짝수 걸음이 필요하다.

이분 그래프의 특징
홀수 길이 순환이 존재하지 않는다. 특히 삼각형(길이 3)은 절대 없다.
② 같은 모드 두 정점 사이의 측지거리는 항상 짝수.
③ 다른 모드 두 정점 사이의 측지거리는 항상 홀수.
④ 따라서 이분 그래프의 군집계수(transitivity)는 항상 0이다 — 잴 의미가 없다.

단원 1-3에서 배운 도구로 ①을 바로 확인할 수 있다. 삼각형 개수는 tr(A3)/6\operatorname{tr}(A^3)/6이었다.

tr(B3)=vB3[v,v]=0+0+0+0+0+0+0+0+0+0=0        삼각형 0 \operatorname{tr}(B^3) = \sum_{v} B^3[v,v] = 0+0+0+0+0+0+0+0+0+0 = 0 \;\;\Longrightarrow\;\; \text{삼각형 } 0\text{개}

10개 대각 원소가 전부 0이다. 우연이 아니라 구조적으로 그럴 수밖에 없다. B2B^2의 비대각 블록이 0이고(§8) B3B^3대각 블록이 0이기 때문이다.

②·③은 실제 거리 행렬로 확인한다. BB의 측지거리 10×10 중 학생–학생 부분:

ddS1S2S3S4S5S6E1E2E3E4
S10224461135
S22024461135
S32202241313
S44420243513
S54422023511
S66644205731

초록 칸(학생–학생)은 전부 짝수, 노란 칸(학생–활동)은 전부 홀수다. 지름은 7 — S6에서 E2까지다. 경로를 따라가 보면 S6 → E4 → S5 → E3 → S3 → E1 → S1 → E2 로 정확히 7걸음이다.

거리를 그대로 읽으면 안 된다
"S1과 S2의 거리가 2"라는 말은 단원 1-6에서 "친구의 친구"를 뜻했다. 그러나 여기서는 같은 활동에 함께 속해 있다는 뜻이다. 이분 네트워크에서 거리 2는 가장 가까운 사이다. 이분 그래프의 지표를 일반 네트워크 지표와 나란히 놓고 비교하면 안 되는 이유다.

6. 학생 투영 — 15쌍 전부 (The Actor Projection: All 15 Pairs)

이제 본론이다. "학생 × 활동" 자료에서 "학생 × 학생" 네트워크를 뽑아내는 것을 투영(projection)이라 한다.

학생 투영 (Actor Projection) R=AAT,R[i,j]=k=1mA[i,k]A[j,k] R = A A^{\mathsf T}, \qquad R[i,j] = \sum_{k=1}^{m} A[i,k]\,A[j,k] A[i,k]A[j,k]A[i,k]A[j,k]둘 다 활동 kk에 속할 때만 1이다. 따라서 R[i,j]R[i,j]iijj가 함께 속한 활동의 개수다. 대각선은 0으로 지운다.

R[1,2]R[1,2] — S1과 S2 (Expanding R[1,2] Term by Term)

0이 되는 항도 생략하지 않고 네 항을 전부 쓴다.

kk활동A[1,k]A[1,k]A[2,k]A[2,k]왜 그 값인가
1E1 축구부111둘 다 축구부 → 기여 1
2E2 독서부111둘 다 독서부 → 기여 1
3E3 밴드부000둘 다 아님 → 00=00\cdot 0=0
4E4 봉사부000둘 다 아님 → 00=00\cdot 0=0
2함께한 활동 2개
R[1,2]=11+11+00+00=1+1+0+0=2 R[1,2] = 1\cdot 1 + 1\cdot 1 + 0\cdot 0 + 0\cdot 0 = 1+1+0+0 = 2

R[1,3]R[1,3] — S1과 S3 (Expanding R[1,3])

kk활동A[1,k]A[1,k]A[3,k]A[3,k]왜 그 값인가
1E1 축구부111둘 다 축구부 → 기여 1
2E2 독서부100S1만 → 10=01\cdot 0=0. 한쪽만으로는 소용없다
3E3 밴드부010S3만 → 01=00\cdot 1=0
4E4 봉사부000둘 다 아님 → 0
1함께한 활동 1개

R[1,4]R[1,4] — S1과 S4 (Expanding R[1,4])

kk활동A[1,k]A[1,k]A[4,k]A[4,k]왜 그 값인가
1E1100S1만
2E2100S1만
3E3010S4만
4E4000둘 다 아님
0겹치는 활동 없음 → 투영에서 간선 없음

15쌍 전부 (All 15 Pairs at Once)

나머지도 같은 방식이다. 어느 활동에서 곱이 1이 되는지만 적으면 충분하다.

R[i,j]R[i,j]곱이 1이 되는 kkR[i,j]R[i,j]곱이 1이 되는 kk
(S1,S2)2E1, E2(S2,S6)0없음
(S1,S3)1E1(S3,S4)1E3
(S1,S4)0없음(S3,S5)1E3
(S1,S5)0없음(S3,S6)0없음
(S1,S6)0없음(S4,S5)1E3
(S2,S3)1E1(S4,S6)0없음
(S2,S4)0없음(S5,S6)1E4
(S2,S5)0없음

모아 쓰면 다음 6×6 대칭행렬이다.

RRS1S2S3S4S5S6
S1021000
S2201000
S3110110
S4001010
S5001101
S6000010
대각선을 지우기 전에 무엇이 있었나
A[i,k]A[i,k]는 0 아니면 1이므로 A[i,k]2=A[i,k]A[i,k]^2=A[i,k]다. 따라서 (AAT)[i,i]=kA[i,k]2=kA[i,k]=ri (AA^{\mathsf T})[i,i] = \sum_k A[i,k]^2 = \sum_k A[i,k] = r_i 대각선은 그 학생이 참여한 활동 수였다. 지워 버리기 전에 한 번 읽어 둘 만한 값이다. S1–S6의 대각선은 2, 2, 2, 1, 2, 1로 §3의 행합과 정확히 같다.

7. 활동 투영 — 6쌍 전부 (The Event Projection: All 6 Pairs)

곱하는 순서를 뒤집으면 반대쪽 모드의 네트워크가 나온다.

활동 투영 (Event Projection) C=ATA,C[k,l]=i=1nA[i,k]A[i,l] C = A^{\mathsf T} A, \qquad C[k,l] = \sum_{i=1}^{n} A[i,k]\,A[i,l] C[k,l]C[k,l]활동 kkll에 모두 속한 학생 수다. 크기는 4×44\times 4.

C[1,2]C[1,2] — 축구부와 독서부 (Expanding C[1,2])

이번에는 학생 6명 전부에 대해 더한다. 여섯 항을 모두 쓴다.

iiA[i,1]A[i,1] E1A[i,2]A[i,2] E2왜 그 값인가
S1111축구부이면서 독서부 → 기여 1
S2111축구부이면서 독서부 → 기여 1
S3100축구부지만 독서부 아님 → 0
S4000둘 다 아님 → 0
S5000둘 다 아님 → 0
S6000둘 다 아님 → 0
2겹치는 학생 2명 (S1, S2)
C[1,2]=11+11+10+00+00+00=1+1+0+0+0+0=2 C[1,2] = 1\cdot 1 + 1\cdot 1 + 1\cdot 0 + 0\cdot 0 + 0\cdot 0 + 0\cdot 0 = 1+1+0+0+0+0 = 2

C[2,4]C[2,4] — 독서부와 봉사부 (Expanding C[2,4])

iiA[i,2]A[i,2] E2A[i,4]A[i,4] E4왜 그 값인가
S1100독서부지만 봉사부 아님
S2100독서부지만 봉사부 아님
S3000둘 다 아님
S4000둘 다 아님
S5010봉사부지만 독서부 아님
S6010봉사부지만 독서부 아님
0겹치는 학생 0명 → 두 활동은 완전히 남남

6쌍 전부와 결과 행렬 (All 6 Pairs)

C[k,l]C[k,l]겹치는 학생읽는 법
(E1,E2)2S1, S2축구부와 독서부는 절반이 겹친다
(E1,E3)1S3S3 한 명이 두 부를 잇는 유일한 고리
(E1,E4)0없음축구부와 봉사부는 접점이 없다
(E2,E3)0없음
(E2,E4)0없음
(E3,E4)1S5S5 한 명이 밴드부와 봉사부를 잇는다
CCE1E2E3E4
E10210
E22000
E31001
E40010

여기서도 대각선은 지우기 전에 (ATA)[k,k]=iA[i,k]2=ck(A^{\mathsf T}A)[k,k]=\sum_i A[i,k]^2 = c_k, 즉 활동의 인원 수였다. E1–E4는 3, 2, 3, 2로 §3의 열합과 같다.

두 투영 R과 C
그림 22. 같은 소속행렬 AA에서 나온 두 네트워크. 굵기가 가중치다. 왼쪽은 "누가 누구와 함께 활동하는가", 오른쪽은 "어느 활동끼리 사람이 겹치는가".
교실에서 — 두 투영은 다른 사람에게 쓸모가 있다. 학생 투영은 담임에게(누가 누구와 마주칠 기회가 많은가), 활동 투영은 업무 담당자에게 유용하다. C[k,l]C[k,l]이 크면 두 활동을 같은 시간에 배치할 수 없고, 0이면 마음대로 겹쳐도 된다. 위 예에서 E2(독서부)와 E4(봉사부)는 C=0C=0이므로 같은 요일에 넣어도 아무도 곤란해지지 않는다.

8. 두 투영은 B2B^2 안에 이미 들어 있다 (Both Projections Live Inside B²)

여기서 단원 1-2가 되돌아온다. 그때 배운 것은 (A2)[i,j](A^2)[i,j]ii에서 jj로 가는 2단계 경로의 수라는 사실이었다. BB를 제곱하면 무슨 일이 벌어지는지 블록으로 계산해 보자.

B2=(0AAT0)(0AAT0)=(00+AAT0A+A0AT0+0ATATA+00)=(AAT00ATA) B^2 = \begin{pmatrix} \mathbf 0 & A \\ A^{\mathsf T} & \mathbf 0\end{pmatrix} \begin{pmatrix} \mathbf 0 & A \\ A^{\mathsf T} & \mathbf 0\end{pmatrix} = \begin{pmatrix} \mathbf 0\cdot\mathbf 0 + A A^{\mathsf T} & \mathbf 0\cdot A + A\cdot \mathbf 0 \\[2pt] A^{\mathsf T}\mathbf 0 + \mathbf 0 A^{\mathsf T} & A^{\mathsf T}A + \mathbf 0\cdot\mathbf 0 \end{pmatrix} = \begin{pmatrix} A A^{\mathsf T} & \mathbf 0 \\ \mathbf 0 & A^{\mathsf T} A\end{pmatrix}
투영은 새로운 개념이 아니다
RRCCB2B^2의 두 대각 블록일 뿐이다. 그러므로 R[i,j]R[i,j] = "Sii에서 Sjj로 가는 2단계 경로의 수" = 둘을 잇는 활동의 수. 가운데 한 걸음이 반드시 활동이기 때문이다.
투영이란 결국 "다른 모드를 한 번 거쳐 가는 길을 세는 것"이다.

실제 B2B^2를 보면 정확히 그 모양이다.

B2B^2S1S2S3S4S5S6E1E2E3E4
S12210000000
S22210000000
S31121100000
S40011100000
S50011210000
S60000110000
E10000003210
E20000002200
E30000001031
E40000000012

파란 블록이 AATAA^{\mathsf T}(대각선은 학생 차수 2,2,2,1,2,1), 노란 블록이 ATAA^{\mathsf T}A(대각선은 활동 크기 3,2,3,2), 비대각 블록은 전부 0이다. "짝수 걸음으로는 모드를 바꿀 수 없다"(§5)가 행렬로 나타난 모습이다.

같은 논리로 B3=(0AATAATAAT0)B^3 = \begin{pmatrix}\mathbf 0 & AA^{\mathsf T}A \\ A^{\mathsf T}AA^{\mathsf T} & \mathbf 0\end{pmatrix}이므로 대각 블록이 0, 곧 tr(B3)=0\operatorname{tr}(B^3)=0이고 삼각형이 없다(§5). 두 사실은 같은 사실이다.

9. 투영의 대가 ① 정보 손실 (The Price of Projection: Information Loss)

투영은 편리하지만 되돌릴 수 없다. 결정적인 이유를 가장 작은 예로 보인다.

학생 X, Y, Z 셋이 있다. 두 가지 전혀 다른 상황을 생각해 보자.

(가) 3인 동아리 F 하나F(나) 2인 짝 활동 셋G1G2G3
X1X101
Y1Y110
Z1Z011

두 상황은 완전히 다르다. (가)에서는 셋이 한 자리에 같이 있었고, (나)에서는 한 번도 셋이 모인 적이 없다. 그런데 투영을 계산하면:

(가)의 전개RR(나)의 전개RR
(X,Y)11=11\cdot 1 = 1111+01+10=1+0+01\cdot 1 + 0\cdot 1 + 1\cdot 0 = 1+0+01
(X,Z)11=11\cdot 1 = 1110+01+11=0+0+11\cdot 0 + 0\cdot 1 + 1\cdot 1 = 0+0+11
(Y,Z)11=11\cdot 1 = 1110+11+01=0+1+01\cdot 0 + 1\cdot 1 + 0\cdot 1 = 0+1+01
정보 손실
그림 23. 왼쪽 두 이분 네트워크는 서로 완전히 다른데 투영(오른쪽)은 똑같다. 가중치까지 전부 1로 일치한다.
투영은 단사(one-to-one)가 아니다
서로 다른 소속행렬이 같은 투영을 낳는다. 따라서 투영만 보고 원자료를 복원할 수 없다.
잃어버린 정보는 구체적으로 무엇인가? — 학생의 이분 차수다. (가)에서 X,Y,Z는 각각 활동 1개에 참여했고 이분 간선은 3개, (나)에서는 각각 2개에 참여했고 이분 간선은 6개다. 투영에는 이 차이가 전혀 남지 않는다.

투영을 하는 순간 우리는 "몇 명이 모인 자리였는가"를 버린다. 그리고 다음 절에서 보듯, 바로 그 버려진 정보가 결과를 가장 크게 왜곡한다.

10. 투영의 대가 ② 공짜로 생기는 클리크 (Cliques You Never Observed)

ckc_k명이 참여한 활동 하나는 투영에서 그 ckc_k명 전원을 서로 잇는다. 즉 활동 하나가 크기 ckc_k의 클리크 하나를 만든다. 만들어지는 간선 수는

(ck2)=ck(ck1)2 \binom{c_k}{2} = \frac{c_k(c_k-1)}{2}

이 값은 ckc_k에 대해 제곱으로 늘어난다. 2인 활동은 간선 1개, 5인 활동은 10개, 14인 활동은 91개다.

활동 인원 ckc_k235101425
만들어지는 간선 (ck2)\binom{c_k}{2}13104591300

우리 예제에서 확인해 보자. 이진화한 투영 RR의 삼각형을 세면 2개다: {S1,S2,S3}(전부 E1 축구부)와 {S3,S4,S5}(전부 E3 밴드부). 전역 군집계수는

transitivity=3×(삼각형 수)연결삼중항 수=3×2i(di2)=6(22) ⁣+ ⁣(22) ⁣+ ⁣(42) ⁣+ ⁣(22) ⁣+ ⁣(32) ⁣+ ⁣(12) \text{transitivity} = \frac{3\times(\text{삼각형 수})}{\text{연결삼중항 수}} = \frac{3\times 2}{\sum_i \binom{d_i}{2}} = \frac{6}{\binom{2}{2}\!+\!\binom{2}{2}\!+\!\binom{4}{2}\!+\!\binom{2}{2}\!+\!\binom{3}{2}\!+\!\binom{1}{2}} =61+1+6+1+3+0=612=0.5 = \frac{6}{1+1+6+1+3+0} = \frac{6}{12} = 0.5
이 0.5는 사회적 사실이 아니다
"세 명 중 두 쌍이 친구면 나머지 한 쌍도 친구일 확률이 50%"라고 읽으면 안 된다. 삼각형 두 개는 단지 E1과 E3에 세 명씩 있었기 때문에 자동으로 생긴 것이다. S1–S2–S3가 실제로 서로 친한지에 대해 우리는 아무 자료도 갖고 있지 않다.
§5에서 본 대로 이분 그래프의 군집계수는 항상 0이다. 투영이 0을 0.5로 바꿨다. 그 0.5는 전부 투영이 만든 것이다.

더 나쁜 것은 이 인위적 클리크들이 서로 겹친다는 점이다. 활동별로 만든 간선을 다 더하면 k(ck2)\sum_k \binom{c_k}{2}인데, 실제 투영 간선 수는 그보다 적다. 같은 쌍이 여러 활동에서 반복해 이어지기 때문이다. 우리 예제에서는

k(ck2)=(32)+(22)+(32)+(22)=3+1+3+1=8 \sum_k \binom{c_k}{2} = \binom{3}{2}+\binom{2}{2}+\binom{3}{2}+\binom{2}{2} = 3+1+3+1 = 8

인데 실제 간선은 7개다. 차이 1은 (S1,S2)가 E1과 E2 양쪽에서 이어지기 때문이다. 바로 그 쌍이 가중치 2를 갖는다. §14에서 이 겹침이 훨씬 심해지는 실제 자료를 본다.

11. 이분 네트워크의 밀도와 차수 (Density and Degree in Two-mode)

이분 자료에서는 분모가 달라진다. 단원 1-5에서 무방향 밀도는 2Ln(n1)\dfrac{2L}{n(n-1)}이었지만, 여기서는 학생끼리 이어질 가능성 자체가 없으므로 n(n1)/2n(n-1)/2를 분모로 쓰면 안 된다.

이분 밀도 (Two-mode Density) Δ=ikA[i,k]nm \Delta = \frac{\sum_{i}\sum_{k} A[i,k]}{n\,m} 분모는 가능한 소속 관계의 총수, 즉 소속행렬의 칸 수다.
Δ=106×4=1024=0.4167 \Delta = \frac{10}{6\times 4} = \frac{10}{24} = 0.4167

"학생 한 명이 참여할 수 있는 활동 4개 중 평균 1.67개에 참여했다"는 뜻이다.

차수 정규화도 마찬가지로 갈라진다. 두 모드는 서로 다른 최댓값을 갖는다.

대상차수최댓값정규화 차수읽는 법
학생 S12m=4m=42/4 = 0.50전체 활동의 절반에 참여
학생 S41m=4m=41/4 = 0.25한 곳에만 속함
활동 E13n=6n=63/6 = 0.50학급 절반이 참여
활동 E22n=6n=62/6 = 0.33
흔한 실수BB를 그냥 sna::degree()에 넣고 10개 값을 한 줄로 늘어놓은 뒤 "S1이 2, E1이 3이니 E1이 더 중심적"이라고 읽는 것. 두 값은 단위가 다르다. S1의 2는 "활동 4개 중 2개", E1의 3은 "학생 6명 중 3명"이다. 정규화하면 둘 다 0.50으로 같다. 이분 자료에서는 모드별로 따로 정규화한 뒤 비교해야 한다.

12. 가중치를 거리로 되돌리기 (Turning Weight Back into Distance)

투영 RR의 값은 강도다. R[i,j]R[i,j]가 클수록 두 학생은 가깝다. 그런데 근접 중심성이나 매개 중심성은 거리를 더해 나가는 지표다. 강도를 그대로 거리로 쓰면 부호가 뒤집힌다 — 단원 2-5에서 다룬 그 문제가 그대로 재현된다.

교재 bipartite_1.Rcloseness(1/R)라고 쓴 것이 이 때문이다. 가중치의 역수를 거리로 삼는다.

d(i,j)=1R[i,j](간선이 있는 쌍에 대해) d(i,j) = \frac{1}{R[i,j]} \quad\text{(간선이 있는 쌍에 대해)}

S1에서 출발해 보자. 두 방식의 결과가 어떻게 갈리는지 항을 전부 쓴다.

목적지가중치 무시 경로거리역수 가중 경로거리
S2S1–S2 (1걸음)1S1–S2, 가중치 2 → 1/21/20.5
S3S1–S3 (1걸음)1S1–S3, 가중치 1 → 1/11/11
S4S1–S3–S421+11+12
S5S1–S3–S521+11+12
S6S1–S3–S5–S631+1+11+1+13
거리 합98.5
CC(S1)무시=59=0.5556,CC(S1)역수=58.5=0.5882 C_C(S1)_{\text{무시}} = \frac{5}{9} = 0.5556, \qquad C_C(S1)_{\text{역수}} = \frac{5}{8.5} = 0.5882

S1과 S2가 활동 두 개를 함께한 덕분에 S1의 근접 중심성이 올라갔다. S3는 두 방식 모두 5/6=0.83335/6 = 0.8333으로 같다 — S3에 붙은 간선은 전부 가중치 1이라 바뀔 것이 없다.

1/R1/R의 함정 — 교재처럼 1/R을 통째로 계산하면 R[i,j]=0R[i,j]=0인 칸이 1/0=1/0 = \infty가 된다. sna는 이를 "간선 없음"으로 처리해 주지만, 의도한 동작인지 확인 없이 쓰면 위험하다. igraph에서는 존재하는 간선에만 역수를 주는 편이 안전하다: closeness(g, weights = 1/E(g)$weight).

13. 뉴먼 가중 투영 (Newman's Weighted Projection)

§10에서 본 문제 — 큰 활동일수록 간선을 제곱으로 쏟아낸다 — 를 정면으로 다루는 방법이 있다. 큰 활동에서 만난 것은 덜 쳐 주자는 발상이다.

뉴먼 가중 (Newman Weighting) wij=k=1mA[i,k]A[j,k]ck1 w_{ij} = \sum_{k=1}^{m} \frac{A[i,k]\,A[j,k]}{c_k - 1} 활동 kkckc_k명이 있으면 한 사람이 그 자리에서 만나는 상대는 ck1c_k-1명이다. 그러므로 기여를 ck1c_k-1로 나눈다. 2인 활동은 1을 온전히, 3인 활동은 1/21/2씩, 25인 학급 전체 활동은 1/241/24씩만 준다.

우리 예제의 활동 크기는 c=(3,2,3,2)c = (3,2,3,2)이므로 쌍당 기여는 (12,1,12,1)\bigl(\tfrac12,\,1,\,\tfrac12,\,1\bigr)이다.

공유 활동 (크기)전개뉴먼 ww원 가중 RR
(S1,S2)E1(3명), E2(2명)131+121=12+1\frac{1}{3-1}+\frac{1}{2-1}=\frac12+11.52
(S1,S3)E1(3명)131=12\frac{1}{3-1}=\frac120.51
(S2,S3)E1(3명)131=12\frac{1}{3-1}=\frac120.51
(S3,S4)E3(3명)131=12\frac{1}{3-1}=\frac120.51
(S3,S5)E3(3명)131=12\frac{1}{3-1}=\frac120.51
(S4,S5)E3(3명)131=12\frac{1}{3-1}=\frac120.51
(S5,S6)E4(2명)121=1\frac{1}{2-1}=11.01

순위가 어떻게 달라졌는지 보자. 원 가중치로는 (S1,S2)=2가 (S5,S6)=1의 두 배였다. 뉴먼으로는 1.5 대 1.0으로 1.5배로 줄었다. 이유는 명확하다 — S1,S2가 함께한 E1은 3인 활동이라 "둘만의 관계"라는 증거가 약하고, S5,S6이 함께한 E4는 둘뿐인 활동이라 훨씬 강한 증거다.

그리고 (S1,S3)=0.5와 (S5,S6)=1.0을 비교하면 순위가 뒤집혔다. 원 가중치로는 둘 다 1로 동점이었지만, 뉴먼은 "3명 중에서 만난 것"보다 "둘만 있는 자리에서 만난 것"을 두 배로 쳐 준다.

교실에서 — 이것이 뉴먼 가중이 학교 자료에 특히 중요한 이유다. "같은 반"이나 "전교생 봉사활동"처럼 모두가 들어 있는 항목을 소속행렬에 넣으면 원 가중 투영은 전원을 서로 잇고 만다. 뉴먼 가중은 그 항목의 기여를 1/(n1)1/(n-1)로 눌러 소규모 모둠에서 맺어진 관계가 드러나게 한다. 연습문제 1에서 직접 확인한다.

14. 실전: Davis 남부 여성 18명 (Davis's Southern Women)

2-모드 분석의 표준 자료를 쓴다. Davis, Gardner & Gardner가 1930년대 미국 남부의 한 도시에서 여성 18명이 사교 행사 14개에 참석한 기록을 신문 사교란과 관찰로 모은 것이다(1941). 누구도 "누가 누구와 친하냐"고 묻지 않았다. 오직 참석 명단뿐이다. tnet 패키지에 들어 있다.

Davis 남부 여성 자료
그림 24. 왼쪽: 원자료 18×14 소속행렬(1이 89개). 가운데: 투영 후 이진화 — 거의 완전그래프. 오른쪽: 가중치를 살린 뒤 Louvain.

원자료 (The Raw Two-mode Data)

항목
크기n=18n=18명, m=14m=14행사, 1의 개수 89
이분 밀도89/(18×14)=89/252=0.353289/(18\times 14)=89/252=0.3532
여성별 참석 수8, 7, 8, 7, 4, 4, 4, 3, 4, 4, 4, 6, 7, 8, 5, 2, 2, 2
행사별 참석자 수 ckc_k3, 3, 6, 4, 8, 8, 10, 14, 12, 5, 4, 6, 3, 3

그림 24 왼쪽에서 이미 구조가 보인다. 빨간 선 위쪽(W1–W9)은 왼쪽 행사들(E1–E9)에, 아래쪽(W10–W18)은 오른쪽 행사들(E7–E14)에 몰려 있다. 원저가 두 집단으로 나눈 것이 이 패턴이다. 원자료에는 구조가 뚜렷이 남아 있다.

투영하면 무슨 일이 벌어지는가 (What Projection Does to It)

지표
투영 후 간선 수139 / 153가능한 쌍의 90.8%가 이어져 있다
밀도0.9085"거의 모두가 서로 아는 사이"
군집계수0.9284원자료에서는 0이었다(§5)
차수 17인 여성7명W1, W3, W9, W10, W13, W14, W15는 나머지 전원과 이어짐
한 번도 안 겹친 쌍14쌍이 14쌍만이 유일한 정보다

왜 이렇게 됐는가? (ck2)\binom{c_k}{2}를 활동별로 더해 보면 답이 나온다.

k(ck2)=3+3+15+6+28+28+45+91E8+66+10+6+15+3+3=322 \sum_k \binom{c_k}{2} = 3+3+15+6+28+28+45+\underbrace{91}_{E_8}+66+10+6+15+3+3 = 322

그런데 실제 간선은 139개다. 같은 쌍이 평균 322/139=2.32322/139 = 2.32번 중복해서 이어진 셈이다. 특히 E8 한 행사에 14명이 참석했으므로 그것만으로 (142)=91\binom{14}{2}=91개 — 전체 139개 간선의 65.5%를 혼자 만들어 낸다. 실제로 E8을 빼고 투영하면 간선이 139에서 121개로, 밀도가 0.7908로 떨어진다.

이진화가 자료를 죽인다
그림 24 가운데 패널이 결론이다. 원저가 찾아낸 두 집단이 완전히 사라졌다. 투영 자체가 잘못은 아니다. 투영한 뒤 가중치를 버리고 이진화한 것이 잘못이다. 139개 간선 중 진짜 정보를 담은 것은 가중치가 큰 소수인데, 이진화는 7과 1을 같은 값으로 만든다.

가중치를 살리면 (Keeping the Weights)

같은 투영에 가중치를 그대로 두고 단원 3-4의 알고리즘을 돌린다.

방법집단 수QQARI(원저)분할
Louvain20.15190.7772{W1–W7, W9} / {W8, W10–W18}
fast greedy20.15190.7772동일
walktrap20.14720.5815{W1–W7} / {W8–W18}

ARI 0.7772면 원저의 분할을 상당히 잘 복원한 것이다. 갈리는 지점은 W8과 W9 — 원저에서는 둘 다 1집단인데 Louvain은 W8을 2집단으로 보낸다. 실제로 W8은 행사 3개(E6, E8, E9)에만 참석했고 그중 E8, E9는 양쪽 집단이 다 오는 큰 행사다. 소속이 애매한 것은 알고리즘 탓이 아니라 자료가 실제로 애매하기 때문이다. Davis 자료를 다룬 20여 편의 논문이 대부분 W8, W9, W16을 경계 사례로 꼽는다.

Q=0.1519Q=0.1519라는 낮은 값에 주목하라. 3-3에서 배운 대로 QQ는 "무작위 기대보다 얼마나 나은가"인데, 밀도 0.91짜리 네트워크에서는 어떻게 나눠도 무작위 기대와 크게 다를 수 없다. 분할이 옳은데도 QQ가 낮다 — 투영이 만든 인위적 밀도가 QQ의 분모를 부풀렸기 때문이다.

뉴먼 가중을 적용하면 (Applying Newman Weighting)

§13의 공식을 이 자료에 적용하면 가장 가까운 쌍이 바뀐다.

원 가중공유 행사 (인원)뉴먼 전개뉴먼 ww
(W1,W3)7 1위E2(3) E3(6) E4(4) E5(8) E6(8) E8(14) E9(12)12+15+13+17+17+113+111\frac12+\frac15+\frac13+\frac17+\frac17+\frac1{13}+\frac1{11}1.4869 5위
(W13,W14)6E7(10) E9(12) E10(5) E12(6) E13(3) E14(3)19+111+14+15+12+12\frac19+\frac1{11}+\frac14+\frac15+\frac12+\frac121.6520 1위
(W12,W13)6E8(14) E9(12) E10(5) E12(6) E13(3) E14(3)113+111+14+15+12+12\frac1{13}+\frac1{11}+\frac14+\frac15+\frac12+\frac121.6178 2위
(W1,W2)6E1(3) E2(3) E3(6) E5(8) E6(8) E8(14)12+12+15+17+17+113\frac12+\frac12+\frac15+\frac17+\frac17+\frac1{13}1.5626 3위

W1과 W3은 7번이나 같이 있었는데도 1위를 내준다. 함께한 행사가 E8(14명), E9(12명), E5·E6(8명)처럼 크기 때문이다. 반면 W13과 W14는 6번뿐이지만 그중 E13, E14는 3명짜리 작은 모임이라 1/21/2씩 온전히 받는다. "몇 번 마주쳤나"와 "얼마나 사적인 자리에서 마주쳤나"는 다른 질문이다.

두 가중치의 스피어만 순위상관은 0.9422로 전반적으로는 비슷하지만, 바로 그 상위권에서 순서가 갈린다. 그리고 상위권이 곧 분석 결과를 좌우한다.

15. 투영하지 말고 이분 그래프에서 바로 (Skip the Projection Entirely)

§9–§14를 요약하면 "투영은 정보를 잃고 인위적 구조를 더한다"는 것이다. 그렇다면 가장 자연스러운 해법은 투영하지 않는 것이다. BB는 어차피 정사각 인접행렬이므로, 커뮤니티 탐지 알고리즘을 거기에 바로 돌릴 수 있다.

집단여성행사
P1W1 W2 W3 W4 W5 W6E1 E2 E3 E4 E5 E6
P2W7 W9E7
P3W8 W16 W17 W18E9 E11
P4W10 W11 W12 W13 W14 W15E8 E10 E12 E13 E14

결과가 질적으로 다르다.

  • Q=0.3225Q = 0.3225 — 투영 후의 0.1519보다 두 배 이상 높다. 인위적 밀도가 없으니 분모가 부풀지 않았다.
  • 각 집단이 여성과 행사를 함께 담고 있다. "이 사람들이 한 집단"이 아니라 "이 사람들이 이 행사들에 모인다"까지 한 번에 말해 준다. 투영으로는 얻을 수 없는 정보다.
  • 여성 부분만 떼어 원저와 비교하면 ARI 0.4473으로 Louvain-on-투영(0.7772)보다 낮다. 집단을 2개가 아니라 4개로 쪼갰기 때문이다. 이것을 "더 나쁘다"고 읽을 필요는 없다 — 더 잘게 본 것이고, P1과 P2가 원저의 1집단, P3와 P4가 대체로 2집단에 해당한다.
정리 — 언제 투영하고 언제 하지 말아야 하나
상황권고
활동 크기가 고르고 작을 때 (2~4인 모둠)투영해도 무방. 왜곡이 작다
활동 크기가 들쭉날쭉할 때 (2인 짝 + 전교생 행사)반드시 뉴먼 가중. 원 가중은 큰 행사에 지배당한다
양쪽 모드를 다 해석하고 싶을 때투영하지 말고 BB에서 직접 분석
투영 후 이진화거의 항상 나쁜 생각. 임계값을 쓸 거면 근거를 밝힐 것

16. R로 검증 (Verification in R)

먼저 소속행렬을 만들고 두 가지 방법으로 투영한다.

library(igraph)
A <- matrix(c(1,1,0,0,  1,1,0,0,  1,0,1,0,
              0,0,1,0,  0,0,1,1,  0,0,0,1),
            nrow = 6, byrow = TRUE,
            dimnames = list(paste0("S",1:6), paste0("E",1:4)))

## 방법 1 — 행렬 곱으로 직접
R <- A %*% t(A); diag(R) <- 0     # 학생 투영
C <- t(A) %*% A; diag(C) <- 0     # 활동 투영

## 방법 2 — igraph (현대 함수명)
gB <- graph_from_biadjacency_matrix(A)   # 옛 이름: graph.incidence()
is_bipartite(gB)                          # TRUE
V(gB)$type                                # FALSE=학생, TRUE=활동
pr <- bipartite_projection(gB, multiplicity = TRUE)
as_adjacency_matrix(pr[[1]], attr = "weight")   # R 과 일치
as_adjacency_matrix(pr[[2]], attr = "weight")   # C 와 일치

두 방법이 같은지 확인했다 — TRUE. 교재가 쓰는 sna 경로도 같은 결과다.

## 교재 방식 — B를 손으로 조립
n <- nrow(A); m <- ncol(A)
B <- rbind(cbind(matrix(0,n,n), A),
           cbind(t(A), matrix(0,m,m)))
sum(B)/2                       # [1] 10   간선 수 = sum(A)
sum(diag(B %*% B %*% B))       # [1] 0    삼각형 없음 (§5)
all(distances(graph_from_adjacency_matrix(B, mode="undirected"))[1:6,1:6] %% 2 == 0)
                               # [1] TRUE 학생끼리 거리는 모두 짝수

§13의 뉴먼 가중은 tnet에 구현되어 있다. 손 계산과 일치하는지 확인했다.

library(tnet)
New <- matrix(0, 6, 6)
cs  <- colSums(A)
for (i in 1:6) for (j in 1:6) if (i != j) for (k in 1:4)
  if (A[i,k] == 1 && A[j,k] == 1) New[i,j] <- New[i,j] + 1/(cs[k] - 1)
New[1,2]                       # [1] 1.5    = 1/2 + 1  (§13과 일치)

## Davis 자료로 tnet 내장 함수와 대조
data(Davis.Southern.women.2mode)
tn <- projecting_tm(as.tnet(Davis.Southern.women.2mode,
                            type = "binary two-mode tnet"), method = "Newman")
                               # 손 계산과 전부 일치 (TRUE)
함수 이름이 바뀌었다 — 2010년 교재의 graph.incidence()는 igraph 2.x에서 graph_from_biadjacency_matrix()로, get.incidence()as_biadjacency_matrix()로 바뀌었다. "incidence"라는 말이 그래프 이론에서는 정점–간선 행렬을 뜻해 혼동을 주기 때문이다. 옛 이름도 아직 동작하지만 경고가 뜬다.

17. 교실 적용 (Classroom Application)

① 설문 없이 관계망 그리기
교우관계 설문은 부담이 크고(누구를 적을지 고민하게 만들고) 자주 못 한다. 그러나 모둠 편성표, 동아리 명단, 방과후 신청 현황은 이미 다 있다. 이것들을 소속행렬로 만들면 설문 없이 학기 중 아무 때나 관계망을 볼 수 있다.
다만 그 망이 재는 것은 친밀도가 아니라 "마주칠 기회"다. "이 학생들은 친하다"가 아니라 "이 학생들은 친해질 조건에 놓여 있었다"라고 읽어야 한다.
② 활동 투영으로 시간표와 업무 짜기
C[k,l]C[k,l]은 두 활동에 겹쳐 있는 학생 수다. 이 값이 0인 활동끼리는 같은 시간에 배치해도 아무도 둘 중 하나를 포기하지 않아도 된다. 큰 값을 갖는 활동끼리는 반드시 시간을 분리해야 한다.
같은 계산이 교사 업무 분장에도 그대로 쓰인다. 위원회 × 교사 소속행렬을 만들면, 활동 투영은 "어느 위원회끼리 사람이 겹쳐 회의 일정이 충돌하는가"를, 학생(교사) 투영은 "누가 여러 위원회에 걸쳐 과부하인가"를 보여 준다.
③ "학급 전체" 항목을 넣지 말 것 — 넣는다면 뉴먼 가중
소속행렬에 "우리 반", "전교생 체육대회", "학년 전체 봉사" 같은 항목을 무심코 넣으면 그 한 줄이 (252)=300\binom{25}{2}=300개 간선을 만들어 나머지 모든 정보를 덮어 버린다. Davis 자료에서 E8 하나가 간선의 65%를 만들어 낸 것과 같은 일이다(§14). 넣어야 한다면 반드시 뉴먼 가중을 쓰고, 그 항목의 기여가 1/241/24로 줄었음을 확인하라.
④ 소외 학생 찾기 — 그리고 그 한계
투영에서 고립된 학생은 어떤 활동도 남과 공유하지 않은 학생이다. 소속행렬의 행합 ri=0r_i=0이면 아예 어디에도 속하지 않은 학생이므로 즉시 눈에 띈다.
그러나 반대는 성립하지 않는다. 투영에서 연결이 많다고 친구가 많은 것이 아니고, 투영에서 고립되었다고 친구가 없는 것도 아니다. 쉬는 시간의 관계는 어떤 명단에도 적혀 있지 않다. 이분 자료는 "기회의 지도"이지 "관계의 지도"가 아니다.
⑤ 두 자료를 겹쳐 읽기 — 3-8로 가는 다리
가장 강력한 사용법은 투영 망과 실제 교우관계 설문을 겹치는 것이다.
· 투영에는 연결이 있는데 설문에는 없다 → 같은 모둠인데 서로 안 친하다. 모둠 갈등 신호.
· 설문에는 있는데 투영에는 없다 → 학교 활동 밖에서 맺어진 관계. 학원, 동네, 형제 관계.
· 양쪽 다 없는 학생 → 우선 살펴야 할 학생.
"차이"가 나는 칸이 가장 많은 것을 말해 준다.

18. 연습문제 (Exercises)

문제 1 — 학급 전체 활동이 섞인 소속행렬 (§13, §10 적용)

5명(T1–T5)과 활동 3개다. E1은 학급 전체가 하는 봉사활동이고, E2와 E3은 2인 짝 활동이다.
TTE1 (전체봉사)E2 (바둑)E3 (로봇)
T1110
T2110
T3101
T4101
T5100
(a) 이분 밀도를 구하라.
(b) 학생 투영 R=TTTR = TT^{\mathsf T}10쌍을 전부 전개하라. 각 쌍마다 어느 활동에서 곱이 1이 되는지 밝힐 것.
(c) 이진화한 투영의 밀도는 얼마인가? 이 값을 "이 학급은 밀도 1.0인 아주 화목한 반"이라고 읽으면 왜 안 되는가?
(d) 활동 투영 C=TTTC = T^{\mathsf T}T의 3쌍을 구하라.
(e) 뉴먼 가중 투영을 계산하라. 원 가중치와 비교해 무엇이 달라졌는가?

§19 해설 — 먼저 풀고 맞춰 볼 것.
문제 2 — 투영의 역문제 (§9 적용)

학생 4명(U1–U4)의 투영 RR이 다음과 같다고 하자. 모든 쌍이 가중치 1로 이어져 있다(완전그래프).
RRU1U2U3U4
U10111
U21011
U31101
U41110
(a) 이 투영을 만들어 내는 소속행렬을 서로 다르게 두 개 제시하라.
(b) 두 경우에서 각 학생의 이분 차수(참여한 활동 수)는 각각 얼마인가?
(c) 이 투영을 만들 수 있는 최소 활동 수는 몇 개인가?
(d) 두 경우의 뉴먼 가중치는 각각 얼마인가? 뉴먼 가중은 (a)의 두 경우를 구별할 수 있는가?

§19 해설 — 먼저 풀고 맞춰 볼 것.

19. 해설과 답 (Solutions)

문제 1 (a) — 이분 밀도 (Solution 1a — Two-mode Density)

행합은 2, 2, 2, 2, 1이고 열합은 5, 2, 2다. 검산: 2+2+2+2+1=9=5+2+22+2+2+2+1 = 9 = 5+2+2

Δ=Tnm=95×3=915=0.6 \Delta = \frac{\sum T}{n\,m} = \frac{9}{5\times 3} = \frac{9}{15} = 0.6
답 (a) 이분 밀도 =9/15=0.6= 9/15 = 0.6. 가능한 소속 15칸 중 9칸이 채워져 있다.

문제 1 (b) — 학생 투영 10쌍 (Solution 1b — All 10 Pairs)

세 항을 전부 쓴다. 곱하는 것은 TTii행과 jj이다.

k=1k=1 (E1)k=2k=2 (E2)k=3k=3 (E3)왜 그 값인가
(T1,T2)11=11\cdot1=111=11\cdot1=100=00\cdot0=02전체봉사 + 바둑을 함께
(T1,T3)11=11\cdot1=110=01\cdot0=001=00\cdot1=01전체봉사에서만 겹침
(T1,T4)11=11\cdot1=110=01\cdot0=001=00\cdot1=01전체봉사에서만 겹침
(T1,T5)11=11\cdot1=110=01\cdot0=000=00\cdot0=01전체봉사에서만 겹침
(T2,T3)11=11\cdot1=110=01\cdot0=001=00\cdot1=01전체봉사에서만 겹침
(T2,T4)11=11\cdot1=110=01\cdot0=001=00\cdot1=01전체봉사에서만 겹침
(T2,T5)11=11\cdot1=110=01\cdot0=000=00\cdot0=01전체봉사에서만 겹침
(T3,T4)11=11\cdot1=100=00\cdot0=011=11\cdot1=12전체봉사 + 로봇을 함께
(T3,T5)11=11\cdot1=100=00\cdot0=010=01\cdot0=01전체봉사에서만 겹침
(T4,T5)11=11\cdot1=100=00\cdot0=010=01\cdot0=01전체봉사에서만 겹침
답 (b) R=(0211120111110211120111110) R = \begin{pmatrix} 0&2&1&1&1\\ 2&0&1&1&1\\ 1&1&0&2&1\\ 1&1&2&0&1\\ 1&1&1&1&0 \end{pmatrix} 가중치 2인 쌍은 (T1,T2)와 (T3,T4) 둘뿐이고 나머지 8쌍은 전부 1이다. 그리고 그 8개의 1은 전부 E1 하나에서 나왔다.

문제 1 (c) — 밀도 1.0을 어떻게 읽을 것인가 (Solution 1c — Reading a Density of 1.0)

10쌍 모두 R[i,j]1R[i,j]\ge 1이므로 이진화하면 간선 10개, 즉 K5K_5 완전그래프다.

밀도=10(52)=1010=1.0 \text{밀도} = \frac{10}{\binom{5}{2}} = \frac{10}{10} = 1.0
답 (c) 이진화 투영의 밀도는 1.0. 그러나 이렇게 읽으면 안 된다.

이 1.0은 E1 하나가 만들어 낸 것이다. E1에 5명 전원이 있으므로 그것만으로 (52)=10\binom{5}{2}=10개, 곧 가능한 모든 간선이 생긴다. E2와 E3이 아예 없었어도 밀도는 똑같이 1.0이 나온다.

바꿔 말하면 이 자료에는 밀도로 잴 정보가 없다. 이분 밀도는 0.6인데 투영 밀도가 1.0인 것은 "관계가 촘촘하다"가 아니라 "모두를 포함하는 항목이 하나 있다"는 뜻일 뿐이다. §10에서 본 (ck2)\binom{c_k}{2} 문제의 극단적인 형태다.

문제 1 (d) — 활동 투영 (Solution 1d — The Event Projection)

T1T2T3T4T5겹치는 학생
(E1,E2)11=11\cdot1=111=11\cdot1=110=01\cdot0=010=01\cdot0=010=01\cdot0=02T1, T2
(E1,E3)10=01\cdot0=010=01\cdot0=011=11\cdot1=111=11\cdot1=110=01\cdot0=02T3, T4
(E2,E3)10=01\cdot0=010=01\cdot0=001=00\cdot1=001=00\cdot1=000=00\cdot0=00없음
답 (d) C[E1,E2]=2C[E1,E2]=2, C[E1,E3]=2C[E1,E3]=2, C[E2,E3]=0C[E2,E3]=0.

활동 투영은 학생 투영보다 훨씬 정직하다. 바둑부와 로봇부가 완전히 남남이라는 사실이 그대로 드러난다. 학생 투영에서는 T1–T3, T1–T4처럼 두 부를 가로지르는 간선이 잔뜩 생겼지만, 그것은 전부 E1 때문이었다.
교실 해석 — 시간표를 짤 때 E2(바둑)와 E3(로봇)은 C=0C=0이므로 같은 요일 같은 시간에 배치해도 된다. 아무도 둘 중 하나를 포기하지 않는다.

문제 1 (e) — 뉴먼 가중 (Solution 1e — Newman Weighting)

활동 크기는 c=(5,2,2)c = (5, 2, 2)이므로 쌍당 기여는

1c11=14=0.25,1c21=11=1,1c31=11=1 \frac{1}{c_1-1}=\frac{1}{4}=0.25, \qquad \frac{1}{c_2-1}=\frac{1}{1}=1, \qquad \frac{1}{c_3-1}=\frac{1}{1}=1
공유 활동전개뉴먼 ww원 가중 RR
(T1,T2)E1(5명), E2(2명)14+1\frac14 + 11.252
(T3,T4)E1(5명), E3(2명)14+1\frac14 + 11.252
(T1,T3)E1(5명)14\frac140.251
(T1,T4)E1(5명)14\frac140.251
(T1,T5)E1(5명)14\frac140.251
(T2,T3)E1(5명)14\frac140.251
(T2,T4)E1(5명)14\frac140.251
(T2,T5)E1(5명)14\frac140.251
(T3,T5)E1(5명)14\frac140.251
(T4,T5)E1(5명)14\frac140.251
답 (e) 뉴먼 가중치는 (T1,T2)와 (T3,T4)가 1.25, 나머지 8쌍이 전부 0.25다.

결정적으로 달라진 것은 대비(contrast)다.
· 원 가중치: 2 대 1 → 2배 차이
· 뉴먼 가중치: 1.25 대 0.25 → 5배 차이

학급 전체 활동 E1의 기여가 1에서 0.25로 눌리면서, 짝 활동에서 맺어진 두 쌍이 확실하게 도드라진다. 원 가중치로 만든 그림에서는 "가중치 2인 간선 2개, 1인 간선 8개"라 차이가 묻히지만, 뉴먼으로는 두 쌍만 굵게 남고 나머지는 배경으로 물러난다.
교실 해석 — 이것이 §17 ③의 요지다. 소속행렬에 "학급 전체" 항목을 넣으면 원 가중 투영에서는 모든 학생이 서로 이어져 아무것도 안 보인다. 뉴먼 가중을 쓰면 같은 자료에서 "T1–T2, T3–T4가 실제로 함께 활동한 짝"이라는 쓸 만한 결론이 나온다. 자료를 바꾼 것이 아니라 세는 법을 바꿨을 뿐이다.

문제 2 (a)(b) — 두 개의 서로 다른 소속행렬 (Solution 2ab — Two Different Incidence Matrices)

가장 단순한 두 가지는 §9의 3인 예제를 4인으로 늘린 것이다.

(가) 4인 활동 F 하나F(나) 2인 활동 6개G1G2G3G4G5G6
U11U1111000
U21U2100110
U31U3010101
U41U4001011

(나)의 여섯 활동은 (42)=6\binom{4}{2}=6개 쌍 각각에 하나씩 대응한다: G1={U1,U2}, G2={U1,U3}, G3={U1,U4}, G4={U2,U3}, G5={U2,U4}, G6={U3,U4}.

확인해 보자. (가)에서 R[1,2]R[1,2]는 항이 하나뿐이라 11=11\cdot 1 = 1. (나)에서 R[1,2]R[1,2]는 여섯 항을 전부 쓰면

R[1,2]=11G1+10G2+10G3+01G4+01G5+00G6=1+0+0+0+0+0=1 R[1,2] = \underbrace{1\cdot 1}_{G_1} + \underbrace{1\cdot 0}_{G_2} + \underbrace{1\cdot 0}_{G_3} + \underbrace{0\cdot 1}_{G_4} + \underbrace{0\cdot 1}_{G_5} + \underbrace{0\cdot 0}_{G_6} = 1+0+0+0+0+0 = 1

나머지 5쌍도 같은 방식으로 정확히 1이 된다. 각 쌍마다 딱 하나의 활동에서만 곱이 1이기 때문이다.

답 (a)(b) (가)는 4명 전원이 모인 활동 하나, (나)는 2인짜리 활동 6개. 두 투영은 완전히 같다.

이분 차수는 전혀 다르다.
· (가): 네 명 모두 1 (활동 하나에만 참여). 이분 간선 총 4개.
· (나): 네 명 모두 3 (자기가 낀 쌍이 3개). 이분 간선 총 12개.

투영에는 이 차이가 흔적조차 남지 않는다. §9에서 본 정보 손실이다.

문제 2 (c) — 최소 활동 수 (Solution 2c — The Minimum Number of Events)

답 (c) 1개다.

활동 하나에 cc명이 있으면 그 cc명 전원이 서로 이어진다(§10). 따라서 4명 전원이 든 활동 하나면 완전그래프 K4K_4가 그대로 나온다. 활동 0개로는 간선이 하나도 안 생기므로 1개가 최소다.

일반화하면: 투영에서 클리크로 보이는 것은 언제나 "활동 하나"로 설명될 수 있다. 그래서 투영 네트워크에서 클리크를 찾아내고 "긴밀한 하위집단을 발견했다"고 말하는 것은 위험하다 — 단원 3-1에서 배운 클리크 탐색을 투영 네트워크에 그대로 적용하면 안 되는 이유다.

문제 2 (d) — 뉴먼 가중은 둘을 구별하는가 (Solution 2d — Can Newman Weighting Tell Them Apart?)

(가)는 활동 크기 c=4c=4이므로 쌍당 기여가 141=13\dfrac{1}{4-1}=\dfrac13. (나)는 모든 활동이 c=2c=2이므로 121=1\dfrac{1}{2-1}=1.

경우활동 크기전개뉴먼 ww원 가중 RR
(가) 4인 활동 1개c=4c=4141\frac{1}{4-1}0.33331
(나) 2인 활동 6개c=2c=2121\frac{1}{2-1}1.01
답 (d) (가)는 모든 쌍이 1/3 ≈ 0.3333, (나)는 모든 쌍이 1.0. 뉴먼 가중은 두 경우를 구별한다. 원 가중치로는 둘 다 1로 똑같았다.

왜 구별할 수 있는가? 뉴먼 가중치는 공식 안에 ckc_k, 즉 활동의 크기를 넣어 계산하기 때문이다. §9에서 "투영이 잃는 것은 몇 명이 모인 자리였는가"라고 했는데, 뉴먼 가중은 바로 그 정보를 투영값 속에 다시 집어넣는다.

다만 완전히 복원하지는 못한다. 뉴먼 가중은 여전히 n×nn\times n 행렬이고, "어느 학생들이 같은 자리에 있었는가"라는 집합 정보는 되살릴 수 없다. 값 하나로 압축된 요약일 뿐이다. 원자료가 필요하면 BB를 그대로 분석해야 한다(§15).
교실 해석 — 3인 모둠에서 만난 관계와 25인 학급 활동에서 만난 관계를 같은 무게로 세면 안 된다는 것이 이 문제의 요지다. 뉴먼 가중은 그 차이를 1/21/21/241/24, 즉 12배로 반영한다.

다음 단원 — 3-7 동질성(homophily)과 E-I 지수. 지금까지는 "누가 누구와 이어져 있는가"라는 구조만 봤다. 이제 정점에 속성(성별, 성적 수준, 출신 학교, 관심사)을 붙이고 묻는다: 비슷한 사람끼리 뭉치는가? E-I 지수 한 줄로 "우리 반은 남녀가 갈라져 있는가"에 수치로 답하는 법을 손 계산으로 배운다.