본 포스팅에서는 데이터 전처리와 그 중요성에 대해서 알아보도록 하겠습니다.
우선 머신러닝을 이용해 문제를 해결하는 프로세스는 다음과 같다.
이 중 데이터 전처리 파트에서 결측치 처리와 이상치 처리에 대해 자세히 알아보도록 하자.
1. 데이터 전처리의 중요성
데이터 전처리는 모델의 특성을 이해하고 수정하여 품질을 높이는 과정에 해당한다.
데이터 전처리를 통해 모델의 성능을 향상하고, 모델의 해석 가능성을 높이는 역할을 하기 때문에 데이터 전처리는 중요한 작업이다.
아래의 3가지 예시를 통해 데이터 전처리의 중요성을 느껴보자.
데이터 전처리는 편향을 제거하며, 이를 통해 신뢰성 높은 모델을 제작 가능
- 선형회귀 모델 및 거리기반 알고리즘(KNN)은 결측치 및 이상치에 영향을 많이 받는다.
- 아래의 그림과 같이 이상치의 존재는 선형 회귀선을 왜곡시키는 원인이 된다.
- 데이터 전처리는 신뢰성과 안정성을 높이는 모델 제작에 도움을 준다.
알고리즘 모델 성능에 영향을 끼치는 중요 변수나 패턴을 찾기가 용이
- 알고리즘 모델에 있어서 중요한 변수나 패턴을 찾는 일은 모델의 복잡도를 낮추고, 과적합을 방지하는 역할을 한다.
- 더 나아가 올바른 모델의 해석을 가능케 하여 모델의 안정화와 신뢰성을 높인다.
- 즉, 데이터 전처리가 선행되지 않으면 데이터에 편향과 같은 불균형을 만들어 내고 모델의 해석을 방해한다.
데이터 시각화가 용이하여 데이터 및 모델 해석에 있어 편리함 제공
- 데이터 전처리 및 탐색(EDA) 하는 과정에서 데이터 시각화는 필수적으로 선행된다.
- 데이터 전처리는 분포 및 특성을 시각적으로 올바르게 표현하여 잠재적 정보 탐색이나 문제를 발견할 수 있다.
2. 결측치 다루기
결측치란 데이터에서 누락(결측)된 관측치를 말한다.
데이터의 손실과 더불어, 분포를 왜곡시켜 편향시키는 원인이 되기 때문에 결측치를 다루는 것은 중요하다.
또한 모델에 따라 데이터에 결측치가 있으면 작동하지 않는 모델들도 있다.
아래의 그림을 통해 결측치에서 살펴볼 부분들을 알아보자.
2.1 결측치 매커니즘
완전 무작위 결측(MCAR : Missing Completely At Random)
- 결측치가 다른 변수와 상관없이 무작위로 발생하는 경우
- 관측치와 결측치 모두 결측 원인과 독립 (아무런 상관없이 랜덤 하게 발생)
- 센서의 고장, 전산 오류 등의 이유로 발생 가능
e.g) 데이터를 관측 및 입력하는 과정에서 발생하는 임의 누락으로 인한 결측
무작위 결측(MAR : Missing At Random)
- 결측치가 해당 변수와는 무관하나, 다른 변수와 연관되어 있는 경우
- 다른 변수의 관측치와 연관되어 있기 때문에 예측 모델을 통해 대체 가능 (다른 변수에 대한 의존 여부를 통해 검증 가능)
e.g) 설문조사에서 특정 키에 따라 몸무게에 대한 질문에 무응답인 경우 (몸무게와 키와의 연관)
비무작위 결측(MNAR : Missing Not At Random)
- 결측의 원인이 해당 변수와 연관되어 발생
- MACR, MAR에 해당되지 않는 결측 유형
e.g) 신체 정보 관련 설문조사에서 몸무게가 비교적 높은 응답군에서 결측이 많이 발생
2.2 결측치 패턴
일변량 결측 패턴(Univariate Pattern)
- 하나의 변수에서만 결측치가 발생
- 다른 변수와는 연관성이 없는 형태
e.g) 임상 실험 중 특정 하나의 집단에서만 부작용이 발생하는 경우
단조 결측 패턴(Monotone Pattern)
- 일정하고 단조적인 패턴으로 결측치가 발생
- 임상 실험과 같은 종단 연구에서 많이 발생
e.g) 나이에 따른 사망, 악화 등 일정 개체에서 중도 탈락이 발생
일반 결측 패턴(General & Non-Monotone Pattern)
- 단조적이지 않은 형태의 결측치
- 다른 변수와의 관계에 따라 나타날 수 있는 비선형 결측 패턴 형태
e.g) 알 수 없는 이유로 특정 나이에 따라 질병이 드물게 발생하는 경우
규칙 결측 패턴(Planned Pattern)
- 결측의 원인이 일정한 패턴 및 규칙에 따라 발생
- 특정 상황에 의해 의도적이며 규칙적으로 결측치를 생성하는 경우
2.3 결측치 처리
목록 삭제 (Listwise Deletion)
- 변수에 결측치가 존재하는 해당 행(row)을 제거
- 모든 변수가 결측치 없이 채워진 형태의 행만 분석 및 모델링에 활용하는 방식
어떤 방식으로 결측치를 처리해야 하는지는 상황 by 상황, 데이터 by 데이터 이므로 목적에 맞게 잘 판단하여 결측치를 처리해야 한다.
📍 의미를 가진(패턴) 결측치를 제거한다면 모델의 편향 또한 생길 수 있으므로 주의해야 한다.
열 삭제 (Dropping Columns & Features)
- 변수에 결측치가 존재하는 해당 열(Column)을 제거
삭제(Deletion)를 통해 결측치를 처리하게 되면 다음과 같은 장단점이 있다.
장점
- 결측치를 처리하기 편리 (메모리도 줄고 속도도 빨라진다)
- 결측치가 데이터 왜곡의 원인이라면, 삭제로 인한 왜곡 방지와 모델 성능의 향상 기대
단점
- 결측치에도 데이터 특성이 유효한 경우가 존재 ("결측치 유/무" 변수를 새로 생성하는 것도 하나의 방법)
- 삭제된 데이터로 인하여 남은 데이터에 편향이 만들어질 가능성 존재
- 관측치의 정보가 줄어들게 되므로 알고리즘 모델에 악영향
대체(Imputation)
- 결측치를 관측값의 통계량(평균값, 중앙값, 최빈값)으로 대체
장점
- 대체된 값은 데이터의 통계 특성을 반영하므로 정보를 안정적으로 보존 가능
- 데이터의 샘플이 그대로 유지되기 때문에 알고리즘 모델에 원본 크기로 적용 가능
단점
- 통계값으로 인해 변수의 분산이 감소하여 변수간 상관관계가 낮아지는 문제 발생
📍 통계값으로 대체하는 방법은 모델에 편향이 생기게 할 수 있다.
회귀 대체(Regression)
- 변수 간의 관계를 파악한 후, 예측하여 결측치를 대체하는 방식 (범주형 = 분류를 통해 예측, 수치형 = 회귀를 통해 예측)
장점
- 변수 간의 연관성을 활용해 결측치를 예측하기 때문에 많은 데이터 정보를 활용 가능
- 삭제(Deletion) 및 대체(Imputation) 방법에 비해 실제 데이터와 유사 가능성이 높음
단점
- 각 변수마다 예측모델을 생성해야 하는 어려움이 있다
결측치 비율 | 결측치 처리 방법 |
10% 미만 | 제거(Deletion), 대체(Imputation) |
10% ~ 20% | 회귀 대체(Regression), Hot Deck |
20% 이상 | 회귀 대체(Regression) |
위와 같은 방식은 논문에서 추천된 방식이지만 데이터가 너무 많다면 회귀 모델 사용이 어려울 수도, 예측 성능이 매우 중요하다면 회귀 모델이 중요할 수도 있는 것처럼 자기 상황에 맞게 고려해서 적용하는 것이 중요하다.
3. 이상치 다루기
이상치(Outlier)란 변수의 분포상 비정상적으로 극단적이며, 일반적인 데이터 패턴을 벗어나는 관측치를 말한다.
평균값과 같은 통계적 중요 결과를 왜곡시키는 원인이 되기도 한다.
이상치가 나타는 다양한 원인으로는 데이터의 전송 오류, 위변조 해킹, 수집 기기의 오작동 등으로 이상치가 발생할 수 있다.
또한 수동으로 데이터를 입력하는 담당자의 실수로 인한 이상치 생성(휴먼 에러), 편법이나 조작으로 이상치 생성(주식 작전세력, 부동산 업&다운 거래, 분양가 상한제)등이 있다.
이상치 탐지 및 제거가 필요한 이유는 다음과 같다.
- 데이터 분석 및 탐색 시에 패턴과 인사이트를 도출하는 것이 가능
- 데이터로부터 도출된 명확한 패턴과 인사이트는 올바른 의사결정에 도움
- 데이터 전체를 왜곡시키는 이상치를 제거하여 모델의 안정성 향상을 기대
이상치 처리 방안은 아래의 그림과 같으며 하나씩 살펴보도록 하자.
3.1 이상치(Outlier) 종류
점 이상치 (Point, Global Outlier)
- 대부분의 관측치들과 동떨어진 형태의 이상치
- 변수의 분포상 비정상적인 패턴을 가졌기 때문에 탐지가 어렵지 않은 케이스
상황적 이상치 (Contextual Outlier)
- 정상적인 데이터 패턴이라도 상황(Context)에 따라 이상치로 변화되는 형태
- 상황은 주로 시점에 따라 바뀌기 때문에 시계열 데이터에서 주로 나타나는 케이스
e.g) 여름 아이스크림 판매량이 100개이고, 겨울 아이스크림 판매량이 20개라고 가정했을 때, 겨울에 아이스크림 판매량이 100개가 있는 경우
집단적 이상치 (Collective Outlier)
- 데이터 분포에서 집단적으로 편차가 이탈되어 이상치로 간주
- 관측치 개별로 보았을 때는 이상치처럼 보이지 않는 것이 특징
e.g) 스팸 메일은 일반 메일과 형태가 유사하지만, 정상적이지 못한 메일
3.2 이상치(Outlier) 탐지
Z-Score
- 평균으로부터의 표준편차 거리 단위를 측정하여 이상치를 탐지하는 방법
- Z값을 측정하여 이상치를 탐색
- Z값이 2.5 ~ 3 정도 수치가 나오면 이상치로 판별
- 데이터가 정규분포를 따른다고 가정
Z = $\frac{x - \mu}{\sigma}$
$\mu$ = mean
$\sigma$ = standard deviation
장점
- 데이터에서 이상치를 간단하게 탐지 가능
단점
- 표준화된 점수를 도출하는 과정이기 때문에 데이터가 정규분포를 따르지 않는 경우 효과적이지 않을 가능성
- Z-Score를 구성하는 평균과 표준편차 자체가 이상치에 민감
IQR (Inter Quantile Range)
- IQR은 상위 75%와 하위 25% 사이의 범위
- IQR은 Q3(제3 사분위)에서 Q1(제1 사분위)를 뺀 위치
- Q1 - 1.5*IQR 및 Q3 + 1.5*IQR을 최극단의 이상치로 판단한여 처리
- 주로 Boxplot에서 많이 보이는 그림
장점
- 데이터의 중앙값과 분포만을 통해 이상치를 식별하므로 직관적
- 표준편차 대신 백분위수(25%, 75%)를 사용하므로 이상치에 강건(robust)한 특징
- 데이터가 몰려 있는 경우라도 분포를 활용하기 때문에 효과적
단점
- 이상치의 식별 기준이 백분위수에 의존
- 왜도가 심하거나 정규분포를 따르지 않는 경우 제대로 동작하지 않을 가능성
3.3 이상치(Outlier) 처리
이상치를 처리하는 방식으로는 결측치 처리와 마찬가지로 데이터를 삭제, 대체하는 방식으로 구분할 수 있다.
또한 변환(Transformation)을 통해서 단위(스케일)를 변환시키는 방법도 존재한다.
삭제 (Deletion)
- 이상치에 해당하는 데이터 포인트(값, 인스턴스)를 제거하는 방법
- 이상치는 중요한 정보를 내포하고 있는 경우도 존재
- 이상치는 도메인 지식에 기반하여 객관적인 상황에 맞게 제거하는 것이 필요
대체 (Imputation)
- 통계치(평균값, 중앙값, 최빈값)로 이상치를 대체
- 상한 값(Upper boundary), 하한값(Lower boundary)을 정해놓고 이상치가 경계를 넘어갈 때 대체 (1 사분위수 이하의 값들은 1 사분위수로, 3 사분위수 이상의 값들은 3 사분위수로 대체)
- 회귀 및 KNN 등의 거리기반 알고리즘 등을 이용해 이상치를 예측 및 대체하는 방식도 존재
변환(Transformation)
- 변수 내에서 매우 큰 값을 가진 이상치를 완화시킬 수 있는 방법 (큰 값을 작은 값으로 변환시키는 원리)
- 이외에도 제곱근 변환으로 대체하여 사용 가능
📍 이상치를 처리할 때는 왜 이런 값이 나왔는지(왜 이상치가 생겼는지)를 고민하고 분석하며 상황에 맞게 적용하는 것이 중요하다.
'Machine Learning > Basic' 카테고리의 다른 글
변수 선택 (Feature Selection) (1) | 2024.01.14 |
---|---|
카테고리와 기타 변수 다루기 (0) | 2024.01.13 |