16강 / 22강
이웃 분석 — 누가 누구 옆에 있는가
kNN · 이웃 구성 · 관측 대 기대 농축
이제 좌표를 본격적으로 씁니다. 질문은 이렇습니다.
림프구는 주로 무엇 옆에 있는가?
종양세포 옆인가, 다른 림프구 옆인가, 대식세포 옆인가?
종양세포 옆인가, 다른 림프구 옆인가, 대식세포 옆인가?
재는 방법은 간단합니다. 세포마다 가장 가까운 이웃 20개를 찾고, 그 이웃들이 어떤 유형인지 비율을 셉니다. 그 다음이 중요해요 — 그 비율을 조직 전체의 비율과 견줍니다.
농축 = (내 이웃 중 X의 비율) ÷ (조직 전체에서 X의 비율)
농축 = 1 → 우연히 만난 것과 같다 (특별한 관계 없음)
농축 > 1 → 기대보다 자주 붙어 있다
농축 < 1 → 서로 피한다
이 나눗셈이 핵심입니다. 종양세포가 조직의 60%를 차지하면 아무 세포나 잡아도 이웃의 60%는 종양세포예요. 그건 관계가 아니라 산수죠. 기대치로 나누어야 진짜 관계가 보입니다.
조각이라 세포가 성깁니다. 이웃 거리가 실제보다 멀게 나오는데, 위젯은 전체 자료로 계산한 값을 보여 줍니다.
Python
브라우저에서 실행
대각선(자기 자신과의 농축)이 1보다 크면 같은 유형끼리 뭉쳐 있다는 뜻입니다.
Python
브라우저에서 실행
🤔 확인 문제
림프구 이웃의 60%가 종양세포였습니다. 이것만으로 알 수 있는 것은?
해설 조직의 60%가 종양세포라면 아무 세포나 잡아도 이웃의 60%는 종양세포입니다. 농축 = 관측 ÷ 기대 로 나누어야 비로소 '특별히 자주/드물게 붙어 있다'를 말할 수 있어요.
🤔 확인 문제
농축 행렬의 대각선 값이 2.7 이었습니다. 뜻은?
해설 같은 유형끼리의 농축이 1보다 크면 덩어리(cluster)를 이루고 있다는 뜻입니다. 면역세포가 뭉쳐 있으면 삼차림프구조 같은 구조를 의심해 볼 수 있습니다.
🤔 확인 문제
이웃 분석을 표본 전체를 한꺼번에 묶어서 계산했습니다. 무엇이 잘못됐나요?
해설 좌표는 슬라이드마다 독립입니다(3강). 표본 A 의 (1000, 1000)과 표본 B 의 (1000, 1000)은 완전히 다른 곳이죠. 묶어서 KD 트리를 만들면 물리적으로 불가능한 이웃이 대량으로 생깁니다.