분위수 변환(quantile transformation)
1. quantile transformation의 이론적인 설명
주어진 데이터 $x _{1},x _{2} ,...,x _{n}$의 분포를 그려보니 다루기 힘들거나 마음에 안들어서 분포를 변환할 필요가 있다고 합시다.
주어진 데이터 $x _{1},x _{2} ,...,x _{n}$의 분포를 나타내는 누적확률분포함수 $F(x)$를 먼저 구해봅시다.
그런데 관측된 값으로는 이것을 구할 수 없으니 경험적 분포함수로 누적확률분포함수를 추정합니다.
주어진 데이터 $x _{i}$에 대하여 $F(X) \approx F(x _{i} )$로 추정했다고 합시다.
분포함수에 관한 theorem 1에서 "$X$의 누적확률분포함수가 $F(x)$라면 확률변수 $Y=F(X)$는 $U(0,1)$을 따른다”라고 했습니다.
이것이 무슨 의미를 가지냐면 경험적 분포함수를 이용하여 각 데이터 $x _{i}$에 대하여 추정된 누적확률분포함수 $F(x _{1} ),F(x _{2} ),...,F(x _{n} )$은 $U(0,1)$을 따른다는 것입니다.
이제 $x _{1} ,x _{2} ,...,x _{n}$의 분포를 바꾸고자하는 target 분포가 있을 것입니다.
원하는 확률분포면 아무거나 상관없지만 보통은 uniform distribution이나 normal distribution으로 바꿉니다.
편의상 예를 들어 normal distribution으로 바꾸고 싶다고 합시다.
normal distribution은 너무나 특별해서 누적확률분포함수를 기호로 $X \sim N(0,1)$이면 $P(X \leq x)=\phi (x)$으로 표시합니다.
이제 분포함수에 관한 theorem 2를 보면 “연속확률변수 $Y$가 $U(0,1)$을 따르고 (중간 생략) 그렇다면 연속확률변수 $$X=F ^{-1} (Y)$$는 $F(x)$를 누적확률분포함수(cumulative distribution function)로 가진다.”라고 했습니다.
이것이 무슨 의미를 가지는지 생각해보면
바꾸고 싶어하는 누적확률분포함수 $F(x)$의 역함수 $F ^{-1} (x)$에 $U(0,1)$을 따르는 값들을 넣어주기만 하면 원하는 확률분포를 가지는 데이터로 바꿀 수 있다는 것을 의미합니다.
그러므로 우리의 데이터 $x _{1} ,x _{2} ,...,x _{n}$가 $N(0,1)$을 따르도록 바꾸고 싶다면
$x _{1} ,x _{2} ,...,x _{n}$이 $U(0,1)$을 따르도록 추정된 누적확률분포함수(경험적 분포함수)에 넣어서 $$F(x _{1} ),F(x _{2} ),...,F(x _{n} )$$을 구했고
이것을 바꾸기를 원하는 $N(0,1)$의 누적확률분포함수인 $P(X \leq x)=\phi (x)$의 역함수인 $\phi ^{-1} (x)$에 집어넣기만 한다면
즉, $$\phi ^{-1} (F(x _{1} )),\phi ^{-1} (F(x _{2} )),...,\phi ^{-1} (F(x _{n} ))$$가 바로 $N(0,1)$을 따른다는 것입니다.
바로 우리가 가지고 있는 $x _{i}$를 $$y _{i} =\phi ^{-1} (F(x _{i} ))$$에 mapping 시키는 작업이 바로 quantile transformation입니다.
그런데 왜 quantile이냐? 누적확률분포함수의 역함수, 즉 normal의 경우 $\phi ^{-1} (x)$가 quantile을 구해주는 quantile function이기 때문입니다.
2. quantile transformation의 구현
이론적인 설명에 따라 직접 원하는 함수의 quantile function을 이용하여 구현할 수 있습니다.
scipy에서 여러가지 probability distribution function을 제공합니다.
혹은 sklearn에서 quantile transformation 함수를 제공합니다.
sklearn.preprocessing.quantile_transform — scikit-learn 1.0.1 documentation
'정형데이터' 카테고리의 다른 글
decision tree의 가지치기(pruning) (0) | 2021.12.13 |
---|---|
예시를 통해 이해하는 decision tree가 생성되는 원리 (0) | 2021.12.11 |
의사결정나무(decision tree)의 생성 원리 (0) | 2021.12.06 |
CatBoost 모형 (0) | 2021.11.03 |
Light GBM 모형 (0) | 2021.11.02 |