특성 스케일링: 정규화와 표준화
MinMaxScaler, StandardScaler, RobustScaler를 언제 사용하고 왜 중요한지 학습합니다.
특성 스케일링: 정규화와 표준화은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
FEATURES를 스케일링하는 이유
많은 알고리즘은 특성의 MAGNITUDE에 민감합니다. 0부터 1,000,000까지의 범위를 가지는 특성은 거리 또는 그래디언트 기반 모델에서 0부터 1까지의 특성보다 큰 영향을 줍니다. 스케일링은 특성들을 서로 비슷한 범위에 놓습니다.
스케일링이 필요한 대상
KNN, SVM, k-평균, PCA, 그리고 선형/로지스틱 회귀 및 신경망과 같은 경사 하강 모델에서는 스케일링이 중요합니다. 랜덤 포레스트와 그래디언트 부스팅 같은 트리 기반 모델은 스케일에 영향을 받지 않으므로 필요하지 않습니다.
정규화: MinMaxScaler
최솟값-최댓값 정규화는 (x - min) / (max - min)을 사용하여 각 특성을 일반적으로 0부터 1까지의 고정된 범위로 재조정합니다. 분포의 형태는 유지됩니다.
from sklearn.preprocessing import MinMaxScaler
import numpy as np
X = np.array([[10.0], [20.0], [30.0], [40.0]])
scaler = MinMaxScaler()
print(scaler.fit_transform(X).ravel()) # [0. 0.333 0.667 1.]표준화: StandardScaler
표준화는 (x - mean) / std를 사용하여 각 특성의 평균을 0, 분산을 1로 만듭니다. 그 결과는 z 점수가 되며, 값은 중심화될 뿐 제한된 범위에 갇히지는 않습니다.
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
Xs = scaler.fit_transform(X)
print(Xs.ravel())
print(Xs.mean(), Xs.std()) # ~0 and ~1MinMax와 표준 비교
제한된 범위가 필요하면 MinMax를 사용하세요(예: 이미지 픽셀, 신경망 입력). 알고리즘이 대략적으로 평균 0을 중심으로 한 데이터를 가정하면 표준을 사용하세요(PCA, SVM, 선형 모델). MinMax는 이상치에 더 민감합니다.
이상치를 위한 RobustScaler
RobustScaler는 MEDIAN을 중심으로 삼고 IQR로 스케일을 조정합니다. 두 값 모두 이상치의 영향을 덜 받으므로, 극단적인 값이 다른 스케일러를 왜곡할 때 적합한 선택입니다.
from sklearn.preprocessing import RobustScaler
Xo = np.array([[1.0], [2.0], [3.0], [4.0], [100.0]])
print(RobustScaler().fit_transform(Xo).ravel())fit과 transform 비교
스케일러는 fit에서 매개변수(최솟값/최댓값 또는 평균/표준편차)를 LEARN하고 transform에서 이를 APPLY합니다. fit_transform은 한 번의 호출로 두 작업을 모두 수행합니다.
scaler = StandardScaler()
scaler.fit(X) # learns mean and std
Xs = scaler.transform(X) # applies them황금 규칙: 학습 데이터에만 맞추기
항상 TRAINING 세트에 fit한 다음, 학습한 매개변수로 테스트 세트에는 transform만 적용하세요. 테스트 데이터에 fit하면 해당 데이터의 정보가 모델로 유출됩니다.
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test) # transform only!테스트 데이터에 맞추면 안 되는 이유
테스트 세트를 포함한 통계로 스케일링하면 평가 과정에서 사용해서는 안 되는 정보를 보게 되며, 이는 데이터 누수입니다. 그 결과 성능 추정치가 낙관적이고 신뢰할 수 없게 됩니다.
역변환
스케일러는 inverse_transform으로 작업을 되돌릴 수 있습니다. 이는 보고를 위해 스케일링된 예측값을 원래 단위로 변환할 때 유용합니다.
original = scaler.inverse_transform(X_train_scaled)
# recovers the pre-scaled values타깃 스케일링
분류에서는 일반적으로 타깃이 아니라 FEATURES를 스케일링합니다. 회귀에서는 타깃도 스케일링할 수 있지만, 오류를 보고하기 전에 예측값을 역변환해야 한다는 점을 기억하세요.
빠른 확인
스케일링에 대한 이해도를 확인해 보세요.
복습
스케일링 도구 모음:
- 거리 또는 그래디언트 기반 모델에서는 스케일링이 중요하지만 트리 모델은 무시합니다
MinMaxScaler-> 0..1의 제한된 범위;StandardScaler-> 평균 0, 분산 1RobustScaler는 중앙값과 IQR을 사용하며 이상치에 강합니다- 항상 학습 데이터에
fit_transform을 적용하고 테스트 데이터에는transform만 적용하세요(누수 방지)
자주 묻는 질문
“특성 스케일링: 정규화와 표준화” 강의는 무료인가요?
네 — “특성 스케일링: 정규화와 표준화” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
“특성 스케일링: 정규화와 표준화”에서 뭘 배우나요?
MinMaxScaler, StandardScaler, RobustScaler를 언제 사용하고 왜 중요한지 학습합니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“특성 스케일링: 정규화와 표준화” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 이상치 탐지 및 제거
- 범주형 변수 인코딩
- 특성 스케일링: 정규화와 표준화
- 전처리 파이프라인 구축