데이터 정제
IT위키
더 많은 작업
- Data Cleansing; 데이터 정제
- 결측값·노이즈·이상값 같은 오류를 찾아 삭제·대체·변환해 데이터 품질을 높이는 작업
정제는 데이터 전처리의 첫 단계이다. 잘못된 값이 섞인 채 분석하면 모형이 아무리 좋아도 결과가 틀린다.
- 데이터 오류 원인 분석 : 결측값, 노이즈, 이상값 중 무엇이 왜 생겼는지 확인한다
- 데이터 정제 대상 선정 : 모든 데이터를 대상으로 하되, 품질 저하가 큰 외부·비정형 데이터를 우선한다
- 데이터 정제 방법 결정 : 오류 유형과 분석 목적에 따라 삭제, 대체, 예측값 삽입 등을 정한다
- 삭제 : 오류가 있는 행·열 전체 또는 일부를 지운다
- 대체 : 평균, 중앙값, 최빈값 등으로 바꾼다
- 예측값 삽입 : 회귀·분류 모형으로 예측한 값을 넣는다
- 변환(Transform) : 코드·형식·단위를 일관되게 바꾼다
- 파싱(Parsing) : 정제 규칙을 적용하기 위해 데이터를 의미 단위로 나눈다
- 보강(Enhancement) : 변환·파싱·수정 과정에서 추가 정보를 더한다
| 유형 | 설명 | 예 |
|---|---|---|
| MCAR(완전 무작위 결측) | 결측이 어떤 변수와도 무관하게 무작위로 생긴다 | 설문지가 우편 과정에서 분실됐다 |
| MAR(무작위 결측) | 결측이 관측된 다른 변수와 관련 있지만, 결측된 값 자체와는 무관하다 | 남성이 우울증 문항에 덜 응답한다(성별은 관측됨) |
| MNAR(비무작위 결측) | 결측이 결측된 값 자체와 관련 있다 | 소득이 높은 사람이 소득 문항을 비운다 |
- 단순 삭제 : 결측이 있는 행을 지운다(완전 분석, listwise). MCAR이 아니면 편향이 생기고 표본이 줄어든다
- 평균·중앙값 대치 : 관측값의 평균이나 중앙값으로 채운다. 간단하지만 분산이 과소 추정된다
- 단순 확률 대치 : 확률적 방법으로 뽑은 값으로 채워 평균 대치의 분산 과소 문제를 줄인다
- Hot-deck : 같은 자료 안에서 비슷한 응답자의 값으로 채운다
- Cold-deck : 외부 출처나 이전 조사의 비슷한 값으로 채운다
- 혼합 방법 : 여러 방법을 섞는다
- 다중 대치(Multiple Imputation) : 대치 → 분석 → 결합의 3단계로, 여러 번 대치한 데이터셋 각각을 분석하고 결과를 합친다. 다중 대체법 참고
| 방법 | 기준 |
|---|---|
| ESD(Extreme Studentized Deviation) | 평균 ± 3σ 밖의 값 |
| 기하평균 활용 | 기하평균 ± 2.5σ 밖의 값 |
| 사분위수(IQR) | 보다 작거나 보다 큰 값 (). 박스 플롯으로 확인한다 |
| Z-score | 가 기준(보통 3)을 넘는 값 |
| 마할라노비스 거리 | 변수 간 공분산을 고려한 다변량 거리가 큰 관측값 |
| LOF(Local Outlier Factor) | 이웃과 비교한 국소 밀도가 낮은 점 |
| iForest(Isolation Forest) | 무작위 분할에서 적은 횟수로 고립되는 점 |
| DBSCAN | 어떤 군집에도 속하지 않는 잡음(noise) 점 |
- 삭제 : 오류로 판단되는 이상값을 지운다
- 대체 : 평균, 중앙값, 상·하한값 등으로 바꾼다
- 변환 : 로그·제곱근 변환으로 극단값의 영향을 줄인다(변수 변환)
- 절단(Trimming) : 기준 밖의 값을 제거한다. 표본 수가 줄어든다
- 조정(Winsorizing) : 기준 밖의 값을 기준 경계값으로 바꾼다. 표본 수는 유지된다
import pandas as pd
df = pd.DataFrame({"x": [10, 12, 11, 13, 12, None, 95]})
df["x"] = df["x"].fillna(df["x"].median()) # 결측값 중앙값 대치
q1, q3 = df["x"].quantile([0.25, 0.75])
iqr = q3 - q1
lo, hi = q1 - 1.5 * iqr, q3 + 1.5 * iqr
outliers = df[(df["x"] < lo) | (df["x"] > hi)] # IQR 기준 이상값
df["x_win"] = df["x"].clip(lower=lo, upper=hi) # 조정(winsorizing)
- MCAR·MAR·MNAR을 사례로 구분하는 문제
- Hot-deck과 Cold-deck의 차이, 다중 대치의 3단계
- IQR 기준 이상값 경계 계산, 절단과 조정의 차이
- 실기 작업형에서 결측값 대치 후 통계량 계산
- 데이터 정제는 결측값 대체, 이상값 제거, 노이즈 교정처럼 데이터의 오류를 바로잡는 일이다.
- 분석하기 쉬운 형태로 바꾸는 정규화·스케일링·형식 변환은 데이터 변환이다. "데이터를 사용하기 쉽게 변환하는 것" 은 정제가 아니다.
- 품질 저하 위험은 비정형·반정형 데이터가 정형 데이터보다 크다. 그래서 정제는 외부·비정형 데이터를 우선한다.