S05L08 – 과제 해결 및 원-핫 인코딩 – 파트 02

머신러닝을 위한 데이터 준비: 결측값 처리, 인코딩 및 균형 맞추기

목차

  1. 요약: 원-핫 인코딩 기초
  2. 결측값 처리
  3. 날짜 특성 다루기
  4. 원-핫 인코딩 재검토
  5. 불균형 데이터 처리
  6. 데이터 분할
  7. 특성 스케일링
  8. 결론

요약: 원-핫 인코딩 기초

이전 세션에서는 범주형 변수를 머신러닝 알고리즘에 적합한 형식으로 변환하는 방법인 원-핫 인코딩을 소개했습니다. 필요한 구문을 추가했지만 더 많은 변수와 내용을 탐구하기 위해 일시 중지했습니다. 오늘은 그 기반 위에 구축해 나갈 것입니다.

결측값 처리

결측 데이터 식별

인코딩 전에 데이터셋에 결측값이 포함되지 않았는지 확인하는 것이 중요합니다. 결측값은 모델 훈련 중 오류를 유발할 수 있습니다. pandas를 사용하여 결측값을 다음과 같이 식별할 수 있습니다:

합계가 0이면 결측값이 없음을 나타냅니다. 그러나 특정 열이 0이 아닌 값을 보이면 해당 열에 결측 데이터가 포함되어 있으며 이를 처리해야 합니다.

수치 및 범주형 결측 데이터 관리

평균 또는 중앙값 대체와 같은 전략을 사용하여 수치 열의 결측값을 성공적으로 처리했습니다. 그러나 범주형(문자열) 열은 다른 접근 방식이 필요합니다. 범주형 데이터의 경우 가장 빈번한 값을 대체에 사용하는 경우가 많습니다. 다음은 이를 구현하는 방법입니다:

날짜 특성 다루기

날짜는 유일한 값을 포함하는 경우가 많아 예측 모델링에 덜 유용할 수 있어 다루기 까다로울 수 있습니다. 전체 날짜를 포함하면 특성 수가 급격히 증가하여 예측력을 더하지 않으면서 모델을 느려지게 할 수 있습니다. 다음은 몇 가지 전략입니다:

  1. 특성 추출: 연도를 제외하고 일과 월과 같은 의미 있는 구성요소를 추출합니다.
  2. 라벨 인코딩: 날짜에 숫자 레이블을 할당하지만 의도치 않은 순서 관계를 도입할 수 있으므로 주의해야 합니다.
  3. 원-핫 인코딩: 특성 수가 급증하여 권장되지 않습니다.

이러한 문제를 고려할 때 가장 간단한 해결책은 모델에 필수적이지 않은 경우 날짜 특성을 삭제하는 것입니다:

우리의 경우, Kaggle의 “호주 강수량 예측” 데이터셋 설명을 기반으로 더 나은 성능을 위해 risk_mm 변수를 제외했습니다.

원-핫 인코딩 재검토

결측값을 처리하고 관련 없는 특성을 제거한 후 원-핫 인코딩을 진행합니다:

예상대로, 인코딩 과정으로 인해 열의 수가 증가하여 예제에서는 23에서 115로 확장됩니다.

불균형 데이터 처리

불균형한 데이터셋은 모델이 다수 클래스에 편향되어 소수 클래스를 정확하게 예측하는 능력을 감소시킬 수 있습니다. 다음과 같은 방법으로 이를 해결할 수 있습니다:

  1. 불균형 확인:

    한 클래스가 다른 클래스보다 현저히 많은 경우(예: 75% 대 25%), 균형을 맞추는 것이 필요합니다.

  2. 소수 클래스 업샘플링:
  3. 검증:

데이터 분할

균형 잡힌 데이터로, 이를 훈련 세트와 테스트 세트로 분할합니다:

특성 스케일링

마지막으로, 각 특성이 모델의 성능에 동등하게 기여하도록 특성을 표준화합니다:

주의: 원-핫 인코딩 결과로 생성된 희소 행렬을 다룰 때, StandardScaler에서 with_mean=False로 설정하면 중앙 정렬 관련 오류를 방지할 수 있습니다.

결론

데이터 전처리는 예술이자 과학으로, 데이터셋을 효과적으로 준비하기 위해 신중한 의사결정이 필요합니다. 결측값을 처리하고, 범주형 변수를 인코딩하며, 날짜 특성을 관리하고, 데이터를 균형 맞춤으로써 견고한 머신러닝 모델을 구축할 수 있는 탄탄한 기반을 마련할 수 있습니다. 데이터의 품질은 모델의 성능에 직접적인 영향을 미치므로 이러한 전처리 단계에 필요한 시간과 노력을 투자하세요.

직접 실습해 볼 수 있는 이 Jupyter 노트북을 다시 방문해 보시고, 질문이 있으면 언제든지 문의해 주세요. 행복한 모델링 되세요!

Share your love