데이터 전처리(Data Preprocessing)

•
2026년 10월 18일 발행•2026년 10월 18일 수정
요약

원시 데이터를 정제하고 변환하여 분석과 모델 학습에 적합한 형태로 만드는 과정

초급
기초 통계와 파이썬 데이터 처리 경험이 필요하며, 데이터 누수를 피하는 분할·적합 순서를 이해해야 한다.

#개념

데이터 전처리(Data Preprocessing)는 수집한 원시 데이터(Raw Data)를 분석이나 모델 학습에 쓸 수 있는 형태로 정리하고 변환하는 과정이다. 결측치와 이상치를 다루는 정제, 형식을 맞추는 변환, 모델이 이해할 수 있는 수치로 바꾸는 인코딩과 스케일링이 모두 여기에 속한다. 실무에서는 전체 프로젝트 시간의 상당 부분이 전처리에 쓰일 만큼 모델 성능을 좌우하는 단계다.
현실의 데이터는 입력 오류, 시스템 장애, 수집 경로 차이 때문에 비어 있거나 잘못된 값, 중복된 행, 서로 다른 단위가 뒤섞여 있다. 이런 데이터를 그대로 학습에 쓰면 모델은 잡음을 패턴으로 오인하고, 예측 결과도 신뢰하기 어렵다. 전처리는 흔히 "쓰레기가 들어가면 쓰레기가 나온다(Garbage In, Garbage Out)"고 표현되는 문제를 막는 첫 방어선이다. 전처리는 크게 정제, 변환, 분할, 검증의 흐름으로 나눌 수 있으며, 각 단계에서 다루는 주요 작업은 다음과 같다.
데이터 전처리의 주요 단계
  • 데이터 정제(Data Cleaning): 결측치와 이상치를 처리하고 중복 행을 제거하며, 잘못 입력된 값을 바로잡는 단계다.
  • 형 변환과 단위 통일: 문자열로 저장된 숫자나 날짜를 올바른 자료형으로 바꾸고, 원·달러나 cm·inch처럼 섞인 단위를 하나로 맞춘다.
  • 특징 변환: 수치형 변수는 스케일링하고 범주형 변수는 인코딩하여 모델 입력 형식에 맞춘다.
  • 데이터 분할과 검증: 학습·검증·테스트 데이터로 나누고, 스키마와 값 분포가 기대와 일치하는지 확인한다.
결측치를 다루려면 먼저 값이 왜 비었는지를 이해해야 한다. 루빈(Rubin)은 결측 메커니즘을 세 가지로 구분했으며, 어떤 메커니즘인지에 따라 삭제나 대치가 편향을 만드는지 여부가 달라진다. 메커니즘은 데이터만으로 완전히 판별하기 어려우므로, 결측 비율과 다른 변수와의 관계를 탐색하고 수집 과정을 아는 담당자와 확인하는 것이 좋다.
결측 메커니즘의 종류
  • 완전 무작위 결측(Missing Completely At Random, MCAR): 결측 여부가 관측값이나 결측값 어느 것과도 무관한 경우다. 이때는 결측 행을 삭제해도 표본이 줄어들 뿐 편향은 생기지 않는다.
  • 무작위 결측(Missing At Random, MAR): 결측 여부가 다른 관측 변수로 설명되는 경우다. 예를 들어 나이대에 따라 소득 응답률이 다르다면 나이를 이용한 대치로 편향을 줄일 수 있다.
  • 비무작위 결측(Missing Not At Random, MNAR): 결측 여부가 결측된 값 자체에 의존하는 경우다. 고소득자일수록 소득을 밝히지 않는 상황이 대표적이며, 도메인 지식이나 별도 모형 없이는 보정하기 어렵다.
결측치 처리 방법은 행이나 열을 지우는 삭제(Deletion), 평균·중앙값·최빈값이나 KNN, 다중 대치(Multiple Imputation)로 값을 채우는 대치(Imputation), 그리고 결측 여부 자체를 0과 1로 표시하는 지시 변수(Missing Indicator) 추가로 나뉜다. 결측이라는 사실이 정보가 되는 경우가 많으므로, 실무에서는 대치와 지시 변수를 함께 쓰는 방식이 자주 쓰인다.
이상치(Outlier)는 다른 관측값과 크게 동떨어진 값으로, 사분위 범위(IQR)의 1.5배를 벗어나는 값이나 Z 점수가 3을 넘는 값으로 탐지하는 방법이 흔하다. 탐지한 뒤에는 입력 오류라면 수정하거나 제거하고, 실제로 일어난 극단값이라면 상·하한으로 자르는 윈저화(Winsorization)나 로그 변환으로 영향을 줄인다. 사기 거래처럼 이상치 자체가 관심 대상이라면 제거하지 않고 이상 탐지의 신호로 활용한다.
중복 제거는 동일한 행뿐 아니라 같은 주문이 재전송되어 시각만 조금 다른 경우처럼 의미상 중복까지 확인해야 한다. 중복이 남으면 특정 표본에 가중치가 실린 것처럼 학습되고, 같은 데이터가 학습과 테스트에 동시에 들어가 성능이 부풀려진다. 형 변환 단계에서는 시간대(Time Zone), 인코딩 문자셋, 소수점 표기처럼 눈에 잘 띄지 않는 불일치도 함께 정리한다.
수치형 변수의 범위가 서로 크게 다르면 거리 기반 알고리즘이나 경사 하강법을 쓰는 모델은 큰 값을 가진 변수에 끌려간다. 이를 막기 위해 다음과 같은 스케일링 기법을 사용하며, 트리 기반 모델처럼 스케일에 둔감한 모델에서는 생략하기도 한다.
대표적인 스케일링 기법
  • 표준화(Standardization): $z = (x - \mu) / \sigma$로 평균 0, 표준편차 1이 되도록 바꾼다. 선형 모델과 신경망에서 가장 널리 쓰인다.
  • 정규화(Min-Max Normalization): $x' = (x - x_{min}) / (x_{max} - x_{min})$으로 값을 0과 1 사이로 옮긴다. 범위가 정해진 입력이 필요할 때 유용하지만 이상치에 민감하다.
  • 로버스트 스케일링(Robust Scaling): 중앙값을 빼고 사분위 범위로 나눈다. 이상치의 영향을 덜 받아 꼬리가 긴 분포에 적합하다.
범주형 변수는 원-핫 인코딩(One-Hot Encoding), 순서가 있는 범주에 정수를 매기는 순서형 인코딩(Ordinal Encoding), 범주별 목표 변수 평균으로 바꾸는 타깃 인코딩(Target Encoding) 등으로 수치화한다. 범주 수가 매우 많다면 해싱이나 임베딩을 고려하며, 타깃 인코딩은 교차 적합(Cross-Fitting)으로 계산해야 누수를 피할 수 있다.
분류 문제에서 클래스 비율이 크게 치우친 불균형 데이터(Imbalanced Data)는 소수 클래스를 늘리는 오버샘플링, 다수 클래스를 줄이는 언더샘플링, 손실 함수에 클래스 가중치를 주는 방법으로 다룬다. 대표적인 오버샘플링 기법인 SMOTE(Synthetic Minority Over-sampling Technique)는 소수 클래스 이웃 사이를 보간해 가상 표본을 만든다. 리샘플링은 반드시 학습 데이터에만 적용하고, 검증과 테스트 데이터는 원래 분포를 유지해야 한다.
전처리에서 가장 흔한 실수는 전체 데이터로 평균, 표준편차, 대치값, 범주 목록을 계산한 뒤에 데이터를 나누는 것이다. 이렇게 하면 테스트 데이터의 정보가 학습에 스며드는 데이터 누수(Data Leakage)가 생겨 오프라인 성능이 실제보다 높게 나온다. 원칙은 먼저 분할하고, 변환기의 fit은 학습 데이터에만 호출하며, 검증·테스트 데이터에는 transform만 적용하는 것이다. 시계열 데이터는 무작위가 아니라 시간 순서대로 나누어야 한다.
scikit-learn의 Pipeline은 전처리 단계와 모델을 하나의 객체로 묶어, 교차 검증의 각 폴드마다 학습 부분에만 fit이 일어나도록 보장한다. ColumnTransformer는 수치형 열에는 대치와 스케일링을, 범주형 열에는 인코딩을 적용하는 식으로 열마다 다른 변환을 정의한다. 이렇게 파이프라인으로 만든 전처리는 그대로 직렬화하여 서빙에 재사용할 수 있어 학습과 서빙의 불일치를 줄인다.
데이터가 단일 머신 메모리를 넘어서면 Apache Spark 같은 분산 처리 엔진에서 전처리를 수행한다. Spark MLlib은 Imputer, StandardScaler, StringIndexer, OneHotEncoder와 이를 묶는 Pipeline을 제공하여 scikit-learn과 비슷한 방식으로 대용량 데이터를 변환할 수 있다. 이때도 통계량은 학습 구간 데이터로만 계산하고, 결과를 테이블로 저장해 재현성을 확보하는 것이 좋다.
전처리가 끝난 데이터가 기대한 상태인지 확인하는 품질 검증도 전처리의 일부다. Great Expectations 같은 도구로 "이 열은 null이 없어야 한다", "값은 0 이상 100 이하여야 한다" 같은 기대 조건(Expectation)을 선언하면, 파이프라인 실행마다 자동으로 검사하고 위반 시 경고를 받을 수 있다. 원천 스키마 변경이나 값 분포 변화를 조기에 발견하는 데 효과적이다.
데이터 전처리는 인접한 개념과 경계가 겹치므로 관계를 구분해 두면 작업 범위를 정하기 쉽다. 특히 어디까지를 공통 전처리로 두고 어디부터를 모델별 특징 생성으로 볼지 정해 두면, 팀 간 코드 중복과 책임 공백을 줄일 수 있다. 주요 개념과의 관계는 다음과 같다.
관련 개념과의 관계
  • 텍스트 전처리(Text Preprocessing): 정규화, 토큰화, 불용어 제거처럼 텍스트에 특화된 전처리로, 데이터 전처리의 하위 영역에 해당한다.
  • 특징 엔지니어링(Feature Engineering): 도메인 지식으로 새로운 특징을 만들고 선택하는 작업이다. 전처리가 데이터를 쓸 수 있게 만드는 일이라면, 특징 엔지니어링은 더 유용하게 만드는 일이다.
  • 탐색적 데이터 분석(Exploratory Data Analysis): 분포와 결측 패턴을 살펴 어떤 전처리가 필요한지 판단하는 근거를 제공한다.
결국 좋은 전처리는 한 번의 정리 작업이 아니라 재현 가능하고 검증 가능한 코드로 남아야 한다. 같은 변환이 학습, 평가, 서빙에서 동일하게 적용되고, 데이터가 바뀌어도 품질 검사가 이를 잡아낼 때 비로소 모델이 안정적으로 운영될 수 있다.

#관련 용어

결측치 대치
비어 있는 값을 평균, 중앙값, 모형 예측값 등으로 채우는 방법
이상치
다른 관측값과 크게 동떨어져 분석 결과를 왜곡할 수 있는 값
원-핫 인코딩
범주형 변수를 범주마다 0 또는 1을 갖는 이진 벡터로 바꾸는 인코딩 방식
표준화
변수를 평균 0, 표준편차 1이 되도록 변환하는 스케일링 기법
데이터 누수
학습 시점에 알 수 없는 정보가 학습 데이터에 섞여 성능이 과대평가되는 현상
특징 엔지니어링
도메인 지식으로 모델에 유용한 특징을 만들고 선택하는 작업

#직무 연관도

DA
Data Analyst
높음
분석 전에 데이터를 정제하고 단위와 형식을 맞춰 신뢰할 수 있는 지표를 산출
DS
Data Scientist
밀접
모델 성능을 좌우하는 결측·이상치·인코딩 전략을 설계하고 누수 없이 검증
DE
Data Engineer
밀접
전처리를 재현 가능한 파이프라인으로 구현하고 대용량 처리와 품질 검증을 자동화

#사용 사례

전자상거래금융의료제조통신
개요
데이터 전처리는 머신러닝과 분석을 수행하는 모든 산업에서 필수적으로 사용된다. 금융에서는 거래 데이터의 중복과 이상치를 정리해 신용 평가와 사기 탐지 모델의 입력을 만들고, 의료에서는 검사 수치의 결측과 단위 차이를 보정한다. 제조와 통신에서는 센서·로그 데이터의 누락 구간과 잡음을 처리해 예측 정비나 이탈 예측에 활용한다.
사례
전자상거래 구매 예측 모델에서 결측된 회원 나이는 중앙값으로 대치하고 결측 지시 변수를 추가하며, 가격은 로그 변환 후 표준화하고 카테고리는 원-핫 인코딩하는 과정을 ColumnTransformer로 묶어 학습과 서빙에 동일하게 적용한다.

#참고 자료

#추천 포스트

© 2024 diki All rights reserved.