샘플 거리와 차원축소
샘플 거리는 숫자 특징이 여러 개인 두 관측값이 얼마나 비슷한지 하나의 숫자로 요약한 값입니다. 차원축소는 특징이 너무 많아 직접 그릴 수 없는 관측값을 두세 개의 새 좌표로 바꿔 전체 구조를 살펴보는 방법입니다.
PCA(principal component analysis, 주성분 분석)와 UMAP(uniform manifold approximation and projection)은 대표적인 차원축소 방법입니다. 둘 다 저차원 그림을 만들지만 보존하려는 관계가 다르므로 같은 지도로 해석하지 않습니다.
행 하나는 특징이 여러 개인 벡터다
섹션 제목: “행 하나는 특징이 여러 개인 벡터다”서버 실행 기록이 다음과 같은 DataFrame으로 쌓였다고 해봅시다.
| run | latency_ms | cpu_pct | memory_mb | error_rate |
|---|---|---|---|---|
run_A | 120 | 45 | 820 | 0.01 |
run_B | 125 | 47 | 800 | 0.01 |
run_C | 850 | 92 | 1,900 | 0.18 |
행 하나는 네 숫자를 가진 벡터입니다. run_A와 run_B는 대부분의 특징이 비슷해 가깝고, run_C는 여러 특징이 달라 멀리 놓일 가능성이 큽니다.
특징이 4개면 4차원, 10,000개면 10,000차원입니다. 화면에는 두 축이나 세 축만 그릴 수 있지만 고차원 공간에서 거리를 계산하고 구조를 요약할 수는 있습니다.
거리 공식보다 먼저 척도를 확인한다
섹션 제목: “거리 공식보다 먼저 척도를 확인한다”Euclidean distance는 대응하는 특징의 차이를 제곱해 더합니다. 이때 단위와 숫자 범위가 큰 특징이 거리를 지배할 수 있습니다.
위 표에서 memory_mb는 수백 단위이고 error_rate는 0과 1 사이입니다. 그대로 계산하면 memory의 차이가 error rate보다 훨씬 큰 비중을 갖습니다. 이것이 의도한 중요도인지, 단위 차이 때문에 생긴 현상인지 먼저 판단해야 합니다.
해결 방법은 질문에 따라 다릅니다.
- 단위만 다르고 비중은 같아야 한다면 표준화를 고려합니다.
- 큰 값의 간격이 지나치게 벌어지면 로그나 VST 같은 변환을 고려합니다.
- 거의 변하지 않는 특징이나 잡음 특징이 많으면 필요한 특징만 선택합니다.
- 방향이나 비율이 중요하다면 Euclidean distance 대신 cosine distance 같은 다른 척도를 검토합니다.
전처리와 거리 공식을 바꾸면 “가깝다”의 의미도 바뀝니다. 거리값만 보고 분석 목적에 맞는 척도였다고 가정하지 않습니다.
PCA는 전체 변동이 큰 방향을 보존한다
섹션 제목: “PCA는 전체 변동이 큰 방향을 보존한다”PCA는 관측값들이 가장 크게 퍼지는 선형 방향을 PC1로 잡고, 그다음으로 크게 퍼지는 직각 방향을 PC2로 잡습니다. 각 축이 원래 데이터의 전체 변동을 몇 퍼센트 설명하는지 계산할 수 있습니다.
PCA에서 가까운 점은 표시한 주성분 축에서 비슷합니다. PC1과 PC2가 전체 변동의 일부만 담았다면 화면에서 겹치는 두 점도 PC3 이후 축에서는 다를 수 있습니다.
UMAP은 가까운 이웃 관계를 보존한다
섹션 제목: “UMAP은 가까운 이웃 관계를 보존한다”UMAP은 고차원에서 가까운 이웃들이 저차원에서도 이웃이 되도록 배치하는 비선형 방법입니다. 휘어진 구조나 국소적인 군집이 PCA보다 선명하게 보일 수 있습니다.
UMAP 그림의 전체 방향, 군집 사이의 빈 공간과 절대 거리는 직접적인 단위를 갖지 않습니다. 이웃 수, 최소 거리, 난수와 전처리를 바꾸면 지도가 회전하거나 군집 간 간격이 달라질 수 있습니다.
지도에서 안전하게 말할 수 있는 것
섹션 제목: “지도에서 안전하게 말할 수 있는 것”- 가까운 점은 사용한 특징, 전처리와 거리 기준에서 비슷합니다.
- 멀리 떨어진 점은 전체 패턴이 다르지만 그 원인은 별도로 조사해야 합니다.
- 색으로 표시한 그룹이 갈라져도 차원축소가 원인을 증명한 것은 아닙니다.
- 이상치처럼 보이는 점은 오류일 수도 있고 실제로 드문 관측값일 수도 있습니다.
- 전처리와 설정이 달라진 두 지도는 좌표값을 직접 비교하지 않습니다.
사례: 발현 행렬에 적용하면
섹션 제목: “사례: 발현 행렬에 적용하면”발현 행렬에서는 조직(tissue) 샘플 하나가 행이고 유전자별 발현값이 열입니다. 샘플 사이의 거리는 사용한 유전자와 값의 변환 방식에 따라 달라집니다. 공개 데이터와 새 데이터가 따로 모이면 질환 차이보다 실험 장비나 처리 시점 같은 batch 효과를 먼저 확인해야 합니다.
머신러닝과의 관계
섹션 제목: “머신러닝과의 관계”PCA와 UMAP은 정답 라벨 없이 구조를 찾는 비지도 학습 도구로 분류됩니다. 예측 모델의 정확도를 계산하는 단계가 아니라, 데이터 구조와 품질 문제를 탐색하고 후속 분석 질문을 만드는 단계에 가깝습니다.