251203_BootCamp Day 33_머신러닝 기초 (2)
2025. 12. 3. 20:26ㆍTIL
머신러닝 모델을 만들기 전, 데이터 전처리는 필수적이다
결측치, 이상치, 불균형 데이터를 제대로 처리하고, 의미 있는 파생 변수를 생성해 모델의 성능을 높일 수 있다

1. 데이터 전처리
원시(raw) 데이터에서 불필요하거나 손실이 있는 부분을 처리하고, 분석 목적에 맞는 형태로 만드는 과정
1) 데이터 전처리의 필요성
- 모델 정확도 및 신뢰도 향상
- 이상치나 결측치가 많은 상태로 학습하면 예측 성능이 크게 떨어짐
- 효율적인 데이터 분석과 모델 훈련을 위해 필수적인 단계
2) 제조업에서 데이터 전처리가 필요한 사례
- 센서가 간헐적으로 측정에 실패해 결측값이 발생
- 센서 오작동으로 인해 극단적으로 큰 값(이상치)이 기록
- 정상 제품과 불량 제품의 데이터 분포가 매우 다름(불균형 데이터)
2. 결측치
데이터에서 없는 값
1) 결측치 발생 원인
- 센서 고장, 측정 오류, 환경적 문제 등
- 사람이 수기로 입력하는 경우
2) 결측치 처리 기법
- 삭제 : 결측치가 있는 행 또는 열을 제거
- 간단하지만 데이터 손실이 발생하므로, 결측치가 매우 소수일 때 적합
- 대체 : 결측치를 다른 값으로 대체
- 평균, 중앙값 대체 : 수치형 데이터에서 많이 사용, 데이터 분포 왜곡이 비교적 적음
- 최빈값으로 대체 : 범주형 데이터에서 사용
- 예측 모델로 대체 : 회귀/분류 모델을 이용해 결측값을 예측 (이렇게까지 해야 되나..?)
- 최빈값은 중복으로 발생할 수 있기 때문에, pandas에서 최빈값을 대체할 때는 어떤 최빈값으로 대체할 것인지 정해줘야 한다.
3. 이상치
정상 범주에서 크게 벗어나는 값
1) 이상치 탐지 기법
- 통계적 기법 : 데이터가 정규분포를 따른다고 가정하고, 평균에서 3σ 범위를 벗어나는 값을 이상치로 간주.
- 직관적이고 간단하나, 정규성 가정이 틀릴 수 있음
- Box plot : 사분위수를 이용해 (Q1 - 1.5 * IQR) ~ (Q3 + 1.5 * IQR)을 벗어나는 데이터를 이상치로 간주.
- 분포 특성에 영향을 적게 받는 장점이 있음
- 머신러닝 기반 : 이상치 탐지 알고리즘(isolation forest, DBSCAN 등)
2) 이상치 처리 기법
- 이상치를 단순 제거
- 이상치 값을 조정(클리핑, Winsorizing 등)
- 별도로 구분하여 모델에서 제외하거나, 다른 모델 (이상치 예측 모델)로 활용
- 이상치를 살릴 지 말지 → 도메인 지식이 있어야 함
4. 정규화(Normalization) / 표준화 (Standardization)
모델(특히 거리 기반 알고리즘, 딥러닝 등)에 따라 특정 변수의 스케일이 크게 영향을 미칠 수 있음
ex. 센서 A는 값 범위가 0 ~ 1000, 센서 B는 값 범위가 0 ~ 1이면 A가 모델에 더 큰 영향을 줌
변수에 따라 범위가 다 다른데, 이걸 그대로 머신러닝 모델에 적용하면 값이 큰 변수가 모델에 더 큰 영향을 미침
⇒ 특정 변수에 치우치지 않기 위해 정규화, 표준화를 수행함
1) 정규화
- MinMaxScaler : 모든 값을 0과 1 사이로 매핑
- 값의 스케일이 달라도 공통 범위로 맞출 수 있음
- 딥러닝, 이미지 처리 등에서 입력값을 0~1로 제한해야 하거나 (특히 색[RGB] : 0~255 범위) 각 특성이 동일한 범위 내에 있어야 하는 경우 자주 사용
- 최소값, 최대값이 극단값(outlier)에 민감 → 극단치가 있으면 대부분의 데이터가 [0, 1] 구간 내부 한쪽에 치우치게 되기 때문에 주의를 요함
2) 표준화
- StandardScaler : 평균을 0, 표준편차를 1로 만듦
- 분포가 정규분포에 가깝게 변형됨
- 정규분포 가정을 사용하는 알고리즘(선형회귀, 로지스틱회귀, SVM 등)에 자주 쓰임
- 99.9%의 데이터는 -3 ~ 3 사이로 나옴 (정규분포의 ±3σ 범위와 관련)
- 데이터 분포가 심하게 치우쳐 있으면, 평균과 표준편차만으로는 충분한 스케일링이 되지 않을 수 있기 때문에 주의를 요함 (로그 변환, RobustScaler 등을 추가적으로 고려해야 함)
5. 불균형 데이터 (class imbalance)
불균형 데이터 : 정상 99%, 불량 1%처럼 한 클래스가 극도로 적은 경우
⇒ 모델이 극도로 적은 클래스를 거의 예측하지 못할 가능성이 큼 (편향 발생)
- Random oversampling
- 소수 클래스의 데이터를 단순 복제하여 개수를 늘림
- SMOTE(Synthetic Minority Over-sampling Technique)
- 소수 클래스를 무작정 복사만 하는 것이 아니라, 비슷한 데이터들을 서로 섞어서 (interpolation) 새로운 데이터 생성
- 소수 클래스의 데이터와 최대한 비슷하지만, 다양성을 갖는 가상의 데이들을 생성
- Undersampling
- 다수 클래스 데이터를 줄이는 방식. 데이터 손실 위험이 있지만, 전체 데이터 균형을 맞출 수 있음
- 혼합 기법
- SMOTE와 언더샘플링을 적절히 섞어서 사용
6. 범주형 데이터 변환
- 원-핫 인코딩(One-hot encoding)
- 범주형 변수를 각각의 범주별로 새로운 열로 표현, 해당 범주에 해당하면 1, 아니면 0
- 범주 간 서열 관계가 없을 때 사용하기 좋으나, 범주가 매우 많으면 차원이 커짐 (칼럼 수가 늘어남)
- 레이블 인코딩 (Label Encoding)
- 범주를 숫자로 직접 매핑 (S=0, M=1, L=2, XL=3…)
- 단순하지만, 모델이 숫자의 크기를 서열 정보로 잘못 해석할 수 있음 (순서가 있을 때 사용해야 함)
7. 피처 엔지니어링 (Feature Engineering)
모델 성능 향상을 위해 기존 데이터를 변형, 조합하여 새로운 특성(피처)을 만드는 작업
- 중요성
- 복잡한 데이터 구조 안에 존재하는 패턴을 효과적으로 추출해 모델이 쉽게 학습하게 함
- 제조업 : 센서 데이터 간 시계열적, 물리적 관계를 반영하는 경우가 많음
- 파생 변수 생성
- 날짜 파생 변수 : 측정 시간이 2025-02-24 10:35:00이라면, 월, 일, 시, 주말 여부 등으로 분해
- 수치형 변수 조합 : 온도와 습도가 있을 때, 새로운 피처 온도*습도를 추가
- 로그 변환, 제곱근 변환 등 : 분표가 매우 치우친 변수(오른쪽 꼬리가 긴 경우)에 로그 변환을 적용하여 정규성에 가까워지도록 변형
8. 머신러닝 데이터 전처리 팁
- 전처리와 피처 엔지니어링 과정에서의 모든 선택 (결측치 처리 방식, 이상치 제거 기준 등)은 도메인 지식과 데이터 탐색 (EDA) 결과를 함께 고려해야 함
- 각 단계별로 간단한 모델을 시험적으로 훈련해보고, 성능 변화를 체크하는 것이 좋음
'TIL' 카테고리의 다른 글
| 251205_BootCamp Day 35_주간 회고 (1) | 2025.12.05 |
|---|---|
| 251204_BootCamp Day 34_데이터프레임 고급 집계 이론 (0) | 2025.12.04 |
| 251202_BootCamp Day 32_데이터프레임 구조 변형 (0) | 2025.12.02 |
| 251201_BootCamp Day 31_머신러닝 기초 (1) (2) | 2025.12.01 |
| 251128_BootCamp Day 30_데이터 분석 기초 프로젝트 (完) (1) | 2025.11.28 |