콘텐츠로 건너뛰기

백필 모범 사례

데이터 오류, 새로운 정보(예: 새로운 기능), 두 시스템 간의 데이터 조정 등 다양한 이유로 데이터를 백필해야 할 수 있습니다. 백필을 수행할 때는 이 문서의 원칙을 따라 데이터 품질과 모델 성능을 유지하세요.

백필이 필요한 경우

백필은 과거 데이터로 데이터 세트를 소급하여 채우는 과정입니다. 일반적인 시나리오는 다음과 같습니다.

시나리오 설명 예시
새로운 기능 모델에 중요한 새로운 측정기준을 발견했고, 이를 계산할 수 있는 과거 원시 로그를 보유하고 있습니다. “클릭률”을 기능으로 추가하고, 모델이 학습하기에 충분한 데이터를 확보하기 위해 3개월간의 기록이 필요합니다.
데이터 복구 특정 날짜에 데이터 파이프라인이 실패하여 Decisioning Studio Pro에 전달되는 데이터에 공백이 생겼습니다. 화요일에 발생한 파이프라인 중단으로 공백이 생겼습니다. 수정 사항을 배포한 후 소스 시스템에서 누락된 레코드를 백필합니다.
로직 변경 기능 계산 공식을 업데이트했거나 이벤트 정의를 변경했습니다. “활성 사용자”를 재정의했으며, 모델이 업데이트된 정의로 학습하도록 과거 데이터를 다시 내보내야 합니다.

요구 사항

Decisioning Studio Pro가 올바르게 작동하려면 모든 수신 데이터가 과거 기간에 대한 백필을 지원해야 합니다. 필요한 구체적인 룩백 기간(월 단위)은 인공지능 모델의 교육 요구 사항에 따라 달라집니다. 사용 사례에 맞는 올바른 값을 확인하려면 AI Decisioning Services 팀에 문의하세요.

과거 데이터 백필을 수행할 때는 다음 기준을 반드시 준수해야 합니다.

  • 프로세스 일관성: 과거 기능 스냅샷은 실시간 스냅샷 생성 방식과 완전히 일치하는 프로세스로 생성해야 합니다. 실시간 파이프라인에서 변환, 집계 또는 필터를 적용하는 경우, 백필 데이터에도 동일한 단계를 적용해야 합니다.
  • 스키마 일관성: 백필 데이터의 스키마는 동일한 필드, 데이터 유형, 열 명명 규칙을 포함하여 일반 일일 파이프라인과 정확히 일치해야 합니다.

흔히 발생하는 실수

데이터 누수(미래 참조 편향)

데이터 누수는 백필에서 가장 치명적인 실수입니다. 백필 과정에서 과거 레코드가 생성된 시점에는 알 수 없었던 정보가 의도치 않게 포함될 때 발생합니다.

중요한 이유

모델이 “미래를 아는” 데이터로 학습하면 학습 중에는 성능이 좋아 보이지만, 실제 운영 환경에서는 결과가 좋지 않습니다. 실시간 의사 결정에서는 미래 데이터에 접근할 수 없기 때문입니다.

예를 들어 고객의 현재까지(즉, 오늘까지)의 총 지출액으로 과거 ‘생애주기 가치’ 피처를 계산한 다음, 이 값을 사용해 몇 달 전에 발생한 행동을 예측한다고 가정해 보겠습니다. 해당 과거 이벤트가 발생한 시점에는 전체 생애주기 가치를 아직 알 수 없었습니다.

이 문제를 방지하려면 각 과거 피처를 해당 과거 타임스탬프 시점에 사용할 수 있었던 정보만으로 재구성하세요.

스키마 및 로직 드리프트

데이터 구조와 비즈니스 정의는 시간이 지나면서 변합니다. 과거 데이터와 실시간 데이터 간의 불일치는 모델 품질을 눈에 띄지 않게 저하시킬 수 있습니다.

  • 스키마 드리프트: 최근에 데이터베이스에 필드(예: zip_code)가 추가된 경우, 변경 이전 시점으로 백필된 레코드에는 해당 필드에 null 값이 들어 있습니다. 파이프라인이 누락된 필드를 원활하게 처리하는지, 그리고 모델이 과거 데이터가 부족한 필드에 지나치게 의존하지 않는지 확인하세요.
  • 로직 드리프트: 특정 시점에 지표의 정의가 바뀐 경우(예: 2024년에 ‘활성 사용자’의 정의가 변경됨), 새 정의를 이전 데이터(예: 2022년 레코드)에 일괄 적용하면 실제로는 발생하지 않은 인위적인 급증이나 급감이 생길 수 있습니다. 가능하면 각 과거 레코드 시점에 유효했던 정의를 적용하거나, 모델이 이를 반영할 수 있도록 변경 시점을 명확하게 문서화하세요.

실패한 백필 작업으로 인한 중복 레코드

실행 도중 실패한 후 다시 시작된 백필 작업은 중복을 방지하도록 설계되지 않은 경우 중복 레코드를 생성할 수 있습니다. 중복 레코드는 측정기준을 인위적으로 부풀리고 모델 학습에 노이즈를 유발합니다.

해결 방법: 모든 백필 스크립트를 멱등성을 갖도록 설계하세요. 즉, 같은 작업을 두 번 실행해도 한 번 실행한 것과 같은 결과가 나와야 합니다. 다음 패턴 중 하나를 사용하세요.

  • 업서트(업데이트 또는 삽입): 고유 트랜잭션 ID 또는 타임스탬프를 키로 사용하므로, 기존 레코드를 다시 삽입하면 중복이 생성되지 않고 해당 레코드가 업데이트됩니다.
  • 삭제 후 삽입: 삽입하기 전에 대상 기간의 기존 레코드를 삭제하므로, 데이터 세트가 항상 깔끔하게 교체됩니다.
New Stuff!