Lesson 6 of 20
칸을 몇 개로 나눌까 — 추정의 딜레마
너무 굵으면 못 보고, 너무 잘으면 헛것을 본다
5강에서 얼렁뚱땅 넘어간 것이 하나 있습니다 — 왜 7칸인가?
이것이 히스토그램 방식 MI 추정의 유일하고도 가장 큰 골칫거리입니다. 칸 수를 바꾸면 MI 값 자체가 달라지기 때문입니다.
칸이 적으면 (2~3칸)
무늬가 뭉개집니다. 대각선으로 예쁘게 늘어선 관계도 "왼쪽 아래 반, 오른쪽 위 반" 정도로만 보여서 진짜 관계를 놓칩니다.
편향은 작지만 분해능이 없다
칸이 많으면 (15칸 이상)
200명을 225칸에 뿌리면 칸마다 한 명 남짓. 대부분 빈 칸이고 우연히 두 명 든 칸이 무늬처럼 보입니다. 무관한 쌍의 MI 가 부풀어 오릅니다.
분해능은 좋지만 편향이 폭발
GAPDH–ACTB 는 진짜로 무관한 쌍입니다. 20칸에서는 0.4 를 넘습니다 — 7칸에서의 DDX54–MYC 절반이죠.
Python
Runs in your browser
귀무분포를 300번만 뽑아서 조금 거칩니다. 20초쯤 걸릴 수 있어요.
Python
Runs in your browser
그러면 몇 칸으로?
이론적으로 딱 떨어지는 답은 없습니다. 실무에서 쓰는 어림 규칙이 몇 가지 있습니다.
| 규칙 | 식 | n = 200 이면 |
|---|---|---|
| 세제곱근 규칙 | b ≈ n1/3 | 5.8 → 6칸 |
| 스터지스 규칙 | b ≈ 1 + log₂ n | 8.6 → 9칸 |
| 칸마다 최소 5개 | b ≈ √(n/5) | 6.3 → 6칸 |
| 이 강의 | — | 7칸 |
대체로 6~9칸을 가리킵니다. 우리는 그 가운데인 7을 씁니다. 아래 위젯으로 6, 7, 8, 9 를 직접 비교해 보세요 — 결과가 거의 안 바뀝니다.
mi_gauss 는 r 하나로 MI 를 계산합니다. 빠르지만 3강의 함정을 그대로 물려받습니다.
Python
Runs in your browser
🤔 Check yourself
칸 수를 20으로 늘렸더니 아무 관계 없는 쌍의 MI 가 0.4 까지 올랐습니다. 이때 올바른 대응은?
Answer 편향은 칸 수·샘플 수가 정해지면 모든 쌍에 똑같이 걸립니다. 그래서 같은 조건에서 귀무분포를 뽑아 문턱을 세우면 편향이 자동으로 상쇄됩니다. 9강에서 이 방법을 짭니다.
🤔 Check yourself
n = 1000 인 자료에 세제곱근 규칙을 쓰면 칸 수는 몇 개쯤일까요?
Answer 10001/3 = 10. 샘플이 늘면 칸을 더 잘게 쪼갤 수 있습니다 — 칸마다 들어가는 사람 수가 유지되기 때문입니다.
🤔 Check yourself
ARACNe-AP 가 원래 ARACNe 보다 훨씬 빠른 이유는?
Answer 커널 밀도 추정은 샘플 수의 제곱에 비례해 느려집니다. 적응 분할은 점이 몰린 곳만 잘게 쪼개는 방식이라 훨씬 빠르면서 정확도가 비슷합니다. 재려는 양(MI)과 그 뒤의 DPI 는 그대로입니다.