본문 바로가기

DEVELOP_NOTE/MLOps

Model Drift의 개념과 원인 (+ Data Drift, Label Drift, Concept Drift)

머신러닝 모델을 학습하고 배포에 이르렀다는것은 학습과 평가 단계에서 어느정도 서비스에 적용이 가능한 수준의
성능이 확보되었다는 의미일 것이다.
따라서 모델을 배포했을 당시에는 의도했던 수준의 퍼포먼스를 확인할 수 있다.
하지만, 모델이 배포 된 후, 성능하락 속도의 차이는 있겠지만, 시간이 흐름에 따라 모델은 처음에 기대했던 성능에서
차츰 퍼포먼스가 떨어지게된다.

 

이런 현상을 Model drift, Model decay(모델의 쇠퇴), Model staleness(모델의 진부)라고 한다.
아래에서는 이러한 현상을 model drift로 통일하여 설명하도록 하겠다.
오늘은 모델의 퍼포먼스가 떨어지는 이유와 해결방법에 대해서 정리해보자.

 

https://www.projectpro.io/article/model-drift-in-machine-learning/871

 

 

Model Drift ?

model drift란 한마디로, 예측하지 못한 변화로 인하여, 시간이 지나면서 모델의 성능이 저하되는 현상을 의미한다.
모델은 학습된 모델이 배포된 이후 새로운 데이터에 대해 계속 예측을 수행하게 되는데,
여러가지 이유로 인해서 최초 배포 이후 지속적으로 성능이 하락하게 된다.

 

 

왜 모델 성능이 하락하는가 ?

모델의 성능이 하락하는 원인들을 하나씩 확인해보자.

 

 

1) Data Drift

: 시간이 지남에 따라 model에 input으로 들어오는 데이터의 분포가 달라짐으로써 발생하는 성능하락

data drift란, 모델을 훈련할때의 input 데이터의 통계적 분포와 테스트 또는 프로덕트 환경에서의 input data의 통계적 분포에 차이가 발생하여 성능이 하락하는 현상을 의미한다.

이 현상은 data drift외에도 Feature drift 또는 Covariate shift라고도 불린다.

예를들어, 온라인 쇼핑 패턴을 예측하는 모델을 개발했다고 가정하자.

코로나 이전에는 온라인 쇼핑을 통해 주로 가격대는 중저가에 해당하는 물건이 많이 팔렸고, 판매물품은 주로 의류나 선물용도의 제품들이 많이 팔렸다. 하지만, 코로나19가 유행하며, 외부활동이 힘들어 식료품을 온라인을 이용해서 구매하는 고객들이 많아졌고, 외부 소비활동을 못하는 점에 대한 보상심리로 인해 대형TV와 같이 고가의 가전제품을 구매하는 고객들이 크게 늘었다. 이럴 경우, 이전의 데이터를 통해 학습된 모델은 이러한 변수에 대해 제대로 학습되지 못했기 때문에, 제대로 된 예측결과를 내놓을 수 없게 된다.

이때문에 시간이 지날수록 여러가지 새로운 변수를 학습하지못한 모델은 점차 성능이 하락할 수 있다.

 

 

2) Label Drift

: 시간이 지남에 따라, Target data의 분포가 달라짐으로써 발생하는 성능하락

 

label drift란 모델을 훈련할때의 target data의 분포가 달라짐으로써 발생하는 성능하락을 의미한다.

예를들어, 당뇨병의 발병확률을 예측하는 모델이 있다고 가정하자.

보통 당뇨는 40대 이후에 발병하는 확률이 매우 높았지만, 최근 사람들이 섭취하는 음식 중 당분이 많이 첨가된 음식들이 너무나 많다. 

그리고 어릴때부터 이런 음식에 많이 노출된 어린아이들이나 청년층들의 당뇨병 발병 연령은 분명히 예전보다 빨라졌을것이다.

만약 의료 데이터를 학습한 모델이, 과거의 중장년층 이상에서 당뇨가 많이 발생하는 label 분포를 가진 data로 학습되었을 경우 최근의 이런 target 분포 변화를 반영하지 못했을것이므로, 당연히 최근 데이터를 통한 당뇨예측에서는 성능이 하락할것으로 예상할 수 있다.

 

 

3) Concept Drift

: 시간이 지남에 따라 input과 target간의 관계가 변하는 현상으로 발생하는 성능하락

 

예를들어, 최근 많이 발생하는 '금융 사기 패턴'을 학습한 모델이 있다고 가정하자.

금융 사기는 사기범들의 수법이 정교해지고 다양해짐에 따라, input data와 target data의 관계가 계속해서 변화할 수 있다.

만약, 금융사기를 탐지하는데 key feature로 활용되던 'A' feature가 있었는데, 사기범들이 이를 우회하기 위해 다른 방법으로 이상거래를 시도할 경우 'A' Feature와 target과의 관계는 더 이상 의미를 가지지 못하게 된다.

또, 사람들에게 적합한 의류를 추천해주는 모델이 있을때, 예전에는 성별은 의상선택에 매우 큰 영향을 끼치는 요소였지만, 현재는 unisex 가 트렌드로 성별을 초월하여 의상을 선택하곤 한다. 이럴 경우 성별이라는 feature가 의상선택에 끼치는 영향이 약화되기때문에 학습된 모델의 성능도 하락할 수 있다.

 

 

4) 기타

이 외에도, 만약 모델에 투입되는 전처리 과정에서, 다양한 input데이터의 형태를 고려하지 못한, 또는 또다른 예외 형태의 데이터가 input될 경우, 그리고 이런 모델의 input case 빈도가 높아질 경우에도 모델의 성능이 하락할 수 있다.

 

 

 

 

오늘 정리를 통해서 모델의 성능이 하락하는 원인과 사례에 대해서 고민해볼 수 있었다.

다음에는 모델의 성능을 탐지하고 원인을 분석할 수 있는 방법에 대해 정리해보도록 하겠다.

 

 

 

 

 

 

Ref.
 

출처: https://abluesnake.tistory.com/163

출처: https://engineer-mole.tistory.com/278 [매일 꾸준히, 더 깊이:티스토리]