PCA·고차원 QC
이 토픽을 마치면
PCA를 고차원 데이터를 저차원 좌표로 요약하는 변환으로 이해하고, scaling·batch·outlier를 분리해 점검할 수 있습니다. 주성분 그림에서 가까운 점이 생물학적 유사성을 자동으로 의미하지 않는다는 한계를 설명합니다.
많은 열을 몇 축으로 보기
고차원 matrix에서는 샘플 간 차이를 모든 feature별로 동시에 보기 어렵습니다. PCA는 변동이 큰 방향을 새로운 축으로 바꿔 몇 개의 좌표로 표현합니다. 어떤 scaling과 feature 선택을 사용했는지에 따라 주성분이 달라지므로, 그림보다 전처리 계약을 먼저 기록합니다.
QC 질문
PCA를 만들기 전에 다음을 확인합니다.
- 행과 열이 sample과 feature 중 무엇인가?
- raw count인가, 변환·정규화된 값인가?
- feature scale이 서로 비교 가능한가?
- batch와 biological condition이 어느 정도 겹치는가?
- outlier 후보의 sample ID와 replicate 구조는 무엇인가?
PCA에서 batch별로 모여 보여도 batch가 원인이라고 자동 확정하지 않습니다. 측정 품질, library size, sample 구성과 설계를 함께 봅니다.
Python 전처리와 PCA
from sklearn.decomposition import PCAfrom sklearn.preprocessing import StandardScaler
X_scaled = StandardScaler().fit_transform(X)pca = PCA(n_components=2)coordinates = pca.fit_transform(X_scaled)print(pca.explained_variance_ratio_)이 코드는 feature가 열인 수치 matrix라는 전제에서 실행합니다. StandardScaler를 fit한 범위, 결측 처리, feature 선택, split이 있다면 그 단위를 기록합니다. 설명분산 비율은 선택한 입력에서의 요약이며, 생물학적 중요성의 순위가 아닙니다.
outlier와 batch를 분리하기
멀리 떨어진 점은 입력 오류, 기술적 실패, 실제 생물학적 변동, batch 차이의 조합일 수 있습니다. 점의 위치만 보고 제거하지 않고 원자료·metadata·replicate를 확인합니다. PCA를 여러 전처리로 반복했다면 어느 설정에서 패턴이 유지되는지 민감도를 기록합니다.
연구 질문으로 돌아가 해석하기
PCA는 QC와 탐색에 유용한 좌표 표현입니다. 주성분 축의 방향 자체를 생물학적 기전으로 해석하거나, 가까운 점을 독립성·인과·질병 상태로 바로 번역하지 않습니다. 원래 feature의 단위와 batch 설계로 돌아가 확인합니다.
자주 생기는 실패
- scaling 여부를 숨기지 않습니다.
- PCA 그림의 축을 효과크기나 유의성으로 부르지 않습니다.
- outlier를 그림만 보고 삭제하지 않습니다.
- batch와 condition이 confounded된 문제를 PCA로 해결한다고 쓰지 않습니다.
핵심 정리
- PCA는 입력 전처리에 의존하는 차원 축소·탐색 도구입니다.
- scaling·batch·outlier는 서로 다른 QC 질문입니다.
- 좌표의 근접성은 생물학적 원인이나 인과를 자동으로 말하지 않습니다.
다음 토픽으로
다음 편에서는 고차원 feature별 검정에서 다중성과 shrinkage를 함께 다룹니다.
참고 자료
- scikit-learn common pitfalls: https://scikit-learn.org/stable/common_pitfalls.html
- scikit-learn metrics: https://scikit-learn.org/stable/modules/model_evaluation.html
- NCBI GEO: https://www.ncbi.nlm.nih.gov/geo/info/
본 편의 matrix와 PCA 예시는 BioStatPy가 독립적으로 작성했습니다.