데이터 전처리
데이터 전처리
데이터 전처리(Data Preprocessing)는 데이터 과학 프로젝에서 분석 또는 기계 학습 모델을 구축하기 전에 원시 데이터를 정리하고 변환하는 과정을 의미합니다. 현실 세계의 데이터는 대부분 불완전하고, 일관되지 않으며, 중되거나 노이즈가 포함되어 있어 그대로 사용 경우 분석 결과의 신뢰도가 떨어질 수 있습니다. 따라서 데이터 전처리는 데이터 분석의 정확성과 효율성을 높이기 위한 필수적인 첫 단계입니다.
이 문서에서는 데이터 전처리의 주요 목적, 절차, 기법, 그리고 그 중요성을 체계적으로 설명합니다.
개요
데이터 전처리는 데이터 과학 워크플로우에서 데이터 수집 이후, 모델링 이전에 수행되는 핵심 단계입니다. 통계 분석, 머신러닝, 딥러닝 등 다양한 분석 기법은 "입력 데이터의 품질이 곧 출력 결과의 품질"이라는 원칙을 따르기 때문에, 깔끔하고 구조화된 데이터를 확보하는 것이 성공적인 분석의 기초가 됩니다.
데이터 전처리는 단순한 데이터 정제를 넘어서, 데이터의 의미를 명확히 하고 분석 목적에 맞게 재구성하는 과정을 포함합니다. 일반적으로 전체 데이터 과학 작업 시간의 60~80% 가 이 단계에 소요된다는 통계도 있을 정도로, 시간과 노력이 많이 드는 작업입니다.
데이터 전처리의 주요 단계
데이터 전처리는 여러 하위 단계로 구성되며, 각 단계는 데이터의 특성과 분석 목적에 따라 조정될 수 있습니다.
1. 데이터 정제 (Data Cleaning)
데이터 정제는 오류, 결측치, 이상치 등을 처리하여 데이터의 품질을 향상시키는 과정입니다.
- 결측치 처리 (Missing Values)
데이터에 값이 없는 경우(예: NaN, NULL)는 분석에 방해가 됩니다. 처리 방법은 다음과 같습니다: - 제거: 결측치가 많은 행 또는 열을 제거 (단, 정보 손실 주의)
- 대체: 평균, 중앙값, 최빈값, 혹은 머신러닝 모델(예: KNN, 회귀)을 이용해 대체
-
보간 (Interpolation): 시계열 데이터에서 이전/이후 값 기반으로 추정
-
이상치 탐지 및 처리 (Outlier Detection & Handling)
이상치는 데이터의 분포를 왜곡할 수 있습니다. Z-score, IQR(사분위범위), 시각화(박스플롯 등)를 통해 탐지하고, 제거하거나 변환합니다. -
중복 데이터 제거
동일한 데이터가 여러 번 기록된 경우 중복 행을 제거하여 분석의 편향을 방지합니다.
2. 데이터 변환 (Data Transformation)
원시 데이터를 분석에 적합한 형식으로 변환하는 과정입니다.
-
정규화 (Normalization)
데이터를 일정한 범위(예: 0~1)로 조정합니다. 주로 Min-Max Scaling을 사용합니다.
$$ X_{\text{norm}} = \frac{X - X_{\text{min}}}{X_{\text{max}} - X_{\text{min}}} $$ -
표준화 (Standardization)
평균을 0, 표준편차를 1로 조정합니다. Z-score 정규화라고도 하며, 특히 거리 기반 모델(예: SVM, KNN)에 유리합니다.
$$ X_{\text{std}} = \frac{X - \mu}{\sigma} $$ -
로그 변환 (Log Transformation)
왜도(skewness)가 큰 데이터를 정규분포에 가깝게 만들기 위해 사용합니다. -
범주형 변수 인코딩 (Categorical Encoding)
- 원-핫 인코딩 (One-Hot Encoding): 범주형 변수를 이진 벡터로 변환
- 라벨 인코딩 (Label Encoding): 범주에 정수 값을 부여 (순서가 있는 경우에 적합)
3. 데이터 축소 (Data Reduction)
데이터의 양을 줄이면서도 정보 손실을 최소화하는 기법입니다.
-
차원 축소 (Dimensionality Reduction)
주성분 분석(PCA), t-SNE, LDA 등을 사용하여 불필요한 변수를 제거하거나 통합합니다.
→ 계산 효율성 향상, 과적합 방지 -
샘플링 (Sampling)
대용량 데이터셋의 경우, 무작위 샘플링을 통해 데이터 크기를 줄입니다.
4. 데이터 통합 및 파생 변수 생성
-
데이터 통합 (Data Integration)
여러 출처의 데이터를 결합하여 하나의 일관된 데이터셋을 만듭니다. 이 과정에서 키 값(예: ID) 기반 조인(Join)이 자주 사용됩니다. -
파생 변수 생성 (Feature Engineering)
기존 변수를 조합하거나 변환하여 새로운 변수를 생성합니다. 예: - 생년월일 → 나이
- 주문 금액 + 할인율 → 할인 후 금액
- 텍스트 데이터 → 단어 빈도, TF-IDF 값
데이터 전처리의 중요성
- 분석 정확도 향상: 깨끗한 데이터는 모델의 성능을 직접적으로 개선합니다.
- 모델 학습 안정성 확보: 이상치나 결측치가 모델 학습을 방해할 수 있습니다.
- 계산 효율성 증가: 불필요한 데이터를 제거하면 처리 시간이 단축됩니다.
- 결과 해석 용이성: 일관된 데이터 구조는 분석 결과의 해석을 명확하게 합니다.
도구 및 프로그래밍 언어
데이터 전처리는 주로 다음과 같은 도구와 언어로 수행됩니다:
| 도구/언어 | 주요 라이브러리/기능 |
|---|---|
| Python | [pandas](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EB%B6%84%EC%84%9D%20%EB%8F%84%EA%B5%AC/pandas) (데이터 조작), [numpy](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EC%88%98%EC%B9%98%ED%95%B4%EC%84%9D/numpy) (수치 연산), [scikit-learn](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D/scikit-learn) (전처리 함수), [missingno](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%8B%9C%EA%B0%81%ED%99%94/missingno) (결측치 시각화) |
| R | [dplyr](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EB%B6%84%EC%84%9D%20%EB%8F%84%EA%B5%AC/dplyr), [tidyr](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EB%B6%84%EC%84%9D%20%EB%8F%84%EA%B5%AC/tidyr), [caret](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D/caret), [VIM](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%A0%95%EC%A0%9C/VIM) |
| SQL | 데이터 추출 및 정제 (예: [COALESCE](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4/SQL/COALESCE), [CASE](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4/SQL/CASE), [JOIN](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%ED%86%B5%ED%95%A9/JOIN)) |
| Excel | 간단한 정제 및 필터링 |
| Apache Spark | 대용량 데이터 전처리 ([PySpark](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0/PySpark)) |
참고 자료 및 관련 문서
- Scikit-learn: Preprocessing Data
- Pandas Documentation
- Han, J., Kamber, M., & Pei, J. (2011). Data Mining: Concepts and Techniques. Morgan Kaufmann.
- 김도현 (2020). 『데이터 과학을 위한 전처리 기법』. 한빛미디어.
데이터 전처리는 단순한 기술적 절차를 넘어서, 데이터 과학자의 판단력과 경험이 반영되는 중요한 작업입니다. 올바른 전처리를 통해 데이터의 잠재력을 최대한 발휘할 수 있으며, 성공적인 데이터 기반 의사결정의 초석이 됩니다.
이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.