✍️ 핵심 한문장!!
결측치, 이상치, 불균형 데이터를 제대로 처리하고, 의미있는 파생변수를 생성하여 모델의 성능을 높이자
데이터 전처리란?
raw 데이터에서 불필요/손실(노이즈)이 있는 부분을 처리
분석 목적에 맞는 형태로 만듦
-> 모델 정확도 + 신뢰도 향샹
-> 이상치, 결측치 많으면 학습에서 예측 성능이 저하됨
-> 효율적인 데이터분석과 모델 훈련에 필수적!!
여러 사례들
제조업 사례
센서가 측정에 실패해 결측값 발생, 센서 오작동으로 극단값이 기록, 불량 제품의 데이터의 분포가 다름(불균형 데이터)
금융 사례
고객 정보 일부 유실, 특정 시점의 데이터가 취합되지 않음, 급등락으로 비정상적 가격 변동 이상치 기록, 카드사 사기, 대출연체 사례(불균형)
마케팅 사례
설문이나 쿠폰 사용정보 누락, 특정 채널에 전송된 쿠푼 수 확인 불가(결측), 특정상품 클릭수가 월등히 높아 평균 왜곡, 이벤트 끝나자 조회수 급감(이상치), 이탈 고객 비율이 매우 적은 경우, 캠페인 성공/실패 비율의 극단적 차이(뷸균형)
결측치 처리
1. 삭제
: 결측치 행 또는 열 제거
: 간단하지만, 데이터 손실 발생
✔️ 결측치가 매우 소수일 때 적합
2. 대체
: 아무값 대체 X, 평균이나 중앙값으로 대체(수치형 데이터, 데이터 분포 왜곡이 비교적 적음)
: 최빈값으로 대체 -> 범주형 데이터에서 사용
: 예측 모델로 대체 -> 회귀/분류 모델을 이용해 결측값을 예측 (잘 고민해서 결정해야 함)
제조업 예시
- 센서 데이터에서 특정 시간대(야간)에 종종 측정 누락이 발생한다면,
- 중앙값으로 간단히 대체하거나
- 인접 시간대 센서 값의 추세(ex: 이동평균)를 바탕으로 결측치 채움
- 중요한 센서라면, 예측 모델을 통해 결측치를 추정 (제조업 뿐만 아니더라도…)
금융 예시
- 시간에 따라 변하는 시계열 데이터의 경우(주가, 거래량 등)
- 일정 기간(예: 이전 5일, 이후 5일 등) 주가의 평균 또는 가중평균을 통해 결측값을 보정
- 직전, 직후에 기록된 유효한 데이터로 빈 값을 채우는 방식 (Forward/Backward Fill)
- 고객 데이터(신용도, 소득, 자산 등)에 결측치가 발생한 경우
- 중앙값을 사용하여 대체, 극단값의 영향을 받지 않아 평균 대체보다 안정적 → 그룹(클러스터)의 대표값으로 대체 (결측값이 속한 클러스터의 평균, 중앙값 등을 사용)
- 결측값이 간헐적으로 존재한다면
- 비교적 중요도가 낮은 지표라면, 간단히 제거
마케팅 예시
- 캠페인 반응(클릭률, 전환율) 데이터의 경우
- 온라인 광고나 캠페인 전환율이 일시적으로 누락된 경우, 인접 기간(예: 전일, 전주 동일 요일) 데이터 기반으로 보정
- 시점별로 전환 흐름이 비교적 일정하거나 특정 패턴(요일 효과 등)이 있다면, 이동평균으로 추정 가능
- 고객 설문/프로필 정보의 경우
- 나이, 지역, 성별 등의 간단한 인구통계학적 정보는 최빈값·중앙값으로 대체 가능 → 그룹(클러스터)의 대표값으로 대체 (결측값이 속한 클러스터의 평균, 중앙값 등을 사용)
- 정기적으로 누락되는 채널/시점 데이터의 경우
- 특정 채널 또는 시간대에 반복적으로 누락된다면, 시스템(로그 수집, 쿠폰 트래킹 등)을 개선해 재발을 방지
- 결측이 반복되는 구간은 유사 채널 지표로 추정
이상치 탐지 및 제거
이상치(Outlier)란? 정상 범주에서 크게 벗어난 값
1. 통계적 기법
: 정규분포를 따른다고 가정 -> 평균에서 ±3a(99.9%)(a, 시그마, 표준편차) 범위를 벗어난 값을 이상치로 간주
: 직관적이나, 정규정 가정이 틀릴 수 있음
2. 박스플랏 기준
: 사분위수를 이용해 벗어난 데이터를 이상치로 간주
: 분포 특성에 영향을 적게 받는 장점

처리 기법
1. 이상치를 단순 제거
2. 이상치 값을 조정(클리핑, Winsorizing 등)
3. 별도로 구분하여 모델에서 제외하거나, 다른 모델(이상치 예측 모델)로 활용
제조업 예시
- 특정 센서값이 정상 범위(ex: 20~80)에서 갑자기 200 이상을 기록 → 장비 이상 가능성 높음
- 매 생산 라인마다 센서값 범위가 조금씩 다를 수 있으므로, 라인별 통계 기준(평균, 표준편차)으로 이상치 판단
금융 예시
- 특정 종목의 하루 거래량이 평소 대비 수십 배로 급등하거나, 주가가 순간적으로 비정상적인 폭락·폭등을 보일 때 이상치로 판단
- 고객 신용도 데이터에서도 소득이나 부채가 일반 범위에서 크게 벗어난 값이 나오면 의심 거래나 데이터 오류로 판단
마케팅 예시
- 어떤 광고 캠페인에서 클릭률(CTR)이 다른 캠페인에 비해 극단적으로 높아, 평균 분석을 왜곡하는 경우가 이상치
- 고객 구매 이력에서 특정 기간에 평소와 전혀 다른 과도한 소비(장바구니 금액 폭증)가 포착되면 마케팅 분석에서 이상치로 분류 가능
정규화/표준화 ( 스케일링 )
왜 필요해? 모델(특히 거리 기반 알고리즘, 딥러닝 등)에 따라 특정 변수의 스케일이 크게 영향을 미칠 수 있음
: 센서 A는 값 범위가 0 -1000, 센서 B는 값 범위가 0 - 1 이라면, A가 모델에 더 큰 영향을 줌
정규화
✔️ MinMaxScaler
: 모든 값을 0과 1 사이로 매핑
: 공통 범위로 맞출 수 있음
: 딥러닝(신경망), 이미지 처리 등
: 거리 기반 알고리즘(유클리디안 거리 사용)
: 최소값, 최대값이 극단값(outlier)에 민감. 따라서 극단값이 있는 상태에서 정규화 하면 [0,1] 구간 내부 한쪽으로 치우침!
: 새로운 데이터가 기존 최대보다 커지거나, 최소보다 작아지는 경우가 있어 재학습하거나 다른 처리 필요
표준화
✔️ StandardScaler
: 평균을 0, 표준편차를 1로(또는 거의 가깝게) 만듦
: 정규분포에 가깝게 변형됨
: 정규분포 가정을 사용하는 알고리즘(선형회귀, 로지스틱 회귀, SVM 등)에 자주 사용
: 변환된 값들이 이론적으로 -∞ 에서 +∞ 범위 가질 수 있음 (보통은 -3에서 3)
: 특정 구간이 고정되지는 않음
: 극단값에 덜 민감함
: 분포가 심하게 치우쳐 있으면, 평균과 표준편차만으로는 충분한 스케일링이 되지 않을 수 있음
(예, 긴꼬리 본포 인 경우 -> 로그변환, RobusScaler 등 추가고려)
불균형 데이터 처리
✔️ 불균형 데이터란? Class Imbalance
정상 99%, 불량 1% 처럼 한 클래스가 극도로 적은 경우
: 문제점 -> 모델이 극도로 적은 클래스를 거의 예측 못함
해결 기법
1. Oversampling
- random oversampling : 소수 클래스 데이터를 단순 복제
- SMOTH (Synthetic Minority Over-sampling Technique) (주로 사용)
: 소수 클래스를 무작정 복사만 하는 게 아니라, "비슷한" 데이터들을 서로 섞어서 새로운 데이터 생성
: 소수 클래스 데이터들(둘 또는 이상) 사이의 새로운 포인트를 만들어 다양한 예시를 가상으로 만들어 늘림
예. 사과90 오렌지10
오렌지 단순 복제(random oversampling)하면 다양성이 없음
-> SMOTH를 하면?
모양, 맛이 비슷한 오렌지를 픽하고, 그 중간 정도 되는 새로운 오렌지 생성
그러면, 똑같지도 엉뚱하지도 않은 새 오렌지 생성(다양성)
2. Undersampling (잘 사용 X)
: 다수 클래스 데이터를 줄임, 손실 위험
3. 혼합 기법
: SMOTH와 언더샘플링 적절히 섞어서 사용
범주형 데이터 변환
✔️ 원-핫 인코딩(One-Hot Encoding)
: 해당 범주에 해당하면 1, 아니면 0 -> 색상(빨 - 파 - 초) -> [1, 0, 0], [0, 1, 0], [0, 0, 1]
: 범주 간 서열관계 없을 때
: 범주가 많으면 차원이 커져서 좋지 않음(컬럼 수가 많아지는 것을 차원이 커진다 함)
예. 수 많은 색상 -> 핵심만 뽑아서 처리하고 나머지는 "기타"로! 또는 빨강인지 아닌지로 구분하던가
✔️ 레이블 인코딩(Label Encoding)
: 범주를 숫자로 직접 맵핑( 옷 사이즈 : M = 0, L=1, XL=2 등)
: 단순 but, 숫자 크기를 서열 정보로 잘못 해석할 수 있음 -> 순서가 있는 정보에서 사용
피처 엔지니어링 개요
모델 성능 향을 위해 기존 데이터를 변형, 조합하여 새로운 특성(피처)을 만드는 작업
: 패턴을 효과적으로 추출해 모델이 쉽게 학습하게 함 ( 책도 밑줄이 있는거랑 없는거랑 학습이 다름 )
금융 : 고객 신용도, 거래내역, 시장 지표 등 복잡하고 다양핞 변수를 포함
마케팅 : 고객 행동 데이터(클릭, 구매기록, 웹사이트 체류 시간 등)와 고객 특성 데이터(나이, 지역, 관심 분야 등)를 통햅해 피처를 만들어야 효과적인 캠페인 타게팅, 고객 세분화, 개인화 추천이 가능해짐.
피처 엔지니어링 예시
1. 날짜 파생 변수
측정 시간 : '2025-02-24 10:35:00' -> 월(2), 요일(월=1), 시(10), 주말여부(0/1) 등으로 분해
2. 수치형 변수 조합
: 온도와 습도가 밀접한 관계 있고 곱해서 의미가 있다면 '온도x습도' 를 추가
: 두 변수의 상호작용이 불량 발생에 영향을 줄 수 있음
3. 로그 변환, 제곱근 변환 등
: 분포가 치우친 변수에 로그변환 -> 정규성에 가깝도록 조정
변수 선택
상관관계 : 독립변수(X)들 간의 상관관계를 봐야 한다. (종속변수(y), 결과값이 아니라)
독립변수들 사이 너무 비슷한 정보를 담고 있어(성관성이 커!!) -> 다중공선성 문제 발생
예. 집 크기와 방 개수 사이는 비례관계이며, 겹치는 정보가 많음
두 변수를 모두 회귀분석에 넣으면 "비슷한 정보가 두 번" 들어온 셈이라,
어떤ㄷ 변수가 집값에 얼마나 영향을 주는지(독립적 기여도) 판단하기 어려움 -> VIF 값 높게 나옴
VIF
: 다른 변수들과 얼마나 겹치는지(상관이 큰지) 수치 지표
: 일정기준 (10 이상)을 넘어면 해당 변수 제거 또는 비슷한 변수를 합치는 방법으로 해결
모델 기반 중요도
: 트리 기반 모델(랜덤 포레스트, XGBoost)을 훈련 후 중요도가 낮은 변수 제거
변수 간 상호작용 추가
: 다항식/교차 항 생성
: 예. 제조에서 온도, 압력, 속도 등이 곱해져야 비로소 의미가 생기는 경우가 많음
마무리
🔥 요약 정리
1. 결측치와 이상치를 올바르게 처리하는 것은 모델의 기초
2. 불균형 데이터 문제를 해결하지 않으면 소수 클래스(불량)을 놓칠 수 있음
3. 범주형 변수는 원-핫 인코딩, 레이블 인코등 등으로 적절히 변환
4. 피처 엔지니어링을 통해 데이터에서 추가 정보(패턴)을 추출하거나, 중요하지 않은 변수를 제거해 모델 효율과 성능을 높임
💡 추가 TIP
: 전처리와 피처 엔지니어링 과정에서 모든 선택 (다양한 처리 등)은 도메인 지식과 데이터 탐색(EDA) 결과 함께 고려해야!!
: 각 단계별로 간단한 모델을 시험적으로 훈련해보고 성능 변화를 체크하는 것이 좋음!!
▼ Q&A
📚 Q1: 결측치 처리 시 평균/중앙값 대체를 간단하게 쓰면 되는데, 언제 예측 모델로 대체해야 하나요?
A1: 결측치가 중요한 변수이거나, 결측치가 전체 데이터의 큰 부분을 차지할 때는 평균/중앙값으로 채우면 편향이 발생할 수 있습니다. 이때는 머신러닝을 활용한 예측 모델을 통해 좀 더 정확히 추정하면 성능을 높일 수 있습니다.
📚 Q2: 이상치를 무조건 제거하는 것이 좋은가요?
A2: 경우에 따라 다릅니다. 이상치가 단순 오류(센서 고장, 극단적인 입력 실수 등)라면 제거가 바람직하지만, 새로운 패턴(진짜 불량 조짐)일 수도 있습니다. 제조업의 경우, 장비 이상 상황을 나타내는 중요한 시그널일 수 있으므로 도메인 지식을 토대로 검토 후 제거 여부를 결정해야 합니다.
📚 Q3: 정규화(MinMax)와 표준화(StandardScaler)는 언제 구분해서 사용하나요?
A3: 딥러닝과 같은 모델에서는 주로 정규화를 쓰는 경우가 많고, 단순한 선형 모델(회귀, 로지스틱 회귀 등 → 이후에 배울 예정)에서 표준화를 쓰는 경우가 많습니다. 그러나 절대 규칙은 아니며, 실제로 작은 테스트 모델을 돌려보고 최적 성능을 주는 방식을 선택하는 것이 좋습니다.
📚 Q4: 불균형 데이터에서 SMOTE 적용 시, 실제로 존재하지 않는 데이터를 만들어버리면 문제되지 않나요?
A4: 인공적으로 생성된 소수 클래스 샘플이 실제 현장에서의 패턴과 다를 수 있다는 우려가 있습니다. 따라서 생성된 데이터를 분석하여 실제 상황과 크게 어긋나지 않는지 검증하는 과정이 필요합니다. 또한 SMOTE의 파라미터(K값 등)를 조정하거나, 다른 오버샘플링 기법과 혼합해 사용하기도 합니다.
📚 Q5: 범주형 변수가 100개, 200개처럼 매우 많다면 어떻게 해야 하나요?
A5: 고차원 원-핫 인코딩으로 인해 모델이 복잡해질 수 있으므로, Feature Hashing 같은 다른 기법을 검토하거나, 발생 빈도가 매우 낮은 범주는 ‘기타(Other)’로 통합하는 등의 방법을 사용해볼 수 있습니다.
📚 Q6: 제조업 현장에서 피처 엔지니어링을 자동화하기 어려운데, 어떻게 접근하면 좋을까요?
A6: 제조업에서는 장비별, 공정 단계별로 센서 구조와 데이터 특성이 다를 수 있기 때문에 완전 자동화가 쉽지 않습니다. 우선 표준화된 전처리 파이프라인(결측치 처리, 이상치 탐지)을 스크립트화하고, 이후 반복적으로 도메인 전문가와 협력해 새 변수(파생 피처)를 발굴하는 과정을 병행하면 점차 자동화 범위를 넓혀갈 수 있습니다.
'머신러닝' 카테고리의 다른 글
| [ML] 머신러닝 4강 - 값을 예측하고 싶을 땐 회귀 (0) | 2025.11.18 |
|---|---|
| [ML] 3강 - 머신러닝을 위한 전처리 실습 (0) | 2025.11.17 |
| [ML] 1강 - 머신러닝이란? (0) | 2025.11.17 |