Scaling, Standardization, Regularization이라는 세 용어가 혼용되면서 생기는 혼동을 정리하는 글이다. 각 용어의 정의와 사용 목적, 대표 기법, 수식과 pandas 적용 예시를 붙였다. Normalization은 분량이 많아 다음 글로 미룬다.
핵심 포인트- Scaling은 분포 모양과 비율을 유지한 채 데이터의 범위만 조정하는 것이다.
- Standardization은 평균 0, 표준편차 1의 표준정규분포로 바꾸는 것이라 feature 간 상대적 거리를 왜곡할 수 있다.
- Regularization은 데이터가 아니라 가중치에 제약을 걸어 과적합을 막는 것이다.
- Robust와 Standard 스케일러는 미리 정한 범위로 맞추는 것이 아니라 엄밀히는 Scaling 정의를 충족하지 않는다.
- 같은 기법이 여러 이름으로 불리므로 협업에서는 Scaling이나 Normalization 같은 포괄어 대신 구체적인 기법 이름을 쓰기를 권한다.
상세 정리- 글의 동기: 자료마다 용어 정의가 조금씩 달라 처음 보거나 오랜만에 보면 헷갈리므로 큰 틀에서 먼저 훑는 것이 목적이다.
- Scaling 목적 1: 변수마다 단위가 다르면 학습에 미치는 중요도가 달라진다. 키와 나이를 함께 쓰면 키 쪽 영향이 커지는 식이다.
- Scaling 목적 2: 경사 하강법의 수렴 속도를 높이고, 시그모이드 같은 활성 함수에서 saturation이 일찍 오는 것을 늦추며, 딥러닝에서 local minimum에 빠질 위험을 줄인다.
- Min Max: 최솟값을 0, 최댓값을 1로 만들어 모든 값을 0과 1 사이에 넣는다. 최소 최대 정규화나 Rescaling으로도 불린다.
- Max Abs: 절댓값이 가장 큰 값으로 전체를 나눠 -1과 1 사이로 만든다.
- Robust: 중앙값과 IQR을 써서 이상치의 영향을 덜 받는 것이 특징이다. 다만 정해진 범위로 맞추는 것이 아니라 앞서 세운 Scaling 조건을 온전히 만족하지는 않는다.
- Standard: Z-Score Normalization과 같은 기법이며 Robust와 같은 이유로 Standardization으로 구분해 부르기를 권한다.
- Standardization 목적: 정규분포를 표준정규분포로 바꿔 서로 다른 자료를 비교하기 쉽게 하고 확률을 쉽게 구할 수 있게 하며, 회귀 계열 모델이 평균 0과 단위 분산을 요구할 때도 쓴다.
- Standardization 계산: 평균을 빼고 표준편차로 나눈다. 표준화, 일반화, Z-점수 정규화 등으로도 불린다.
- 적용 예시: 별도 라이브러리 없이 pandas만으로 최솟값과 최댓값 차이로 나누거나 평균과 표준편차로 변환한 뒤, 원본과 변환 결과를 그래프와 히스토그램으로 비교하는 코드를 붙였다.
- Regularization 목적: 학습 데이터에 대한 민감도를 낮춰 결과적으로 과적합을 막는다.
- Ridge: L2 norm으로 가중치에 규제를 건다. 가장 일반적으로 쓰이며 변수 간 상관관계가 높아도 성능이 좋고 크기가 큰 변수부터 줄인다.
- Lasso: L1 norm으로 규제를 걸며 변수 선택이 가능하고 중요하지 않은 변수를 우선 줄인다.
- Elastic Net: Ridge와 Lasso를 섞은 형태로 변수 선택이 가능하면서 상관관계가 큰 변수를 함께 선택하거나 배제한다.
- 확장 기법: 인접 변수를 함께 선택하는 Fused Lasso, 사용자가 정한 그룹 단위로 선택하는 Group Lasso, 정의한 그래프의 연결관계를 따르는 Graph Constrained Regularization도 든다.
왜 읽나전처리 코드를 읽다 Scaling과 Normalization과 Standardization이 뒤섞여 헷갈렸다면 기법별 정의와 별칭 대응을 한 번에 정리할 수 있다.