본문 바로가기
IT

Data Preprocessing이란? 머신러닝 모델의 성능을 깨우는 필수 단계

by Sense. 2025. 6. 18.

목차

    "쓰레기를 넣으면 쓰레기가 나온다 (Garbage In, Garbage Out)."

    데이터 과학 분야의 유명한 격언입니다. 아무리 좋은 머신러닝 모델이 있어도, 지저분한 데이터를 그대로 사용하면 좋은 결과를 얻을 수 없습니다. 현실의 데이터는 마치 다듬어지지 않은 '원석'과 같습니다. 이 원석을 갈고닦아 빛나는 '보석'으로 만드는 과정이 바로 데이터 전처리(Data Preprocessing)입니다.

    이번 글에서는 머신러닝 모델의 성능을 깨우는 가장 중요한 전처리 기법 세 가지를 알기 쉽게 알아보겠습니다.

    1. 데이터의 빈칸 채우기: 결측치(Missing Value) 처리

    데이터를 수집하다 보면 값이 누락된 '빈칸', 즉 결측치가 흔히 발생합니다. 대부분의 머신러닝 모델은 이 빈칸을 어떻게 처리해야 할지 모르기 때문에, 우리가 직접 처리 방법을 정해주어야 합니다.

    결측치 처리 전략

    • 삭제하기: 가장 간단한 방법입니다. 결측치가 포함된 데이터 줄(row) 전체를 삭제하거나, 빈칸이 너무 많은 항목(column)을 통째로 없애는 방식입니다. 하지만 소중한 정보를 잃을 수 있으므로 신중하게 결정해야 합니다.
    • 채워넣기 (Imputation): 결측치를 그럴듯한 값으로 대체하는 방법입니다.
      • 대표값으로 채우기: 가장 많이 쓰는 방법입니다. 숫자 데이터는 해당 항목의 평균이나 중앙값으로, 문자 데이터는 가장 자주 등장하는 최빈값으로 채웁니다. 데이터의 전체적인 특징을 크게 해치지 않으면서 빈칸을 메꿀 수 있습니다.
      • 예측값으로 채우기: 다른 데이터를 기반으로 결측치를 예측하는 모델(예: KNN)을 만들어 채우는 고급 기법입니다. 더 정교하지만, 과정이 다소 복잡할 수 있습니다.

    전문가의 Tip: Scikit-learn의 SimpleImputer를 사용하면 이런 채우기 규칙을 객체로 저장할 수 있습니다. 덕분에 나중에 새로운 데이터가 들어와도 똑같은 규칙을 일관성 있게 적용할 수 있어 매우 편리합니다.

    2. '문자'를 '숫자'로: 범주형 데이터(Categorical Data) 변환

    '성별(남/여)', '도시(서울/부산)' 같은 문자 데이터는 모델이 직접 이해하지 못합니다. 모델이 학습할 수 있도록 이런 문자들을 숫자 형태로 바꿔주어야 합니다.

    범주형 데이터 처리 전략

    • 레이블 인코딩 (Label Encoding): 각 문자에 고유한 번호를 붙이는 방법입니다. 예를 들어 '서울=0', '부산=1', '대구=2'처럼 바꾸는 것이죠. 간단하지만, 모델이 숫자의 크기(2 > 1)를 보고 '대구가 부산보다 더 중요하다'고 잘못 학습할 위험이 있습니다.
    • 원-핫 인코딩 (One-Hot Encoding): 위 단점을 보완하기 위해 가장 널리 쓰이는 방법입니다. 각 문자 항목을 새로운 카테고리(column)로 만들고, 해당하는 곳에만 1, 나머지는 0으로 표시합니다.
      예를 들어 '도시_서울', '도시_부산', '도시_대구'라는 새로운 항목을 만들고, 데이터가 '서울'이라면 '도시_서울'에만 1을 표시하는 식입니다. 순서 관계가 없어 모델의 왜곡을 막아주지만, 종류가 너무 많으면 데이터의 항목 수가 급격히 늘어날 수 있습니다.

    전문가의 Tip: Pandas의 get_dummies는 빠르고 간편하지만, 배포나 재사용을 생각한다면 Scikit-learn의 LabelEncoderOneHotEncoder를 쓰는 것이 좋습니다. 전처리 규칙을 저장하고 재활용하기 용이하기 때문입니다.

    3. 변수들의 체급 맞추기: 피처 스케일링(Feature Scaling)

    만약 데이터에 '나이'(1~100 사이)와 '연봉'(2,000만~2억 사이)이 함께 있다면 어떨까요? 단위가 훨씬 큰 '연봉'이 모델의 판단을 거의 독점하게 될 겁니다. 피처 스케일링은 이렇게 제각각인 변수들의 값의 범위, 즉 '체급'을 비슷하게 맞춰주는 작업입니다. 특히 선형 회귀, 신경망, SVM 같은 모델의 성능에 큰 영향을 미칩니다.

    피처 스케일링 전략

    • 정규화 (Normalization / Min-Max Scaling): 모든 값을 0과 1 사이로 압축합니다. 최솟값은 0, 최댓값은 1이 됩니다. 하지만 데이터에 아주 크거나 작은 값(이상치)이 있으면, 대부분의 값이 아주 좁은 범위에 몰리게 되는 단점이 있습니다.
    • 표준화 (Standardization): 데이터의 평균을 0, 표준편차를 1로 맞춥니다. 이상치에 상대적으로 덜 민감하기 때문에, 어떤 방법을 써야 할지 모를 때 우선적으로 고려할 수 있는 가장 일반적인 스케일링 기법입니다.

    전문가의 Tip: Scikit-learn의 MinMaxScalerStandardScaler를 사용하면, 어떤 기준으로 데이터를 변환했는지 그 규칙을 저장할 수 있습니다. 나중에 테스트 데이터나 실제 서비스 데이터에도 동일한 기준으로 스케일링을 적용할 수 있어 일관성을 유지하는 데 필수적입니다.

    마치며: 잘 닦은 데이터가 최고의 모델을 만듭니다

    데이터 전처리는 모델링처럼 화려해 보이지는 않지만, 머신러닝 프로젝트의 성패를 좌우하는 가장 중요한 기초 공사입니다. 잘 정제된 데이터는 평범한 모델의 성능도 끌어올리고, 지저분한 데이터는 최고의 모델도 무력하게 만듭니다.

    오늘 살펴본 결측치 처리, 범주형 데이터 변환, 피처 스케일링 이 세 가지만 잘 이해하고 다뤄도, 여러분의 머신러닝 모델은 훨씬 똑똑해질 것입니다. 데이터의 잠재력을 깨우는 첫걸음, 데이터 전처리부터 탄탄하게 시작해 보세요.

    • 트위터 공유하기
    • 페이스북 공유하기
    • 카카오톡 공유하기