티스토리 뷰

변수 변환

한 줄 요약

"데이터를 분석하기 더 좋은 형태로 바꾸는 것"

 

❓왜 변환이 필요한가

문제 상황들:
1. 데이터가 한쪽으로 너무 치우쳐 있음 (왜도)
2. 변수마다 단위·크기가 너무 달라서 비교 불가
3. 변수 간 관계가 비선형이라 모델 성능이 낮음
4. 이상치가 너무 커서 분석을 방해함

 

 

변환 종류 전체 그림

변수 변환
├── 스케일 변환 (크기 조정)
│   ├── Min-Max 정규화
│   ├── Z-Score 정규화
│   └── 역수 변환
│
├── 분포 변환 (형태 교정)
│   ├── 로그 변환
│   ├── 제곱근 변환
│   ├── 제곱 변환
│   └── Box-Cox 변환
│
└── 범주형 변환
    ├── 원-핫 인코딩
    └── 레이블 인코딩

1. 스케일 변환 

1) Min-Max 정규화 ⭐️

"최솟값 0, 최댓값 1로 맞추기"

공식: (X - 최솟값) / (최댓값 - 최솟값)

데이터: 100, 200, 300, 400, 500

100 → (100-100)/(500-100) = 0.0
200 → (200-100)/(500-100) = 0.25
300 → (300-100)/(500-100) = 0.5
400 → (400-100)/(500-100) = 0.75
500 → (500-100)/(500-100) = 1.0

 

장점 : 결과가 항상 0~1로 범위 명확

단점 : 이상치에 매우 취약

                 (이상치 1개가 최댓값 되면 나머지가 다 0에 몰림)


2) Z-Score 정규화

"평균 0, 표준편차 1로 맞추기"

공식: (X - 평균) / 표준편차

결과: 주로 -3 ~ +3 사이 분포
      이상치 상대적으로 덜 영향받음

3) 역수 변환

"값을 뒤집기 (1/X)"

X가 커지면 → 1/X는 작아짐
X가 작아지면 → 1/X는 커짐

→ 방향이 반대로 바뀜! ⭐ (시험 자주 나옴)

 

예) 속도(km/h) → 소요시간(h/km)으로 변환할 때

       속도 60  → 1/60 (느린 속도 = 시간 많이 걸림)
       속도 120 → 1/120 (빠른 속도 = 시간 적게 걸림)


2. 분포 변환

1) 로그 변환 ⭐⭐⭐

"오른쪽으로 긴 꼬리(양의 왜도)를 정규분포에 가깝게"

 

 언제 쓰냐:
- 데이터가 양의 왜도일 때 (오른쪽 꼬리가 길 때)
- 이상치가 너무 클 때
- 데이터가 모두 양수일 때

예) 소득, 집값, 인구수, 주가

효과 시각화:

변환 전:          변환 후:
  |                 |
  |*                | ***
  |**               |  ****
  |*****            |   *****
  |**********       |    ****
  0  1  2  100     0  1  2  3  4  (log값)

오른쪽 꼬리가  →  종 모양에 가까워짐
 
주의:
- 0이나 음수는 로그 변환 불가
  log(0) = -∞,  log(음수) = 불가
- 0이 있으면 log(X+1) 사용

2) 제곱근 변환

"로그보다 약한 버전의 왜도 교정"

 

공식: √X

 

언제 쓰냐:
- 로그 변환보다 효과가 약함
- 왜도가 심하지 않을 때 사용
- 마찬가지로 음수 불가

로그 vs 제곱근:
원래값:   1,  4,  9, 16, 100
로그:     0, 0.6, 1, 1.2,  2    (더 많이 압축)
제곱근:   1,  2,  3,  4,  10   (덜 압축)

3) 제곱 변환

"왼쪽 꼬리(음의 왜도)를 교정"

 

공식: X²

 언제 쓰냐:
- 데이터가 음의 왜도일 때 (왼쪽 꼬리가 길 때)
- 로그 변환의 반대 방향

 주의: 값이 커지므로 이상치 영향 더 커질 수 있음


4) Box-Cox 변환 ⭐

"λ(람다) 값에 따라 다양한 변환을 자동으로 선택"

λ(람다) 값에 따라 변환이 달라짐:

λ =  2   →  제곱 변환 (X²)
λ =  1   →  변환 없음 (X 그대로)
λ =  0.5 →  제곱근 변환 (√X)
λ =  0   →  로그 변환 (log X)
λ = -1   →  역수 변환 (1/X)

 

 핵심: "람다를 자동으로 찾아서 정규분포에 가장 가깝게 만들어주는 변환"
 조건: 데이터가 반드시 양수여야 함

 

3. 범주형 변환

1) 원-핫 인코딩 (One-Hot Encoding)

"범주를 0과 1의 열로 변환"

혈액형 변환:
원본  →   A형열  B형열  O형열  AB형열
A형   →    1      0      0      0
B형   →    0      1      0      0
O형   →    0      0      1      0
AB형  →    0      0      0      1

  장점 : 순서나 크기 의미 없음 (명목형에 적합)

  단점: 범주 수가 많으면 열이 폭발적으로 늘어남
                 (100개 범주 → 100개 열 생성)


2) 레이블 인코딩 (Label Encoding)

"범주를 숫자로 대체"

학점 변환:
A+ → 4
A  → 3
B+ → 2
B  → 1

순서형 데이터에 적합

 

 주의: 명목형에 쓰면 안 됨
 혈액형: A→1, B→2, O→3, AB→4
              👉 모델이 "AB형 > O형" 으로 잘못 해석할 수 있음

 

변환과 상관계수의 관계 ⭐ 

 선형 변환 → 상관계수 유지
 비선형 변환 → 상관계수 변함

변환 종류 선형? 비선형? 상관계수 변환
Min-Max 정규화 ✅ 선형 유지
Z-Score 정규화 ✅ 선형 유지
로그 변환 ❌ 비선형 변함
제곱 변환 ❌ 비선형 변함
역수 변환 ❌ 비선형 변함 (방향도 반대)
Box-Cox (λ=1) ✅ 선형 유지
Box-Cox (λ≠1) ❌ 비선형 변함

⭐️ 시험 핵심 포인트

양의 왜도 교정 변환 로그 변환, 제곱근 변환
방향이 반대로 바뀌는 변환 역수 변환 (1/X)
상관계수 유지되는 변환 선형 변환 (Min-Max, Z-Score)
Box-Cox λ=0 로그 변환과 동일
Box-Cox λ=-1 역수 변환과 동일
로그 변환 불가 데이터 0 또는 음수 포함 데이터
명목형 변환 방법 원-핫 인코딩
순서형 변환 방법 레이블 인코딩
이상치에 가장 취약한 정규화 Min-Max 정규화