«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Recent Posts
Today
Total
관리 메뉴

짜리몽땅 매거진

[ML] 데이터 스케일링 본문

Data/Machine Learning

[ML] 데이터 스케일링

쿡국 2024. 6. 5. 01:26

데이터 스케일링이란 데이터 값의 스케일(범위)를 조정해주는 것이다. 피처 별로 값의 스케일이 다르다면, 머신러닝이 제대로 작동하지 않을 수 있기 때문에 데이터 스케일링 작업을 해주어야 한다. 데이터 스케일링은 주로 회귀 모델에 적용된다.

 

1. Standard Scaler

데이터의 평균을 0, 분산을 1이 되도록 즉, 표준 정규분포를 따르드록 스케일링한다.

from sklearn.preprocessing import StandardScaler

StandardScaler = StandardScaler()
df_mm = StandardScaler.fit_transform(x) #스케일링 작업, x는 종속변수
x_mm = pd.DataFrame(data= df_mm, columns=x.columns) #스케일링된 값으로 데이터프레임 다시 만들기

 

2. MinMax Scaler

데이터가 0~1 사이에 위치하도록 스케일링. 즉 최소값은 0, 최대값을 1로 변환한다. 데이터의 최소값과 최대값을 알 때 사용하며, 이상치에 매우 민감하다.

from sklearn.preprocessing import MinMaxScaler

# MinMaxScaler 객체 생성
minmax_scaler = MinMaxScaler()

# 스케일링 작업, x는 종속변수
df_mm = minmax_scaler.fit_transform(x)

# 스케일링된 값으로 데이터프레임 다시 만들기
x_mm = pd.DataFrame(data=df_mm, columns=x.columns)

 

3. Robust Scaler

중앙값과 IQR(사분위 값)을 사용하여 중앙값은 0, IQR은 1이 되도록 스케일링하며, 이상치의 영향을 최소화할 수 있다.

from sklearn.preprocessing import RobustScaler
import pandas as pd

# RobustScaler 객체 생성
robust_scaler = RobustScaler()

# 스케일링 작업, x는 종속변수
df_mm = robust_scaler.fit_transform(x)

# 스케일링된 값으로 데이터프레임 다시 만들기
x_mm = pd.DataFrame(data=df_mm, columns=x.columns)

 

4. 로그 변환

데이터를 로그 스케일로 변환하여 분포를 정규화하거나 비대칭 데이터를 다루는 데 유용하다. 로그 변환을 수행하기 위해서는 numpy 라이브러리를 사용한다.

import numpy as np
import pandas as pd

# 로그 변환 수행, x는 종속변수
df_log = np.log1p(x)  # np.log1p는 log(1 + x)를 계산하여 x가 0인 경우를 처리

# 변환된 값으로 데이터프레임 다시 만들기
x_log = pd.DataFrame(data=df_log, columns=x.columns)

로그 변환 또한 전통적인 스케일링 방법(Standard Scaler, MinMaxScaler)와 마찬가지로 특성 스케일링(정규화)의 일종으로 볼 수 있다. 로그변환은 특히 데이터가 비대칭적으로 분포되어 있거나, 이상치(outliers)가 존재할 때 유용하게 사용되는데, 전통적인 스케일링 방법은 데이터의 최소값과 최대값 혹은 평균과 표준편차를 이용하여 데이터의 범위를 조정한다. 반면, 로그 변환은 데이터의 대소 관계는 유지하면서 데이터의 스케일을 변환합니다. 이는 데이터의 스프레드를 줄이고, 큰 값과 작은 값 사이의 차이를 감소시켜 분석이나 모델링에 더 적합한 형태로 만들어 준다.

 

로그 변환은 특히 다음과 같은 경우에 유용하다:

  • 데이터가 지수적으로 증가하거나 감소할 때
  • 이상치의 영향을 줄이고 싶을 때
  • 변수 간의 관계를 선형적으로 만들고 싶을 때

따라서, 데이터의 특성과 분석 목적에 따라 적절한 스케일링 방법을 선택하는 것이 중요하다.