구조적 등위성과 블록모델링
SNA 이론 · 단계별 학습 차례

단원 3-5Structural Equivalence and Blockmodeling

구조적 등위성과 블록모델링

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

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

단원 3-4에서 아령 그래프 HH(삼각형 A와 삼각형 B를 다리 A1–B1로 이은 6명 7간선)에 Girvan–Newman과 fast greedy를 각각 돌려 보라고 했다. 답을 짚고 넘어간다.

문제 1 — Girvan–Newman (Solution 1 — Girvan–Newman)

간선매개 중심성 CB(e)C_B(e)왜 그 값인가
A1–B19A쪽 3명 × B쪽 3명 = 9쌍이 전부 여기를 지난다
A1–A24(A1,A2) 1 + (A2,B1) (A2,B2) (A2,B3) 3 = 4
A1–A34대칭
B1–B24대칭
B1–B34대칭
A2–A31(A2,A3) 자기 쌍 하나뿐
B2–B31대칭
27모든 쌍의 거리 합과 일치

검산: eCB(e)=s<td(s,t)\sum_e C_B(e)=\sum_{s<t} d(s,t). 15쌍의 거리는 1이 7쌍, 2가 4쌍, 3이 4쌍이므로 71+42+43=7+8+12=277\cdot1+4\cdot2+4\cdot3=7+8+12=27. 맞다.

GN이 첫 번째로 제거하는 간선은 A1–B1(9로 최대)이고, 그 순간 Q=5/140.3571Q=5/14\approx 0.3571. 두 번째부터는 남은 6개 간선이 전부 매개 1로 동점이라 아무거나 잘리고, QQ는 내려간다.

문제 2 — fast greedy (Solution 2 — Fast Greedy)

ΔQ=28mAB2DADB196\Delta Q=\dfrac{28\,m_{AB}-2D_AD_B}{196}에 전원 단독 상태의 값을 넣으면:

mABm_{AB}DA,DBD_A,D_BΔQ\Delta Q비고
A2–A312, 2(288)/196=20/196(28-8)/196=20/196최대
B2–B312, 220/19620/196최대(동점)
A1–A2, A1–A313, 2(2812)/196=16/196(28-12)/196=16/196
B1–B2, B1–B313, 216/19616/196
A1–B113, 3(2818)/196=10/196(28-18)/196=10/196간선 있는 쌍 중 꼴찌
간선 없는 8쌍0모두 음수2DADB/196-2D_AD_B/196

다리 A1–B1이 꼴찌인 이유는 공식이 그대로 말해 준다. 분자의 벌점 2DADB2D_AD_B두 끝점의 차수를 곱한 값인데, 다리의 양 끝은 이 그래프에서 가장 차수가 큰 두 명(3, 3)이다. 잇는 간선 수는 똑같이 1개인데 벌점만 18로 가장 크다. 최종 Q=5/14Q=5/14로 GN과 같은 답에 도달한다.

두 알고리즘의 대비 — 같은 간선, 반대쪽 끝. GN은 다리 A1–B1을 맨 처음 잘랐고, fast greedy는 그 간선을 맨 마지막까지 안 붙였다. "가장 사이에 낀 간선"과 "가장 이득이 적은 병합"이 같은 간선이었던 것이다.
그런데 두 알고리즘 모두 같은 종류의 질문을 던졌다. "누구와 누구를 한 덩어리로 묶을까?" 오늘은 완전히 다른 질문을 던진다.

2. 오늘의 질문: 간선이 없는데 거리가 0이라니 (A Distance of Zero Without a Tie)

단원 3-4의 walktrap 절에서 이런 값을 봤다. 우리 학급 네트워크 WW에서

r(S1,S2)=0 r(S_1,S_2) = 0

walktrap의 무작위 걷기 거리가 정확히 0이었다. 그런데 WW를 다시 보면 A[1,2]=0A[1,2]=0S1과 S2는 서로 친구가 아니다. 한 번도 이어져 있지 않은 두 사람의 거리가 왜 0인가?

S1S2S3S4S5S6S7S8이웃 목록
S100111000{S3, S4, S5}
S200111000{S3, S4, S5}
S311001000{S1, S2, S5}
S411001000{S1, S2, S5}
S511110100{S1, S2, S3, S4, S6}
S600001011{S5, S7, S8}
S700000101{S6, S8}
S800000110{S6, S7}

S1의 행과 S2의 행이 여덟 칸 모두 글자 하나 다르지 않다. 두 사람은 서로를 모르지만 아는 사람의 명단이 완전히 같다.

오늘의 개념. "같이 노는가"가 아니라 "같은 자리에 있는가"를 묻는 것. 이것이 구조적 등위성(structural equivalence)이고, 등위인 사람끼리 묶은 덩어리를 커뮤니티가 아니라 위치(position)라고 부른다.
같은 네트워크 W를 커뮤니티로 나눈 그림과 등위 위치로 나눈 그림
같은 네트워크, 다른 질문. 왼쪽은 단원 3-4의 커뮤니티 2개, 오른쪽은 오늘의 위치 5개. 오른쪽에서 S1과 S2는 같은 색인데 둘 사이에 선이 없다.

3. 구조적 등위성의 정의 (Defining Structural Equivalence)

정점 iijj구조적으로 등위라는 것은, 두 사람이 나머지 모든 사람에 대해 똑같은 관계를 갖는다는 뜻이다. 무방향 네트워크에서는:

ij    A[i,k]=A[j,k]모든 k에 대해 i \equiv j \iff A[i,k] = A[j,k] \quad \text{모든 } k \text{에 대해}

방향 네트워크라면 보내는 쪽과 받는 쪽을 둘 다 봐야 한다:

ij    A[i,k]=A[j,k]  그리고  A[k,i]=A[k,j]모든 k i \equiv j \iff A[i,k]=A[j,k] \ \text{ 그리고 } \ A[k,i]=A[k,j] \quad \text{모든 } k

행렬로 말하면 ii행과 jj행이 같고, ii열과 jj열이 같다는 것이다. ii행은 ii가 누구에게 보내는지, ii열은 ii가 누구에게 받는지를 담고 있으니, 등위란 보내는 명단도 같고 받는 명단도 같다는 말이다.

이것은 "친함"과 아무 상관이 없다. 정의 어디에도 A[i,j]A[i,j]가 등장하지 않는다. 등위인 두 사람이 서로 친구일 수도 있고 아닐 수도 있다. 바로 이 지점이 다음 절의 미묘한 문제로 이어진다.

4. W에서 손으로 찾기 — 28쌍 전부 (Finding It by Hand in W: All 28 Pairs)

8명이니 쌍은 (82)=28\binom{8}{2}=28개. 이웃 목록만 놓고 전부 대조한다.

정점이웃 목록차수
S1{S3, S4, S5}3
S2{S3, S4, S5}3
S3{S1, S2, S5}3
S4{S1, S2, S5}3
S5{S1, S2, S3, S4, S6}5
S6{S5, S7, S8}3
S7{S6, S8}2
S8{S6, S7}2

이웃 목록이 글자 그대로 같은 쌍을 찾으면 두 쌍이 바로 보인다.

(S1, S2) — 둘 다 {S3, S4, S5}. 완전히 같다. 등위
(S3, S4) — 둘 다 {S1, S2, S5}. 완전히 같다. 등위

나머지 쌍은 왜 아닌지 한 번씩 짚어 둔다. 차수부터 다르면 볼 것도 없다:

이웃 목록 비교판정
(S1, S3){S3,S4,S5} vs {S1,S2,S5} — S5만 겹친다아님
(S1, S5)차수 3 vs 5 — 애초에 개수가 다르다아님
(S1, S6){S3,S4,S5} vs {S5,S7,S8} — S5만 겹친다아님
(S3, S6){S1,S2,S5} vs {S5,S7,S8} — S5만 겹친다아님
(S5, S6)차수 5 vs 3, 게다가 서로 이어져 있다아님
(S6, S7){S5,S7,S8} vs {S6,S8} — 차수 3 vs 2아님
(S7, S8){S6,S8} vs {S6,S7} — 겹치는 건 S6뿐인데…보류

(S7, S8)이 걸린다. 두 사람의 이웃 목록은 정확히 한 글자만 다르고, 그 다른 글자가 하필 서로의 이름이다. 이건 별도로 다룬다.

5. 두 가지 관례 — 서로 아는 쌍둥이 문제 (Two Conventions: The True-Twin Problem)

S7과 S8을 나란히 놓아 보자.

kkS1S2S3S4S5S6S7S8
A[7,k]A[7,k]00000101
A[8,k]A[8,k]00000110
같은가?

여섯 칸은 같고 딱 두 칸이 다르다. 그런데 그 두 칸은 7열과 8열, 즉 두 사람 자신의 자리다. S7이 S8과 친구이고 S8이 S7과 친구인 것 — 사실 이건 "이웃이 다르다"기보다 "서로 친구다"라는 말에 가깝다.

그래서 두 가지 관례가 있다.

엄격 관례 (strict)완화 관례 (relaxed)
비교하는 열모든 kkki,jk \neq i, j — 두 사람 자신의 열은 뺀다
(S1, S2)등위등위
(S3, S4)등위등위
(S7, S8)등위 아님등위

차이가 나는 자리는 오직 A[i,j]A[i,j]A[i,i]A[i,i] 두 종류뿐이다. 자기 고리가 없는 네트워크에서 A[i,i]=A[j,j]=0A[i,i]=A[j,j]=0이므로, 두 관례가 갈리는 것은 A[i,j]=1A[i,j]=1일 때, 즉 두 사람이 서로 친구일 때뿐이다.

쌍둥이의 두 종류.
서로 모르는 쌍둥이 (S1, S2) — 이웃이 같고 서로 안 친하다. 두 관례 모두 등위. (false twins)
서로 아는 쌍둥이 (S7, S8) — 이웃이 같고 서로 친하다. 완화 관례에서만 등위. (true twins)
R의 sna::sedist()equiv.clust()는 완화 관례를 쓴다. ii열과 jj열을 빼고 비교한다. 앞으로 이 노트의 거리 DD는 전부 완화 관례다. 손으로 셀 때 "두 사람 자신의 열은 뺀다"를 잊으면 R과 값이 안 맞는다.

6. 거리로 재기 — 해밍 거리 (Measuring by Hamming Distance)

실제 데이터에서 완전히 등위인 쌍은 거의 없다. 그래서 "얼마나 등위에 가까운가"를 재는 자가 필요하다. 가장 단순한 자가 해밍 거리다.

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]\,\}

말로 하면 "두 사람의 이웃 명단에서 서로 어긋나는 이름이 몇 개인가"이다. 0이면 완전 등위, 클수록 다른 자리에 있다.

손 계산 — (S1, S3) (Hand Calculation: S1 and S3)

1열과 3열을 빼고 나머지 여섯 열을 하나씩 대조한다. 같은 칸도 빠짐없이 적는다.

kkA[1,k]A[1,k]A[3,k]A[3,k]다른가?왜 그 값인가
S201✗ 1S3은 S2와 친구, S1은 아니다
S410✗ 1S1은 S4와 친구, S3은 아니다
S511✓ 0둘 다 S5와 친구
S600✓ 0둘 다 S6과 남남
S700✓ 0둘 다 S7과 남남
S800✓ 0둘 다 S8과 남남
21열·3열은 제외했다
D(S1,S3)=1+1+0+0+0+0=2 D(S_1,S_3) = 1+1+0+0+0+0 = 2

손 계산 — (S5, S6) (Hand Calculation: S5 and S6)

이 쌍이 WW에서 가장 먼 쌍 중 하나다. 5열과 6열을 빼고 여섯 열을 본다.

kkA[5,k]A[5,k]A[6,k]A[6,k]다른가?왜 그 값인가
S110✗ 1S5는 S1과 친구, S6은 아니다
S210✗ 1S5는 S2와 친구, S6은 아니다
S310✗ 1S5는 S3과 친구, S6은 아니다
S410✗ 1S5는 S4와 친구, S6은 아니다
S701✗ 1S6은 S7과 친구, S5는 아니다
S801✗ 1S6은 S8과 친구, S5는 아니다
6여섯 열이 전부 어긋난다

D(S5,S6)=6D(S_5,S_6)=6여섯 칸 중 여섯 칸이 다르다. 남은 모든 사람에 대해 두 사람의 태도가 정반대다. 그런데 이 두 사람은 서로 친구다(A[5,6]=1A[5,6]=1). 친하지만 자리가 정반대인 사이 — 다리를 놓는 두 사람의 전형적인 모습이다.

28쌍 전부 (All 28 Pairs)

DD어긋나는 열DD어긋나는 열
(S1,S2)0없음(S2,S8)5S3, S4, S5, S6, S7
(S1,S3)2S2, S4(S3,S4)0없음
(S1,S4)2S2, S3(S3,S5)2S4, S6
(S1,S5)2S2, S6(S3,S6)4S1, S2, S7, S8
(S1,S6)4S3, S4, S7, S8(S3,S7)5S1, S2, S5, S6, S8
(S1,S7)5S3, S4, S5, S6, S8(S3,S8)5S1, S2, S5, S6, S7
(S1,S8)5S3, S4, S5, S6, S7(S4,S5)2S3, S6
(S2,S3)2S1, S4(S4,S6)4S1, S2, S7, S8
(S2,S4)2S1, S3(S4,S7)5S1, S2, S5, S6, S8
(S2,S5)2S1, S6(S4,S8)5S1, S2, S5, S6, S7
(S2,S6)4S3, S4, S7, S8(S5,S6)6S1, S2, S3, S4, S7, S8
(S2,S7)5S3, S4, S5, S6, S8(S5,S7)5S1, S2, S3, S4, S8
(S6,S7)1S5(S5,S8)5S1, S2, S3, S4, S7
(S6,S8)1S5(S7,S8)0없음

거리 행렬로 정리하면:

     S1 S2 S3 S4 S5 S6 S7 S8
S1    0  0  2  2  2  4  5  5
S2    0  0  2  2  2  4  5  5
S3    2  2  0  0  2  4  5  5
S4    2  2  0  0  2  4  5  5
S5    2  2  2  2  0  6  5  5
S6    4  4  4  4  6  0  1  1
S7    5  5  5  5  5  1  0  0
S8    5  5  5  5  5  1  0  0
0인 쌍이 세 개. (S1,S2), (S3,S4), (S7,S8). 28쌍 중 3쌍이 완전 등위다.
가장 먼 쌍은 (S5,S6)의 6. 서로 친구인데도 자리는 정반대.
(S6,S7)과 (S6,S8)이 1. 딱 S5 한 칸만 다르다 — S6은 S5와 이어져 있고 S7·S8은 아니다. S6이 "S7·S8과 거의 같은 자리인데 바깥으로 통하는 문 하나를 더 가진 사람"임을 숫자가 말해 준다.

유클리드 거리 (Euclidean Distance)

교재는 유클리드 거리도 쓴다. 0과 1로만 된 데이터에서는 둘의 관계가 아주 단순하다.

dE(i,j)=k(A[i,k]A[j,k])2 d_E(i,j) = \sqrt{\sum_k \big(A[i,k]-A[j,k]\big)^2}

A[i,k]A[j,k]A[i,k]-A[j,k]는 −1, 0, 1 셋 중 하나뿐이고 제곱하면 1, 0, 1이 된다. 즉 제곱합이 곧 어긋난 칸의 개수다. 따라서 이진 데이터에서는

dE(i,j)=D해밍(i,j) d_E(i,j) = \sqrt{D_{\text{해밍}}(i,j)}

예: D(S1,S3)=2D(S_1,S_3)=2일 때 dE=21.4142d_E=\sqrt{2}\approx 1.4142. 순서(누가 더 가까운가)는 어차피 같으므로, 손으로 볼 때는 해밍 쪽이 훨씬 읽기 좋다.

7. R의 sedist는 왜 값이 두 배인가 (Why sedist Doubles Everything)

교재 코드대로 sedist(W, method="hamming")를 돌리면 우리가 손으로 구한 값의 정확히 두 배가 나온다. D(S1,S3)=2D(S_1,S_3)=2인데 R은 4를 찍는다. 왜 그럴까?

sedist는 방향 네트워크를 기본으로 만들어졌다. §3에서 봤듯 방향 네트워크의 등위는 행(보내기)과 열(받기)을 둘 다 봐야 한다. 그래서 sedist는 각 정점의 프로필을 이렇게 이어 붙인다:

프로필(i)  =  (A[i,k]보내기, A[k,i]받기)ki,j \text{프로필}(i) \;=\; \big(\underbrace{A[i,k]}_{\text{보내기}},\ \underbrace{A[k,i]}_{\text{받기}}\big)_{k \neq i,j}

그런데 무방향 네트워크에서는 AA가 대칭이라 A[i,k]=A[k,i]A[i,k]=A[k,i]다. 보내기 프로필과 받기 프로필이 똑같은 벡터다. 같은 벡터를 두 번 이어 붙였으니 어긋나는 칸도 정확히 두 번 세어진다.

sedist(i,j)  =  D(i,j)행 비교+D(i,j)열 비교  =  2D(i,j) \texttt{sedist}(i,j) \;=\; \underbrace{D(i,j)}_{\text{행 비교}} + \underbrace{D(i,j)}_{\text{열 비교}} \;=\; 2\,D(i,j)
> all(D == sedist(W, method='hamming') / 2)
[1] TRUE
실무 지침. 무방향 네트워크에 sedist(..., "hamming")을 쓰면 2로 나눠야 손 계산과 맞는다. 유클리드는 2\sqrt{2}배가 된다 (2D=2D\sqrt{2D}=\sqrt2\cdot\sqrt D). 다행히 순서는 바뀌지 않으므로 군집화 결과는 똑같다. 다만 blockmodel(..., h=?)에 자를 높이를 넣을 때는 R의 눈금(두 배)으로 넣어야 한다 — 이게 §9에서 바로 걸린다.

8. 상관으로 재기 (Measuring by Correlation)

해밍은 "몇 칸 다른가"만 센다. 그런데 차수가 크게 다른 두 사람은 겹치는 이웃이 많아도 해밍이 커진다. 이걸 보정하려고 피어슨 상관을 쓰기도 한다.

r(i,j)  =  k(xkxˉ)(ykyˉ)k(xkxˉ)2 k(ykyˉ)2,x=A[i,], y=A[j,] r(i,j) \;=\; \frac{\sum_k (x_k-\bar{x})(y_k-\bar{y})}{\sqrt{\sum_k (x_k-\bar x)^2}\ \sqrt{\sum_k (y_k-\bar y)^2}}, \qquad x = A[i,\cdot],\ y = A[j,\cdot]

해밍과 달리 클수록 비슷하다(거리가 아니라 유사도다). 1이면 완전 등위, −1이면 정반대.

손 계산 — r(S1,S3)r(S_1,S_3) (Hand Calculation)

1열·3열을 빼면 남는 열은 (S2, S4, S5, S6, S7, S8) 여섯 개.

x=(0,1,1,0,0,0),y=(1,0,1,0,0,0) x = (0,\,1,\,1,\,0,\,0,\,0), \qquad y = (1,\,0,\,1,\,0,\,0,\,0)

평균은 둘 다 xˉ=yˉ=2/6=1/3\bar x = \bar y = 2/6 = 1/3. 편차를 전부 적는다.

xkx_kyky_kxkxˉx_k-\bar xykyˉy_k-\bar y(xkxˉ)2(x_k-\bar x)^2(ykyˉ)2(y_k-\bar y)^2
S2011/3-1/3+2/3+2/32/9-2/91/91/94/94/9
S410+2/3+2/31/3-1/32/9-2/94/94/91/91/9
S511+2/3+2/3+2/3+2/3+4/9+4/94/94/94/94/9
S6001/3-1/31/3-1/3+1/9+1/91/91/91/91/9
S7001/3-1/31/3-1/3+1/9+1/91/91/91/91/9
S8001/3-1/31/3-1/3+1/9+1/91/91/91/91/9
3/9=1/33/9=1/312/9=4/312/9=4/312/9=4/312/9=4/3
r(S1,S3)  =  1/34/34/3  =  1/34/3  =  14  =  0.25 r(S_1,S_3) \;=\; \frac{1/3}{\sqrt{4/3}\cdot\sqrt{4/3}} \;=\; \frac{1/3}{4/3} \;=\; \frac{1}{4} \;=\; 0.25

재미있는 점: S6, S7, S8 세 칸은 둘 다 0인데도 곱이 +1/9+1/9양수 기여를 한다. "둘 다 저 사람들과는 안 논다"는 공통의 부재도 유사성으로 세는 것이다. 해밍이라면 이 세 칸은 그냥 "안 다름"으로 0점 처리된다. 이게 두 자의 성격 차이다.

손 계산 — r(S5,S6)=1r(S_5,S_6) = -1 (A Perfect Anticorrelation)

5열·6열을 빼면:

x=(1,1,1,1,0,0),y=(0,0,0,0,1,1) x = (1,1,1,1,0,0), \qquad y = (0,0,0,0,1,1)

여기서 y=1xy = 1 - x다. 즉 yyxx완벽한 뒤집기다. 어떤 변수와 그것을 뒤집은 변수의 상관은 항상 정확히 −1이므로

r(S5,S6)=1 r(S_5,S_6) = -1

§6에서 해밍 6(최댓값)이었던 그 쌍이 상관에서도 −1(최솟값)이다. 두 자가 같은 답을 준 셈.

주요 쌍 비교 (Side-by-Side Comparison)

해밍 DD유클리드rr (완화, i,ji,j열 제외)읽는 법
(S1,S2)00+1.0000+1.0000완전 등위
(S1,S3)21.4142+0.2500+0.2500약하게 비슷
(S1,S5)21.4142+0.5000+0.5000해밍은 같지만 상관은 더 높다
(S6,S7)11.0000+0.6325+0.6325한 칸 차이
(S7,S8)00+1.0000+1.0000완전 등위(완화 관례)
(S5,S6)62.44951.0000-1.0000완벽하게 정반대

(S1,S3)과 (S1,S5)를 보라. 해밍은 둘 다 2로 똑같은데 상관은 0.25 대 0.5로 갈린다. S5는 차수 5로 S1의 이웃을 전부 품고 있어서, "겹치는 정도"로 보면 S1과 더 닮았다. 해밍은 이 차이를 못 잡고 상관은 잡는다.

주의 — cor(t(W))sedist(W,"correlation")은 다른 값을 준다. cor(t(W))는 8열을 전부 쓰지만 sedisti,ji,j열을 빼고 계산한다. (S1,S3)의 경우 0.0667-0.0667 vs 0.250.25, (S7,S8)의 경우 0.33330.3333 vs 1.00001.0000로 결론이 완전히 달라진다. 특히 (S7,S8)은 cor(t(W))로 보면 "별로 안 닮았다"는 엉뚱한 답이 나온다.
참고로 sedist가 프로필을 두 배로 이어 붙이는 것(§7)은 상관에는 영향이 없다. 같은 벡터를 두 번 붙이면 분자·분모가 똑같이 2배가 되어 약분된다. 그래서 위 표의 여섯 칸짜리 손 계산이 R의 값과 그대로 맞는다.

9. 위계적 군집화 — 덴드로그램 손 추적 (Hierarchical Clustering by Hand)

이제 거리 행렬 DD가 있으니 가까운 것끼리 묶어 올라간다. 단원 3-4의 fast greedy와 겉모습은 같은 병합형이지만, 기준이 QQ가 아니라 등위 거리라는 점이 다르다.

묶인 덩어리 사이의 거리는 완전 연결법(complete linkage)으로 잰다:

D(A,B)=maxiA, jBD(i,j) D(\mathcal{A},\mathcal{B}) = \max_{i \in \mathcal{A},\ j \in \mathcal{B}} D(i,j)

"가장 안 닮은 두 사람의 거리"를 덩어리의 거리로 삼는 것이다. 보수적인 기준이라 덩어리 안의 모든 사람이 서로 그 높이 이내로 닮았음이 보장된다. 등위 분석에는 이 성질이 중요해서 equiv.clust의 기본값도 complete다.

1단계 — 거리 0인 쌍부터 (Step 1: Distance Zero)

DD의 최솟값은 0이고, 그런 쌍이 세 개다. 순서대로 묶는다.

병합높이근거
{S1, S2}0D(S1,S2)=0D(S_1,S_2)=0
{S3, S4}0D(S3,S4)=0D(S_3,S_4)=0
{S7, S8}0D(S7,S8)=0D(S_7,S_8)=0

지금 덩어리는 다섯 개: {S1,S2}, {S3,S4}, {S5}, {S6}, {S7,S8}

2단계 — 다섯 덩어리의 거리 10쌍 전부 (Step 2: All Ten Cluster Pairs)

덩어리 쌍최대값을 잡는 계산거리
{S1,S2} – {S3,S4}max(2,2,2,2)\max(2,2,2,2) — 네 쌍 모두 22
{S1,S2} – {S5}max(2,2)\max(2,2)2
{S1,S2} – {S6}max(4,4)\max(4,4)4
{S1,S2} – {S7,S8}max(5,5,5,5)\max(5,5,5,5)5
{S3,S4} – {S5}max(2,2)\max(2,2)2
{S3,S4} – {S6}max(4,4)\max(4,4)4
{S3,S4} – {S7,S8}max(5,5,5,5)\max(5,5,5,5)5
{S5} – {S6}D(S5,S6)D(S_5,S_6)6
{S5} – {S7,S8}max(5,5)\max(5,5)5
{S6} – {S7,S8}max(1,1)\max(1,1)1 ← 최소

가장 가까운 쌍은 {S6}과 {S7,S8}. 높이 1에서 병합한다. 덩어리는 넷: {S1,S2}, {S3,S4}, {S5}, {S6,S7,S8}

3단계 — 세 곳이 동점 2 (Step 3: A Three-Way Tie)

덩어리 쌍계산거리
{S1,S2} – {S3,S4}max(2,2,2,2)\max(2,2,2,2)2 ← 동점
{S1,S2} – {S5}max(2,2)\max(2,2)2 ← 동점
{S3,S4} – {S5}max(2,2)\max(2,2)2 ← 동점
{S1,S2} – {S6,S7,S8}max(4,5,5, 4,5,5)\max(4,5,5,\ 4,5,5)5
{S3,S4} – {S6,S7,S8}max(4,5,5, 4,5,5)\max(4,5,5,\ 4,5,5)5
{S5} – {S6,S7,S8}max(6,5,5)\max(6,5,5)6

2가 셋이나 동점이다. R은 번호 순서로 {S1,S2}+{S3,S4}를 먼저 묶는다(높이 2). 그다음 {S1,S2,S3,S4}와 {S5}의 거리는 max(2,2,2,2)=2\max(2,2,2,2)=2로 여전히 2 — 그래서 같은 높이 2에서 S5도 흡수된다.

4단계 — 마지막 (Step 4: The Last Merge)

남은 두 덩어리 {S1,S2,S3,S4,S5}와 {S6,S7,S8}의 거리는 max(4,5,5,4,5,5,4,5,5,4,5,5,6,5,5)=6\max(4,5,5,4,5,5,4,5,5,4,5,5,\mathbf{6},5,5)=\mathbf{6}D(S5,S6)=6D(S_5,S_6)=6이 최대다. 높이 6에서 전체가 하나가 된다.

W의 구조적 등위 덴드로그램
손으로 추적한 병합 순서가 그대로 그림이 된다. 높이 0에서 세 쌍, 1에서 S6 합류, 2에서 왼쪽 덩어리 완성, 6에서 전체 통합.

어디서 자를 것인가 (Where to Cut)

자르는 높이 hh위치 개수위치
0.55{S1,S2} {S3,S4} {S5} {S6} {S7,S8} — 완전 등위만 묶은 것
1.54{S1,S2} {S3,S4} {S5} {S6,S7,S8}
2.52{S1,S2,S3,S4,S5} {S6,S7,S8} — 3-4의 커뮤니티와 우연히 일치
6.51전체 하나
hh를 R에 넘길 때는 두 배로. §7에서 봤듯 equiv.clust의 덴드로그램 높이는 sedist 눈금이라 우리 손 계산의 두 배다 (0, 0, 0, 1, 2, 2, 6 → 0, 0, 0, 2, 4, 4, 12). 그래서 위치 5개를 얻으려면 blockmodel(W, ec, h=1)이라고 써야 한다 (손 눈금 0.5 × 2 = 1).

10. 블록모델 ① 밀도 행렬 25칸 (Blockmodel: The Density Matrix)

위치를 정했으면 이제 위치끼리의 관계를 요약한다. 8×8 행렬을 5×5로 줄이는 것이다. 이것이 블록모델링이다.

위치 A\mathcal{A}에서 위치 B\mathcal{B}로 가는 블록 밀도는:

δ(A,B)  =  실제 간선 수가능한 칸 수  =  {iAjBA[i,j]nAnB(AB)iAjAA[i,j]nA(nA1)(A=B) \delta(\mathcal{A},\mathcal{B}) \;=\; \frac{\text{실제 간선 수}}{\text{가능한 칸 수}} \;=\; \begin{cases} \dfrac{\sum_{i\in\mathcal A}\sum_{j\in\mathcal B} A[i,j]}{n_{\mathcal A}\, n_{\mathcal B}} & (\mathcal A \neq \mathcal B) \\[1.2em] \dfrac{\sum_{i\in\mathcal A}\sum_{j\in\mathcal A} A[i,j]}{n_{\mathcal A}(n_{\mathcal A}-1)} & (\mathcal A = \mathcal B) \end{cases}
왜 대각 블록만 분모가 다른가. 같은 위치 안에서는 i=ji=j인 칸, 즉 자기 자신과의 관계가 존재하지 않는다. nn명 안에서 가능한 (보내는 사람, 받는 사람) 칸은 n2n^2이 아니라 n(n1)n(n-1)개다. 혼자인 위치는 1×0=01\times 0 = 0칸이라 밀도가 아예 정의되지 않는다(NA).

h=0.5h=0.5에서 자른 다섯 위치로 25칸을 전부 계산한다.

P1={S1,S2}, P2={S3,S4}, P3={S5}, P4={S6}, P5={S7,S8}

블록더하는 칸간선칸 수밀도왜 그 값인가
P1→P1A[1,2]+A[2,1]A[1,2]+A[2,1]0+0=00+0=021=22\cdot1=20S1과 S2는 서로 친구가 아니다
P1→P2A[1,3]+A[1,4]+A[2,3]+A[2,4]A[1,3]+A[1,4]+A[2,3]+A[2,4]1+1+1+1=41+1+1+1=422=42\cdot2=41네 칸 전부 이어져 있다
P1→P3A[1,5]+A[2,5]A[1,5]+A[2,5]1+1=21+1=221=22\cdot1=21둘 다 S5와 친구
P1→P4A[1,6]+A[2,6]A[1,6]+A[2,6]0+0=00+0=0220둘 다 S6과 남남
P1→P5A[1,7]+A[1,8]+A[2,7]+A[2,8]A[1,7]+A[1,8]+A[2,7]+A[2,8]0+0+0+0=00+0+0+0=0440한 칸도 없다
P2→P1A[3,1]+A[3,2]+A[4,1]+A[4,2]A[3,1]+A[3,2]+A[4,1]+A[4,2]1+1+1+1=41+1+1+1=4441대칭이므로 P1→P2와 같다
P2→P2A[3,4]+A[4,3]A[3,4]+A[4,3]0+0=00+0=0220S3과 S4도 서로 친구가 아니다
P2→P3A[3,5]+A[4,5]A[3,5]+A[4,5]1+1=21+1=2221둘 다 S5와 친구
P2→P4A[3,6]+A[4,6]A[3,6]+A[4,6]0+0=00+0=0220둘 다 S6과 남남
P2→P5A[3,7]+A[3,8]+A[4,7]+A[4,8]A[3,7]+A[3,8]+A[4,7]+A[4,8]00440한 칸도 없다
P3→P1A[5,1]+A[5,2]A[5,1]+A[5,2]1+1=21+1=212=21\cdot2=21S5는 둘 다와 친구
P3→P2A[5,3]+A[5,4]A[5,3]+A[5,4]1+1=21+1=2221S5는 둘 다와 친구
P3→P3없음 (혼자)0010=01\cdot0=\mathbf{0}NA셀 칸이 없다 — 0이 아니라 정의 불가
P3→P4A[5,6]A[5,6]1111=11\cdot1=11유일한 다리
P3→P5A[5,7]+A[5,8]A[5,7]+A[5,8]0+0=00+0=0220S5는 S7·S8을 모른다
P4→P1A[6,1]+A[6,2]A[6,1]+A[6,2]00220대칭
P4→P2A[6,3]+A[6,4]A[6,3]+A[6,4]00220대칭
P4→P3A[6,5]A[6,5]11111대칭
P4→P4없음 (혼자)000\mathbf{0}NA셀 칸이 없다
P4→P5A[6,7]+A[6,8]A[6,7]+A[6,8]1+1=21+1=2221S6은 둘 다와 친구
P5→P1A[7,1]+A[7,2]+A[8,1]+A[8,2]A[7,1]+A[7,2]+A[8,1]+A[8,2]00440대칭
P5→P2A[7,3]+A[7,4]+A[8,3]+A[8,4]A[7,3]+A[7,4]+A[8,3]+A[8,4]00440대칭
P5→P3A[7,5]+A[8,5]A[7,5]+A[8,5]00220대칭
P5→P4A[7,6]+A[8,6]A[7,6]+A[8,6]1+1=21+1=2221대칭
P5→P5A[7,8]+A[8,7]A[7,8]+A[8,7]1+1=21+1=2221S7과 S8은 서로 친구다

칸 수를 다 더하면 14+14+7+7+14=56=8×714+14+7+7+14=56=8\times7로, 대각선(자기 자신)을 뺀 인접행렬의 모든 칸을 정확히 한 번씩 덮었다. 검산 통과.

        P1 P2 P3 P4 P5
P1       0  1  1  0  0
P2       1  0  1  0  0
P3       1  1 NA  1  0
P4       0  0  1 NA  1
P5       0  0  0  1  1
세 등위 쌍의 차이가 대각선에 드러난다.
P1→P1 = 0, P2→P2 = 0 — 서로 모르는 쌍둥이. 이런 블록을 영 블록(null block)이라 한다.
P5→P5 = 1 — 서로 아는 쌍둥이. 이런 블록을 완전 블록(complete block)이라 한다.
§5에서 관례를 따져 가며 구분했던 두 종류의 쌍둥이가, 블록모델에서는 대각 블록이 0이냐 1이냐로 자동으로 구분된다.

11. 블록모델 ② 이미지 행렬과 오차 (The Image Matrix and Fit)

밀도 행렬을 한 번 더 줄여 0과 1만 남긴다. 기준은 보통 전체 밀도다.

전체 밀도=ijA[i,j]n(n1)=2487=24560.4286 \text{전체 밀도} = \frac{\sum_{i}\sum_{j} A[i,j]}{n(n-1)} = \frac{24}{8\cdot 7} = \frac{24}{56} \approx 0.4286 B[A,B]={1δ(A,B)>0.42860그 외 B[\mathcal A,\mathcal B] = \begin{cases} 1 & \delta(\mathcal A,\mathcal B) > 0.4286 \\ 0 & \text{그 외} \end{cases}

그런데 WW의 밀도 행렬은 이미 전부 0 아니면 1이다. 자를 것이 없다. 밀도 행렬 = 이미지 행렬이다.

위치 순서로 정렬한 인접행렬과 밀도/이미지 행렬
왼쪽: 위치 순서로 정렬한 8×8 인접행렬. 빨간 선이 위치 경계다. 대각선(자기 자신)을 빼면 각 칸이 통째로 파랑이거나 통째로 흰색이다. 오른쪽: 그 요약인 5×5 이미지 행렬.

블록모델의 오차 (Blockmodel Error)

오차는 "이상적인 블록이라면 이랬어야 하는데 실제로 어긋난 칸의 수"다. 1블록(완전 블록)에서는 0인 칸이, 0블록(영 블록)에서는 1인 칸이 오차다.

오차  =  A,B(B=1인 블록의 0 칸 수빠진 간선  +  B=0인 블록의 1 칸 수군더더기 간선) \text{오차} \;=\; \sum_{\mathcal A,\mathcal B} \Big( \underbrace{B=1\text{인 블록의 } 0 \text{ 칸 수}}_{\text{빠진 간선}} \;+\; \underbrace{B=0\text{인 블록의 } 1 \text{ 칸 수}}_{\text{군더더기 간선}} \Big)

WW의 5위치 블록모델에서는 오차 = 0이다. 모든 블록이 밀도 정확히 0 아니면 1이니, 어긋난 칸이 하나도 없다. 이를 완벽 적합(perfect fit) 또는 lean fit이라 부른다.

오차 0이 뜻하는 것. 8×8 = 56칸짜리 원본을 5×5 = 25칸(그중 2칸은 NA)으로 줄였는데 정보를 하나도 잃지 않았다. 이미지 행렬과 각자의 소속만 알면 원래 인접행렬을 완벽히 복원할 수 있다. WW는 등위 구조가 아주 깨끗한 인공 예제라서 이런 일이 가능하다. 실제 데이터에서는 오차가 0이 되는 일이 거의 없다.

더 굵게 자르면 어떻게 되는가 (Cutting Coarser)

hh를 높여 위치를 줄이면 오차가 생긴다. R 눈금 h=3h=3(손 눈금 1.5)이면 위치 4개 — {S1,S2} {S3,S4} {S5} {S6,S7,S8} — 이고, 이때 P4→P4 밀도가 다음과 같다:

δ({S6,S7,S8},{S6,S7,S8})=A[6,7]+A[6,8]+A[7,6]+A[7,8]+A[8,6]+A[8,7]32=66=1 \delta(\{S_6,S_7,S_8\}, \{S_6,S_7,S_8\}) = \frac{A[6,7]+A[6,8]+A[7,6]+A[7,8]+A[8,6]+A[8,7]}{3\cdot 2} = \frac{6}{6} = 1

여기는 삼각형이라 아직 1이다. 문제는 다른 칸에서 생긴다. R로 확인하면 h=3h=3에서 0.3333짜리 칸이 나타난다 — 0도 1도 아닌 어중간한 블록, 곧 오차가 있는 블록이다. h=5h=5(손 눈금 2.5, 위치 2개)까지 굵게 자르면 0.8000, 0.0667, 1.0000 같은 값이 나온다.

위치를 줄일수록 요약은 간단해지고 오차는 커진다. 단원 3-3에서 QQ가 "몇 개로 나눌까"를 정해 주었듯, 블록모델에서는 오차와 간결함의 맞바꿈을 분석자가 직접 결정해야 한다. 자동으로 정해 주는 값은 없다.

12. 방향 네트워크 — 보내기와 받기 (Directed Networks: Send and Receive)

§3에서 방향 네트워크는 행과 열을 둘 다 봐야 한다고 했다. 왜 그런지 교재(block modeling.r)의 5명짜리 예제로 확인한다.

  A B C D E
A 0 1 1 0 0     A는 B, C에게 보낸다
B 0 0 0 1 1     B는 D, E에게 보낸다
C 0 0 0 1 1     C는 D, E에게 보낸다
D 0 0 0 1 1     D는 자기 자신과 E에게 보낸다  ← 자기 고리
E 0 0 0 1 0     E는 D에게 보낸다
정점행 = 보내는 명단열 = 받는 명단
A{B, C}{ } — 아무에게도 안 받는다
B{D, E}{A}
C{D, E}{A}
D{D, E}{B, C, D, E}
E{D}{B, C, D}

완화 관례(자기들 행·열은 제외)로 10쌍을 판정하면 이렇게 갈린다.

행 일치열 일치sedist\texttt{sedist}읽는 법
(A, B)3받는 건 같고 보내는 게 다르다 — 열만 보면 속는다
(A, C)3위와 같음
(A, D)6둘 다 다르다 — 최대
(A, E)6둘 다 다르다 — 최대
(B, C)0구조적 등위
(B, D)3보내는 건 같고 받는 게 다르다 — 행만 보면 속는다
(B, E)3위와 같음
(C, D)3위와 같음
(C, E)3위와 같음
(D, E)0구조적 등위

(A, B)를 손으로 (Hand Calculation: A and B)

행 비교 — A행과 B행에서 A열·B열을 뺀 (C, D, E) 세 칸:

S[A,k]S[A,k]S[B,k]S[B,k]다른가?
C10✗ 1
D01✗ 1
E01✗ 1
행 해밍3

열 비교 — A열과 B열에서 A행·B행을 뺀 (C, D, E) 세 칸:

S[k,A]S[k,A]S[k,B]S[k,B]다른가?
C00✓ 0
D00✓ 0
E00✓ 0
열 해밍0
sedist(A,B)=3+0=3 \texttt{sedist}(A,B) = 3 + 0 = 3
이 예제가 가르치는 것. 한 행렬 안에 세 경우가 다 들어 있다.
행만 같은 쌍 (B,D) — 둘 다 D와 E에게 보내지만, B는 A에게만 받고 D는 넷에게 받는다.
열만 같은 쌍 (A,B) — 둘 다 (C·D·E로부터는) 아무것도 안 받지만, 보내는 곳이 완전히 다르다.
둘 다 같은 쌍 (B,C), (D,E) — 이것만 진짜 구조적 등위다.
방향 네트워크에서 한쪽만 보면 10쌍 중 4~6쌍을 잘못 판정한다.
이 예제에는 자기 고리가 있다. S[D,D]=1S[D,D]=1이다. 그래서 (D,E)는 완화 관례에서만 등위다 — 엄격 관례로 D열·E열을 포함해 비교하면 D는 자기 고리가 있고 E는 없어서 갈라진다. 실제 데이터에 자기 고리가 있으면 분석 전에 지울지 남길지 먼저 정해야 한다.

13. R로 검증 (Verification in R)

library(sna); library(igraph)

nm <- paste0("S", 1:8)
W  <- matrix(0, 8, 8, dimnames = list(nm, nm))
el <- rbind(c(1,3),c(1,4),c(1,5),c(2,3),c(2,4),c(2,5),c(3,5),c(4,5),
            c(5,6),c(6,7),c(6,8),c(7,8))
for (i in 1:nrow(el)) { W[el[i,1], el[i,2]] <- 1; W[el[i,2], el[i,1]] <- 1 }

## 완화 해밍 거리 D — i, j 열을 빼고 비교 (손 계산과 같은 눈금)
D <- matrix(0, 8, 8, dimnames = list(nm, nm))
for (i in 1:8) for (j in 1:8) {
  kk <- setdiff(1:8, c(i, j))
  D[i, j] <- sum(W[i, kk] != W[j, kk])
}
D
   S1 S2 S3 S4 S5 S6 S7 S8
S1  0  0  2  2  2  4  5  5
S2  0  0  2  2  2  4  5  5
S3  2  2  0  0  2  4  5  5
S4  2  2  0  0  2  4  5  5
S5  2  2  2  2  0  6  5  5
S6  4  4  4  4  6  0  1  1
S7  5  5  5  5  5  1  0  0
S8  5  5  5  5  5  1  0  0

## sedist는 보내기+받기를 이어 붙이므로 무방향에서는 정확히 두 배 (§7)
all(D == sedist(W, method = "hamming") / 2)
[1] TRUE

## 상관은 두 배로 붙여도 값이 안 변한다 (§8)
sedist(W, method = "correlation")[5, 6]
[1] -1

## 위계적 군집화 — 손으로 추적한 병합 순서(§9)와 대조
hc <- hclust(as.dist(D), method = "complete")
cbind(hc$merge, height = hc$height)
              height
[1,] -1 -2        0     {S1,S2}
[2,] -3 -4        0     {S3,S4}
[3,] -7 -8        0     {S7,S8}
[4,] -6  3        1     S6 + {S7,S8}
[5,]  1  2        2     {S1,S2} + {S3,S4}
[6,] -5  5        2     S5 흡수
[7,]  4  6        6     전체 통합

paste(cutree(hc, h = 0.5), collapse = "")
[1] "11223455"

## 블록모델 — h는 sedist 눈금이라 손 눈금의 두 배로 넣는다
ec <- equiv.clust(W, method = "hamming", cluster.method = "complete")
ec$cluster$height
[1] 0 0 0 2 4 4 12   ← 손 계산 0,0,0,1,2,2,6 의 두 배

bm <- blockmodel(W, ec, h = 1)      # 손 눈금 0.5
bm$block.membership[order(bm$order.vector)]
[1] 1 1 2 2 3 4 5 5
round(bm$block.model, 4)
        Block 1 Block 2 Block 3 Block 4 Block 5
Block 1       0       1       1       0       0
Block 2       1       0       1       0       0
Block 3       1       1     NaN       1       0
Block 4       0       0       1     NaN       1
Block 5       0       0       0       1       1

## 전체 밀도 — 이미지 행렬의 문턱값
sum(W) / (8 * 7)
[1] 0.4285714
손 계산과 전부 일치. 거리 행렬 28쌍, 병합 순서 7단계, 위치 5개, 밀도 행렬 25칸이 모두 맞았다. NaN은 혼자인 위치의 대각 블록 (칸 수가 0이라 0으로 나눈 결과)이고, 우리가 NA로 적은 그 자리다.

14. 가라테에 적용 (Applying It to Karate)

인공 예제 WW는 너무 깨끗했다. 실제 데이터에서는 어떨까? 34명 78간선의 가라테 클럽에 같은 절차를 돌린다.

완전히 등위인 쌍 (Perfectly Equivalent Pairs)

(342)=561\binom{34}{2}=561쌍 중 거리가 정확히 0인 쌍은 11개다. 그런데 이 11쌍은 흩어져 있지 않고 딱 두 무리를 이룬다.

위치구성원이웃차수쌍 개수
초록15, 16, 19, 21, 23{33, 34}2(52)=10\binom{5}{2}=10
빨강18, 22{1, 2}2(22)=1\binom{2}{2}=1
11
가라테 클럽에서 완전히 구조적 등위인 두 위치
초록 다섯 명은 오직 회장단 {33,34}에만 붙어 있고, 빨강 두 명은 오직 사범 쪽 {1,2}에만 붙어 있다. 같은 색끼리는 한 번도 이어져 있지 않다.
이것이 "위치"의 의미다. 15번과 16번은 서로 모르는 사이일 수 있다. 그런데 이 클럽에서 두 사람이 처한 사정은 완전히 같다 — 회장단 두 명하고만 이어져 있고 그 외에는 아무와도 연결이 없다. 누구를 통해서만 클럽에 속해 있는지가 같다는 뜻이고, 따라서 회장단이 떠나면 똑같이 떨어져 나갈 사람들이다.

거의 등위인 쌍과 가장 먼 쌍 (Near-Equivalent and Farthest Pairs)

거리 1(딱 한 칸 어긋남)인 쌍도 9개 있다: (5,6), (7,11), (8,14), (10,29), (12,13), (12,18), (12,22), (18,20), (20,22).

반대쪽 끝은 (1, 34), 거리 25다. 차수 16과 17로 이 클럽에서 가장 큰 두 사람, 사범과 회장이다. 561쌍 중 가장 등위가 아닌 쌍이 두 지도자라는 것 — 둘 다 "지도자"이지만 거느린 사람이 겹치지 않는다는 뜻이다.

덴드로그램을 잘라 보면 (Cutting the Dendrogram)

kk위치파벌과의 ARIQQ
2{33, 34} / 나머지 32명0.006-0.0060.0435-0.0435
4{1} / {2,3,4,8,12,13,14,18,20,22} / 21명 / {33,34}0.36750.36750.07550.0755
6{1} / {2,4,8,12,13,14,18,20,22} / {3} /
{5,6,7,10,11,17,25,26,28,29} / {9,15,16,19,21,23,24,27,30,31,32} / {33,34}
0.32770.32770.07980.0798
k=2k=2의 결과를 보라. 등위 분석은 34명을 {33,34} 대 나머지 전부로 나눈다. 단원 3-2에서 확인한 실제 분열(사범파 16명 vs 회장파 18명)과의 ARI가 0.006-0.006우연히 찍은 것과 다를 바 없다. 모듈러리티는 Q=0.0435Q=-0.0435로 아예 음수다. 단원 3-4에서 커뮤니티 알고리즘들이 Q0.42Q\approx 0.42를 냈던 것과 비교하면 완전히 다른 답이다.

이건 등위 분석이 틀린 게 아니라 다른 걸 물었기 때문이다. 등위 분석이 가장 먼저 갈라낸 것은 파벌이 아니라 "많이 거느린 사람 vs 그렇지 않은 사람", 즉 계층이다. k=4k=4로 더 쪼개서야 1번과 33·34번이 각각 떨어져 나오고 ARI가 0.3675까지 올라간다.

15. 커뮤니티와 위치는 다른 질문이다 (Community vs Position)

커뮤니티 (community)위치 (position)
같은 집단이라는 뜻서로 자주 이어져 있다이웃 명단이 같다
묻는 질문누구와 어울리는가어떤 자리에 있는가
같은 집단인데 서로 남남일 수 있나드물다 (그러면 QQ가 깎인다)흔하다 — S1·S2, 가라테 15·16
서로 친구인데 다른 집단일 수 있나경계에서 가끔흔하다 — S5·S6은 거리 6
기준모듈러리티 QQ 최대화등위 거리 최소화
몇 개로 나눌지QQ가 알아서 정한다분석자가 hh를 정한다
가라테의 답4모둠, Q=0.4198Q=0.4198{33,34} vs 나머지 32명
교실에서 대응하는 것무리, 패거리역할, 처지
한 문장으로.
커뮤니티는 "누구와 같이 노는가"를 묻고,
위치는 "누구를 통해 학급에 속해 있는가"를 묻는다.
같은 네트워크에서 두 답이 다르게 나오는 것은 오류가 아니라 당연한 일이다.

16. 정규 등위성 맛보기 (A Taste of Regular Equivalence)

구조적 등위성에는 한계가 하나 있다. 지난 시간의 아령 그래프 HH를 보자.

   A2 ---- A3        B2 ---- B3
    \      /          \      /
     \    /            \    /
      A1 ------------- B1

A1과 B1의 등위 거리는 4다 — 여섯 칸 중 네 칸이 어긋난다. 구조적 등위성의 기준으로는 전혀 닮지 않은 두 사람이다.

그런데 그림을 보면 두 사람은 명백히 똑같은 처지다. 각자 삼각형 하나를 거느리고, 다리 하나를 붙들고 있다. 왼쪽 그림을 좌우로 뒤집으면 A1은 정확히 B1이 된다.

왜 구조적 등위성은 이걸 못 잡는가. 정의가 이웃의 이름을 대조하기 때문이다. A1의 이웃은 {A2, A3, B1}이고 B1의 이웃은 {A1, B2, B3}다. 이름이 하나도 안 겹친다. 하지만 A1의 이웃 A2와 B1의 이웃 B2는 서로 등위이고, A3와 B3도 서로 등위다. 즉 이름은 다르지만 같은 종류의 사람들과 이어져 있다.

이 직관을 정의로 옮긴 것이 정규 등위성(regular equivalence)이다. 대략 이런 뜻이다:

iRj    {i의 이웃마다 그와 등위인 j의 이웃이 있고j의 이웃마다 그와 등위인 i의 이웃이 있다 i \equiv_R j \iff \begin{cases} i \text{의 이웃마다 그와 등위인 } j \text{의 이웃이 있고} \\ j \text{의 이웃마다 그와 등위인 } i \text{의 이웃이 있다} \end{cases}

정의에 "등위"가 다시 들어가는 재귀적 정의라, 구조적 등위성처럼 한 번 훑어서 계산할 수 없다. 반복해서 수렴시키는 알고리즘(REGE, CATREGE 등)이 따로 있다.

구조적 등위 (structural)정규 등위 (regular)
기준이웃의 이름이 같다이웃의 종류가 같다
아령의 A1, B1등위 아님 (거리 4)등위
교실 비유"같은 친구들과 논다""같은 역할을 한다"
계산한 번에 (sedist)반복 수렴 (REGE 등)
구조적이면 정규인가그렇다. 구조적 등위는 정규 등위의 특수한 경우
교실에서 왜 중요한가. 두 반의 반장은 서로 아는 사이가 아니고 친구 명단도 전혀 안 겹친다. 구조적 등위성으로는 남남이다. 그래도 우리는 "둘 다 반장"이라고 말한다 — 그게 정규 등위다. 여러 학급을 비교하거나 학기가 바뀐 뒤 같은 역할의 학생을 찾을 때는 구조적 등위성만으로는 부족하다.

17. 교실 적용 (Classroom Application)

① 소외 학생을 "한 명씩"이 아니라 "한 무리로" 본다.
가라테의 15, 16, 19, 21, 23번은 각각 보면 그냥 "차수 2인 학생"이다. 그런데 다섯 명이 완전히 같은 위치임을 알면 이야기가 달라진다. 이들은 모두 회장단하고만 이어져 있고 서로는 모른다. 교실로 옮기면 "담임하고만 말하는 학생 다섯 명"이다. 한 명씩 상담하는 것보다 이 다섯을 서로 이어 주는 활동이 훨씬 효율적이다 — 같은 처지에 있으니 접점을 만들기도 쉽다.
② 모둠 편성에 그대로 쓸 수 있다.
같은 위치의 두 학생을 한 모둠에 넣으면 역할이 겹친다. 둘 다 같은 사람들하고만 통하니, 모둠 안에서 가져오는 정보가 똑같다. 반대로 다른 위치끼리 섞으면 모둠이 닿는 범위가 넓어진다. S1(중심부)·S6(다리)·S7(주변부)을 한 모둠으로 묶는 식이다. "친한 애들끼리 vs 안 친한 애들끼리"라는 흔한 이분법보다 훨씬 쓸모 있는 기준이다.
③ 이미지 행렬은 학급의 관계 지도다.
30명짜리 교우관계는 눈으로 못 읽는다. 위치 4~5개로 줄인 이미지 행렬은 읽힌다. "중심부 ↔ 준중심부는 1, 중심부 ↔ 주변부는 0, 주변부는 다리 한 명을 통해서만 연결" 같은 문장 몇 개로 학급 구조를 요약할 수 있다. 그리고 오차가 큰 블록이야말로 흥미로운 곳이다 — "같은 위치인데 저 사람만 다르게 행동한다"는 신호다.
④ 위치가 바뀌는지 학기별로 추적한다.
3월과 7월에 같은 조사를 하고 위치를 비교하면, "주변부에 있던 학생이 준중심부로 이동했는가"를 볼 수 있다. 차수 하나가 늘어난 것보다 위치가 바뀐 것이 훨씬 큰 변화다 — 차수는 친구 한 명이 늘어도 오르지만, 위치가 바뀌려면 어울리는 사람들의 종류가 달라져야 하기 때문이다.
⑤ 윤리 — 위치는 사람의 속성이 아니다.
"이 학생은 주변부"라고 딱지를 붙이는 순간 분석은 낙인이 된다. 위치는 지금 이 관계망에서 그 사람이 놓인 자리이지 성격이나 능력이 아니다. 관계가 바뀌면 위치도 바뀐다 — 실제로 ④가 그걸 재는 방법이다. 게다가 등위 분석은 측정에 특히 민감하다. 설문에서 친구를 3명까지만 적게 했다면 차수 3인 학생이 잔뜩 생기고, 그중 상당수가 인위적으로 "등위"가 된다. 결과를 학생·학부모에게 그대로 보여 주는 일은 없어야 한다.

18. 연습문제 (Exercises)

문제 1 — 아령 그래프의 구조적 등위성

지난 시간과 같은 아령 그래프 HH: 삼각형 A(A1, A2, A3)와 삼각형 B(B1, B2, B3)를 간선 A1–B1 하나로 이은 6명 7간선.

  1. 여섯 명의 이웃 목록을 쓰고, 완화 해밍 거리 15쌍을 전부 구하라. 각 쌍마다 어긋나는 열이 무엇인지도 적을 것.
  2. 완전히 등위인 쌍을 모두 찾아라. 그 쌍은 서로 모르는 쌍둥이인가 서로 아는 쌍둥이인가?
  3. complete linkage로 병합 5단계를 추적하고 각 단계의 높이를 적어라.
  4. 위치 {A1} / {A2,A3} / {B1} / {B2,B3}로 잘랐을 때 밀도 행렬 16칸을 전부 구하라. 오차는 몇인가?
  5. A1과 B1의 거리는 얼마인가? 구조적으로 등위가 아닌데도 "같은 역할"이라 부르고 싶은 이유를 §16의 용어로 설명하라.

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

문제 2 — W에 간선 하나를 더하면

우리 학급 네트워크 WWS1–S2 간선 하나를 추가한다(13간선이 된다). S1과 S2가 서로 친구가 된 것이다.

  1. S1과 S2는 여전히 구조적으로 등위인가? 완화 관례와 엄격 관례로 각각 답하라.
  2. 거리 행렬에서 값이 바뀌는 칸을 전부 찾아라 (12칸이다). 바뀌지 않는 칸이 왜 안 바뀌는지도 한 줄로 설명할 것.
  3. D(S1,S5)D(S_1,S_5)는 2에서 1로 줄어든다. 왜 줄어드는가?
  4. D(S1,S6)D(S_1,S_6)은 4에서 5로 늘어난다. 왜 늘어나는가?
  5. 덴드로그램의 병합 순서는 어떻게 바뀌는가? h=1.5h=1.5에서 자르면 위치가 몇 개인가?
  6. 다섯 위치의 밀도 행렬에서 딱 한 칸이 바뀐다. 어느 칸이 얼마로 바뀌는가? 이 변화가 §11의 "서로 아는 쌍둥이"와 어떻게 연결되는지 설명하라.

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

19. 해설과 답 (Solutions)

문제 1 해설 — 아령 그래프의 구조적 등위성 (Solution 1)

(1) 이웃 목록과 15쌍의 거리. 먼저 인접행렬을 놓는다.

A1A2A3B1B2B3이웃 목록차수
A1011100{A2, A3, B1}3
A2101000{A1, A3}2
A3110000{A1, A2}2
B1100011{A1, B2, B3}3
B2000101{B1, B3}2
B3000110{B1, B2}2

(A2, A3)를 예로 전개해 본다. 2열·3열을 빼고 나머지 (A1, B1, B2, B3) 네 칸:

kkA[A2,k]A[A2,k]A[A3,k]A[A3,k]다른가?왜 그 값인가
A111✓ 0둘 다 A1과 친구
B100✓ 0둘 다 B1을 모른다
B200✓ 0둘 다 B2를 모른다
B300✓ 0둘 다 B3을 모른다
0완전 등위

(A1, B1)도 전개한다. A1열·B1열을 빼고 (A2, A3, B2, B3) 네 칸:

kkA[A1,k]A[A1,k]A[B1,k]A[B1,k]다른가?왜 그 값인가
A210✗ 1A1만 A2와 친구
A310✗ 1A1만 A3와 친구
B201✗ 1B1만 B2와 친구
B301✗ 1B1만 B3와 친구
4네 칸이 전부 어긋난다 — 최댓값

15쌍 전부:

DD어긋나는 열왜 그 값인가
(A2, A3)0없음둘 다 {A1}만 본다(서로는 제외)
(B2, B3)0없음둘 다 {B1}만 본다(서로는 제외)
(A1, A2)1B1A1만 다리를 붙들고 있다
(A1, A3)1B1위와 같음
(B1, B2)1A1B1만 다리를 붙들고 있다
(B1, B3)1A1위와 같음
(A1, B2)3A2, A3, B3A1은 A쪽 둘을, B2는 B3를 갖는다
(A1, B3)3A2, A3, B2위와 같음
(A2, B1)3A3, B2, B3대칭
(A3, B1)3A2, B2, B3대칭
(A1, B1)4A2, A3, B2, B3두 다리지기 — 가장 먼 쌍
(A2, B2)4A1, A3, B1, B3양쪽 삼각형의 부하들
(A2, B3)4A1, A3, B1, B2위와 같음
(A3, B2)4A1, A2, B1, B3위와 같음
(A3, B3)4A1, A2, B1, B2위와 같음
(1) 답: 거리는 0이 2쌍, 1이 4쌍, 3이 4쌍, 4가 5쌍. 최댓값 4가 다섯 쌍이나 되는 게 특징이다 — 여섯 명 중 네 칸짜리 프로필이라 어긋날 수 있는 최대가 4이고, 좌우 삼각형을 가로지르는 쌍은 대부분 최대로 어긋난다.
(2) 답: 완전 등위 쌍은 (A2, A3)와 (B2, B3) 딱 두 쌍이다. A[A2,A3]=1A[A2,A3]=1이므로 둘은 서로 아는 쌍둥이다(§5의 S7·S8과 같은 종류). 따라서 완화 관례에서만 등위이고, 엄격 관례로는 등위가 아니다. WW의 (S1,S2)·(S3,S4)와는 반대 경우다.

(3) 병합 5단계. complete linkage로 추적한다.

단계병합높이근거 (최댓값 계산)
1{A2, A3}0D=0D=0
2{B2, B3}0D=0D=0
3{A1} + {A2,A3}1max(1,1)=1\max(1,1)=1 — 남은 최소
4{B1} + {B2,B3}1max(1,1)=1\max(1,1)=1
5전체4max(4,3,3, 3,4,4, 3,4,4)=4\max(4,3,3,\ 3,4,4,\ 3,4,4)=4D(A1,B1)=4D(A1,B1)=4
(3) 답: 높이는 0, 0, 1, 1, 4. h=0.5h=0.5에서 자르면 위치 4개 {A1}{A2,A3}{B1}{B2,B3}, h=1.5h=1.5에서 자르면 위치 2개 — 두 삼각형이 그대로 나온다. (R의 equiv.clust 눈금으로는 0, 0, 2, 2, 8이다.)

(4) 밀도 행렬 16칸. a={A1}, b={A2,A3}, c={B1}, d={B2,B3}로 놓는다.

블록더하는 칸간선칸 수밀도왜 그 값인가
a→a없음 (혼자)010=01\cdot0=0NA셀 칸이 없다
a→bA[A1,A2]+A[A1,A3]A[A1,A2]+A[A1,A3]1+1=21+1=212=21\cdot2=21A1은 부하 둘 다와 친구
a→cA[A1,B1]A[A1,B1]11111다리 그 자체
a→dA[A1,B2]+A[A1,B3]A[A1,B2]+A[A1,B3]0+0=00+0=0220A1은 B쪽 부하를 모른다
b→aA[A2,A1]+A[A3,A1]A[A2,A1]+A[A3,A1]1+1=21+1=2221대칭
b→bA[A2,A3]+A[A3,A2]A[A2,A3]+A[A3,A2]1+1=21+1=221=22\cdot1=21서로 아는 쌍둥이 → 완전 블록
b→cA[A2,B1]+A[A3,B1]A[A2,B1]+A[A3,B1]0+0=00+0=0220A쪽 부하는 B1을 모른다
b→dA[A2,B2]+A[A2,B3]+A[A3,B2]+A[A3,B3]A[A2,B2]+A[A2,B3]+A[A3,B2]+A[A3,B3]00440한 칸도 없다
c→aA[B1,A1]A[B1,A1]11111대칭
c→bA[B1,A2]+A[B1,A3]A[B1,A2]+A[B1,A3]00220대칭
c→c없음 (혼자)000NA셀 칸이 없다
c→dA[B1,B2]+A[B1,B3]A[B1,B2]+A[B1,B3]1+1=21+1=2221B1은 부하 둘 다와 친구
d→aA[B2,A1]+A[B3,A1]A[B2,A1]+A[B3,A1]00220대칭
d→bA[B2,A2]++A[B3,A3]A[B2,A2]+\cdots+A[B3,A3]00440대칭
d→cA[B2,B1]+A[B3,B1]A[B2,B1]+A[B3,B1]1+1=21+1=2221대칭
d→dA[B2,B3]+A[B3,B2]A[B2,B3]+A[B3,B2]1+1=21+1=2221서로 아는 쌍둥이 → 완전 블록

칸 수 검산: (0+2+1+2)+(2+2+2+4)+(1+2+0+2)+(2+4+2+2)=5+10+5+10=30=6×5(0+2+1+2)+(2+2+2+4)+(1+2+0+2)+(2+4+2+2)=5+10+5+10=30=6\times5. 통과.

    a  b  c  d
a  NA  1  1  0
b   1  1  0  0
c   1  0 NA  1
d   0  0  1  1
(4) 답: 위 4×4 행렬. 모든 칸이 0 아니면 1이므로 이미지 행렬이 곧 밀도 행렬이고 오차 = 0이다. WW와 마찬가지로 완벽 적합이다. 아령 그래프도 등위 구조가 아주 깨끗하다.

대각선을 보라. b→b = 1, d→d = 1로 두 대각 블록이 모두 완전 블록이다. WW에서는 P1→P1과 P2→P2가 0(서로 모르는 쌍둥이)이고 P5→P5만 1이었다. 아령에서는 등위 쌍이 둘 다 삼각형 안에 있으니 둘 다 1이 된다.
(5) 답: D(A1,B1)=4D(A1, B1) = 4이 그래프에서 가장 먼 쌍이다. 구조적 등위성의 기준에서는 정반대에 있는 두 사람이다.

그런데도 "같은 역할"로 보이는 이유는 §16의 정규 등위성 때문이다. A1의 이웃은 {A2, A3, B1}, B1의 이웃은 {A1, B2, B3}로 이름은 하나도 안 겹치지만, A2·A3와 B2·B3는 서로 등위이고 A1과 B1도 (재귀적으로) 서로 등위다. 즉 두 사람은 "같은 종류의 사람들"에 둘러싸여 있다. 구조적 등위성은 이웃의 이름을 보고, 정규 등위성은 이웃의 종류를 본다.
교실 해석. A1과 B1은 각자 자기 모둠 둘을 데리고 있으면서 반대편 모둠과의 유일한 연결을 붙들고 있는 두 학생이다. 구조적 등위 분석은 이 둘을 가장 다른 두 사람으로 판정한다 — 친구 명단이 하나도 안 겹치니까. 하지만 학급 운영의 관점에서 둘은 완전히 같은 종류의 학생이다. 둘 중 하나가 결석하면 학급이 두 조각 난다. 등위 분석 결과를 그대로 "역할"이라고 읽으면 안 된다는 좋은 예다.

문제 2 해설 — W에 간선 하나를 더하면 (Solution 2)

(1) 여전히 등위인가. 새 행렬 WW'에서 S1행과 S2행을 나란히 놓는다.

kkS1S2S3S4S5S6S7S8
A[1,k]A[1,k]01111000
A[2,k]A[2,k]10111000
같은가?
(1) 답: 완화 관례로는 여전히 등위(1열·2열을 빼면 여섯 칸이 전부 같다). 엄격 관례로는 등위가 아니다(1열과 2열에서 어긋난다).

즉 S1·S2가 서로 모르는 쌍둥이에서 서로 아는 쌍둥이로 바뀌었다. 간선 하나가 등위 여부는 바꾸지 않았지만 쌍둥이의 종류는 바꿨다.

(2)(3)(4) 바뀌는 칸. 바뀌는 이유는 하나다 — 1열과 2열의 값이 달라졌기 때문. 따라서 어떤 쌍의 거리는 그 쌍이 1열·2열을 비교 대상에 포함하는지에만 달려 있다.

DDDD왜 그렇게 바뀌는가
(S1,S2)001·2열을 둘 다 뺀다 → 바뀔 여지가 없다
(S1,S3)212열에서 A[1,2]A[1,2]가 0→1이 되어 A[3,2]=1A[3,2]=1일치. 어긋남 하나 소멸
(S1,S4)21위와 같음
(S1,S5)212열에서 A[1,2]A[1,2]가 0→1, A[5,2]=1A[5,2]=1일치. 남은 어긋남은 6열뿐
(S1,S6)452열에서 A[1,2]A[1,2]가 0→1인데 A[6,2]=0A[6,2]=0새 어긋남 발생
(S1,S7)56A[7,2]=0A[7,2]=0이므로 새 어긋남
(S1,S8)56위와 같음
(S2,S3)211열에서 A[2,1]A[2,1]이 0→1, A[3,1]=1A[3,1]=1과 일치
(S2,S4)21위와 같음
(S2,S5)21위와 같음
(S2,S6)45A[6,1]=0A[6,1]=0이므로 새 어긋남
(S2,S7)56위와 같음
(S2,S8)56위와 같음
S1·S2가 안 들어간 15쌍그대로1열·2열의 값은 바뀌었지만, 그 두 열에서 서로 비교되는 값은 그대로다.
예: (S3,S4)는 1열에서 A[3,1]=A[4,1]=1A[3,1]=A[4,1]=1로 여전히 같다
(2) 답: 바뀌는 칸은 12칸. S1이 들어간 6쌍과 S2가 들어간 6쌍이다 (단 (S1,S2) 자신은 제외). S1·S2가 안 들어간 15쌍은 전부 그대로다.
(3) 답: D(S1,S5)D(S_1,S_5)2→1로 줄어든다. 전에는 2열(A[1,2]=0A[1,2]=0 vs A[5,2]=1A[5,2]=1)과 6열(A[1,6]=0A[1,6]=0 vs A[5,6]=1A[5,6]=1) 두 칸이 어긋났는데, S1이 S2와 친구가 되면서 2열이 맞아떨어진다. 남은 어긋남은 6열 하나뿐이다. S5는 원래 S2와 친구였으니, S1이 S2를 얻은 순간 S5와 더 닮아진 것이다.
(4) 답: D(S1,S6)D(S_1,S_6)4→5로 늘어난다. S6은 S2와 남남이다(A[6,2]=0A[6,2]=0). S1이 S2를 얻으면 2열에서 새로운 어긋남이 생긴다. 같은 간선 하나가 어떤 쌍은 가깝게, 어떤 쌍은 멀게 만든다 — 새 이웃을 이미 갖고 있던 쪽과는 가까워지고, 안 갖고 있던 쪽과는 멀어진다.

(5) 새 덴드로그램. 새 거리 행렬:

     S1 S2 S3 S4 S5 S6 S7 S8
S1    0  0  1  1  1  5  6  6
S2    0  0  1  1  1  5  6  6
S3    1  1  0  0  2  4  5  5
S4    1  1  0  0  2  4  5  5
S5    1  1  2  2  0  6  5  5
S6    5  5  4  4  6  0  1  1
S7    6  6  5  5  5  1  0  0
S8    6  6  5  5  5  1  0  0
단계병합높이근거
1{S1,S2}0D=0D=0
2{S3,S4}0D=0D=0
3{S7,S8}0D=0D=0
4{S1,S2} + {S3,S4}1max(1,1,1,1)=1\max(1,1,1,1)=1원래는 2였다
5{S6} + {S7,S8}1max(1,1)=1\max(1,1)=1 — 그대로
6{S1,S2,S3,S4} + {S5}2max(1,1,2,2)=2\max(1,1,2,2)=2
7전체6D(S5,S6)=6D(S_5,S_6)=6이 여전히 최대
(5) 답: 높이가 0, 0, 0, 1, 1, 2, 6으로 바뀐다 (원래는 0, 0, 0, 1, 2, 2, 6). {S1,S2}+{S3,S4} 병합이 높이 2에서 1로 내려왔다.

그래서 h=1.5h=1.5에서 자르면 위치가 3개가 된다: {S1,S2,S3,S4} / {S5} / {S6,S7,S8}. 원래 WW에서 h=1.5h=1.5는 위치 4개였는데, 간선 하나로 S1·S2와 S3·S4가 한 위치로 합쳐졌다. h=0.5h=0.5에서 자르면 여전히 위치 5개로 원래와 같다.

(6) 밀도 행렬의 변화. 다섯 위치를 그대로 두고 25칸을 다시 계산하면, 바뀌는 것은 P1→P1 한 칸뿐이다.

블록더하는 칸왜 그런가
P1→P1A[1,2]+A[2,1]A[1,2]+A[2,1]0/2=00/2=\mathbf{0}2/2=12/2=\mathbf{1}영 블록 → 완전 블록
나머지 24칸S1·S2가 다른 위치로 보내는 칸그대로새 간선은 P1 안에만 생겼다
        P1 P2 P3 P4 P5          P1 P2 P3 P4 P5
P1       0  1  1  0  0    →    P1  1  1  1  0  0
P2       1  0  1  0  0          P2  1  0  1  0  0
P3       1  1 NA  1  0          P3  1  1 NA  1  0
P4       0  0  1 NA  1          P4  0  0  1 NA  1
P5       0  0  0  1  1          P5  0  0  0  1  1
(6) 답: P1→P1이 0에서 1로 바뀐다. 영 블록이던 대각 블록이 완전 블록이 된다.

이것이 §11에서 말한 "두 종류의 쌍둥이가 대각 블록에 드러난다"는 것의 실물이다. S1·S2는 등위인 채로 서로 모르는 쌍둥이에서 서로 아는 쌍둥이로 바뀌었고, 그 변화가 블록모델에서는 대각 칸 0→1로 딱 한 칸에만 기록된다. 이미지 행렬은 여전히 전부 0/1이므로 오차는 여전히 0이다.
교실 해석. S1과 S2는 원래 "친구 명단이 똑같은데 서로는 안 친한 두 학생"이었다. 둘이 친해져도 학급에서의 자리는 그대로다 — 여전히 S3·S4·S5하고만 통한다. 등위 분석은 이 사실을 정확히 잡아낸다(위치가 안 바뀐다).

바뀐 것은 두 가지다. 하나는 대각 블록이 0에서 1이 된 것 — "같은 자리에 있으면서 서로 아는 사이"가 됐다는 기록이다. 다른 하나는 S1·S2가 S3·S4와 더 닮아진 것(거리 2→1)이라 h=1.5h=1.5에서 네 명이 한 위치로 묶인다. 모둠 안에서 짝을 붙여 주는 개입이 학급 구조 자체를 바꾸지는 않지만 그 자리의 성격은 바꾼다는 것을 숫자가 보여 준다.

다음 단원 3-6이분 네트워크와 투영 (Bipartite Networks and Projection). 학생–동아리, 학생–모둠처럼 두 종류의 노드가 있는 네트워크를 다루고, 그걸 학생–학생 네트워크로 투영할 때 무엇이 생기고 무엇이 사라지는지 손으로 확인한다. 오늘 본 "같은 활동에 참여하는 학생은 자동으로 등위에 가까워진다"는 현상이 거기서 다시 등장한다.