콘텐츠로 이동

VST: 분산을 안정화하기

VST(variance stabilizing transformation, 분산 안정화 변환)는 평균 수준에 따라 달라지는 분산을 비슷한 규모로 만드는 통계적 변환 방법입니다. 값이 큰 구간일수록 흔들림도 커지는 데이터에 변환 함수 f를 적용해, 변환 뒤에는 어느 구간에서나 변동 폭이 비교적 일정하게 보이도록 합니다.

VST는 하나의 고정된 공식 이름이 아닙니다. 데이터가 어떤 확률분포를 따르고 평균과 분산이 어떤 관계인지에 따라 제곱근, 로그, Anscombe 변환처럼 서로 다른 함수를 선택합니다.

같은 상대적 흔들림이 다른 분산을 만든다

섹션 제목: “같은 상대적 흔들림이 다른 분산을 만든다”

두 수준에서 반복 측정한 값이 다음과 같다고 해봅시다.

수준반복 측정값평균표본 표준편차
낮은 수준8, 10, 12102
높은 수준800, 1,000, 1,2001,000200

두 행 모두 평균을 기준으로 약 20%씩 흔들립니다. 하지만 원래 단위에서 표준편차는 2와 200으로 100배 차이 납니다. 평균이 커질수록 분산도 함께 커지는 이런 성질을 이분산성(heteroscedasticity)이라고 합니다.

이 값을 그대로 산점도, 거리 계산이나 최소제곱 회귀에 사용하면 높은 수준의 관측값이 계산을 지배할 수 있습니다. VST는 높은 구간의 간격을 더 강하게 압축해 낮은 구간과 높은 구간의 흔들림을 비교하기 쉬운 규모로 맞춥니다.

아래 가상 데이터는 변수 여섯 개가 각자의 평균에서 같은 비율만큼 흔들리도록 만들었습니다. F6의 평균을 움직인 뒤 원래 값과 VST 보기를 오가면, 평균이 큰 변수의 절대 분산이 어떻게 커지고 변환 뒤 어떻게 고르게 되는지 볼 수 있습니다. 이 예시는 비율 오차에 맞는 log2(x + 1)을 사용합니다.

어떤 값 X의 평균을 μ\mu라고 하고, 분산이 평균에 따라 v(μ)v(\mu)만큼 달라진다고 해봅시다. 변환 함수 ff를 적용하면 변환된 값의 분산은 delta method를 이용해 다음처럼 근사할 수 있습니다.

Var[f(X)](f(μ))2v(μ)\operatorname{Var}[f(X)] \approx \left(f'(\mu)\right)^2 v(\mu)

f(μ)f'(\mu)는 평균 근처에서 변환 함수의 기울기입니다. 위 식을 평균 μ\mu와 무관한 상수에 가깝게 만들려면 기울기를 다음 관계에 맞춥니다.

f(μ)1v(μ)f'(\mu) \propto \frac{1}{\sqrt{v(\mu)}}

분산이 빠르게 커지는 구간일수록 함수의 기울기를 작게 해 값 사이의 간격을 더 압축한다는 뜻입니다. v(μ)v(\mu)의 형태를 알면 이 기울기를 적분해 적합한 변환 함수를 구할 수 있습니다.

평균과 분산 관계에 따라 공식이 달라진다

섹션 제목: “평균과 분산 관계에 따라 공식이 달라진다”

대표적인 관계와 변환은 다음과 같습니다.

데이터의 성질평균과 분산의 관계자주 쓰는 변환
Poisson 형태의 정수 사건 수Var(X)μ\operatorname{Var}(X) \approx \mu제곱근 또는 Anscombe 변환
오차가 값에 비례하는 양수 데이터Var(X)μ2\operatorname{Var}(X) \propto \mu^2로그 변환
고정된 시행 횟수의 비율Var(X)p(1p)\operatorname{Var}(X) \propto p(1-p)arcsine square-root 변환
관계를 미리 정하기 어려운 양수 데이터데이터에서 변환 강도 탐색Box-Cox 계열 변환

예를 들어 분산이 평균에 비례하면 v(μ)=μv(\mu)=\mu이므로 필요한 기울기는 1/μ1/\sqrt{\mu}에 비례합니다. 이를 적분하면 제곱근 형태의 변환이 나옵니다.

Poisson 분포의 작은 값까지 더 잘 보정하려면 단순 제곱근 대신 Anscombe 변환을 사용할 수 있습니다.

f(x)=2x+38f(x) = 2\sqrt{x + \frac{3}{8}}

큰 값에서는 제곱근 변환과 비슷하지만, 3/83/8 보정이 작은 값 구간의 근사를 개선합니다.

VST는 변환 전 값 하나하나에 같은 함수 f를 적용합니다. 원본이 표라면 행과 열 개수는 그대로이고 각 셀의 값만 바뀝니다.

단조 증가하는 변환을 사용하면 값의 순서는 보통 유지됩니다. 가장 큰 값이 가장 작은 값으로 뒤집히지는 않습니다. 대신 차이, 비율과 단위는 바뀌므로 변환된 값에서 두 배, 100만큼 증가처럼 원래 단위의 해석을 그대로 적용할 수 없습니다.

VST는 다음 작업을 자동으로 수행하지 않습니다.

  • 모든 변수의 평균을 0으로 만들기
  • 모든 변수의 분산을 정확히 1로 만들기
  • 이상치 제거
  • 그룹 차이 제거
  • 잘못된 모형이나 측정 오류 수정
  • 변환되지 않은 원래 단위의 효과 크기 계산

목표는 분산을 완전히 같게 만드는 것이 아니라, 평균 수준과 분산 사이의 체계적인 의존성을 줄이는 것입니다.

로그 변환은 가장 익숙한 VST 후보 중 하나입니다.

import numpy as np
transformed = np.log(x)

측정 오차가 절대값이 아니라 원래 값의 일정 비율로 커지는 데이터에서는 로그가 높은 구간을 강하게 압축해 분산을 고르게 만들 수 있습니다. 하지만 0이나 음수에는 바로 적용할 수 없고, 모든 데이터에서 분산을 안정화하는 것도 아닙니다.

log(x + c)처럼 상수 c를 더하면 0을 처리할 수 있지만, 어떤 상수를 선택하느냐가 작은 값 구간의 모양을 크게 바꿉니다. 따라서 로그가 익숙하다는 이유만으로 선택하기보다 평균과 분산 관계를 먼저 확인해야 합니다.

정규화와 z-score와 무엇이 다른가

섹션 제목: “정규화와 z-score와 무엇이 다른가”

세 작업은 목적이 다릅니다.

작업바꾸려는 것대표적인 결과
VST평균 수준에 따른 분산의 변화낮은 구간과 높은 구간의 변동 폭이 비슷해짐
정규화관측 단위 사이의 전체 규모 차이단위별 합계나 기준 크기가 맞춰짐
z-score 표준화변수별 위치와 척도각 변수의 평균 0, 표준편차 1

z-score는 계산이 끝나면 변수마다 분산을 1로 만들지만, 원래 데이터가 왜 이분산적이었는지는 모델링하지 않습니다. VST는 평균과 분산의 관계에 맞는 비선형 함수를 선택한다는 점이 다릅니다.

필요하면 VST 뒤에 중심 이동이나 표준화를 추가할 수 있습니다. 어떤 순서와 조합이 적절한지는 다음 분석이 요구하는 입력 성질에 따라 달라집니다.

마할라노비스 거리와 무엇이 다른가

섹션 제목: “마할라노비스 거리와 무엇이 다른가”

VST는 행렬의 값을 바꾸는 전처리이고, 마할라노비스 거리(Mahalanobis distance)는 두 행 사이의 거리를 재는 방법입니다. 둘 다 큰 분산을 가진 변수가 계산을 지배하는 문제를 완화할 수 있지만, 작동하는 단계와 사용하는 정보가 다릅니다.

평균과 표준편차가 다음과 같은 변수 두 개를 생각해 봅시다.

변수평균과 표준편차
낮은 수준10±210 \pm 2
높은 수준1,000±2001{,}000 \pm 200

원래 값으로 유클리드 거리를 계산하면 높은 수준에서 생긴 200의 차이가 낮은 수준의 2보다 훨씬 크게 반영됩니다. VST는 1,000 근처의 간격을 더 강하게 압축해 두 수준의 흔들림을 비슷한 크기로 만듭니다. 변환 뒤에는 평범한 유클리드 거리나 PCA를 사용할 수 있습니다.

마할라노비스 거리는 원래 값을 직접 압축하지 않습니다. 대신 각 방향에서 평소 관측되는 분산이 클수록 그 방향의 차이에 작은 가중치를 주고, 여러 변수가 함께 움직이는 상관관계도 반영합니다. 두 행을 xxyy, 변수들의 공분산 행렬을 Σ\Sigma라고 하면 거리는 다음과 같습니다.

dM(x,y)=(xy)TΣ1(xy)d_M(x,y)=\sqrt{(x-y)^T\Sigma^{-1}(x-y)}

공분산 행렬의 대각선에는 변수별 분산이 있고, 대각선 밖에는 변수 쌍의 상관된 움직임이 들어 있습니다. 따라서 마할라노비스 거리는 같은 정보가 두 변수에 반복되어 있을 때 이를 유클리드 거리처럼 두 번 크게 세지 않습니다.

구분VST마할라노비스 거리
바꾸는 대상각 셀의 값두 행의 거리 계산식
주로 해결하는 문제평균이 커질수록 분산도 커지는 이분산성변수별 척도 차이와 변수 사이 상관관계
필요한 추정평균과 분산의 관계변수 전체의 공분산 행렬
결과변환된 데이터 행렬행 사이의 거리

마할라노비스 거리가 평균과 분산의 비선형 관계 자체를 제거하는 것은 아닙니다. 현재 데이터에서 추정한 공분산을 기준으로 차이의 가중치를 바꾸는 것입니다. 반대로 VST는 보통 변수 사이의 상관관계를 거리 계산에 반영하지 않습니다.

RNA-seq처럼 유전자가 20,000개인데 샘플은 수십 개인 데이터에서는 20,000×20,00020{,}000 \times 20{,}000 공분산 행렬을 안정적으로 추정하기 어렵습니다. 표본 수보다 변수 수가 많으면 공분산 행렬의 역행렬도 그대로 구할 수 없습니다. 그래서 샘플 PCA나 clustering에는 먼저 VST를 적용하는 경우가 많습니다. 마할라노비스 거리가 필요하다면 VST 뒤에 PCA로 차원을 줄이고, 표본 수에 비해 충분히 적은 PC 공간에서 공분산을 추정하는 방법을 고려할 수 있습니다.

VST는 통계적 전처리입니다. 다만 거리, 분산이나 선형 관계에 민감한 PCA, clustering, 회귀와 같은 방법을 적용하기 전에 사용할 수 있습니다.

변환 뒤 결과가 더 좋아 보인다는 사실만으로 적절한 VST였다고 판단하지는 않습니다. 검증 데이터까지 포함해 변환 함수를 추정하면 데이터 누수가 생길 수 있으므로, 예측 문제에서는 학습 데이터로 변환을 결정하고 같은 함수를 검증·테스트 데이터에 적용해야 합니다.

변환이 적절한지 확인하는 방법

섹션 제목: “변환이 적절한지 확인하는 방법”
  1. 원래 값의 평균 또는 fitted value와 잔차의 퍼짐을 그립니다.
  2. 평균이 커질수록 퍼짐이 넓어지는 패턴이 있는지 확인합니다.
  3. 데이터 생성 분포나 평균·분산 관계에 맞는 후보 변환을 고릅니다.
  4. 변환 뒤 같은 그래프를 다시 그려 퍼짐이 더 일정해졌는지 확인합니다.
  5. 변환이 중요한 비선형 관계를 새로 만들거나 해석을 지나치게 어렵게 하지 않는지 확인합니다.
  6. 변환 함수, 상수와 추정 방법을 기록해 같은 처리를 재현할 수 있게 합니다.

모형이 분산 구조를 직접 다룰 수 있다면 반드시 VST를 먼저 할 필요는 없습니다. 예를 들어 가중 최소제곱이나 적절한 일반화선형모형은 원래 단위에서 평균과 분산 관계를 모델링할 수 있습니다. 변환은 목적이 아니라 여러 해결 방법 중 하나입니다.