6강 / 20강

상호정보량 — 함께 움직임을 재는 자

직선이 아니어도 잡아낸다

상호정보량 — 함께 움직임을 재는 자
상호정보량은 한쪽을 알면 다른 쪽에 대한 궁금증이 얼마나 줄어드나를 잽니다.

DIGGIT 의 이름에 Information Theory(정보이론) 가 들어 있는 이유가 여기 있습니다. ARACNe 도, MINDy 도, DIGGIT 도 두 값이 함께 움직이는 정도를 잴 때 상관계수가 아니라 상호정보량(mutual information, MI) 을 씁니다.

상관계수는 직선 관계만 봅니다. 두 값이 U자로 관계되어 있으면 상관은 0 이 나옵니다 — 분명히 관계가 있는데도요.

MI(X; Y) = Y 를 몰랐을 때의 불확실성 − X 를 알고 난 뒤 남은 불확실성

"X 를 알면 Y 에 대한 궁금증이 얼마나 줄어드나"입니다. 줄어드는 게 없으면 0, 완전히 결정되면 최대. 관계의 모양은 묻지 않습니다.

U자 관계에서 상관계수는 0 이 나옵니다. MI 는 그렇지 않습니다.
Python 브라우저에서 실행

🎮 격자를 바꿔 보세요

자료의 모양과 격자 칸 수를 바꿔 가며 MI 가 어떻게 달라지는지 보세요. 칸을 너무 잘게 쪼개면 없는 관계도 있어 보인다는 함정도 확인해 보시고요.

격자 칸 수는 공짜가 아닙니다 — 잘게 쪼갤수록 MI 가 부풀려집니다
불러오는 중…
🤔 확인 문제
상관계수 대신 상호정보량을 쓰면 무엇이 달라지나요?

MI 의 함정 — 표본이 적으면 부풀려진다

MI 에는 고약한 성질이 있습니다. 표본이 적을수록 값이 커집니다. 극단적으로 환자가 4명이고 격자를 4칸으로 쪼개면, 아무 관계가 없어도 각 칸에 점이 하나씩 떨어져 "완벽한 관계"처럼 보입니다.

그래서 MI 는 절대 그 값만 보고 판정하지 않습니다. 자료를 마구 섞어서 만든 귀무분포와 비교합니다. 13강의 순열검정이 그 이야기입니다.

이 표를 한 번 보고 나면 MI 값을 절대값으로 해석하지 않게 됩니다.
Python 브라우저에서 실행
🤔 확인 문제
환자 6명의 자료에서 상호정보량이 0.9 비트로 계산되었습니다. 바로 '강한 관계' 라고 결론지을 수 없는 이유는?
🤔 확인 문제
상호정보량의 값이 0 이라는 것은 무엇을 뜻하나요?