본문 바로가기
데이터 분석

[머신러닝] 데이터 전처리 - 결측 처리

by 데이널 2023. 9. 1.

데이터 전처리 과정 중 데이터가 값이 없는 경우. 즉, 결측이 발생했을 때 처리하는 방법은 두가지가 있습니다. 바로 제거하기와 대체하기 입니다. 

 

 

1. 제거하기

결측수가 적을 때 데이터 삭제

전체 데이터셋의 수 대비 결측치 수가 적어 결과에 영향이 크지 않을 경우에는 해당 데이터를 삭제하는 것도 좋은 방법 입니다. 하지만 알아 두어야 할 것은 데이터분석기사 또는 AWS ML 시험문제에서는 데이터 삭제는 best 답안이 아닙니다. 시험에서는 최대한 데이터를 버리지 않고 활용하는 방안이 답인 경우가 많습니다.
 

결측수가 많을 때 데이터 삭제

결측수가 많을 경우는 데이터의 손실이 많으므로 최대한 대체해서 활용하는 방법을 권장합니다. 삭제하는 방법은 목록을 삭제하는 방법과 변수를 삭제하는 방법이 있습니다.

  • 목록삭제 : 결측치가 존재하는 전체 행을 삭제(권장하지 않음)
  • 변수삭제 : 결측치가  변수(열)에 대해 삭제

데이터셋의 값이 대부분 결측치일 경우를 말합니다. 예를 들어, 80%이상이 결측일 때는 변수 제거하는 것이 낫습니다. 너무 많은 데이터가 없기 때문에 변수의 활용도가 떨어지게 됩니다. 대신 해당 값의 유무라는 파생 변수를 신규로 생성하여 활용 방법을 생각해 볼 수 있습니다.
 

결측 처리 - 제거하기
결측 처리 - 제거하기

2. 대체하기(채우기)

데이터를 대체하는 것은 제거하는 것과 달리 어떻게 채우느냐 에 따라 결과가 달라집니다. 그래서 대체하는 값이 기존 샘플 데이터의 예상되는 오차를 최소화하는 값을 채우는 것이 중요합니다. 여기서는 일반적으로 많이 사용하는 ‘평균화 기법’과 난이도가 있는 ‘예측 기법’이 있습니다. 평균환 기법은 좀 더 손쉽게 접근 가능한 방법인 반면, 예측 기법은 모델(알고리즘)까지 사용하여 더 정확도를 높이는 방법입니다.
 

평균화 기법

평균화 기법은 변수에 속한 그룹의 평균값을 적용하는 방법입니다. 예를 들어, 월급의 결측이 있을 경우 해당 직급이 과장일 경우 그 그룹의 평균값으로 대체합니다. 
 

예측 기법

다른 변수(속성) 값들을 입력하여 예측 모델을 이용해 결측치를 추정하는 방법입니다. 예를 들어, 다른 관련 속성들을 이용하여 월급을 예측하는 모델을 생성 합니다. 일반적으로 다른 변수들로 regression하는 모델을 사용 합니다. 생각보다 정확도를 높이는 좋은 기법입니다.
 
두가지 일반적인 방법 이외에도 '이전값으로 채우기'를 하거나 '최빈값으로 채우기' 등으로 다양한 대체 방법을 사용할 수 있습니다. 또 다른 방법으로 데이터의 전/후 값을 이용하여 중간값 채우기는 방법도 있습니다.
여기서 중요한 포인트는 단순 평균값, 최빈값, 중간값을 채우는 것이 아닙니다. 많은 사람들이 단순히 아래와 같은 함수로 대체하는 경우를 볼 수 있습니다. 하지만 더 좋은 방법은 데이터를 더 분석하거나 업무를 분석해서 작업을 하는 것 입니다.

  • df["월급"].mean() -> 평균값 대체
  • df["월급"].mode() -> 최빈값 대체
  • df["월급"].median() -> 중간값 대체

업무 분석을 통해 해당 데이터가 속한 그룹 또는 세그먼트의 평균, 최빈, 중간값을 대체하는 게 좋습니다. 해당 데이터와 비슷한 그룹의 값을 대체해야 결측된 데이터의 원래의 값과 비슷하게 대체 할 수 있습니다.
 

결측 처리 - 대체하기
결측 처리 - 대체하기