1. 데이터 전처리 (Data Preprocessing)
- "쓰레기를 넣으면, 쓰레기가 나온다" (GIGO 원칙)
- Garbage In, Garbage Out
- '최종 결과물의 퀄리티는 우리가 어떤 데이터를 집어 넣느냐에 달려있다'라는 말
- 데이터의 가치를 높이기 위해 정제, 통합, 변환을 거쳐 분석에 적합한 형태로 만드는 과정
2. 데이터 전처리 4단계
1.정제(결측값 및 잡음 처리)
-> 2.통합(서로 다른 데이터 결합)
-> 3.축소(데이터 규모 줄이기)
-> 4.변환(데이터 형태 재구성)
2.1. 데이터 정제(결측값 및 잡음 처리)
2.1.1. 결측값 처리
- 비어있는 값을 제거하거나, 예측 모델(회귀분석 등)을 사용해 채움
2.1.2. 잡음 제거
- 데이터 평활화 기법을 사용하여 오류나 임의의 변동을 제거
2.2. 데이터 통합(서로 다른 데이터 결합)
2.2.1. 개체 식별
- 서로 다른 데이터셋에서 동일한 실제 개체(ex.고객)를 식별
2.2.2. 중복/이상 해소
- 정규화, 상관 분석 등을 통해 중복 데이터를 제거하고 오류를 방지
2.3. 축소와 변환(데이터 효율적으로 재구성)
2.3.1. 차원 축소
- PCA, 웨이블릿 변환 등으로 변수(열)의 수를 줄여 데이터를 압축
2.3.2. 수량 축소
- 샘플링, 군집화 등으로 데이터의 양(행)을 줄여 더 작은 형태로 표현
2.3.3. 정규화
- 서로 다른 범위와 숫자 데이터를 공통된 척도(ex.0~1)로 변경
2.3.4. 집합화
- 세부 데이터를 요약하고 그룹화 (ex. 일별 매출 -> 월별 매출)
3. 전처리의 최종 목표
- 고품질 데이터의 핵심 속성
- 정밀성: 데이터에 오류가 없음
- 완전성: 누락된 값이 없음
- 일관성: 데이터 내에 모순이 없음
- 적시성: 필요할 때 사용 가능함
- 신빙성: 데이터를 신뢰할 수 있음
- 해석성: 데이터를 이해하기 쉬움
** 하나라도 빠지면 안됨
4. 데이터 전처리 방법
4.1. 데이터 정제(Cleaning)
- 결측값(NaN)을 평균 등으로 채우거나
- 이상치 제거
4.1.1. 결측값(Missing Value) 처리
4.1.1.1. 처리 절차
- 1) 결측치 확인
- isnull().sum() 등을 사용하여 결측치 비중 파악
- 2) 결측 유형 파악
- 무작위(MCAR), 조건부 무작위(MAR), 비무작위(MNAR)에 따라 처리 방식을 결정
4.1.1.2. 주요 처리 전략
-
1) 제거
- 행 삭제: 결측치가 포함된 행을 삭제. 데이터 손식이 작을 때 적합
- 열 삭제: 특정 변수(열)에 결측치가 너무 많을 때 해당 열 자체를 삭제
-
2) 대체
- 단순대체: 수치형은 평균/중앙값, 범주형은 최빈값으로 대체
- 시계열/순서 데이터: 앞의 값으로 채우기, 뒤의 값으로 채우기 또는 보간법 사용
-
3) 예측 기반 대체(알고리즘): KNN Imputer(주변 데이터 기반), Regression Imputer(회귀 분석), MICE(다중 대체, 변수 간 관계 반영) 등
4.1.2. 이상치(Outlier) 처리
- 일반적인 데이터 범위에서 많이 벗어난 작은 값이나 큰 값으로,
- 모델 성능을 저하시키는 원인이 됨
4.1.2.1. 탐지 방법
-
1) IQR(Interquartile Range) 방식: Q1-1.5xIQR 보다 작거나 Q3+1.5xIQR 보다 큰 값을 이상치로 정의 (가장 일반적)
-
2) Z-score 방식: 평균에서 3 표준편차를 벗어나는 데이터를 이상치로 정의(수정된 Z-score는 2.5~3.5 기준 사용)
-
3) 시각화: 박스 플롯, 산점도를 통해 직관적 확인
4.1.2.2. 처리
-
1) 제거: 단순 오류일 경우 삭제하여 정보 손실을 감수하고 데이터 품질 향상
-
2) 대체/윈저라이징(Winserization): 이상치를 최소/최대 상한선(ex. 상하위 1% 또는 5%) 값으로 치환하여 영향력 감소
-
3) 변환(Transformation): 데이터 분포가 왜곡된 경우 로그(Log) 변환 등을 통해 이상치의 영향력 완화
-
4) 모델 기반 처리: 이상치에 민감하지 않은 트리 기반 모델(Random Forest, XGBoost) 사용
- 로그 변환 등을 통해 데이터 분포를 정규분포에 가깝에 변경
by Heidi J. 꼬꼬마 데분가💜