본문 바로가기
AI/Machine-Learning

RobustScaler

by Wikinist 2023. 8. 29.

RobustScaler는 데이터의 특성을 보존하면서 이상치(outliers)의 영향을 줄이기 위해 사용되는 데이터 스케일링 방법 중 하나입니다. 데이터 전처리 단계에서 사용되며, 주로 통계 및 머신 러닝 모델링에서 입력 데이터를 조정하는 데 활용됩니다.

데이터 스케일링은 입력 데이터의 범위를 조절하여 모델 학습을 더 효과적으로 만드는 프로세스입니다. 일반적인 스케일링 방법 중 하나는 표준화(Standardization)와 정규화(Normalization)가 있는데, 이러한 방법들은 데이터의 평균과 표준 편차 혹은 최솟값과 최댓값을 사용하여 스케일을 조정합니다. 하지만 이상치가 있는 경우에는 이러한 스케일링 방법이 이상치의 영향을 크게 받을 수 있습니다.

RobustScaler는 이러한 문제를 해결하기 위해 중앙값(Median)과 IQR(Interquartile Range, 사분위 범위)를 사용하여 데이터를 스케일링합니다. IQR은 데이터의 중간 50% 범위로써, 데이터의 스프레드를 측정하는 값입니다. RobustScaler는 각 특성(feature)의 값을 중앙값으로 뺀 다음 IQR로 나누어 스케일을 조정합니다. 이로써 이상치의 영향을 최소화하면서 데이터를 조정할 수 있습니다.

다음은 RobustScaler의 스케일링 공식입니다:

RobustScaler 스케일링 공식

RobustScaler는 주로 이상치가 많거나 이상치에 민감한 데이터셋에서 사용됩니다. 예를 들어, 금융 데이터나 센서 데이터와 같이 이상치가 빈번한 상황에서 RobustScaler는 모델의 안정성을 향상시키는 데 도움을 줄 수 있습니다. Scikit-learn과 같은 머신 러닝 라이브러리에서 RobustScaler는 일반적으로 제공되는 스케일링 방법 중 하나로 활용됩니다.

예제

이 예제에서는 Scikit-learn 라이브러리를 사용하여 RobustScaler를 적용하는 방법을 보여줍니다. 예제를 실행하려면 먼저 Scikit-learn 라이브러리를 설치해야 합니다.

import numpy as np
from sklearn.preprocessing import RobustScaler

# 예제 데이터 생성 (이상치 포함)
data = np.array([[1.0], [2.0], [3.0], [4.0], [100.0]])

# RobustScaler 객체 생성
scaler = RobustScaler()

# RobustScaler로 데이터 스케일링
scaled_data = scaler.fit_transform(data)

print("원본 데이터:\n", data)
print("스케일링된 데이터:\n", scaled_data)

위 예제에서는 data 배열에 이상치를 포함한 데이터를 생성합니다. 그리고 RobustScaler 객체를 생성한 후, fit_transform 메서드를 사용하여 데이터를 스케일링합니다. 마지막으로, 원본 데이터와 스케일링된 데이터를 출력합니다.

이 예제를 실행하면 RobustScaler가 이상치의 영향을 줄이면서 데이터를 스케일링하는 과정을 확인할 수 있습니다.

해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.

'AI > Machine-Learning' 카테고리의 다른 글

[sklearn] inverse_transform  (0) 2023.08.29
[sklearn] train_test_split  (0) 2023.08.29
다중 선형 회귀와 절차  (0) 2023.08.29
결정계수 (Coefficient of Determination)  (0) 2023.08.28
[Scikit-learn] LinearRegression, SGDRegressor  (0) 2023.08.28