더북(TheBook)

다음으로 데이터 전처리를 수행한다. 원본 데이터는 대체로 정리되지 않고 오류도 많아서 머신 러닝 알고리즘에 그대로 사용할 수 없다. 따라서 모델에 적용하기 전에 반드시 전처리를 거쳐야 한다. 또한, 데이터를 여러 데이터 소스에서 가져와야 한다면 단일 데이터셋으로 병합해야 한다. 게다가 머신 러닝 모델을 만들려면 데이터셋을 오직 숫자로만 구성해야 한다. 원본 데이터에 범주형(categorical) 변수(예: 성별, 국가, 요일)가 있다면 숫자형 변수로 인코딩(encoding)해야 한다(1.4.3.1절에서 더 자세히 설명한다). 머신 러닝 알고리즘 중 일부는 데이터 스케일링과 정규화가 필요하다. 특정 변수의 값이 다른 변수에 비해 너무 크면 알고리즘이 이 변수에 지나치게 치중할 가능성이 있다.

실무에서 접하는 실세계 데이터셋은 대체로 정리되지 않아 지저분하다. 데이터가 불완전하거나 여러 로우(row)와 칼럼(column)에 걸쳐 결측값이 있을 수 있으며, 결측값은 다양한 방법으로 처리할 수 있다. 가장 쉬운 방법은 결측값이 있는 로우나 칼럼을 그냥 버리는 것이다. 하지만 데이터를 상당량 잃을 수 있으므로 실용성이 떨어진다. 숫자 변수에 결측값이 있다면 변수 값의 평균으로 결측값을 대신할 수도 있다. 이 방식은 데이터셋을 보존하므로 이전 방법보다 낫다. 하지만 결측값을 평균값으로 채우면 데이터 분포에 영향을 주며 머신 러닝 모델에도 악영향을 미칠 수 있다. 또 다른 방법은 다른 변수 값을 바탕으로 결측값을 예측하는 것이다. 하지만 데이터셋의 편향(bias)을 가중시킬 수 있어 신중해야 한다.

데이터 전처리의 마지막 단계로, 데이터셋을 훈련 데이터셋과 테스트 데이터셋으로 나누는 작업이 필요하다. 머신 러닝 모델은 훈련 데이터셋만 사용해 만들고, 모델 성능이 만족스러우면 테스트 데이터셋을 사용해 모델을 평가한다. 모델을 훈련할 때 테스트 데이터셋을 전혀 사용하지 않는 것이 매우 중요하다. 이로써 모델 성능을 편향 없이 측정하고 실세계에서 어느 정도 성능을 낼지 예상할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.