12강 / 20강
여러 번 돌려 합의를 본다 — 부트스트랩
이 간선은 사람이 몇 명 바뀌어도 버티는가
지금까지의 네트워크는 200명이라는 특정한 표본에서 나온 것입니다. 만약 다른 200명을 모았다면 같은 그물이 나왔을까요?
확인할 방법이 있습니다. 부트스트랩(bootstrap) 입니다.
200명 중에서 복원추출로 200명을 다시 뽑는다 → 네트워크를 다시 그린다 → 100번 반복
복원추출이라 어떤 사람은 세 번 뽑히고 어떤 사람은 아예 안 뽑힙니다 (평균적으로 37%가 빠집니다). 그러니 매번 조금씩 다른 자료가 되죠. 그래도 살아남는 간선이 튼튼한 간선입니다.
부트스트랩의 고전적인 37% 입니다. e^-1 = 0.368 에서 옵니다.
Python
브라우저에서 실행
매번 나오는 간선과 어쩌다 한 번 나오는 간선이 뚜렷이 갈립니다.
Python
브라우저에서 실행
몇 번 이상 나와야 남길까
ARACNe-AP 는 이것도 통계로 정합니다. 귀무 가정은 이렇습니다 — "만약 간선들이 매 판마다 아무렇게나 뽑힌다면, 한 간선이 등장하는 횟수는 포아송 분포를 따를 것이다."
λ = (전체 등장 횟수) ÷ (후보 쌍 수) → P(X ≥ k) < p 인 최소 k
그 k 보다 많이 나온 간선만 남깁니다. 편리한 점은 판수를 바꿔도 알아서 따라온다는 것이고, 조심할 점은 후보 쌍 수에 따라 기준의 성격이 달라진다는 것입니다. 직접 보시죠.
20판에서 포아송 기준은 16회(80%)로 잡힙니다 — 이 자료에서는 정밀도 1.000 이 나오는 아주 좋은 자리입니다.
Python
브라우저에서 실행
🎮 등장 횟수로 줄 세우기
100판을 미리 돌려 둔 결과입니다. 기준선을 옮기며 몇 회 이상을 남길 때 가장 좋은지 찾아보세요.
5~12강이 이 함수 하나에 들어 있습니다.
Python
브라우저에서 실행
🤔 확인 문제
부트스트랩에서 복원추출을 하면 원래 샘플의 몇 %쯤이 한 번도 안 뽑힐까요?
해설 (1 − 1/n)ⁿ → e⁻¹ ≈ 0.368, 약 37%입니다. 그래서 매 판마다 자료의 3분의 1 이 빠진 셈이 되고, 그 변화를 견디는 간선만 남게 됩니다.
🤔 확인 문제
부트스트랩이 걸러 내는 불안정성이 아닌 것은?
해설 칸 수의 편향은 모든 판에 똑같이 걸립니다. 표본을 바꿔도 사라지지 않아요. 부트스트랩은 '표본에 따라 흔들리는 것'만 잡아냅니다. 편향은 6강의 칸 수 선택과 9강의 문턱으로 다뤄야 합니다.
🤔 확인 문제
같은 자료를 20판 돌렸을 때는 포아송 기준이 80%(16/20)였는데, 100판에서는 51%(51/100)로 내려갔습니다. 왜일까요?
해설 λ = 6 에서는 기준이 λ 의 2.6배였지만 λ = 31 에서는 1.6배가 됩니다. 포아송의 상대 표준편차가 1/√λ 로 줄어들기 때문입니다. 후보 쌍이 279개뿐이라 λ 가 크게 나오는 것이 근본 원인이고, 실제 규모에서는 λ 가 1 보다 작아 이런 문제가 생기지 않습니다.