머신러닝에 사용되는 데이터는 그 값이 너무 크거나 작지 않고 적당한 범위 (-1에서 ~ 1사이)에 있어야 모델의 정확도가 높아진다고 알려져있다.
이 기법은 알고리즘에 따라서 다른데, 선형회귀, 로지스틱 회귀, 서포트 벡터 머신 등의 알고리즘에서는 효과가 좋지만, 결정 트리 알고리즘에서는 효과가 없다.
그래서 학습 전에 미리 값이 적당한 범위를 유지하도록 모델에 입력할 데이터를 변환하기도 한다. 이러한 작업을 데이터 정규화라고 한다.
정규화에서 많이 쓰이는 기법은 정규화와 표준화이다. 각 기법의 의미와 변환 방법은 다음과 같다.
두 가지 기법중에 정규화는 이상값의 영향을 쉽게 받는다. 따라서, 데이터에 이상값이 포함되었을 가능성이 높다면, 표준화를 적용하면 된다.
반대로. 이미지 데이터처럼 최솟값과 최대값을 미리 알 수 있는 경우에는 정규화를 사용하는 경우가 많다.
그 외 데이터 전처리에서 자주 쓰이는 기법으로 ‘이산화(discretization)‘이 있다.
이산화는 ‘연령’과 같은 숫자 값 데이터를 ‘10대’, ‘20대’와 같이 레이블로 분류하는 기법을 말한다.
그 이외에도 다양한 데이터 전처리 기법이 있다. 예를 들면 기업의 연간 매출처럼 기업의 규모에 따라서 값이 크게 달라지는 숫자 값은 그 로그값을 취해서 사용한다.
또 변환의 주기성이 알려진 숫자 함수라면 삼각함수가 유용하게 쓰이기도 한다. 경우에 따라서는 여러 개의 입력 데이터를 조합해 만든 새로운 입력 데이터를 이용하여 정확도가 뛰어난 모델을 만들기도 한다.
이러한 고도의 데이터 전처리를 ‘특징값 엔지니어링’이라고 하며 데이터 사이언티스트의 담당 업무 중에서도 가장 난도가 높은 업무로 취급이 된다.