Table of Contents
728x90
스케일링(Scaling)은 머신 러닝과 데이터 분석에서 특성(피처)들의 값을 일정한 범위로 조정하는 전처리 과정입니다. 데이터 스케일링을 통해 모델 학습이 더 빠르고 효율적으로 이루어지며, 특정 알고리즘의 성능이 향상될 수 있습니다. 스케일링이 중요한 이유는 각 특성의 크기나 범위가 달라서 발생하는 문제를 해결하기 위해서입니다.
주요 스케일링 방법
- 표준화 (Standardization)
- 정의: 특성의 값을 평균이 0이고 표준편차가 1이 되도록 변환합니다.
- 수식: ( z = \frac{x - \mu}{\sigma} ) 𝑧=𝑥−𝜇𝜎
- ( x ): : 원본 특성 값
- ( \mu ): : 특성의 평균값
- ( \sigma ): : 특성의 표준편차
- 장점: 표준화는 특성의 분포가 정규분포를 따를 때 특히 유용합니다.
- 정규화 (Normalization)
- 정의: 특성의 값을 최소값이 0이고 최대값이 1이 되도록 변환합니다.
- 수식: ( x' = \frac{x - x_{min}}{x_{max} - x_{min}} ) x′=xmax−xminx−xmin
- ( x ): 원본 특성 값
- ( x_{min} ): 특성의 최소값
- ( x_{max} ): 특성의 최대값
- 장점: 정규화는 특성 값의 범위가 다를 때 특히 유용합니다.
- 최대 절대값 스케일링 (MaxAbs Scaling)
- 정의: 특성의 값을 절대값이 1이 되도록 변환합니다.
- 수식: ( x' = \frac{x}{|x_{max}|} )
- ( x ): 원본 특성 값
- ( |x_{max}| ): 특성의 절대값 중 최대값
- 장점: 양수와 음수 값의 비율을 유지하면서 스케일링을 할 수 있습니다.
- 로버스트 스케일링 (Robust Scaling)
- 정의: 특성의 중앙값이 0이 되고, IQR(Interquartile Range, 사분위 범위)가 1이 되도록 변환합니다.
- 수식: ( x' = \frac{x - Q2}{Q3 - Q1} )
𝑥′=𝑥−𝑄2𝑄3−𝑄1- ( x ): 원본 특성 값
- ( Q2 ): 특성의 중앙값
- ( Q1, Q3 ): 특성의 1사분위수와 3사분위수
- 장점: 이상치(outlier)에 덜 민감합니다.
스케일링 적용 예시
import numpy as np
from sklearn.preprocessing import StandardScaler, MinMaxScaler, MaxAbsScaler, RobustScaler
# 예시 데이터
X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 표준화
scaler = StandardScaler()
X_standardized = scaler.fit_transform(X)
print("Standardized:\n", X_standardized)
'''
Standardized:
[[-1.22474487 -1.22474487 -1.22474487]
[ 0. 0. 0. ]
[ 1.22474487 1.22474487 1.22474487]]
'''
# 정규화
scaler = MinMaxScaler()
X_normalized = scaler.fit_transform(X)
print("Normalized:\n", X_normalized)
'''
Normalized:
[[0. 0. 0. ]
[0.5 0.5 0.5]
[1. 1. 1. ]]
'''
# 최대 절대값 스케일링
scaler = MaxAbsScaler()
X_maxabs_scaled = scaler.fit_transform(X)
print("MaxAbs Scaled:\n", X_maxabs_scaled)
'''
MaxAbs Scaled:
[[0.14285714 0.25 0.33333333]
[0.57142857 0.625 0.66666667]
[1. 1. 1. ]]
'''
# 로버스트 스케일링
scaler = RobustScaler()
X_robust_scaled = scaler.fit_transform(X)
print("Robust Scaled:\n", X_robust_scaled)
'''
Robust Scaled:
[[-1. -1. -1.]
[ 0. 0. 0.]
[ 1. 1. 1.]]
'''
스케일링의 필요성
- 모델 학습 속도 향상: 스케일링을 통해 특성 값의 범위가 조정되면, 경사 하강법 등의 최적화 알고리즘이 더 빠르게 수렴할 수 있습니다.
- 알고리즘 성능 향상: k-최근접 이웃(k-NN), 서포트 벡터 머신(SVM), 신경망(Neural Networks) 등 일부 알고리즘은 특성 값의 범위가 일치하지 않으면 성능이 저하될 수 있습니다.
- 특성 중요도 균형: 스케일링을 통해 각 특성이 동일한 중요도로 반영되도록 할 수 있습니다. 그렇지 않으면 큰 범위를 가진 특성이 모델 학습에 과도한 영향을 미칠 수 있습니다.
요약
스케일링은 특성 값의 범위를 일정하게 조정하는 데이터 전처리 기법으로, 모델 학습의 효율성과 성능을 향상시킬 수 있습니다. 표준화, 정규화, 최대 절대값 스케일링, 로버스트 스케일링 등의 방법이 있으며, 각 방법은 특정 상황에서 유용하게 사용할 수 있습니다. 적절한 스케일링 방법을 선택하여 모델 성능을 최적화할 수 있습니다.
'ML' 카테고리의 다른 글
Classification에서 Loss Function(손실 함수) (0) | 2024.05.29 |
---|---|
회귀(Regression)와 분류(Classification) (0) | 2024.05.28 |
최적화 알고리즘(Optimization Algorithms) (0) | 2024.05.28 |
Feature Selection (0) | 2024.05.28 |
모델 평가 방법 (0) | 2024.05.28 |
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Transformer
- speaking
- nlp
- recursion #재귀 #자료구조 # 알고리즘
- Lora
- LIST
- Hugging Face
- git
- 티스토리챌린지
- Python
- 코딩테스트
- Numpy
- English
- LLM
- cnn
- 파이썬
- 손실함수
- #패스트캠퍼스 #패스트캠퍼스ai부트캠프 #업스테이지패스트캠퍼스 #upstageailab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- #패스트캠퍼스 #UpstageAILab #Upstage #부트캠프 #AI #데이터분석 #데이터사이언스 #무료교육 #국비지원 #국비지원취업 #데이터분석취업 등
- PEFT
- clustering
- classification
- 오블완
- t5
- Github
- 해시
- #패스트캠퍼스 #패스트캠퍼스AI부트캠프 #업스테이지패스트캠퍼스 #UpstageAILab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- RAG
- Array
- 리스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함