Dimensional Reduction and Clustering

Step 05 / 08

정규화 및 feature selection 이후에는 고차원 유전자 발현 데이터를 차원축소하여 구조를 요약하고, 세포 간 유사성을 기반으로 clustering을 수행합니다.


A) 왜 차원축소가 필요한가?

핵심 포인트
  • PCA는 분석용 입력 공간, UMAP은 주로 시각화용 공간으로 이해하면 좋습니다.
  • UMAP에서 가까워 보인다고 해서 반드시 biological distance가 정확히 보존되는 것은 아닙니다.

B) PCA 실행

PCA는 가장 먼저 수행하는 차원축소 단계로, 주요 variation을 설명하는 축을 생성합니다.


obj <- RunPCA(obj, features = VariableFeatures(object = obj))

print(obj[["pca"]], dims = 1:5, nfeatures = 5)
VizDimLoadings(obj, dims = 1:2, reduction = "pca")
DimPlot(obj, reduction = "pca")

C) 몇 개의 PC를 사용할 것인가?

downstream 분석에 사용할 principal components 수를 정하는 것은 중요합니다. 보통 Elbow plot을 참고하여 적절한 차원을 선택합니다.


ElbowPlot(obj)
실전 팁
  • 보통 10~30개의 PC를 많이 사용하지만, 데이터 복잡도에 따라 달라질 수 있습니다.
  • PC 수를 바꾸면 clustering 결과도 달라질 수 있으므로 기록해두는 것이 좋습니다.

D) Neighbor graph 구성

Seurat clustering은 세포 간 최근접 이웃(nearest neighbors)을 기반으로 graph를 만든 뒤, 이 graph에서 community를 찾는 방식입니다.


obj <- FindNeighbors(obj, dims = 1:20)

E) Clustering 수행

FindClusters 함수는 neighbor graph에서 cluster를 찾습니다. 이때 resolution 값이 cluster granularity에 큰 영향을 줍니다.


obj <- FindClusters(obj, resolution = 0.5)
resolution 해석
낮음 (예: 0.2) cluster 수가 적고, 더 큰 집단으로 묶이는 경향이 있습니다.
중간 (예: 0.5~0.8) 실무에서 자주 쓰이는 범위이며, 데이터에 따라 적절한 구분을 제공합니다.
높음 (예: 1.0 이상) cluster 수가 많아지고 세분화되지만, 과도한 분할(over-clustering)이 생길 수 있습니다.

F) UMAP 실행

UMAP은 PCA 공간을 바탕으로 세포를 2차원에 배치하여 cluster 구조를 시각화합니다.


obj <- RunUMAP(obj, dims = 1:20)
DimPlot(obj, reduction = "umap", label = TRUE)
Dimensional reduction and clustering illustration

PCA와 UMAP을 통해 세포 분포를 요약하고, neighbor graph 기반 clustering으로 세포 집단을 탐색할 수 있습니다.

G) resolution 비교 예시

resolution 값에 따라 cluster 수와 세분화 정도가 달라지므로, 여러 값을 비교해보는 것이 좋습니다.


obj <- FindClusters(obj, resolution = c(0.2, 0.5, 0.8, 1.0))

head(obj@meta.data)

이후 metadata에 여러 resolution 결과가 저장되며, 원하는 값을 선택해서 사용할 수 있습니다.

H) 전체 실습 코드 예시


# PCA
obj <- RunPCA(obj, features = VariableFeatures(object = obj))

# PC 선택 참고
ElbowPlot(obj)

# neighbor graph
obj <- FindNeighbors(obj, dims = 1:20)

# clustering
obj <- FindClusters(obj, resolution = 0.5)

# UMAP
obj <- RunUMAP(obj, dims = 1:20)

# visualization
DimPlot(obj, reduction = "umap", label = TRUE)

I) 해석 시 주의점

실전 팁
  • 항상 한 가지 resolution만 보지 말고 여러 값을 비교해보세요.
  • cluster 수가 많다고 좋은 것이 아니라, 해석 가능성이 중요합니다.
  • known marker가 자연스럽게 분리되는지 같이 확인하는 것이 좋습니다.
요약
  • PCA는 고차원 유전자 발현 데이터를 요약하는 첫 단계입니다.
  • FindNeighbors와 FindClusters를 통해 graph 기반 clustering을 수행합니다.
  • UMAP은 cluster 구조를 시각화하는 대표적인 방법입니다.
  • PC 수와 resolution 값은 clustering 결과에 큰 영향을 주므로 비교가 중요합니다.