AI/Fundamental

정규화란? Normalization, Regularization 정규화 종류에 대해서 알아보자.

방황하는 데이터불도저 2023. 9. 13. 00:51

정규화라는 단어가 가지는 의미는 정상화라는 말과 같다. [어떠한 오류나 비정상적인, 패턴이 없는] 상태에서 [정상적인 상태, 일정한 규칙을 가진]상태로 상태를 변화시키는 것이 정규화이다.

 

정규화가 실제로 수행되는 경우에는 굉장히 다양한 종류들이 있다. 흔하게 볼 수 있는 정규화로는 데이터베이스에서의 정규화, 통계학적 정규화, 머신러닝/딥러닝 학습에서의 정규화 3가지가 있다. 영어로 보자면 Normalization, Regularization가 될 수 있는데, 모두 한국어로하면 정규화라고 한다.

 

그래서 어떤 누가와서 정규화가 뭐에요?라고 묻는다면, 어떤 정규화를...말하는거지? 하고 헷갈릴 수 있다. 어느 면접에서 실제로 어떤 정규화를 말하는건지 질문자의 의도를 파악하지 못하고, 쌩뚱맞은 정규화에 대해서 설명한 경험이 있어서,,, 다른 사람도 나처럼 민망한 상황이 생기지 않았으면 좋겠다는 마음에 블로그 글로 올리자! 하게 되었다. 

 

각 정규화에 대한 내용을 깊게 다루지는 않았다. 각 정규화 종류마다 그 안에서도 여러가지 특성, 방법들이 있기때문에 또 하나의 긴 포스트 글이 될 것이므로, 이미 잘 정리해주신 다른 분들의 글을 가져와서 참고 링크로 달아두는 것으로 대체하겠다.


1. 데이터베이스 정규화(Normalization)

위키백과에 따르면, 관계형 데이터베이스(RDB)의 설계에서 중복이 최소화되게 데이터를 구성하고, 구조화하는 프로세스를 정규화라고 한다.

  • 관계형 데이터베이스 (RDB; Relational DataBase) : 데이터를 구조화하는 방식 중 하나로, 데이터 내의 여러 테이블 간의 관계를 사전 정의하고, 관계에 따라 상호작용을 할 수 있도록 논리적 연결을 시키는 방식으로 데이터를 구성한 것.  (참고 사이트)

더 쉽게 풀어 설명해보자면,

1) RDB를 사용 : 다양한 데이터들을 한 테이블에 때려넣을 수 없으니, 여러 테이블로 효율적으로 관리하려하는데, 각 테이블 피처간에 상호 연관성을 가지도록 관계에 대해 정의하게 된다.

2) 정규화 과정이 필요 : 데이터베이스에 중복된 데이터를 최소화시키고, 데이터에 대해 삽입(Insertion), 삭제(Deletion), 갱신(Update)해주게 될 때, 이상(Anomaly)가 발생하지 않도록 RDB의 안정성, 무결성을 유지해줘야 한다.

  • 데이터 무결성 = 잘못된 데이터가 없는 것 : 잘못된 데이터가 발생하지 않도록 데이터 유효성 검사를 통해 무결성을 구현. 

정규화 정도를 1, 2, 3, BC, 4, 5, 6으로 나누어 7가지의 정규형(NF; Normal Form)으로 표현한다. 더 자세한 내용은 아래의 두 링크에 깔끔하게 정리해주신 글을 가져와보았으니 더보기를 열어 참고하시면 좋겠다.

 


2. 통계학적 정규화(Statistical Normalization)

일반적으로 통계학에서 말하는 정규화는 어떤 데이터 분포의 스케일(범위)를 다른 스케일로 값을 조정하는 것을 말한다. 통계학적으로 데이터의 분포가 정규분포와 같은 특정 분포를 따르도록 값이 조정되는 것을 정규화라고 한다. 헷갈리면 안되는 포인트는 수치형 데이터에 대해서만 정규화라는 개념을 사용하고, 범주형 데이터는 정규화를 할 수 없다는 것이다. → "범주형 데이터를 수치형으로 변환(변수 변환; Feature scaling)해준 다음에 변환된 수치형 데이터를 정규화한다"로 표현해야한다.

 

주로 기계학습을 위한 데이터 분석 및 모델링 과정 = 데이터 전처리 과정에서 데이터를 정제하고 변환하는 단계로 정규화를 수행하게 된다. 정규화 적용의 의의는 각자 다른 범위(scale)를 가지는 여러 feature들에 대해 스케일을 일관된 형태로 통일시켜주는 것이다. 이 단계에서 밑 단락에 설명해둔 여러가지 정규화 방식을 적용할 수 있고, 이러한 정규화를 통해 데이터 분석에서의 용이함, 학습모델의 성능 향상 등의 다양한 이점을 얻을 수 있다. 

  • 모델 안정성 향상: 모델최적화 시에 수렴속도를 향상시키고, 발산을 방지.
  • 이상치 관리: 이상치의 민감도를 줄여, 모델 학습이 왜곡되지 않도록 도움.
  • 데이터 비교 용이성: 서로 다른 스케일의 특성들의 비교에 용이.
  • 정확한 모델 추정: 모델 파라미터가 일정하게 유지되어 모델의 안정성과 신뢰성이 높아짐.
  • 다중 공선성 관리: 다중 공선성을 완화하여 모델 안정성을 유지.
  • 데이터 분포 근사화: 데이터를 특정 분포에 근사화하여 모델의 성능 향상.
  • 데이터 시각화 개선 : 특히, 다차원 데이터에서 명확한 표현을 도움.

주로 사용되는 통계학적 정규화의 종류에는 1) 값들을 z-score로 변환하는 표준화(Standardization), 2) 최솟값/최댓값을 사용하는 최소-최대 정규화(Min-Max Scaling)가 있다. 그 이외에는 잔차, t-통계량, 모멘트(적률), 표준편차와 관련된 표준화 방법인 Studentized Residual, Students's t-statistic, Standardized Moment, Coefficient of Variation 등이 있다.


3. 머신러닝/딥러닝 학습에서의 정규화 (Regularization)

머신러닝/딥러닝 학습에서의 정규화는 모델의 오버피팅을 막기 위해서, 모델 성능의 일반화를 위해 수행하게 된다.

( * 오버피팅 : 학습데이터의 정확도는 높고, 테스트 데이터(unseen data)에서는 정확도가 낮아지는 현상)

 

또한, 모델이 너무 복잡해지거나 파라미터의 개수가 너무 많아지는 것을 막기 위해서도 정규화를 사용하게 된다. 이러한 의미에서 정규화는 가중치 규제(Weight Regularization)라고도 불린다. 대표적인 종류로는 L1, L2 Regularization이 있다. (자세한 설명은 더보기에서 참고)

 

정규화의 의의

  • Regularization penalizes the coefficients in machine learning.
  • Regularization penalizes the weight matices of nodes.

모델 복잡도, 정확도면에서 최적의 해를 찾는 것이 정규화를 수행하는 것의 의의.

출처 : https://www.analyticsvidhya.com/blog/2018/04/fundamentals-deep-learning-regularization-techniques/

 

추가 참고자료 : https://wikidocs.net/120052

 

regularization (정규화, 정칙화, 규제화, 규칙화)

> 신경망은 특히 용량이 충분하지 않은 경우 훈련 데이터를 기억하는 경향이 있다. 그럴 경우, 신경망을 테스트 데이터에 적용하면 완전히 실패하고 만다. 이것이 신경망이 일반화에 …

wikidocs.net