끄적이는 개발노트
260519_강의 정리 (데이터 전처리) 본문
728x90
■ 데이터 전처리(Preprocessing)
- 정의
- 원시 데이터를 분석 가능한 상태로 다듬는 작업
- Wrangling이라고도 불리며, 실제 데이터 분석 업무의 약 70%를 차지
- 단계
- Cleaning (정제)
- 결측치, 이상치 제거
- 데이터 오류 정제
- Structuring (구조화)
- 분석 가능한 형태로 재구조화
- Feature Engineering (정보 강화)
- 의미 있는 특징 추출 및 변수 생성
- Optimization (최적화)
- 속도, 메모리, 안정성 개선
- Cleaning (정제)
- Cleaning (정제)
- 결측치 처리 (Missing Value)
- isnull() / notnull() : 탐지
- dropna() : 제거
- replace() : 단순 대체
- 보간법 (Interpolation)
- 주변 흐름 이용
- 시계열처럼 순서가 있는 데이터에서 앞뒤 값의 흐름으로 결측치 채움
- Imputation
- 이웃 데이터 참고해 채움
- 순서와 무관하게 KNN 등 통계적 방법으로 이웃 데이터를 참고해 채움
- 주로 scikit-learn의 SimpleImptuer, KNNImputer
- 이상치 판별
- 표준편차 기반
- IQR 기반 : Q1 − 1.5×IQR ~ Q3 + 1.5×IQR
- 이상치 ↑ : mean 대신 median 사용
- 정규분포 : 한 점 확률 = 0, 면적으로 표현
- 결측치 처리 (Missing Value)
| 함수 | 기준 | 특징 |
| cut() | 동일한 구간 크기 | 구간이 너무 작으면 정보 손실 가능 |
| qcut() | 동일한 데이터 개수 | 각 구간의 빈도가 균등해짐 |
- Structuring (데이터 구조화)
| 함수 | 기준 | 특징 |
| merge() | 공통 열(column) | SQL JOIN과 유사한 수평 결합 |
| join() | 인덱스 기반 | 수평 결합 |
| concat() | 행 또는 열 방향 | 단순 이어붙이기 (axis 지정) |
| pivot() | index / columns / values 3축 | 행·열 재배치 / 중복 없어야 함 |
| pivot_table() | 그룹별 집계 | 중복 허용, aggfunc 지정 가능 |
| melt() | Wide → Long | 넓은 형식을 긴 형식으로 변환 |
- Feature Engineering (정보 강화)
- 기존 변수에서 새로운 의미 있는 특징을 추출해 변수를 늘리고 모델 성능을 높임
- 파생변수 (Derived Feature) 생성이 핵심
- 종류
- TF-IDF (텍스트)
- 문서x단어 행렬
- 자주 등장하는 단어는 중요도 낮음 (IDF)
- 특정 문서에서만 자주 쓰이면 중요도 높음 (TF)
- 푸리에 변환 (시계열)
- 모든 파형을 sin/cos 함수 조합으로 분해
- 주기성 있는 데이터의 패턴 추출에 사용
- 패턴 추출 (패턴)
- 데이터에서 반복되는 구조나 특징을 찾아내는 과정
- 도메인 지식이 중요
- TF-IDF (텍스트)
- Optimization (성능 최적화)
| 기법 | 방법 | 효과 |
| 수치화(Encoding) | 범주형 → 숫자 변환 | 계산 속도 향상 |
| 형변환(Type Casting) | float64 → int32 | 메모리 절약 (int32 < float64) |
| PCA | 중요 특징만 남겨 차원 축소 | 노이즈 감소, 속도 향상 (정보 일부 손실) |
| 파일 포맷 변경 | CSV → Parquet | 열 기반 저장, 분석 속도 향상 |
- Scaling 종류 비교
- Scaling이나 Encoding을 전체 데이터에 먼저 적용하면, Test 데이터의 정보가 Train에 새어 들어가서 모델 성능이 비정상적으로 높게 측정 → 반드시 Train/Test 분리 후 Train에만 fit하고 Test에는 transform만 적용
- 모델에 따라 Scaling의 필요 여부가 달라짐
- 거리 기반 모델(KNN, SVM, Linear Regression)은 Scaling 필수
- 트리 기반 모델(Decision Tree, Random Forest, XGBoost)는 없이도 동작
| 종류 | 변환 방식 | 특징 / 사용 상황 |
| Min-Max Scaling | 0 ~ 1 범위로 변환 | 이상치에 민감 범위가 명확할 때 적합 |
| StandardScaler | 평균 0, 표준편차 1 | 정규분포 가정 가장 범용적으로 사용 |
| Robust Scaling | median | IQR 기반 이상치 영향 최소화 이상치 많은 데이터에 적합 |
- Bias-Variance Tradeoff & 모델 복잡도
- Bias가 큼 (Underfitting)
- 모델이 너무 단순함
- 데이터를 제대로 설명 못함
- 해결 → 변수 추가, Feature 생성
- 모델 복잡도를 높여야 함
- Variance가 큼 (Overfitting)
- 변수가 너무 많거나 모델이 복잡
- Train엔 잘 맞지만 Test엔 틀림
- 해결 → 변수 감소, 정규화, PCA
- 모델 복잡도를 낮춰야 함
- Bias와 Variance 사이의 균형을 맞추는 과정이 Optimization (최적화)
- Bias가 큼 (Underfitting)
728x90
'Python' 카테고리의 다른 글
| 260521_강의 정리 (시계열 분석) (0) | 2026.05.21 |
|---|---|
| 260520_강의 정리 (Data Summerization & EDA) (0) | 2026.05.20 |
| 260518_강의 정리 (Pandas) (0) | 2026.05.18 |
| 260512_강의 정리 (NumPy) (0) | 2026.05.13 |
| 260513_강의 정리 (Matplotlib) (0) | 2026.05.13 |
