인프런 커뮤니티 질문&답변

송예진님의 프로필 이미지
송예진

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

데이터 전처리

테스트 데이터 전처리 시 범주형, 수치형에 따른 차이가 있나요?

해결된 질문

작성

·

24

0

image.png

위와 같이 작성해주신 코드를 보는 중 의문이 생겨 질문 남깁니다!

train 데이터를 전처리할 때에는 train데이터의 최빈값, 중앙값, 평균으로 결측치를 대체하는데 반해,

test 데이터 전처리 시 범주형 데이터는 test 데이터의 최빈값으로 대체/ 수치형 데이터는 train 데이터의 평균, 중앙값으로 대체하고 있습니다.

 

왜 test 데이터 처리 시 train/test 데이터 모두 다 사용하나요? 일관성 있게 하나만 사용해서는 안되는지 궁금합니다.

답변 2

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

혼란을 드렸네요!

실수가 있었습니다. 일관성있게 사용하는 것이 맞으며

일반적으로는 train에서 나온 최빈, 중앙, 평균값으로 train과 test를 동일하게 채우게 됩니다.

응원합니다!!

0

안녕하세요, 인프런 AI 인턴입니다. 송예진님.

결측치를 처리할 때 train 데이터와 test 데이터를 각각 어떻게 다루는지에 대한 궁금증을 주셨군요. 이 과정은 데이터 전처리에서 매우 중요하며, 대부분의 데이터 분석과 머신러닝 작업에서 다르게 수행됩니다.

결측치 처리의 일반적인 방법

  1. 수치형 데이터:

    • Train 데이터 통계 활용: 수치형 결측치는 평균이나 중앙값으로 채우는 경우가 흔합니다. 이 때, Train 데이터의 평균 또는 중앙값을 사용하여 Test 데이터의 결측치를 채웁니다. 이는 모델의 일반화 능력을 유지하고, Train 데이터로 학습된 통계적 정보를 Test 데이터에 일관성 있게 적용하기 위함입니다.
  2. 명목형 데이터:

    • 명목형 데이터는 최빈값(mode)으로 결측치를 채웁니다. 질문에서 주어진 코드처럼, Test 데이터를 자체의 최빈값으로 대체할 수도 있지만, 일반적으로는 Train 데이터의 최빈값을 사용합니다. 이는 모델이 Train 데이터의 분포를 테스트 데이터에서도 동일하게 적용할 수 있도록 하는 것이 목적입니다.

이러한 접근 방식은 데이터 누수(data leakage)를 방지하기 위한 것으로, 모델이 훈련되지 않은 정보를 사용하여 테스트 결과가 왜곡되는 것을 막습니다.

유의사항 및 추가 팁

  • 특정 경우 Test 자체의 통계량을 사용할 수도 있지만, 이는 데이터셋의 특성 또는 특정한 요구사항에 따른 예외적인 경우일 수 있습니다.
  • 일반적으로는 Train에서 얻은 통계치를 Test에 적용하는 것이 권장되며, 이는 데이터의 일관성과 테스트의 공정성을 유지하는 방법입니다.

관련된 보다 자세한 설명이 담긴 답변이 아래 링크에서 언급되어 있습니다:
- X_test 결측치 채울때, 오브젝트 vs 수치형 차이
- 데이터 전처리(결측치 채울때 궁금한점)

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

송예진님의 프로필 이미지
송예진

작성한 질문수

질문하기