1. 개요

결측치는 데이터 세트 내에서 관찰되지 않거나 기록되지 않은 값을 의미한다. 이는 데이터 수집 과정에서 값이 누락된 상태를 뜻하며, 프로그래밍 환경에 따라 Null, NaN, NA 등의 형태로 표현된다.[3] 특히 파이썬 언어의 판다스 라이브러리에서는 None이나 NaN으로, 시계열 데이터에서는 pd.NaT와 같은 형식을 사용하여 이를 나타낸다.[3]

결측치는 데이터가 생성되는 맥락에 따라 다양한 유형으로 구분된다. 특정 변수의 결측 발생이 다른 변수와 아무런 상관관계가 없는 완전 무작위 결측, 결측 여부가 다른 변수와 연관되어 있는 무작위 결측, 그리고 결측된 값 자체가 결측 발생 원인과 밀접하게 관련된 비무작위 결측이 그 예이다.[3] 이러한 발생 양상은 설문조사에서의 응답 누락이나 센서 장비의 오작동 등 다양한 환경적 요인에 의해 결정된다.[2]

데이터 분석 및 머신러닝 분야에서 결측치는 데이터의 품질을 결정짓는 핵심적인 요소이다. 결측치를 적절하게 처리하지 않고 방치할 경우 데이터 분석의 정확성이 저하될 뿐만 아니라, 모델의 성능을 떨어뜨리는 원인이 된다.[2] 또한 분석 결과의 신뢰성에 문제를 일으켜 잘못된 결론을 도출하게 만들 수 있으므로, 데이터 전처리 단계에서 이를 관리하는 과정은 필수적이다.[4]

결측치 문제는 단순한 수치 누락을 넘어 데이터의 통계적 유의성을 왜곡할 위험을 내포한다. 따라서 분석가는 결측치를 단순히 제거할 것인지, 혹은 적절한 값으로 대체하거나 수정할 것인지에 대한 방법론을 신중히 선택해야 한다.[4] 효과적인 결측치 처리 기법을 적용함으로써 데이터의 품질을 향상시키고, 보다 신뢰할 수 있는 인사이트를 도출하는 것이 가능하다.[2][4]

2. 결측치 발생 원인

결측치는 데이터가 생성되고 수집되는 과정에서 다양한 경로를 통해 발생한다. 대표적인 원인 중 하나는 설문조사와 같은 데이터 입력 단계에서 발생하는 인적 오류이다. 응답자가 특정 질문에 대해 답변을 거부하거나 실수로 일부 항목을 누락할 경우 해당 데이터는 결측치로 남게 된다.[2] 이러한 인적 요인은 데이터의 완전성을 저해하는 주요한 요소로 작용한다.

기술적인 결함 또한 결측치를 유발하는 핵심적인 원인이다. 센서 장비가 오작동하거나 데이터 수집 프로세스 내의 하드웨어소프트웨어 시스템에 문제가 생기면 데이터가 정상적으로 기록되지 않는다.[2] 이 과정에서 발생하는 기술적 오류는 특정 시점이나 특정 조건에서 데이터가 연속적으로 누락되는 현상을 초래할 수 있다.

데이터의 물리적 손실이나 손상 역시 결측치를 만드는 원인이 된다. 저장 매체의 결함이나 전송 과정에서의 오류로 인해 파일이 손실되거나 데이터 자체가 손상될 경우 값이 존재하지 않는 상태가 된다. 이러한 현상은 데이터 품질에 심각한 영향을 미치며, 적절한 조치가 이루어지지 않을 경우 데이터 분석의 신뢰성을 떨어뜨리고 잘못된 결론을 도출할 위험이 있다.[4]

3. 결측치의 유형 및 분류

결측치는 발생 기제에 따라 크게 세 가지 유형으로 구분된다. 첫 번째는 완전 무작위 결측(Missing Completely at Random; MCAR)이다. 이 유형은 특정 변수의 데이터가 누락되는 현상이 다른 변수의 값이나 결측된 값 자체와 아무런 상관관계 없이 무작위로 발생하는 상태를 의미한다.[2] 즉, 데이터의 누락이 관찰된 다른 변수들과 통계적으로 독립적이다.

두 번째 유형은 무작위 결측(Missing at Random; MAR)이다. 이는 특정 변수의 결측 여부가 다른 관찰된 변수의 값과 연관되어 발생하는 경우를 뜻한다.[3] 다만, 결측된 값 자체가 다른 변수와 직접적인 상관관계를 가지는 것은 아니라는 점에서 MCAR과 차이가 있다. 데이터 분석 과정에서 특정 변수의 값이 누락된 이유를 다른 변수를 통해 설명할 수 있는 상태를 말한다.

마지막으로 비무작위 결측(Missing Not at Random; MNAR)이 존재한다. 이 유형은 결측치가 발생한 원인이 결측된값그 자체와 밀접하게 관련되어 있는 경우를 의미한다.[3] 예를 들어, 특정 수치 데이터가 너무 높거나 낮아서 응답자가 의도적으로 답변을 피하는 경우처럼 데이터의 누락 패턴이 변수의 값에 종속되어 나타난다. 이러한 유형은 결측 원인을 파악하기가 매우 까다롭다.

4. 데이터 표현 방식

데이터 분석 환경과 사용하는 프로그래밍 언어에 따라 결측치를 나타내는 방식은 상이하다. 일반적으로 데이터가 존재하지 않거나 값이 누락된 상태를 지칭하기 위해 Null, NaN, NA와 같은 용어가 통용된다.[3] 이러한 표기법은 데이터의 성격이나 시스템의 설계 목적에 따라 선택적으로 사용된다.

파이썬 환경에서는 객체의 부재를 나타내기 위해 None을 사용하며, 수치형 데이터의 결측을 표현할 때는 np.nan을 활용한다.[6] 특히 시계열 데이터를 다루는 과정에서는 날짜나 시간 정보가 누락된 경우를 나타내기 위해 pd.NaT라는 특수한 형식을 사용하기도 한다. 이는 판다스 라이브러리 내에서 시간 관련 연산을 수행할 때 결측치를 명확히 구분하기 위한 장치이다.

데이터베이스 관리 시스템이나 다른 통계 소프트웨어에서도 각기 다른 명칭을 사용한다. 판다스 라이브러리에서는 NoneNaN을 모두 결측치로 인식하여 처리할 수 있는 유연성을 갖추고 있다.[3] 이처럼 데이터 전처리 과정에서는 사용 중인 라이브러리데이터 구조에 따라 결측치가 어떤 기호로 기록되어 있는지 정확히 파악하는 것이 필수적이다.

5. 결측치 처리의 필요성

데이터 전처리 과정에서 결측치를 적절히 다루는 것은 데이터 품질을 향상하고 분석 결과의 신뢰성을 확보하기 위해 필수적이다.[1] 실제 현장에서 수집되는 데이터는 다양한 경로를 통해 값이 누락되는 경우가 빈번하게 발생한다.[2] 이러한 누락된 값을 방치할 경우 데이터 분석의 정확성이 저하될 수 있으며, 도출된 결과가 실제 현상을 왜곡할 위험이 있다.

결측치를 효과적으로 처리하지 않으면 잘못된 분석 결과나 결론에 도달할 가능성이 높아진다. 데이터의 누락은 통계적 추론의 오류를 유발하여 의사결정에 부정적인 영향을 미칠 수 있다.[2] 따라서 데이터의 완전성을 유지하고 분석의 타당성을 높이기 위해서는 결측치가 발생한 원인을 파악하고 그에 맞는 적절한 처리 방식을 적용해야 한다.

머신러닝 모델을 구축할 때도 결측치 처리는 모델의 성능을 최적화하는 데 결정적인 역할을 한다. 결측치가 포함된 데이터를 그대로 사용할 경우 알고리즘의 학습 효율이 떨어지거나 모델의 예측 성능이 하락할 수 있다.[2] 결과적으로 안정적인 모델 성능을 유지하고 최적의 결과를 얻기 위해서는 결측치를 체계적으로 관리하는 단계가 반드시 수반되어야 한다.

6. 결측치 처리 방법론

데이터 전처리 과정에서 발생하는 결측치를 다루는 방식은 크게 제거와 대체로 구분된다.[1] 결측치 제거 기법은 데이터셋에서 값이 누락된 관측치를 분석 대상에서 제외하는 방식이다. 이 방법은 데이터의 왜곡을 방지할 수 있으나, 누락된 데이터의 양이 많을 경우 표본 크기가 줄어들어 통계적 유의성이 낮아질 위험이 있다.[2] 따라서 데이터의 손실이 전체 분석 결과에 미치는 영향을 사전에 고려해야 한다.

결측치 대체 기법은 누락된 값을 특정 값으로 채워 넣는 방식이다. 이는 데이터의 손실을 최소화하면서 머신러닝 모델의 학습을 지속할 수 있게 한다.[2] 대체 방법으로는 평균값 대체, 중앙값 대체, 최빈값 대체와 같은 통계적 수치를 활용하는 방법이 있으며, 데이터의 특성에 따라 적절한 통계량을 선택해야 한다. 또한 회귀 분석이나 K-최근접 이웃 알고리즘을 활용하여 다른 변수들과의 관계를 바탕으로 값을 추정하는 고도화된 방식도 존재한다.

효과적인 데이터 수정 및 전처리 전략을 수립하기 위해서는 결측치가 발생한 원인을 먼저 파악해야 한다. 설문조사 과정에서 응답자가 특정 문항에 답변을 하지 않았거나, 센서 장비의 오작동으로 인해 데이터 수집이 중단된 경우 등 발생 기제에 따라 처리 전략이 달라진다.[2] 데이터의 성격과 결측 유형을 종합적으로 판단하여 제거와 대체 중 최적의 방안을 결정하는 것이 데이터 분석의 정확성을 확보하는 핵심이다.

7. 같이 보기

[1] Wwww.missingkorea.org(새 탭에서 열림)

[2] Aai.miracle-dream.net(새 탭에서 열림)

[3] Ccheris8.github.io(새 탭에서 열림)

[4] Ddatacodelab.co.kr(새 탭에서 열림)

[6] Vvelog.io(새 탭에서 열림)

8. 관련 문서