본문 바로가기
데이터 분석

Data Imputation(데이터 대치, 결측치 처리) 및 흔한 실수들

by 데이널 2024. 4. 30.

누락된 데이터는 실제 데이터에서 흔히 발생하는 문제입니다. 장비 오작동, 인적 오류 또는 단순히 특정 데이터 포인트가 수집되지 않은 등 다양한 이유를 경험하게 됩니다. 이런 데이터 누락을 결측이라고 표현하는데요. 결측 데이터가 너무 많이 발생하면 어떻게 해야 할까요? 데이터 전처리의 결측 처리 부분에서 80% 이상 누락된 데이터는 버릴 수도 있다고 이야기했습니다. 

 

 

그렇지만 수집된 소중한 데이터를 버리는 쪽으로 결정하기는 어렵습니다. 이때 사용하는 방법이 데이터 대치(Data Imputation)입니다. 데이터 분석 및 통계에서 데이터 세트 내의 누락된 값을 채우는 데 사용되는 기술이죠. 데이터 대치에는 여러 가지 방법이 있는데요. 방법 선택은 데이터의 성격과 수행되는 특정 분석에 따라 달라집니다.

 

이글에서는 분석가들이 자주 사용하는 7가지 Imputation 방법과 대치 과정에서 빈번하게 실수하는 경우에 대해 설명드리도록 하겠습니다. 


평균/중앙값 대치

이 방법은 가장 편하게 자주 사용합니다. 단순히 해당 변수에 대한 평균이나 중앙값을 구해서 대치하는 방법이죠. 이 방법은 간단하며 데이터가 정규 분포를 따른다고 가정할 때 자주 사용됩니다. 평균/중앙값으로 대치하더라도 최대한 세분화해서 진행하는 것이 좋습니다. 

 

만약 연봉 변수의 결측이 있다고 할 때, 그냥 전체 직원들의 평균 연봉으로 결측을 대치하는 실수를 합니다. 그 것보다는 직급별로 그룹핑한 평균을 대치하는 것이 원래 데이터와 더 근사할 가능성이 높습니다.  적용이 쉽고 빠르다는 장점이 있고 수치형 데이터에 잘 동작합니다. 


모드(mode) 대치

평균/중앙값 대치와 유사한 또하나의 방법입니다. 평균이나 중앙값을 사용하는 대신 변수의 최빈값(가장 빈번한 값)을 사용하여 누락된 값을 채웁니다. 이는 연속형 데이터가 아닌 이산형 데이터일 때 사용할 수 있습니다. 

 

업무적인 것을 고려하지 않고 최빈값으로 채우는 흔한 실수를 합니다. 예를 들어, 값이 없는 것(결측)이 측정을 건너뛴 거라고 생각하면 그룹의 최빈값이 아니라, 개인의 과거 데이터의 최빈값이 더 맞을 것입니다. 

 

 

앞으로 채우기/뒤로 채우기

시계열 데이터에서 누락된 값은 앞/뒤 데이터가 서로 연관성이 있다는 특성이 있습니다. 그래서 마지막 관찰 값을 앞으로 전달(앞으로 채우기)하거나 다음 관찰 값을 뒤로 이동(뒤로 채우기)하여 채울 수 있습니다. 또는 앞/뒤 데이터의 평균값으로 채우기도 합니다. 

 

시계열 데이터를 smooth하게 대치하는 방법입니다. 그런데 데이터가 계속 비어서 들어온다면 어떻게 해야 할까요? 이런 경우는 어느 데이터까지 신뢰성 있게 앞 데이터 값을 이용해서 채울지를 결정해야 합니다. 


선형 보간(Linear Interpolation)

이 방법은 관찰된 데이터 포인트 간의 선형 관계를 기반으로 결측값을 추정합니다. 가장 가까운 관측 데이터 포인트 사이에 직선을 그린 다음 이 선을 기준으로 결측값을 추정하여 결측값을 계산합니다.

 

선형 보간법은 1차 방정식인 반면에 다항식 보간법은 2차 이상의 다항식을 가집니다. 데이터 점이 많을수록 다항식의 차수가 높아지므로 계산량이 많아진다는 단점이 있습니다. 


K-Nearest Neighbors(KNN) 대치

이 방법은 데이터 세트의 최근접 이웃 값을 기반으로 누락된 값을 추정합니다. "가장 가까운" 이웃은 일반적으로 유클리드 거리와 같은 거리 측정법을 사용하여 결정됩니다. 쉽게 생각해 채우려는 결측과 가장 비슷한 그룹의 값으로 매핑하는 방법입니다. 

 

이는 앞의 방법들 보다는 메모리가 많이 필요합니다. 최근접 이웃을 찾기 위해 전체 데이터를 메모리에 올려야 하기 때문입니다. 또 한가지 단점은 아웃라이어에 민감하게 반응합니다. 이부분은 K-NN 알고리즘에 원리와 동일합니다. K-NN 알고리즘에 대해 자세한 내용은 링크를 참고하시 바랍니다. 

 

 

회귀 대치

KNN 대치와 유사하지만 최근접 이웃을 사용하는 대신 회귀 모델을 사용합니다. 데이터세트의 대치할 변수를 타겟변수로 하고 나머지 다른 변수를 입력변수로 넣어 결측값을 예측합니다. 여기서 회귀 모델 대신 Deep Learning 알고리즘을 사용할 수도 있습니다. 범주형 혹은 non numerical feature에 효과적이라고 알려져 있습니다. 

 

단순한 평균, 중앙, 최빈값으로 대치하는 것보다 일반적으로 시간은 오래 걸릴거라는 것을 예상할 수 있습니다. 하지만  더 좋은 성능 정확도를 보입니다. AWS Certified Machine Learning - Specialty 시험에서도 단순 통계적인 대치보다는 알고리즘을 이용한 대치를 더 권장합니다. 

 

다중 대치

이 방식은 누락된 값이 여러 번 대치하는 방법입니다. 서로 다른 대치된 값을 가진 여러 개의 데이터 세트를 생성합니다. 불확실성을 고려했을 때 Single Imputation 보다 정교한 방법입니다. 그런 다음 각 완전한 데이터 세트에 대해 통계 분석을 수행하고 결과를 결합하여 전반적인 추정치와 불확실성 측정값을 얻을 수 습니다.

  1. Imputation : 결측 데이터(Incomplete data)를 distribution을 바탕으로 n개의 데이터 세트를 imputation 합니다. 그림에서는 3개의 multiply imputed data를 만들었습니다.
  2. Analysis : n개의 완료된 데이터 세트를 분석하여 analysis results(분석 결과)가 나옵니다.  
  3. Pooling : 평균, 분산, 신뢰 구간을 계산하여 final results(최종 결과)를 냅니다.  

 

다중 대치법
다중 대치법

 

 

마무리

위에서 살펴본 방법들에는 각각의 장점과 단점이 있습니다. 데이터의 특성과 분석 목표에 따라 방법을 선택해야 합니다. 또한 대치 방법으로 인해 발생하는 편향도 고려해야 합니다. 이는 민감도 분석을 수행하여 결과의 ​​견고성(rubust)을 평가하는 것도 하나의 방법입니다. 

 

무엇보다 데이터와 도메인에 대한 이해가 있어야 합니다. 그래야 유사한 값으로 대치할 수 있고, 또 대치에 대한 영향도를 파악할 수 있습니다. 단순히 대치 방법 중 어떤 것이든 상관없이 선택해서 한다면 모델의 정화도를 높일 수 없을 것입니다.