프로덕션 ML 시스템: 데이터를 변환해야 하는 경우

원시 데이터는 특성 추출 (변환)되어야 합니다. 언제 데이터를 변환해야 하나요? 대략적으로 다음 두 기간 중 하나에 기능 설계를 실행할 수 있습니다.

  • 모델을 학습하기 전에
  • 모델을 학습하는 동안

학습 전 데이터 변환

이 접근 방식에서는 다음 두 단계를 따릅니다.

  1. 코드를 작성하거나 특수 도구(예: Flume 또는 F1)를 사용하여 원시 데이터를 변환합니다.
  2. 변환된 데이터를 모델이 처리할 수 있는 위치(예: 디스크)에 저장합니다.

장점

  • 시스템은 원시 데이터를 한 번만 변환합니다.
  • 시스템은 전체 데이터 세트를 분석하여 최적의 변환 전략을 결정할 수 있습니다.

단점

  • 예측 시점에 변환을 다시 만들어야 합니다. 학습-제공 편향에 주의하세요.

학습-게재 편향은 시스템이 동적(온라인) 추론을 실행할 때 더 위험합니다. 동적 추론을 사용하는 시스템에서는 원시 데이터 세트를 변환하는 소프트웨어가 일반적으로 예측을 제공하는 소프트웨어와 다르므로 학습-제공 편향이 발생할 수 있습니다. 반면 정적 (오프라인) 추론을 사용하는 시스템은 동일한 소프트웨어를 사용할 수 있습니다.

학습 중에 데이터 변환

이 접근 방식에서는 변환이 모델 코드의 일부입니다. 모델은 원시 데이터를 처리하고 변환합니다.

장점

  • 변환을 변경해도 동일한 원시 데이터 파일을 계속 사용할 수 있습니다.
  • 학습과 예측 시 동일한 변환이 보장됩니다.

단점

  • 복잡한 변환은 모델 지연 시간을 늘릴 수 있습니다.
  • 변환은 모든 배치에 대해 발생합니다.

일괄적으로 데이터를 변환하는 것은 쉽지 않을 수 있습니다. 예를 들어 Z-점수 정규화를 사용하여 원시 숫자 데이터를 변환하려고 한다고 가정해 보겠습니다. Z-점수 정규화에는 특성의 평균 및 표준 편차가 필요합니다. 그러나 일괄 변환의 경우 전체 데이터 세트가 아닌 데이터 일괄 처리 하나에만 액세스할 수 있습니다. 따라서 배치가 매우 다양한 경우 한 배치의 Z 점수(예: -2.5)가 다른 배치의 -2.5와 동일한 의미를 갖지 않습니다. 해결 방법으로 시스템은 전체 데이터 세트에서 평균과 표준 편차를 미리 계산한 후 모델에서 상수로 사용할 수 있습니다.