데이터를 살펴보면 결측치가 있는 경우를 종종 볼 수 있고 그 원인도 다양하다.
센서가 고장나서 데이터 수집이 중단되었거나, (설문조사의 경우) 무응답이나 응답 거부를 하거나, object(instance, record)에 모두 대응되지않는 attribute가 있는 경우(임신 여부)가 있을 수 있다.
결측치를 0으로 대체하거나 평균/중앙값으로 대체할 수 있다.
그러나 결측치는 항상 결측값이 아니다. 경우에 따라 그 값을 추정할 수 있다.
이전에 결측값의 종류를 파악해보자.
Types of Missing Values
결측치 종류에 대하여 설명하기 전에 몇가지 notation을 정리하겠다.
$X_{obs}$: 우리의 관심이 되는 변수(attribute)의 관측 값. 이 값이 존재한다면 true value를 $X$라 하여 $X_{obs}=X$로 표기하고, 결측치라면 $X_{obs}=?$라 하자.
$Y$: $X$와 구별되는 또 다른 변수. (target attribute가 아니다.)
Missing completely at random, MCAR
정의
(이름에서 오는 직관과 같이) $X$의 결측치가 생길 확률이 $X$ 또는 다른 변수 $Y$와 무관하게 동일하다는 것이다.
이를 수학적으로 표현하면 아래와 같다.
\[ P(X_{obs} = ?) = P(X_{obs} = ? | X, Y) \]
종종 Observed at random (OAR)로 불리기도 한다.
예시
배터리로 동작하는 어떤 센서가 있다고 하자. 관리자가 배터리를 교체해주는 주기를 잊어버려서 센서가 아무런 데이터를 수집(측정)하지 못하는 경우
Missing at random, MAR
정의
$X$가 결측치일 확률이 true value($X$)와는 상관없지만 다른 변수($Y$)의 true value와는 상관이있는 경우.
$X_{obs}$는 $X$와는 독립이지만 다른 변수 $Y$와는 독립이 아니다. (다른 변수 $Y$와 상관성이 있다.)
\[ P(X_{obs} = ?|Y) = P(X_{obs} = ? | X, Y) \]
예시
배터리로 동작하는 어떤 온도 센서가 있다고 하자. 관리자는 비가 오는 날에는 배터리를 교체하지 않는다고 하자. 그 결과로 센서는 비가 오는 날에는 데이터를 수집하지 못한다. ($X$는 (센서가 측정하는)온도, $Y$는 날씨가 된다.)
Nonignorable
정의
결측치가 발생할 확률이 $X$ 그 자체와 관련이 있는 경우이다.
종종 Not missing at random (NMAR) 또는 missing not at random (MNAR)로 불린다.
예시
배터리로 동작하는 어떤 온도 센서가 있다고 하자. 이 센서는 추위에 약해서 얼어붙으면 고장이 나 데이터를 수집하지 못하는 경우. $X < -10$이면 항상 결측치가 발생하므로 독립이 아니다.
또다른 예시로, 지속적인 임상실험에서 어떤 임상자가 부작용을 느껴 이후 치료를 중단한 경우에도 nonignorable이다.
Estimate the missing values
데이터셋이 충분히 커서 다른 변수들의 분포를 이용한다는 가정이 필요하다.
MCAR
MCAR이라면, 결측치는 $X$와 동일한 분포를 따른다는 가정을 이용한다.
MAR
결측치는 $X$와 독립이므로 $X$의 분포와 상관없다. 그러나 다른 변수(혹은 attribute)와 연관이 있으므로 합리적인 값으로 대체할 수 있다. (derive reasonable imputation)
Nonignorable
이 경우, (데이터셋을 이용하여) 통계적인 방법을 이용하여 결측치를 추정하는 것은 거의 불가능하다.
도메인 지식을 이용하거나, 관련자를 통해 다른 요인이 있는지 직접 확인해야한다.
Type of Missing value 추정하기
만일 도메인 지식으로도 결측치를 예측할 수 없다면, 다음과 같은 전략을 고려할 수 있다.
(1) 관심이 되는 변수 $X$에 대하여, 결측치가 아니라면 yes, 결측치라면 no라 가정한다.(대체한다)
(2) $X$를 target value(yes/no)로 하는 이진분류기를 만들어 학습시킨다.
(3) misclassification rate와 실제 결측치 비율을 비교하여 살펴본다.
misclassification rate와 missing rate가 큰 차이가 없다면, MCAR이다.
misclassification rate가 pure guessing보다 상당히 낮다면(분류기의 성능이 상당히 좋다면) $X$와 다른 변수간의 correlation이 있다는 뜻이다. 이 경우 missing value는 MCAR일 수 없다. (MAR 일 수는 있다)
결측치를 다루는 방법
Ignorance, Deletion
적은 수의 record(혹은 instance)가 결측치를 포함하고 있다면, 그냥 삭제한다.
Imputation
MCAR인 경우, 평균, 중앙값, 최빈값(categorical attribute인 경우) 등으로 값을 대체한다.
MAR인 경우, 다른 변수들로부터 추정한다.
Explicit value
결측치를 특별한 값으로 대체한다. ("unknown", 999999 등)
이 경우, 모델은 이러한 특별한 값들을 결측치로 해석할 것이다. (단, 모델이 MCAR로 가정하여 동작한다)
'스터디 > 데이터사이언스' 카테고리의 다른 글
[Data Science] Decision Tree - Information Gain, Gain Ratio (0) | 2023.04.29 |
---|---|
[Data Science] Decision Tree in R (0) | 2023.04.28 |
[Data Science] Chi-square test. 카이제곱검정 (0) | 2023.04.20 |
[Data Science] Association Rule Mining - Excercises (0) | 2023.04.17 |
[Data Science] Decision Tree - GINI index와 CART 알고리즘 (0) | 2023.04.16 |