차원축소 고르기: PCA·VAE·UMAP·Diffusion Map
This content is not available in your language yet.
차원축소는 특징이 수천 개인 관측치를 적은 수의 새 좌표로 바꾸는 방법입니다. 싱글셀 RNA-seq에서는 세포×유전자 행렬(열 2,000개 안팎)을 세포×좌표 행렬(열 2~50개)로 바꿉니다. 이 문서는 자주 쓰는 네 방법을 같은 틀로 비교합니다.
| 방법 | 종류 | 입력 | 출력 | 주 용도 |
|---|---|---|---|---|
| PCA | 선형 분해 | 정규화·log 변환된 세포×HVG 행렬 | 세포×PC 좌표 30~50개 | 뒤 단계 계산용 기본 표현 |
| VAE (scVI) | 신경망 생성 모델 | raw count 세포×HVG 행렬 + batch 라벨 | 세포×잠재 좌표 10~30개 | batch 통합된 계산용 표현 |
| UMAP | 그래프 기반 비선형 임베딩 | kNN 그래프 | 세포×2 좌표 | 사람이 보는 그림 |
| Diffusion Map | 그래프 random walk 스펙트럼 | kNN 그래프 | 세포×확산 성분 10~15개 | 연속 과정·궤적 분석 |
핵심 구분은 출력을 무엇에 쓰는가입니다. PCA와 VAE는 이웃 그래프와 군집화가 읽는 계산용 표현을 만들고, UMAP은 눈으로 보는 2차원 그림을 만들며, Diffusion Map은 연속적으로 변하는 과정을 따라가는 좌표를 만듭니다.
네 방법이 공통으로 푸는 문제
섹션 제목: “네 방법이 공통으로 푸는 문제”세포 하나는 유전자 2,000개의 발현값을 가진 벡터입니다. 2,000차원 공간에서 직접 거리를 재면 두 가지 문제가 생깁니다. 유전자 하나하나의 측정 잡음이 합쳐져 거리를 지배하고, 세포 30,000개 × 2,000열의 계산이 모든 단계마다 반복됩니다.
차원축소는 서로 함께 변하는 유전자들을 하나의 축으로 압축해 잡음을 줄이고 계산을 가볍게 합니다. 다만 무엇을 보존하며 줄이느냐가 방법마다 다릅니다.
- PCA는 전체 분산이 큰 방향을 보존합니다.
- VAE는 count를 다시 생성할 수 있는 정보를 보존합니다.
- UMAP은 가까운 이웃 관계를 보존합니다.
- Diffusion Map은 그래프 위에서 걸어서 도달하기 쉬운 정도를 보존합니다.
PCA: 선형 축으로 압축한다
섹션 제목: “PCA: 선형 축으로 압축한다”PCA는 분산이 가장 큰 방향부터 차례로 직각 축을 잡는 선형 방법입니다. 자세한 원리와 loading 읽는 법은 PCA 레퍼런스에 있으므로 여기서는 싱글셀에서의 역할만 정리합니다.
유전자 3개를 축으로 놓으면 세포들은 3차원 공간의 점 구름이 됩니다. PC1은 그 구름이 가장 길게 뻗은 방향, PC2는 PC1과 직각인 방향 중 가장 넓게 퍼진 방향입니다. PC1·PC2 평면에서 보면 구름이 가장 넓게 펼쳐져 보이고, 이 화면이 PCA 산점도입니다. 실제로는 같은 방식으로 유전자 2,000개의 공간에서 PC 30~50개를 고릅니다.
- 푸는 문제: 세포×HVG 행렬을 뒤 단계가 읽을 30~50개 좌표로 줄인다.
- 입력: 세포별 총 count를 맞추고
log1p를 적용한 뒤 HVG만 남긴 행렬. 유전자별로 평균 0, 분산 1로 스케일하기도 합니다. - 출력: 세포×PC 좌표 행렬, 유전자×PC loading 행렬, 축별 설명 분산 비율. 설명 분산 비율을 보고 몇 번째 PC까지 쓸지 정합니다.
PCA의 장점은 빠르고 결정적이며 해석 가능하다는 점입니다. loading을 보면 어떤 유전자가 PC1을 만들었는지 바로 알 수 있습니다. 단점은 선형 축만 찾고, batch 효과가 있으면 그 차이가 큰 PC를 차지한다는 점입니다.
VAE: 신경망으로 압축했다가 복원하며 잠재 공간을 학습한다
섹션 제목: “VAE: 신경망으로 압축했다가 복원하며 잠재 공간을 학습한다”VAE(variational autoencoder, 변분 오토인코더)는 입력을 작은 잠재 벡터로 압축했다가 다시 복원하도록 학습하는 신경망입니다. PCA가 직선 축으로만 압축한다면, VAE는 신경망이 만드는 휘어진 함수로 압축합니다. VAE는 오토인코더를 확장한 모델이므로 오토인코더부터 봅니다.
오토인코더: 압축했다가 복원한다
섹션 제목: “오토인코더: 압축했다가 복원한다”오토인코더(autoencoder, AE)는 두 신경망을 이어 붙인 구조입니다.
- encoder: 입력 벡터 x를 훨씬 작은 벡터 z로 압축합니다.
- decoder: z만 보고 원래 입력을 복원한 x̂을 만듭니다.
정답 라벨은 필요 없습니다. 입력 자신이 정답이기 때문입니다. 입력 x와 복원값 x̂의 차이인 복원 오차가 작아지도록 두 신경망의 가중치를 함께 학습합니다.
가운데 z가 입력보다 작다는 점이 핵심입니다. 위 그림처럼 숫자 6개를 2개로 줄였다가 다시 6개로 되돌리려면, 그 2개에 입력의 가장 중요한 정보를 담을 수밖에 없습니다. 학습이 끝나면 decoder는 버리고 encoder가 내놓는 z를 세포의 새 좌표로 씁니다. 이 좁은 구간을 병목(bottleneck), z가 놓이는 공간을 잠재 공간(latent space)이라고 부릅니다.
PCA와 비교하면 차이가 분명해집니다. 신경망의 각 층에서 비선형 함수를 빼면 오토인코더는 PCA와 같은 공간을 찾습니다. 비선형 함수가 들어가면 유전자 사이의 관계가 직선이 아니어도 적은 수의 z에 담을 수 있습니다.
오토인코더의 한계: 잠재 공간에 빈 곳이 생긴다
섹션 제목: “오토인코더의 한계: 잠재 공간에 빈 곳이 생긴다”오토인코더는 세포 하나를 잠재 공간의 점 하나로 보냅니다. 학습 목표가 복원뿐이므로, 점들이 잠재 공간에 어떻게 놓이는지는 아무 제약이 없습니다. 그래서 두 가지 문제가 생깁니다.
- 비슷한 세포가 가까운 z를 받는다는 보장이 없습니다. 복원만 잘 되면 멀리 떨어뜨려 놓아도 손해가 없기 때문입니다.
- 학습한 점들 사이의 빈 곳에서는 decoder가 무엇을 내놓을지 알 수 없습니다. 한 번도 본 적 없는 z이기 때문입니다.
z 사이의 거리로 이웃을 찾고 군집을 나누려면 잠재 공간이 매끄러워야 하는데, 오토인코더는 이를 보장하지 않습니다.
VAE: 점 대신 분포로 압축한다
섹션 제목: “VAE: 점 대신 분포로 압축한다”VAE는 오토인코더에 두 가지를 더합니다.
- encoder가 점 대신 분포를 출력합니다. 세포마다 z의 평균 μ와 분산 σ²을 내놓고, 그 분포에서 z를 하나 뽑아 decoder에 넘깁니다. 같은 세포라도 학습할 때마다 조금씩 다른 z가 뽑히므로, decoder는 한 점이 아니라 그 주변 영역 전체에서 같은 세포를 복원하도록 학습됩니다.
- 손실에 분포를 정돈하는 항을 더합니다. 각 세포의 분포가 표준정규분포에서 너무 멀어지지 않도록 벌점을 줍니다. 이 항이 없으면 신경망이 분산을 0으로 줄여 다시 오토인코더로 돌아갑니다.
두 항은 서로 당깁니다. 복원 오차는 세포마다 z를 뚜렷하게 구분하려 하고, KL 항은 모든 세포의 분포를 원점 주변으로 모으려 합니다. 그 균형에서 비슷한 세포의 분포는 겹치고 다른 세포의 분포는 떨어지는, 빈 곳 없이 매끄러운 잠재 공간이 만들어집니다.
위 그림은 z가 2차원일 때 학습된 잠재 공간입니다. 세포 하나가 번진 얼룩 하나이고, 가운데 점이 평균 μ, 색이 번진 범위가 분산입니다. 색이 진한 곳일수록 그 세포의 z가 뽑힐 확률이 높습니다. 색은 세포 종류를 나타냅니다. 같은 종류의 세포는 분포가 많이 겹치고, 종류 사이의 경계에서도 일부가 겹칩니다.
그림 위에서 커서를 움직이면 그 위치의 z를 decoder에 넣었을 때 복원값이 어떤 세포를 닮는지 표시됩니다. decoder는 학습 중에 각 세포의 분포에서 뽑힌 z로 그 세포를 복원했으므로, 어떤 z에서의 복원값은 그 위치에 분포가 걸쳐 있는 세포들을 닮습니다. 한 무리의 가운데에서는 그 종류 하나로 정해지고, 무리가 겹치는 경계에서는 여러 종류가 섞인 중간 상태가 됩니다.
청록 무리는 보라 무리를 감싸며 휘어 있습니다. encoder가 비선형 함수이므로 한 종류의 세포가 이렇게 오목한 영역을 차지할 수 있습니다. 이 두 무리는 직선 하나로 가를 수 없고, 청록 무리의 양 끝을 직선으로 이으면 그 사이는 보라 무리를 지나갑니다.
잠재 공간이 매끄러우므로 임의의 z를 decoder에 넣어도 그럴듯한 값이 나옵니다. 그래서 VAE를 압축 모델이면서 생성 모델이라고 부릅니다.
입력과 출력
섹션 제목: “입력과 출력”- 입력: 세포×유전자 행렬. 보통 HVG 2,000~4,000개로 열을 줄여 넣습니다.
- 출력: 세포별 잠재 좌표 z. 학습이 끝난 뒤에는 샘플링하지 않고 encoder가 내놓은 평균 μ를 그 세포의 좌표로 씁니다. 보통 10~30차원이며, PCA 좌표 대신 이웃 그래프와 군집화의 입력이 됩니다.
PCA와 비교한 장단점
섹션 제목: “PCA와 비교한 장단점”VAE의 장점은 비선형 구조를 담을 수 있고, 데이터를 작은 묶음(minibatch)으로 나눠 학습하므로 세포가 수십만 개를 넘어도 다룰 수 있다는 점입니다.
단점은 학습이 확률적이라 실행마다 조금 다르고, 어떤 유전자가 축을 만들었는지 loading처럼 읽을 수 없다는 점입니다. 세포가 수천 개 이하면 PCA보다 나은 점이 거의 없습니다.
UMAP: 이웃 그래프를 2차원 평면에 펼친다
섹션 제목: “UMAP: 이웃 그래프를 2차원 평면에 펼친다”UMAP(uniform manifold approximation and projection)은 고차원에서 이웃인 점들이 2차원에서도 이웃이 되도록 점을 배치하는 비선형 방법입니다.
어떤 문제를 풀 때 쓰는가
섹션 제목: “어떤 문제를 풀 때 쓰는가”PCA 좌표 30개를 사람이 한눈에 볼 수는 없습니다. UMAP은 30차원 공간의 이웃 관계를 2차원 산점도로 옮겨 세포 집단이 몇 개인지, 어떤 집단끼리 붙어 있는지 눈으로 확인하게 해 줍니다.
kNN 그래프입니다. 원래 좌표가 아니라 그래프의 연결 강도를 읽으므로, UMAP의 모양은 그 그래프를 만들 때 쓴 좌표(PCA든 VAE든)와 k에 따라 결정됩니다.
어떻게 동작하는가
섹션 제목: “어떻게 동작하는가”그래프를 평면에 그리는 force-directed layout과 같은 원리입니다. edge로 연결된 두 점 사이에는 끌어당기는 힘을, 연결되지 않은 점 사이에는 밀어내는 힘을 두고, 점들을 조금씩 움직여 힘이 균형을 이루는 배치를 찾습니다. 밀어내는 힘은 모든 쌍을 계산하지 않고 무작위로 뽑은 일부 쌍(negative sampling)에만 적용해 속도를 냅니다.
위 점 구름은 3차원이라 어느 각도에서 보든 일부 무리가 겹쳐 보입니다. 펼치기는 두 부분으로 이루어집니다.
- 평면에 내려놓기: 점들을 곧바로 2차원에 놓습니다. 3차원에서 서서히 납작해지는 과정은 없습니다. 위젯은 지금 보고 있는 화면 위치를 출발 배치로 쓰고, 실제 UMAP은 그래프에서 계산한 초기 배치를 씁니다. 원래 좌표는 이웃 그래프를 만들 때만 쓰이고 이후로는 쓰이지 않습니다.
- 평면 안에서 다듬기: 선으로 이어진 점은 당기고 그렇지 않은 점은 밀어내기를 수백 번 반복합니다. 한 번의 이동은 작고, 반복이 쌓이면서 배치가 바뀝니다.
“한 단계” 버튼은 이 반복을 한 번씩만 진행하고, 각 점이 직전 위치(빈 원)에서 어디로 움직였는지 선으로 보여 줍니다. 끝나면 3차원에서 이웃이던 점들이 평면에서도 이웃으로 남고, 겹쳐 보이던 무리는 서로 떨어집니다. 실제 UMAP은 같은 과정을 30~50차원 좌표에서 만든 그래프로 수행합니다.
두 파라미터가 그림을 바꿉니다.
| 파라미터 | 의미 | 효과 |
|---|---|---|
n_neighbors (그래프의 k) | 얼마나 넓은 범위를 “이웃”으로 볼지 | 작으면 국소 구조가 잘게, 크면 전체 구조가 매끄럽게 |
min_dist | 가까운 점을 얼마나 붙여 놓을지 | 작으면 섬이 촘촘하게 뭉치고, 크면 고르게 퍼짐 |
세포×2 좌표 행렬입니다. 이 두 열은 그림을 그리는 용도로만 씁니다. 보통 군집이나 샘플로 색을 칠해 봅니다.
그림에서 읽어도 되는 것과 안 되는 것
섹션 제목: “그림에서 읽어도 되는 것과 안 되는 것”| 읽어도 됨 | 읽으면 안 됨 |
|---|---|
| 함께 뭉친 점은 고차원에서도 이웃이다 | 섬 사이의 거리가 멀수록 더 다르다 |
| 섬이 뚜렷이 갈라지면 서로 다른 집단일 가능성이 크다 | 섬의 크기가 세포 수나 변동 크기를 뜻한다 |
| 한 섬 안에서 색이 점진적으로 바뀌면 연속 상태일 수 있다 | x축·y축에 의미가 있다 |
| UMAP 좌표로 거리를 재거나 군집을 나눌 수 있다 |
UMAP은 뭉친 것을 더 뭉치게 그리는 경향이 있어 연속적인 분화 과정도 끊어진 섬처럼 보일 수 있습니다. seed나 n_neighbors를 바꿔 다시 그렸을 때 유지되는 구조만 믿습니다.
t-SNE와 다른 점
섹션 제목: “t-SNE와 다른 점”t-SNE(t-distributed stochastic neighbor embedding)도 같은 용도로 쓰는 방법입니다. 이웃은 당기고 나머지는 밀어내는 반복으로 2차원 배치를 찾는다는 뼈대가 UMAP과 같고, 차이는 세부 구현에 있습니다.
| t-SNE | UMAP | |
|---|---|---|
| 이웃 관계의 표현 | 점마다 이웃에 대한 확률 분포(perplexity로 범위 조절) | kNN 그래프의 연결 강도(n_neighbors로 범위 조절) |
| 밀어내는 힘 | 모든 점 쌍을 고려하고, 전체 합으로 정규화 | 무작위로 뽑은 일부 점만(negative sampling) |
| 2차원에서의 유사도 곡선 | t 분포로 고정 | 비슷한 모양의 곡선, min_dist로 조절 |
| 초기 배치 | 원래는 무작위(요즘은 PCA 권장) | 그래프에서 계산한 배치 |
| 속도 | 세포가 많으면 느림 | 빠름 |
Diffusion Map: 그래프 위를 걷는 random walk로 좌표를 만든다
섹션 제목: “Diffusion Map: 그래프 위를 걷는 random walk로 좌표를 만든다”Diffusion Map(확산 지도)은 kNN 그래프 위의 random walk가 어디로 퍼져 나가는지를 고유벡터로 요약한 비선형 차원축소입니다.
어떤 문제를 풀 때 쓰는가
섹션 제목: “어떤 문제를 풀 때 쓰는가”줄기세포가 여러 단계를 거쳐 성숙 세포로 변하는 과정처럼 세포가 끊어진 집단이 아니라 연속된 띠를 이룰 때 씁니다. UMAP은 이런 띠를 과장해 끊어 그릴 수 있고, PCA는 휘어진 띠를 직선 축에 눌러 담습니다. Diffusion Map은 띠를 따라 걷는 거리를 보존하므로 분화 순서를 매기는 pseudotime의 기초로 쓰입니다.
kNN 그래프입니다. 그래프의 edge 가중치를 행마다 합이 1이 되도록 나누면 “세포 i에서 한 걸음에 세포 j로 갈 확률”을 담은 전이 행렬 P가 됩니다. PageRank나 마르코프 연쇄에서 쓰는 바로 그 행렬입니다.
전이 행렬은 그래프에서 바로 계산합니다. ①은 그래프의 연결을 행렬로 옮긴 인접 행렬이고, ②를 누르면 각 행을 그 행의 합으로 차례로 나눕니다. 이웃이 2개인 세포의 행에는 0.5가 두 번, 이웃이 4개인 세포의 행에는 0.25가 네 번 들어갑니다. 그래서 1번에서 3번으로 갈 확률(0.5)과 3번에서 1번으로 갈 확률(0.25)이 다릅니다. 인접 행렬은 대칭이지만 전이 행렬은 대칭이 아닙니다.
위젯은 연결을 0과 1로만 두었지만, 실제로는 가까운 이웃일수록 큰 연결 강도를 씁니다.
어떻게 동작하는가
섹션 제목: “어떻게 동작하는가”P를 t번 곱한 Pᵗ는 “t걸음 뒤에 어디에 있을 확률”입니다. 두 세포에서 출발한 random walk가 t걸음 뒤에 비슷한 곳에 분포하면 두 세포는 확산 거리가 가깝습니다. 수많은 경로를 평균하므로 edge 하나의 잡음에 둔감합니다.
위젯은 walker 한 명을 실제로 걷게 하지 않고, P를 t번 곱해 정확한 확률을 그립니다. 걸음 수를 늘리며 세 가지를 확인해 보세요.
- 확률은 선을 따라서만 퍼집니다. 1번에서 출발하면 10번은 가장 늦게 밝아집니다. 그림에서는 가까워 보여도 walk로는 가장 먼 세포입니다.
- 출발점이 가까우면 퍼진 모양도 비슷합니다. 몇 걸음 뒤 1행과 2행은 거의 같지만, 1행과 10행은 전혀 다릅니다. 이 행 사이의 차이가 확산 거리입니다.
- 오래 걸으면 출발점의 흔적이 사라집니다. 걸음 수를 끝까지 올리면 모든 행이 거의 같아집니다. 어디서 출발했는지 구분하게 해 주는 것은 아직 다 섞이지 않은 차이입니다.
고유벡터의 의미
섹션 제목: “고유벡터의 의미”이 확산 거리를 Euclidean 거리로 재현하는 좌표가 P의 고유벡터입니다. P는 세포×세포 행렬이므로, 고유벡터 하나는 세포마다 값을 하나씩 가진 목록입니다. 세포가 10개면 길이 10짜리 벡터이고, i번째 값이 그대로 세포 i의 좌표가 됩니다.
| PCA | Diffusion Map | |
|---|---|---|
| 분해하는 행렬 | 유전자×유전자(공분산) | 세포×세포(전이 행렬) |
| 고유벡터의 길이 | 유전자 수 | 세포 수 |
| 고유벡터가 뜻하는 것 | 유전자 공간의 방향 | 세포마다 매긴 값의 목록 |
| 세포 좌표를 얻는 법 | 세포를 그 방향에 투영 | 고유벡터의 값을 그대로 읽음 |
P를 곱하는 것은 세포마다 붙인 값을 이웃 평균으로 바꾸는 것입니다. 고유벡터는 그렇게 평균을 내도 모양이 그대로이고 크기만 고유값 배가 되는 벡터입니다. t번 곱하면 고유값의 t제곱 배가 됩니다.
- 전부 같은 값(고유값 1): 평균을 내도 전혀 변하지 않습니다. 영원히 남지만 세포를 구분하지 못합니다.
- DC1(고유값 0.91): U자를 따라 1번에서 10번까지 값이 차례로 변해, 왼쪽 끝과 오른쪽 끝이 반대 부호입니다. 이웃끼리 값이 비슷하므로 평균을 내도 천천히 줄어듭니다.
- DC2(고유값 0.67): 양 끝과 가운데 바닥이 반대 부호입니다. DC1보다 빨리 줄어듭니다.
- 들쭉날쭉(고유값 −0.20): 이웃끼리 부호가 엇갈립니다. 한 걸음에 부호가 뒤집히며 20%만 남고, 두세 걸음이면 사라집니다.
세포마다 붙인 값을 온도로 읽으면 이해하기 쉽습니다. P를 곱하는 것은 열이 이웃으로 한 번 전달되는 것이고, 고유값은 그 온도 패턴이 한 번에 얼마나 남는지입니다. 모든 세포의 온도가 같아진 상태가 열평형입니다.
- DC1: 궤적의 한쪽 끝은 뜨겁고 반대쪽 끝은 차가운 상태입니다. 열이 궤적 전체를 지나가야 평형이 되므로 가장 천천히 식습니다.
- DC2: 양 끝은 뜨겁고 가운데는 차가운 상태입니다. 열이 절반 거리만 가면 되므로 더 빨리 식습니다.
random walk를 오래 해도 남는 것은 앞쪽 벡터들뿐입니다. 뒤쪽 벡터는 몇 걸음 만에 사라지므로 버려도 확산 거리가 거의 달라지지 않습니다.
고유값이 1인 첫 벡터는 모든 세포에서 값이 같아 정보가 없고, 그다음 고유벡터부터 DC1, DC2라고 부릅니다. 고유값이 1에 가까울수록 random walk를 해도 그 값이 천천히 흐려집니다. 그래서 띠의 한쪽 끝에서 반대쪽 끝까지 매끄럽게 변하는, 가장 긴 띠를 따라가는 값이 DC1으로 먼저 나옵니다.
세포×확산 성분 행렬(보통 10~15개 열)과 성분별 고유값입니다. 열 하나가 고유벡터 하나이고, 각 열은 random walk를 해도 천천히 섞이는 차이를 하나씩 담습니다. DC1이 가장 천천히 섞이는 차이, DC2가 그다음입니다.
출발 세포를 하나 지정하면 그 세포에서 각 세포까지의 확산 거리로 pseudotime을 계산할 수 있습니다.
DC1-DC2 산점도에서는 분화 궤적이 한쪽 끝에서 다른 쪽 끝으로 이어진 곡선이나 갈라진 팔로 보입니다. 뚜렷이 떨어진 세포 종류만 있는 데이터에서는 각 집단이 꼭짓점에 몰려 있을 뿐 유용한 정보가 없습니다.
데이터 특성에 따라 고르기
섹션 제목: “데이터 특성에 따라 고르기”| 데이터·질문의 특성 | 맞는 방법 | 이유 |
|---|---|---|
| 샘플 하나, 세포 수천~수만 개, 첫 탐색 | PCA | 빠르고 결정적이며 설명 분산과 loading으로 점검 가능 |
| 어떤 유전자가 축을 만들었는지 알아야 함 | PCA | VAE·UMAP·Diffusion Map에는 loading이 없음 |
| donor·실험 날짜가 여럿이라 batch 통합이 필요 | VAE (scVI), 또는 PCA + Harmony | batch 라벨을 모델에 직접 반영 |
| 세포 수십만~수백만 개 | VAE (scVI) | minibatch 학습으로 메모리 한계 회피 |
| 세포 종류별로 떨어진 집단을 보고 싶음 | UMAP (PCA 또는 scVI 그래프 위에서) | 이웃 관계를 보존해 섬이 선명 |
| 분화·활성화처럼 연속적으로 변하는 과정 | Diffusion Map (+ DPT) | 띠를 따라 걷는 거리를 보존 |
| 그림이 아니라 거리·군집 계산에 쓸 좌표 | PCA, VAE, Diffusion Map | UMAP 좌표는 계산용이 아님 |
| 세포 수천 개 이하, batch 없음 | PCA | VAE는 데이터가 적으면 과적합하고 이점이 없음 |
일반적인 조합은 PCA 또는 scVI로 계산용 표현을 만들고, 그 위에 kNN 그래프를 세운 뒤, UMAP으로 그림을 그리고, 연속 과정이 의심되면 Diffusion Map을 추가하는 것입니다. 네 방법은 경쟁 관계가 아니라 파이프라인의 서로 다른 자리에 놓입니다.
흔한 함정
섹션 제목: “흔한 함정”- UMAP 좌표에서 군집을 나누거나 거리를 잰다. 군집은 kNN 그래프에서, 거리는 PCA·scVI 좌표에서 계산합니다. UMAP은 결과를 색칠해 보는 화면입니다.
- scVI에 정규화된 값을 넣는다. 모델은 raw count를 가정합니다.
layers['counts']에 원본을 보존해 두고 그 layer를 지정합니다. - PC 개수를 기본값 50으로 고정한다. 설명 분산 곡선이 평평해지는 지점이 데이터마다 다릅니다. 너무 적으면 작은 집단이 사라지고 너무 많으면 잡음이 들어옵니다.
- Diffusion Map을 끊어진 집단에 적용한다. 그래프가 여러 조각으로 나뉘어 있으면 확산 성분은 조각을 구분할 뿐 궤적을 보여 주지 않습니다. 궤적을 보려는 세포 집단만 따로 떼어 다시 계산합니다.
- batch 통합 결과를 발현 검정에 쓴다. scVI 잠재 좌표와 보정 발현값은 군집·시각화용입니다. 조건 간 유전자 검정은 donor 단위로 합친 raw count로 합니다.
- seed를 기록하지 않는다. UMAP과 VAE는 난수에 따라 결과가 달라집니다.
random_state와 라이브러리 버전을 분석 기록에 남깁니다.