본문 바로가기
데이터 분석/Machine Learning

클러스터링 분석 - (2) 결측값

by 친절한 휘저씨 2021. 12. 19.

클러스터링 분석 두 번째 시간, 결측값(missing value) 처리 방법에 대한 이야기입니다.

 

 

클러스터링 분석을 위한 변수의 조건

 

지난 시간에 클러스터링 분석(Distance-based Method를 활용할 경우에 한 함)을 위해서는 개체 특성 간의 차이 계산이 가능하도록 변수가 연속형 변수의 형태를 띄고 있어야 한다는 이야기를 했습니다. 그런데 차이 계산을 위해서는 변수의 값들이 크기를 가진 숫자 형태라는 조건 말고 또 다른 조건이 필요해요. 그것은 바로 개체들이 빠짐없이 값을 갖고 있어야 한다는 점입니다.

예를 들어 어떤 변수(특성)를 고객을 구분하는 중요한 단서 중 하나로 사용하려고 하는데, A라는 고객은 그 변수(특성)에 해당하는 값을 가지고 있지만, B라는 고객은 값을 가지고 있지 않다면 어떻게 차이를 계산해야 할까요? 값이 없다는 것은 그 값이 ‘0’을 의미하는 것이 아닙니다. 그렇기 때문에 클러스터링 분석을 위해서는 누락값을 가진 개체나 변수를 제거하든지, 아니면 다른 방법으로 값을 채워줘야만 합니다!

 

 

결측값이란?

 

결측 혹은 결측값(missing values)은 위에서 언급된 것처럼 값이 없는 경우를 의미합니다. 결측값은 클러스터링 분석뿐만 아니라 다른 여러 가지 분석 상황에서도 데이터전처리 과정에서 해결해야 할 문제 중 하나이기 때문에 기본적인 내용에 대해서는 알고 넘어가는 것이 좋습니다 :)

결측은 데이터가 누락된 원인에 따라 아래와 같이 몇 가지 종류로 나누기도 합니다. 결측의 종류에 따라 전처리의 방식도 조금씩 달라지기 때문에 결측값을 발견한 후에는 어떤 원인에서 결측이 발생한 지 파악하고 넘어가야 합니다.

  • 완전 무작위 결측 (MCAR: Missing completely at random) : 결측값이 다른 변수들과 아무런 상관이 없는 경우. (전산오류, 사람의 실수 등으로 발생)
  • 무작위 결측 (MAR: Missing at random) : 결측값이 특정 변수와 관련되어 일어나지만, 그 변수의 결과와는 관련이 없는 경우 (ex. 우울증에 대한 설문조사를 할 때 남성은 응답을 꺼리는(응답 누락) 경향이 있지만, 그것이 우울증 여부와는 관련이 없음)
  • 비무작위 결측 (MNAR: Missing not at random) : 결측값이 다른 변수와 관련 있는 경우 (ex. 위의 예에서 남성의 우울증 설문조사 참여율(응답률)이 우울증의 정도와 관련있는 경우)

하지만, 대개의 경우 데이터 분석가는 데이터 생성의 주체가 아니다 보니 결측의 원인을 독자적으로 파악하기에는 어려움이 있습니다. 이런 경우, EDA(Exploratory Data Analysis)를 통해 변수 간의 관계를 추론해 보는 것도 한 가지 방법이지만, 데이터를 만든 주체(사내 데이터라면 백엔드팀이나 서버팀, 외부 데이터라면 데이터/통계 작성 담당자 등)에게 문의하여 데이터가 어떤 기준으로 만들어진 것인지, 결측값은 왜 발생하는지 명확하게 파악할 필요가 있습니다.

일반적으로 클러스터링 분석에서는 분석 작업에 필요한 데이터 수집을 본격적으로 하기에 앞서, 분석에 필요한 변수 리스트를 정리하는 과정을 거치게 됩니다. 이때 변수별로 결측값 여부와 결측이 발생한 원인을 파악하고 결측값 처리(대체) 전략을 마련하곤 합니다. 그렇다면 결측값은 어떻게 처리하는 것이 좋을까요?

 

 

결측값 처리 방법

 

결측값은 처리 방법에 따라 크게 2가지로 나눌 수 있습니다. 버리는 방법과 채우는 방법.

 

(1) 버리는 방법 (deletion)

버리는 방법도 2가지입니다. 결측값이 있는 변수를 버리거나, 개체를 버리거나.

[ 변수 제거 ]

 

변수 제거를 고려할 때 중요한 것은 변수의 중요도와 다른 변수와의 관계성입니다. 클러스터링 분석에서는 대체로 일반적인 데이터 분석과는 다르게 상당히 많은 변수를 사용하게 되는데, 이 가운데 1) 상대적으로 중요도가 낮다고 생각되거나 2) 해당 변수와 상관관계가 높은, 값이 온전히 보존된 다른 변수가 있다면 분석에서 결측값이 포함된 변수를 제외하는 방법을 고려해 볼 수 있습니다. 좀더 쉬운 기준은 3) 변수에 결측값이 얼마나 포함되었는지 여부입니다. 결측값이 차지하는 비중이 절반을 넘어간다면 크게 고민할 필요없이 변수를 삭제하는 것을 추천드립니다. (변수에 결측값이 많다는 의미는 대개의 경우 제대로 관리되는 변수가 아니거나 중요도가 낮을 가능성이 높기 때문)

 

[ 개체 제거 ]

 

개체를 제거하는 경우는 기준이 조금 다릅니다. 개체(표본) 수에 비해 결측값을 가진 개체의 수나 비중이 확연히 적을 경우 제거를 고려해 볼 수도 있습니다. (이 기준은 보통 10% 미만 수준에서 논의가 이루어지고 있습니다.)


하지만, 클러스터링 분석에서 개체를 삭제하는 것은 좀 더 고민이 필요합니다. 클러스터링 작업 이후에 결측값 때문에 제거한 개체도 결국 어느 시점에 이르러 클러스터를 할당해줘야하는 이슈가 발생할 수 있기 때문입니다. 예를 들어 클러스터링 분석은 고객세분화를 위한 목적으로 많이 활용되고 있기 때문에 결국 클러스터 모델링(결과 도출)에 사용하지 않은 고객(정보)도 추후에 결측값을 보완하여 클러스터를 부여해야만 할 수도 있습니다. 좀 더 쉽게 설명하자면, A라는 고객을 결측값 때문에 제외한 이후, 5가지의 고객군(클러스터)을 나누었는데, 분석에 사용하지 않은 A라는 고객도 결국 나중에 (마케팅이나 다른 목적으로 활용하기 위해서) 5가지의 고객군 중 어느 한 가지에 할당해야만 하는 상황에 이를 수 있고, 이 과정에서 결국 결측값을 보완하는 작업이 필요할 수 있다는 의미입니다. 결국 조금 빠르던 늦던 간에 결측값을 다른 값으로 채워야 하는 상황에 맞닥뜨릴 수 있기 때문에 분석 목적까지 염두에 두고 결측값 처리 방법을 고려할 필요가 있습니다.

개체를 제거하는 것은 또한 선택의 문제이기도 합니다. 결측값을 포함한 개체를 삭제하면 클러스터 모델링 작업에 좀더 정확하고 확실한 데이터만 활용한다는 점에서 클러스터 분류 결과의 신뢰도를 높일 수도 있지만, 결측치를 미리 삭제하면서 데이터 편향(bias)이 발생할 가능성도 있습니다.

(2) 채우는 방법 (Imputation)

 

[ 단순 대치(Single Imputation) ]

 

‘버리는 방법’을 사용하지 않으려면 최대한 ‘합리적인’ 방법으로 다른 값으로 채워줘야만 합니다. ‘합리적인’이라는 말은 바꾸어 말하면 ‘정답이 없다’는 말과도 유사합니다. 분석의 주체(본인 혹은 팀)와 분석 결과를 활용하는 이해관계자들이 충분히 납득할 만한 방식으로 값을 채워 넣으면 됩니다. 그러나 대개는 편의에 의해 변수의 평균(mean)이나 중앙값(median)으로 결측값을 채우는 방법을 많이 사용하곤 합니다. 평균, 중앙값 중 어느 것을 선택할지는 데이터 특성이나 분포를 고려하여 판단할 수 있습니다. 여기서 한 단계 더 나아간다면, 다른 중요한 특성(결측값이 없는 변수)을 기준으로 개체들을 몇 가지 범주로 분류한 다음, 각 범주별로 결측값이 있는 변수의 평균이나 중앙값을 계산하여 이 값으로 결측값을 대체하는 방법도 있습니다.

 

[ 다중 대치(Multiple Imputation) 中 예측 모델 (Prediction Model) ]

 

결측값을 채우는 또 다른 방법은 예측 모델을 활용하는 것입니다. ‘회귀(regression)’ 등의 방법을 이용하여 결측값이 없는 변수들로 결측값이 있는 변수를 예측하고, 결측값은 회귀 모델의 예측 결과로 채울 수도 있습니다. 보다 정밀한 분석이 필요한 경우에는 이렇게 예측 모델을 사용하는 것도 한 가지 방법이 될 수 있습니다. (회귀와 같은 예측 모델에 대한 이야기는 다음에 기회가 되면 좀 더 자세히 정리해보도록 할게요!)

 

 

전처리.. 전처리..

 

지난 시간에도, 그리고 이번 시간에도 데이터 전처리와 관련된 이야기를 주욱 늘어놓고 말았습니다. 사실 굉장히 간단한 내용인데 쉽게 풀어쓰려고 하다 보니 길어진 것 같기도 하네요. 다음 시간에는 좀 더 클러스터링 분석다운(?) 이슈에 대해 다뤄보도록 하겠습니다. 주제는 좀더 고민을 해볼게요. 긴 글 읽어주셔서 감사합니다! 😄

 

결측값에 대한 더 자세한 내용은 아래 내용들을 참고해 보세요.
Wikipedia - Missing Data
결측값의 대치법 (윤성철, 2004)
반응형

댓글