티스토리 뷰

Model Drift Introduction

대부분의 머신러닝 모델들이 가정하는 강력한 전제는 indepedent identical data입니다. 즉, 머신러닝 모델들은 모델이 학습한 패턴들이 변하지 않는 것을 가정합니다.

하지만 실제로는 시간이 지남에 따라 고객/환경/상품 등등이 변하고 데이터의 패턴 역시 끊임없이 변화합니다.

배포된 머신러닝 모델이 끊임없이 새로운 데이터에 대한 예측을 수행하지만, 새로운 데이터는 기존 모델의 학습 데이터와는 다른 확률 분포를 가져 모델의 성능은 하락하게 됩니다.

이렇게 변화하는 환경에 따라 모델의 성능이 저하되는 현상Model Drift라고 합니다.

 

따라서 머신러닝 모델을 배포한 후에도 Model Drift가 언제 발생했는지 발견하고, 필요에 따라 데이터의 패턴을 최신 것으로 유지할 것인지 판단, 모델을 재학습/재배포함으로써 지속적으로 모델을 유지/보수해나가야 합니다.

 

 

Model Drift 유형

Model Drift에는 Concept Drift와 Data Drift가 있고, 이 둘은 그 원인에 따라 구분되지만, 실제 분석에서는 두 가지 현상이 혼재되어 있는 경우도 많아 구분하기 어렵다.


Concept Drift

Concept Drift : input변수와 output변수(target)의 관계 변화를 의미, 외부적인 원인으로 발생하는 경우가 많음

Data Drift : input변수의 통계적인 속성의 변화(확률분포의 변화)를 의미, 데이터 수집 및 전처리, 모델 학습 과정 등 내부적인 원인으로 발생하는 경우가 많음

  • Covariate Shift : input변수의 통계적 속성 변화
  • Prior Probability Shift : output변수(target)의 분포 변화

(그 외)

Prediction Drift : 예측값의 분포가 변하여 모델의 input변수와 예측값 사이의 관계 변화

 


 1) Concept Drift

  • Concept : input변수와 output변수의 알려져 있지 않은 관계
  • Concept Drift : input변수와 output변수(target)의 관계 변화를 의미
  • Concept Drift가 발생하면 데이터 또는 context는 변화하였지만 모델의 그 변화된 상황을 파악하지 못하여 모델이 기존에 학습한 패턴이 더 이상 유지되지 않음
  • 두 가지 시점(상황)에서 사후확률(Posterior Probabilities)의 변화를 의미
    Pt1(Y|X) ≠ Pt2(Y|X) & Pt1(X) = Pt2(X) 
  • Concept Drift 예시
    • 외부적 이벤트 발생으로 변화 발생 - "상품 구매 예측"모델에서 코로나19 발생으로 "소비자의 선호도" 및 "소비자 행동 패턴" 변화, "세금 관련 부정행위" 예측 모델에서 세법 변경
    • 예측하고자 하는 target의 변화 발생 -  "불량"예측 모델에서 "양품 기준"의 변화, "금융사기" 예측 모델에서 "금융사기의 정의" 변화 
  • Concept Drift 유형 
    • Sudden Drift : 예측하지 못한 외부 이벤트에 의해 갑작스러운 변화가 있을 때 발생
      (ex. 코로나-19)
    • Gradual Drift : 뚜렷한 영향을 발생하는 데 오랜 시간이 걸리며 일반적으로 계절성 변화를 포착하여 모델에서 처리하게 됨 
      (ex. 인플레이션의 변화가 가격 예측에 영향)
    • Incremental Drift :오래된 concept이 시간이 지남에 따라 점진적으로 변화하는 것으로 drift가 어느 특정 시점에 발생하는 것이 아닌 오래 시간 지속됨
    • Reoccurring Concepts : 특정 시간에 주기적으로 발생하는 유형으로, 발생 주기가 정적이지 않아 감지가 힘듦(ex. 블랙프라이데이나 크리스마스와 같은 이벤트가 있을 때 고객의 구매 습관 변화)

Learning under Concept Drift: A Review - An example of Concept drift types

 

2) Data Drift

Data Drift는 모델의 input변수와 output변수의 관계의 변화를 의미하는 것이 아닌 모델이 충분히 학습하지 못한 데이터가 발생할 때 나타나는 성능 저하 현상이다.

 

(1) Covariate Shift

  • 모델의 input 분포가 변하는 현상
     Pt1(X) ≠ Pt2(X)  &  Pt1(Y|X) = Pt2(Y|X)
  • Covariate Shift 원인
    • Sample selection bias : 학습 데이터 구성 시 bias 존재하여 배포된 모델이 운영 환경 또는 테스트 데이터를 충분히 반영하지 못함
    • Non-stationary environments : 시간 또는 공간의 변화로 학습 환경과 테스트 환경의 차이가 발생
      ex) 시계열 모델에서 학습 데이터와 테스트 데이터는 시점 차이로 변화 발생
    • Upstream data change : 데이터 처리 시 변화
      ex) 센서 교체로 측정 단위의 변화 등
    • 그 외) 데이터에서 자연적으로 발생하는 변화(ex. 계절에 따른 평균 기온/습도 변화)  또는 더이상 센 서 값이 측정되지 않는 경우
  • 변수 유형별 Data Drift 예시
    • 범주형 변수(ex. 마케팅 채널 유형)의 값의 분포가, 연속형 변수(ex. 나이)의 경우 평균, 분산과 같은 분포가 시간이 지남에 따라 변화하면서 모델 성능 지속적 하락

Data Drift Example - Categorical / Numerical

(2) Prior Probability Shift

  • output변수(target)의 분포 변하는 현상
    Pt1(X|Y) = Pt2(X|Y) &  Pt1(Y) ≠ Pt2(Y)
  • Prior Probability Shift 예시) 
    • 데이터의 불균형 문제 - 학습 데이터에서 스팸 메일에 대한 사전 확률(Prior Probability)가 30%라고 가정할 때, 현실에선 대부분의 메일이 스팸 메일이므로 레이블의 분포가 변하게 됨(input변수들의 분포는 변하지 않음)
    • "추천 모델"에서 "새로운 상품의 추가" 

 

[참고자료]

  1. Learning under Concept Drift: A Review,  https://arxiv.org/pdf/2004.05785.pdf
  2. The Importance of Data Drift Detection that Data Scientists Do Not Know, https://www.analyticsvidhya.com/blog/2021/10/mlops-and-the-importance-of-data-drift-detection/
  3. Data Drift vs Concept Drift, https://deepchecks.com/data-drift-vs-concept-drift-what-are-the-main-differences/
  4. Machine Learning Monitoring, Part 5: Why You Should Care About Data and Concept Drift, https://www.evidentlyai.com/blog/machine-learning-monitoring-data-and-concept-drift