정규화(Normalization)와 표준화(Standardization)는 머신러닝에서 데이터 전처리 과정에 사용되는 기법이다. 데이터의 스케일을 조정하여 모델의 학습이나 예측에 미치는 영향을 최소화하고, 모델의 성능을 향상시키는 데 도움을 준다.
정규화(Normalization)와 표준화(Standardization)과정에서 데이터 스케일을 조정하는 것을 스케일링(Scaling)이라고 부른다
스케일링(Scaling)
- 데이터를 특정한 스케일로 통일하는 것
- 다차원의 값들을 비교 분석하기 쉽게 만들어주며, 자료의 오버플로우나 언더플로우를 방지하여 최적화 과정에서의 안정성 및 수렴 속도를 향항
- 데이터를 모델링하기 전에 거치는 것이 좋음(int, float)
스케일링의 종류
- StandardScaler: 평균과 표준편차를 사용
- MinMaxScaler: 최대, 최소값이 각각 1과 0이 되도록 스케일링
- RobustScaler: 중앙값과 IQR사용(아웃라이어의 영향을 최소화)
0과 1사이의 숫자를 사용하는 것은 속도 측면에서 좋다.
스케일링 예제
pandas를 사용하여 각각 다른 스케일의 데이터를 MinMaxScaler 방식을 사용하여 스케일링해본다.
데이터 선언
import pandas as pd
# 서로 다른 스케일의 두 데이터
movie = {'naver':[2, 4, 6, 8, 10], 'nexflix':[1, 2, 3, 4, 5]}
# DataFrame으로 변환
movie = pd.DataFrame(data=movie)
output>>
스케일링
from sklearn.preprocessing import StandardScaler, MinMaxScaler, RobustScaler
# 스케일러 객체 생성
min_max_scaler = MinMaxScaler()
# 스케일링
min_max_scaler = min_max_scaler.fit_transform(movie)
output>>
array([[0. , 0. ],
[0.25, 0.25],
[0.5 , 0.5 ],
[0.75, 0.75],
[1. , 1. ]])
데이터 프레임으로 만들기
# 데이터프레임으로 만들기
pd.DataFrame(min_max_scaler, columns=['naver', 'netflix'])
output>>
정규화(Normalization)
- 값의 범위(scale)를 0 ~ 1 의 값으로 바꿔주는 것
- 학습 전에 scaling하는 것
- 머신러닝에서 scale이 큰 feature의 영향이 비대해지는 것을 방지
- scikit-learn에서 MinMaxScaler 사용
표준화(Standardization)
- 값의 범위(scale)를 평균 0, 분산 1이 되도록 바꿔주는 것
- 학습 전에 scaling하는 것
- 머신러닝에서 scaling이 큰 feature의 영향이 비대해지는 것을 방지
- 정규분포를 표준정규분포로 변환하는 것과 같음
- scikit-learn에서 StandardScaler 사용
'AI > 머신러닝' 카테고리의 다른 글
[머신러닝] 부트스트랩 샘플링 (0) | 2024.03.23 |
---|---|
[머신러닝] 랜덤 포레스트(Random Forest) (0) | 2023.12.30 |
[머신러닝] 로지스틱 회귀(Sigmoid & Softmax) (0) | 2023.12.28 |
[머신러닝] Cross Validation(교차 검증) (0) | 2023.12.28 |
[머신러닝] Confusion Matrix, AUC & ROC (0) | 2023.12.27 |
댓글