3강 / 20강

ARACNe — 지도를 그리는 탐정

발현 데이터에서 명부를 뽑아내는 짝꿍 알고리즘

ARACNe — 지도를 그리는 탐정
수백 명의 발현 데이터를 겹쳐 놓고, 함께 움직이는 짝을 찾아냅니다.

VIPER 에게 명부를 건네주는 것이 ARACNe 입니다. 둘은 실과 바늘처럼 붙어 다녀요. 컬럼비아 대학교 캘리파노 랩(Califano Lab)의 파이프라인에서 늘 세트로 나옵니다.

🗺️
ARACNe
지도를 그리는 탐정
➡️
레귤론
완성된 부하 명부
🔍
VIPER
현장을 조사하는 형사

ARACNe 는 Algorithm for the Reconstruction of Accurate Cellular Networks 의 줄임말입니다. 하는 일은 세 단계예요.

① 함께 움직이는 짝 찾기 — 상호정보량

유전자 A와 B가 수백 개 샘플에서 같이 오르내린다면 둘 사이에 무슨 관계가 있을 가능성이 큽니다. 이 "같이 움직임"을 재는 자로 ARACNe 는 상관계수 대신 상호정보량 (Mutual Information, MI) 을 씁니다.

왜냐고요? 상관계수는 직선 관계만 봅니다. A가 오르면 B도 오르는 관계는 잡지만, "A가 중간일 때 B가 최대"인 관계는 상관계수가 0 이 나옵니다. 상호정보량은 모양을 가리지 않고 "A를 알면 B에 대해 얼마나 알게 되나"를 잽니다.

MI(A, B) = Σ p(a,b) · log[ p(a,b) / (p(a)·p(b)) ]

A와 B가 완전히 무관하면 p(a,b) = p(a)p(b) 라서 로그 안이 1, 로그가 0, MI 가 0 입니다. 서로 얽힐수록 MI 가 커집니다.

🕸️ 더 깊이 — 이 식이 어디서 오는지(엔트로피)와, 실제 데이터에서 MI 를 어떻게 추정하는지(칸을 몇 개로 나눌지, 순위로 바꿀지)는 짝 과목 아라크네 첫걸음이 네 강에 걸쳐 다룹니다 — 4강 엔트로피 · 5강 상호정보량 · 6강 칸 나누기 · 7강 순위로 바꾸기.

직선이 아닌 관계에서 상관계수는 눈이 멉니다. ARACNe 가 MI 를 쓰는 이유입니다.
Python 브라우저에서 실행

② 우연을 걸러내기 — 순열 검정

유전자 20,000개끼리 짝을 지으면 2억 쌍이 나옵니다. 그중에는 순전히 우연으로 MI 가 커 보이는 쌍이 잔뜩 섞여 있어요. ARACNe 는 값을 마구 뒤섞어(순열) "우연이라면 MI 가 이 정도까지 나오나"를 만들어 놓고, 그보다 확실히 큰 쌍만 남깁니다.

③ 간접 연결 끊기 — 데이터 처리 부등식 (DPI)

여기가 ARACNe 의 진짜 묘수입니다. A → B → C 로 이어진 사슬이 있으면, A와 C도 덩달아 함께 움직입니다. 하지만 A가 C를 직접 조종하는 것은 아니에요. 소문이 한 사람 건너 전해진 것뿐입니다.

데이터 처리 부등식은 이렇게 말합니다 — 정보는 건너갈 때마다 줄어든다. 그러니 세 유전자의 MI 를 비교해서 가장 작은 것 하나를 잘라내면 그것이 간접 연결일 가능성이 큽니다.

🕸️ 더 깊이 — 순열로 문턱을 세우는 법은 아라크네 9강, DPI 와 그것이 저지르는 실수(관용값)는 10강 · 11강, 여러 번 돌려 합의를 보는 부트스트랩은 12강에 있습니다.

🎮 삼각형에서 가짜 변을 잘라내기

세 유전자 사이의 상호정보량을 슬라이더로 바꿔 보세요. DPI 규칙이 어느 변을 자르는지 실시간으로 보여 줍니다. 값에 따라 자르는 변이 바뀌는 것을 확인해 보세요.

세 유전자의 MI 를 조절하며 DPI 가 어느 간선을 끊는지 봅니다
불러오는 중…
정보는 건너갈 때마다 줄어든다 — 그래서 가장 약한 변이 간접 연결의 후보입니다.
Python 브라우저에서 실행
🤔 확인 문제
ARACNe 가 피어슨 상관계수 대신 상호정보량을 쓰는 주된 까닭은?
🤔 확인 문제
데이터 처리 부등식(DPI)이 삼각형에서 잘라내는 간선은?
🤔 확인 문제
ARACNe 로 만든 네트워크의 성격으로 옳은 것은?