S05L04 – 테스트 및 훈련 데이터 분할과 피처 스케일링

html

머신러닝에서 데이터 분할 및 특성 스케일링 이해하기

목차

  1. 데이터 분할: 학습 세트와 테스트 세트
    1. 테스트 세트란 무엇인가?
    2. 학습 세트란 무엇인가?
    3. 일반적인 분할 비율
    4. scikit-learn을 사용한 데이터 분할 구현
  2. 특성 스케일링: 표준화와 정규화
    1. 왜 특성 스케일링이 필요한가?
    2. 표준화 vs. 정규화
    3. 권장되는 접근 방식
    4. scikit-learn을 사용한 특성 스케일링 구현
  3. 단계 요약
  4. 결론

데이터 분할: 학습 세트와 테스트 세트

테스트 세트란 무엇인가?

테스트 세트는 머신러닝 모델의 성능을 평가하기 위해 예약된 데이터셋의 하위 집합입니다. 이 보류된 데이터를 모델에 제공함으로써 모델이 새롭고 보지 않은 데이터를 얼마나 정확하게 예측하는지 평가할 수 있으며, 이를 통해 모델의 실제 성능을 이해할 수 있습니다.

학습 세트란 무엇인가?

반대로, 학습 세트는 모델을 학습시키는 데 사용되는 데이터의 부분입니다. 모델은 이 데이터 내의 패턴, 관계 및 구조를 학습하여 새로운 데이터에 대한 예측이나 분류를 수행합니다.

일반적인 분할 비율

일반적인 관행은 데이터를 80%는 학습용으로, 20%는 테스트용으로 분할하는 것입니다. 이 비율은 모델이 학습할 충분한 데이터를 확보하면서도 성능을 견고하게 평가할 수 있는 충분한 데이터를 유지하는 균형을 제공합니다.

scikit-learn을 사용한 데이터 분할 구현

다음은 scikit-learn의 train_test_split 함수를 사용하여 데이터를 분할하는 단계별 가이드입니다:

  1. 필요한 라이브러리 불러오기
  2. 데이터 준비하기

    특성이 X에 저장되고 타겟 변수가 Y에 저장되어 있다고 가정합니다:

  3. 데이터 분할하기
    • test_size=0.2: 데이터의 20%를 테스트용으로 할당합니다.
    • random_state=42: 셔플링 과정을 제어하여 재현성을 보장합니다. 고정된 random_state를 사용하면 코드를 실행할 때마다 동일한 분할을 얻을 수 있어 일관된 모델 평가에 중요합니다.
  4. 분할 확인하기

    각 세트의 레코드 수를 확인할 수 있습니다:

특성 스케일링: 표준화와 정규화

왜 특성 스케일링이 필요한가?

머신러닝 알고리즘은 수치형 입력 특성이 비슷한 규모일 때 더 잘 작동합니다. 범위가 큰 특성은 모델에 불균형적으로 영향을 미쳐 최적 이하의 성능을 초래할 수 있습니다. 특성 스케일링은 특성의 범위를 표준화하여 모델의 효율성과 정확성을 향상시킵니다.

표준화 vs. 정규화

  1. 표준화:
    • 공식: \( z = \frac{(X - \mu)}{\sigma} \)
    • 데이터를 평균 0표준 편차 1을 갖도록 변환합니다.
    • 가우시안(정규) 분포를 가진 특성에 적합합니다.
    • 데이터가 완벽하게 정규 분포를 따르지 않아도 널리 사용되며 일반적으로 효과적입니다.
  2. 정규화:
    • 공식: \( X_{norm} = \frac{(X - X_{min})}{(X_{max} - X_{min})} \)
    • 데이터를 고정된 범위, 일반적으로 0에서 1까지 스케일링합니다.
    • 데이터가 알려진 분포를 따르거나 경계가 필요할 때 가장 잘 사용됩니다.

권장되는 접근 방식

일반적으로 특성 스케일링을 수행하기 전에 데이터를 분할하는 것을 권장합니다. 이 방법은 스케일링 매개변수(예: 평균 및 표준 편차)가 오직 학습 데이터에서만 도출되도록 보장하여 데이터 유출을 방지하고 테스트 데이터가 진정한 보류 세트로 남아 있도록 합니다.

scikit-learn을 사용한 특성 스케일링 구현

  1. StandardScaler 불러오기
  2. 스케일러 초기화
  3. 학습 데이터에 스케일러 적용 및 변환
  4. 테스트 데이터 변환
    • 중요: 스케일러는 학습 데이터에만 적합시킵니다. 동일한 변환이 테스트 데이터에 적용됩니다. 이는 테스트 데이터가 일관되게 스케일링되며, 테스트 세트에서의 정보가 학습 과정에 유입되지 않도록 보장합니다.
  5. 범주형 변수 처리

    데이터셋에 수치 값으로 인코딩된 범주형 변수가 포함된 경우(예: 0, 1, 2), 이러한 열에 스케일링을 적용하지 않도록 하십시오. 이는 의미를 왜곡할 수 있습니다. 연속적인 수치형 특성만 스케일링되도록 하십시오.

단계 요약

  1. 데이터 불러오기: 데이터셋을 적절한 형식(예: pandas DataFrame)으로 로드합니다.
  2. 데이터 분할: 데이터셋을 특성(X)과 타겟(Y)으로 나눈 후, 80/20 학습-테스트 분할을 수행합니다.
  3. 누락된 데이터 처리: 보간 또는 제거를 통해 데이터의 누락된 부분을 해결합니다.
  4. 특성 선택: 모델 성능을 향상시키기 위해 관련 없거나 중복된 특성을 제거합니다.
  5. 데이터 인코딩: 필요에 따라 범주형 변수를 수치 형식으로 변환합니다.
  6. 특성 스케일링: 모든 특성이 모델에 동등하게 기여하도록 표준화 또는 정규화를 적용합니다.

결론

적절한 데이터 준비는 성공적인 머신러닝 프로젝트의 초석입니다. 데이터를 꼼꼼하게 분할하고 적절한 특성 스케일링을 적용함으로써 정확하고 신뢰할 수 있는 모델을 구축할 수 있는 기반을 마련하게 됩니다. 머신러닝을 계속 탐구함에 따라 이러한 기본적인 실습은 더 복잡한 문제를 해결하는 데 큰 도움이 될 것입니다.


다음 기사에서도 전처리 기술 및 강력한 머신러닝 모델 구축에 필수적인 다른 중요한 측면에 대해 더 깊이 다룰 예정이니, 많은 기대 부탁드립니다.

Share your love