Deep Dive Analysis of Missing Values in Dataset
누락된 데이터의 형태는 무엇인가?
실제 데이터셋은 때때로 많은 손실값(missing value)을 갖는다. 데이터셋에서 손실값의 존재 원인은 정보 손실, 데이터 업로딩에서 불일치 등이 될 수 있다. 손실값은 모델 개발 파이프라인의 다음 단계로 진행을 위한 책임을 전가해야 한다. 손실값의 책임을 넘기기 전에 데이터셋에 존재하는 손실값의 종류를 이해하는 것이 중요하다.
Why missing data is problem
데이터셋내 손실값 존재는 데이터에 편향(bias)을 만들어 모델의 성능에 영향을 미칠 수 있다. 이 편향은 데이터셋의 관련성과 신뢰성 부족을 만들 수 있다. 값 손실은 모델 개발을 위해 중요한 통찰(insight) 또는 정보를 포함할 수 있다.
데이터셋내 손실값은 의도적, 임의로 또는 어떤 이유로 손실되었을 수 있다. 따라서 손실값은 문제로 간주되어야 하고 모델 개발의 다음 파이프라인으로 진행하기 전에 처리되어야 한다.
손실값은 파악해야 하는 대략 3가지 범주로 나눌 수 있으며 누락된 값을 귀속시키는 것은 특성이 오로지 위치한 손실값의 범주에 따른다.
- Missing Completely At Random(MCAR) : 무작위로 완전히 누락
- Missing At Random(MAR) : 무작위로 누락
- Missing Not At Random(MNAR) : 의도적으로 누락
Missing Completely At Random (MCAR):
MCAR은 손실값이 의도적으로 빠진것이 아닌 임의로 손실이 있는 상태를 나타낸다. 누락된 값은 동일 컬럼내 다른 값 또는 다른 컬럼의 값과 관계가 없다.
값이 MCAR인지는 Little's MCAR test로 쉽게 확인할 수 있다. 또한 몇가지 대체 방법, 회귀(regression) 또느 다른 방법으로 손실값을 예측할 수 있다면 손실값이 MCAR이 아닐 수 있다.
- 손실값이 완전히 임의적이다.
- 손실값이 다른 관측되거나 관측되지 않은 값과 독립적이다.
- 손실값이 손실 데이터와 데이터 값 사이에 관계를 가지고 있지 않다.
Example:
(Image by Author), Example for MCAR
Missing At Random(MAR):
MAR은 데이터의 손실이 데이터의 하위그룹내에 포함된 상태를 나타낸다. 그리고 이는 다른 값에도 영향을 미친다. 데이터내에서 변수내 손실값 확률이 다른 변수와 관련있다. MAR은 데이터내 종속성(dependency)의 존재로 이어진다. 이는 편차와 모델 신뢰성 악화로 이어진다.
- 손실이 하위 그룹내에 있다.
- MAR은 데이터의 편차로 이어질 수 있다.
- 손실값은 다른 변수에 의존적이다.
Example:
(Image by Author), Example for MAR
Missing Not At Random (MNAR):
MNAR은 값이 임의로 빠지지 않고 대신 의도적으로 누락된 상태를 나타낸다. 변수의 손실값은 다른 변수를 제아한 이후에도 해당 변수 자신의 값과 관련있다. MNAR 손실값은 여러 이유로 캡쳐되지 않는다. MNAR은 또한 데이터의 편향으로 이어진다.
- 손실값이 관측되지 않은 데이터와 관련있다.
- 손실은 측정되지 않은 이벤트 또는 요소와 관련있을 수 있다.
Examples:
(Image by Author), Example for MNAR
Missing Data Mechanism:
데이터를 손실 데이터 매커니즘으로 범주화하기 위한 기본적인 두가지 방법이 있다.
- Common Sense(상식): 대부분의 연구자는 손실값의 원인에 대한 생각을 가지고 있다. 손실값과 데이터 수집 절차 배경에서 이유를 고려하는 것이 중요하다.
- Statistical Testing(통계적 테스트): 손실 데이터를 손실 데이터 매커니즘으로 범주화하는 또 다른 방법이다. 손실값 컬럼을 두 그룹으로 나눈다. 하나는 'salary' 컬럼에 완전한 데이터를 가진 것으로 다른 하나는 손실 데이터를 가진 것이다. 그리고 이분법적 변수(dichotomous variable) 또는 'salary'가 손실되었는지를 나타내는 손실 데이터 인디케이터(missing data indicator)를 만든다. 그런 다음 그룹의 차이를 t-test로 계산한다.
- 분류 ML 모델을 위한 출력으로 손실 데이터 인디케이터 변수를 사용하고 데이터내 다른 변수와 결과가 관련있는지 테스트한다. 만약 변수가 손실데이터 인디케이터와 관련이 있다면 데이터는 MCAR이 아니라고 결론지을 수 있다.
- 결코 MAR 또는 MNAR 사이를 구분할 수 없다. 단지 데이터가 MCAR인지 MCAR이 아닌지만을 테스트 할 수 있다.
또한 상식과 통계적 테스트를 조합하는것이 중요하다. 손실 데이터를 다루는 절차의 대부분이 MAR 추정에 의존한다.
Conclusion
이번 글에서는 데이터셋내 손실 데이터의 형태 또는 범주를 다뤘다. 또한 위에서 언급한 범주중 손실데이터를 어떻게 범주화하는지도 알아보았다.