////
Search

Missing Value 처리 방법

목차
출처

1. 개요

Missing Value를 처리하는 완벽한 방법은 없다. 데이터 유형과 특징에 따라 더 나은 방법이 있을 뿐이고 이것은 데이터를 분석하는 사람이 판단해야 한다. 크게는 1) Deletion(제거) 2) Imputation(보간)방법이 있다. 특정 관측값 또는 변수에 결측치가 너무 많은 경우에 보통 해당 관측값 또는 변수를 삭제한다. 두번째로, imputation에는 평균, 중위값 등 하나의 값으로 채우는 방법과 회귀분석, KNN과 같은 모형을 이용해 model based 예측으로 채우는 방법이 있다.
이론적으로 결측치 발생이 랜덤이라면, 결측치를 채우지 않아도 결측치가 없었을 경우와 결과가 똑같을 것이므로 제거해도 문제가 없다. 하지만 결측치 발생이 랜덤인 경우는 많지 않고, 심지어 랜덤인지 아닌지를 알 수 있는 방법이 없다.
일부 알고리즘은 결측치를 고려해서 학습할 수 있게 되어있지만 결측치가 너무 많은 경우에는 알고리즘이 돌아갔다고 하더라도 bias가 있는 결과일 수 있기 때문에 결측치 처리를 해주는게 좋을 수 있다. Xgboost 결측값을 고려해서 학습하고, lightGBM은 use_missing = false와 같이 결측값을 무시하는 파라미터를 넣을 수 있다. 하지만 대부분의 경우 결측치를 처리하는 것이 좋다.

2. 제거하기 (Deletion)

데이터가 충분하고 결측치의 손실이 랜덤하지 않다면, 제거하는 것이 가장 좋은 방법일 수 있다. 하지만, 중요한 정보를 가진 데이터를 잃을 위험이 있다. 결측치를 잘 채울수만 있다면 채우는 방법을 고려해볼 수 있다. - 결측치가 너무 많은 행(데이터)을 지우는 방법 - 결측치가 너무 많은 열(변수)를 지우는 방법

3. 보간하기 (Imputation)

3-1. 하나의 값으로 Imputation

1) mean, median imputation

평균이나 중위값으로 데이터를 보간하는 방법이다.
장점: 쉽고 빠르다. 범위가 넓지 않은 숫자형 데이터에서 적절할 수 있다.
단점: 다른 feature 간의 상관관계가 고려되지 않는다. 데이터에 bias가 생길 수도 있다. 동일한 값이므로 불확실에 반대된다. 범주형 변수가 숫자형으로 변환되어 있을 경우 mean, median으로 imputation하면 안된다.(범주에 속하지 않는 숫자가 나올 수 있다)

2) most-frequent value imputation

최빈값으로 데이터를 보간하는 방법이다.
장점: 쉽고 빠르며, 범주형 변수에서 잘 작동한다.
단점: 다른 feature 간 상관관계가 잘 고려되지 않는다. 데이터에 bias를 만들 수 있다.

3-2. Model Based Prediction

1) 회귀분석(Regression)

채우고자 하는 데이터를 종속변수로 하고 다른 데이터들을 독립변수로 하여 회귀분석을 시행하여 채우는 방법.

2) KNN Imputation

모든 변수를 고려하여 k개의 가까운 데이터를 찾아 그 데이터와의 거리에 따라 가중 평균을 취한다.
장점: 다른 feature간의 관계를 고려할 수 있고, 직관적이다.
단점: 다른 방법에 비해 전체 데이터 셋을 돌려 채우므로 메모리가 많이 필요하고, outlier에 민감하다. 파라미터 k를 찾아야 한다. 범주형 변수에 사용할 수 없다.

3) MICE(multivariate imputation by Chained Equation) Imputation

누락된 데이터를 연쇄방정식으로 여러 번 채우는 방식으로 작동한다. factor 변수에 사용할 수 있다.

4. 시계열 데이터

Forward-fill: 시계열 순에서 앞의 값으로 채운다.
Backward-fill: 시계열 순에서 뒤의 값으로 채운다.
Interpolation: 결측치가 있는 행의 앞과 뒤 몇 개의 행의 값을 가지고 결측치값을 채운다. (회귀분석 쓸 수 있음) 예. 30살의 키가 결측일 때, 20살의 키와 40살의 키로 결측치를 채운다.
Extrapolation: 20살부터 40살의 키를 가지고 50살의 키를 예측하는 방법. 안정적인 방법은 아니다.