Log Transformation 로그/지수/제곱/루트/역수 함수변환 [빅공남! 통계 같이해요]
Log Transformation 로그 지수 루트 역수 제곱 변환 등 데이터의 변수 변환 기법 중에 하나인 함수 변환에 대해서 같이 공부하는 포스팅과 유튜브 영상을 준비했습니다. 특히, 로그 변환은 Data의 Skew를 조절하는 중요한 내용 중에 하나입니다. 데이터 분석과 공학에서 자주 등장하는 Log Normal Distribution과도 연관이 있는 내용입니다. 오늘은 어떻게 함수변환을 직관적으로 쉽게 이해할 것인가 초점을 맞추고 내용을 정리하도록 하겠습니다.
데이터 검정 사이트에서 변수변환은 하나의 소주제임을 확인할 수 있습니다. 지난 포스티엥 이어서 계속 변수 변환에 대해서 정리를 해나가고 있습니다.
변수 변환 기법은 크게 4가지로 정리하고 있습니다.
1) Scaler(Min-max/Z-score/Robust)
2) 구간화(Binning)
3) 더미변수(Dummy Variable)
4) 함수 변환 (로그,지수,제곱,루트,역수 등등....)
이중 오늘 주제는 4번째 함수에 의한 변환에 관한 주제입니다.
1, 함수 변환의 목적 : Skew?
함수에 의한 변환을 이해하려면 먼저 왜도(Skew)에 관한 개념부터 다시 정리해야 합니다. 혹시나 Skew에 대해서 좀더 자세히 공부가 필요하신 분들을 위해 앞선 포스팅 링크 먼저 첨부하고 출발하겠습니다.
지난 포스팅처럼 Skew의 예시로 아래 그림을 먼저 보도록 하겠습니다.
Positive Skew는 오른쪽으로 꼬리가 긴 분포를 의미하고,
Negative Skew는 왼쪽으로 꼬리가 긴 분포를 의미합니다.
Zero Skew는 정규분포에 가까운 모양입니다.
데이터 분석에 용이한 분포는 좌우 대칭 모양을 가지는 정규분포에 가까운 모양입니다. 그런데 Positive Skew(+),
Negative Skew(-)인 경우에는 한쪽으로 치우쳐진 분포의 모양을 가지게 됩니다.
그래서 함수 변환의 목적은 분포의 좌우 비대칭성을 정규분포에 가까운 모양으로 변환하는데 있습니다. 아래 그림처럼 Log Transformation을 설명하는 그림을 찾아볼 수 있습니다.
결국 그림 처럼 Normal Distribution(정규분포)와 비슷학게 데이터를 변환하는 과정이 중요한 부분입니다.
2. 지수/로그/제곱/루트/역수 숫자 계산
고등학교 수학1에서 지수와 로그에 대해서 한번씩 들어보셨을 것입니다. 지수와 오르그를 살펴보면 간단하게 다음처럼 숫자 계산이 됨을 알 수 있습니다.
먼저 로그를 살펴보겠습니다.
log10 = 1
log 100 = 2
X가 10 ☞ 100 만큼 변하면,
Y는 1 ☞ 2 만큼 변했습니다.
X에서 90차이나던 숫자가 Y에서는 1차이가 나는 것입니다.
이것은 Positive Skew의 오른쪽 긴 부분을 줄여주는 역할을 합니다.
이제 루트를 살펴보겠습니다.
루트10 = 3.xxx
루트100 = 10
X가 10 ☞ 100 만큼 변하면,
Y는 3.xx ☞ 10 만큼 변했습니다.
X에서 90차이나던 숫자가 Y에서는 6정도 차이가 나는 것입니다.
이것은 Positive Skew의 오른쪽 긴 부분을 줄여주는 역할을 합니다.
이제 역수를 살펴보겠습니다.
1/10 = 0.1
1/100 = 0.01
X가 10 ☞ 100 만큼 변하면,
Y는 0.1 ☞ 0.01 만큼 변했습니다.
X에서 90차이나던 숫자가 Y에서는 0.09정도 차이가 나는 것입니다.
이것은 Positive Skew의 오른쪽 긴 부분을 극단적으로 줄여주는 역할을 합니다.
이제 제곱을 살펴보겠습니다.
10^2 = 100
100^2 = 10000
X가 10 ☞ 100 만큼 변하면,
Y는 100 ☞ 10000 만큼 변했습니다.
X에서 90차이나던 숫자가 Y에서는 9900정도 차이가 나는 것입니다.
이것은 Negative Skew 긴 부분을 극단적으로 줄여주는 역할을 합니다.
Positive Skew를 줄여주는 변환 : 로그/루트/역수
☞ 큰 숫자들의 줄여줌
Negative Skew를 줄여주는 변환 : 제곱/지수
☞ 작은 숫자들의 크기를 늘려줌
3. 로그변환(Log Transformation)
로그함수는 결국 큰 숫자의 크기를 작게 좁혀주는 역할을 합니다. 아래 그림 처럼 고등학교 수1에서 배웠던 로그 그래프를 보면서 X에서 Y의 로그함수 변환의 Skew가 어떻게 변하는지 이해하는 그림을 그려보았습니다.
위의 그림처럼 X가 10에서 90만큼 늘어날 때 로그를 붙이면 1에서 2로 변하게 됩니다. 이는 다시 분포입장에서 보면 Positive Skew부분을 늘려주는 역할을 합니다. 로그에서 1보다 작은 숫자들은 다시 크기를 늘려주는 역할을 하기 떄문에 전체적으로 Positive Skew가 좌우 대칭처럼 변환을 할 수 있는 함수 변환이 될 수 있습니다.
4. 루트변환(Square Root Transformation)
루트함수는 결국 큰 숫자의 크기를 작게 좁혀주는 역할을 합니다. 아래 그림 처럼 X에서 Y의 루트 변환의 Skew가 어떻게 변하는지 이해하는 그림을 그려보았습니다.
위의 그림처럼 X가 10에서 90만큼 늘어날 때 로그를 붙이면 루트10에서 루트100로 변하게 됩니다. 이는 다시 분포입장에서 보면 Positive Skew부분을 늘려주는 역할을 합니다. 로그에서 1보다 작은 숫자들은 다시 크기를 늘려주는 역할을 하기 떄문에 전체적으로 Positive Skew가 좌우 대칭처럼 변환을 할 수 있는 함수 변환이 될 수 있습니다.
5. 역수변환(Inverse Transformation)
역수함수는 결국 큰 숫자의 크기를 극단적으로 작게 좁혀주는 역할을 합니다. 아래 그림 처럼 X에서 Y의 역수 변환의 Skew가 어떻게 변하는지 이해하는 그림을 그려보았습니다.
위의 그림처럼 X가 10에서 90만큼 늘어날 때 로그를 붙이면 루트10에서 루트100로 변하게 됩니다. 이는 다시 분포입장에서 보면 Positive Skew부분을 늘려주는 역할을 합니다. 로그에서 1보다 작은 숫자들은 다시 크기를 늘려주는 역할을 하기 떄문에 전체적으로 Positive Skew가 좌우 대칭처럼 변환을 할 수 있는 함수 변환이 될 수 있습니다.
6. 지수(Exponential Transformation)
지수 함수는 결국 작은 숫자의 크기를 크게 넓혀주는 역할을 합니다. 아래 그림 처럼 X에서 Y의 역수 변환의 Skew가 어떻게 변하는지 이해하는 그림을 그려보았습니다.
지수 변환은 그림처럼 X가 1에서 2로 변할때 Y는 2에서 9로 변하게 됩니다. 오른쪽 부분이 넓어지고 왼쪽부분은 좁혀지는 분포로 바뀝니다. 그래서 Negative Skew를 정규분포에 가깝도록 바꿔주는 변환입니다.
7. 거듭제곱(Power Transformation)
제곱 함수는 결국 작은 숫자의 크기를 크게 넓혀주는 역할을 합니다. 아래 그림 처럼 X에서 Y의 역수 변환의 Skew가 어떻게 변하는지 이해하는 그림을 그려보았습니다.
지수 변환은 그림처럼 X가 1에서 4로 변할때 Y는 1에서 16로 변하게 됩니다. 오른쪽 부분이 넓어지고 왼쪽부분은 좁혀지는 분포로 바뀝니다. 그래서 Negative Skew를 정규분포에 가깝도록 바꿔주는 변환입니다.
8. 함수변환과 SKew 정리
함수 변환과 Skew는 대략 위의 그림 처럼 정리를 해볼 수 있습니다. 결국 함수 변환의 목적은 Positive Skew, Negative Skew 분포를 정규분포와 비슷한 분포의 그림으로 바꿔주는 역할을 하는 것입니다.
9. 로그 노말 분포(Log Normal Distribution)
경제, 금융공학, 데이터 분석, 통계 등에서 로그노말분포(Log Normal Distribution)이라는 용어 또는 개념이 많이 등장하게 됩니다. 로그노멀 분포라는 데이터 분포 X를 로그 변환(Log Transformation)했을 때 정규분포가 되는 분포를 가르킵니다. 주가의 수익률의 변동성 등을 계산할 떄 로그노멀 분포를 이용합니다.
그림처럼 X는 Positive Skew의 분포를 가지는 분포이고, Log 변환을 했더니, 정규분포가 되었습니다. 이런 상황에서 분포 X를 Log Normal Distribution이라고 하는 것입니다.
'빅데이터 > 통계노트' 카테고리의 다른 글
Box Cox Transformation 파이썬 박스 콕스 변환 Skew 조절 [빅공남! 통계 같이해요] (1) | 2022.03.31 |
---|---|
구간화(Binning) 더미변수(Dummy Variable) pd.cut[빅공남! 통계 같이해요] (0) | 2022.03.09 |
MinMax Standard Robust Scaler 변수 변환 [빅공남! 통계 같이해요] (0) | 2022.03.08 |
파생변수 요약변수 Derived Variable Summary Variable [빅공남! 통계 같이해요] (0) | 2022.03.01 |
SVD Singular Value Decomposition 특이값분해 [빅공남! 통계 같이해요] (1) | 2022.02.24 |
댓글