17강 / 20강

정규화와 로그 — 깊이가 다른 세포를 견주려면

왜 10,000 을 곱하고 왜 1 을 더하나

정규화와 로그 — 깊이가 다른 세포를 견주려면
세포마다 잡힌 분자 수가 다릅니다. 그대로 견주면 큰 세포가 늘 이깁니다.

세포 A 에서 CD3D 가 10개, 세포 B 에서 20개 잡혔습니다. B 가 CD3D 를 두 배 켠 것일까요?

A 의 총 UMI 가 1,000 이고 B 가 4,000 이라면 이야기가 달라집니다. 비율로 보면 A 가 1%, B 가 0.5% 예요. A 가 더 켰습니다.

세포마다 잡힌 분자 수는 세포 크기 · RNA 양 · 방울의 운에 따라 열 배 넘게 차이 납니다. 그래서 먼저 눈금을 맞춥니다.

두 걸음

① 비율로 바꾼다    x / (그 세포의 총 UMI) × 10,000
② 로그를 씌운다    log(1 + 위 값)
걸음왜 하나안 하면
① 비율세포 크기 차이를 없앤다큰 세포가 모든 유전자에서 이긴다
× 10,000숫자를 사람이 읽을 만한 크기로0.001 같은 값이 줄줄이
② 로그드물게 아주 큰 값이 혼자 다 정하는 것을 막는다MALAT1 하나가 PCA 를 지배한다
+10 의 로그를 피한다log(0) = 마이너스 무한대
정규화를 껐다 켰다 해 보세요. 세포 순위가 뒤집히는 것을 봅니다.
불러오는 중…
이 한 번의 나눗셈이 결론을 뒤집습니다.
Python 브라우저에서 실행
로그는 '큰 값의 목소리를 줄이는' 장치입니다.
Python 브라우저에서 실행

다른 방법도 있다

방법착상언제
LogNormalize (CP10K + log1p)위에서 한 것기본값. 대부분 이걸로 충분
SCTransform깊이와 분산의 관계를 모형으로 잡는다깊이 차이가 아주 클 때
pearson residuals기대값 대비 잔차희소한 데이터에서

어느 것을 써도 세포 크기를 없앤다 는 목적은 같습니다. 처음에는 기본값으로 가고, 결과가 이상할 때 바꿔 보세요.

🤔 확인 문제
정규화에서 10,000 을 곱하는 이유는?
🤔 확인 문제
log1p 에서 +1 을 하는 이유는?