실전 이탈 예측 모델링을 위한 세 가지 고려 사항 #1
실전에서 예측 모델을 서비스에 적용해 본 분이라면 예측 모델이 처음에는 잘 맞다가 시간이 지날수록 점점 정확도가 떨어지면서 결국 유명무실해진 경험을 해본 적이 있을 것입니다. 이것을 'concept drift 문제' 라고 부릅니다. 'Concept drift' 는 기계 학습 분야에서 사용하는 용어로써 '시간이 지남에 따라 모델링 대상의 통계적 특성이 바뀌는 현상'을 의미합니다 (https://en.wikipedia.org/wiki/Concept_drift). 예측 모델은 모델링 대상의 통계적 특성 (패턴) 을 학습하는 것입니다. 만약 시간이 지나면서 예측 대상의 통계적 특성이 바뀐다면 예측 모델은 바뀌기 전의 특성만을 학습한 상태이기 때문에 쓸모가 없어지는 것이죠.
예측 모델링 대상에 따라 concept drift 가 그다지 문제가 되지 않는 경우도 있습니다. 가령, 이미지 인식 분야가 그렇습니다. 사진이나 영상에서 사람의 얼굴을 인식한다고 했을 때 사람의 얼굴이 가진 시각적인 특징은 시간이 지남에 따라 그리 바뀌지 않습니다(한 수 만년 쯤 지나면 바뀔 수 있겠죠). 아마 음성 인식이나 자연어 처리 분야 역시 그럴 것입니다. 반면, 제가 일하고 있는 게임 분야는 그렇지 않습니다. 게임 속 가상 세계 자체가 현실 세계보다 시간이 빨리 흐르기도 할 뿐더러 게임 캐릭터의 플레이 패턴은 게임을 진행하고 레벨이 오름에 따라 달라집니다. 게다가 게임 회사에서는 지속적인 게임 서비스 유지를 위해 게임 컨텐츠나 시스템을 정기적으로 업데이트하는데 그럴 때마다 플레이 특성이 바뀌기도 합니다.
따라서 실전에서 예측 모델을 사용할 때는 한번 만들어서 서비스에 적용하면 끝나는 것이 아니라 시간에 따라 예측 대상의 특성이 변하는 것을 모니터링하여 그 변화를 반영하거나 주기적으로 모델을 재학습하는 작업이 필요합니다. 'Learning under Concept Drift: an Overview (https://arxiv.org/abs/1010.4784)' 는 concept drift 를 고려한 학습 방법에 대해 잘 정리되어 있는 논문입니다 (혹은 위 논문보다 좀 더 짧은 https://machinelearningmastery.com/gentle-introduction-concept-drift-machine-learning/ 를 읽어보시기 바랍니다).
그런데 사실 concept drift 문제는 단순히 모델의 유지 보수 문제가 아니라 학습 데이터의 라벨링부터 모델의 평가 방법에 이르기까지 전반에 걸쳐 고려해야할 문제입니다.
예를 들어, 고객의 통계적 특성이 매우 빠르게 바뀌는 (그래서 한달 전과 오늘의 고객 패턴이 매우 다른) 서비스가 있다고 가정해 보죠. 만약 이 서비스를 위한 이탈 예측 모델을 만들 때 '고객이 한달 이상 서비스를 이용하지 않는 경우'를 이탈로 정의한다면, 이 정의에 따라 라벨링된 학습 데이터로 학습한 예측 모델은 실전에서 전혀 쓸모가 없을 것입니다. 왜냐하면 이 모델을 학습하기 위해 만드는 학습 데이터는 모델을 실전에 적용하는 시점에서 최소 한달 전 고객의 통계적 특성만 학습할 수 있기 때문입니다. 같은 이유로 인해 예측 모델을 평가할 때는 학습 데이터보다 최소한 한 달이 지난 데이터를 테스트 데이터로 사용해야 합니다. 그렇지 않고 학습 데이터와 같은 기간의 테스트 데이터로만 모델을 평가한다면 (평가 성능은 좋게 나오더라도) 실전에 적용했을 때 좋은 성능을 기대하기 어려울 것입니다. (아래 그림 참고)
정리하자면, 실전에서 예측 모델을 만들 때는 예측 대상의 통계적 특성이 시간에 따라 변하는 정도를 먼저 확인하고 이에 따라 학습 데이터 라벨링이나 평가 방법을 설계해야 합니다.
제가 이탈 예측 모델을 서비스에 적용하기 위해 게임 개발 부서와 논의하면서 느낀 점은, 게임 개발 부서에서는 '누가 게임에서 이탈하느냐'가 아니라 '왜 고객이 이탈하느냐'를 알고 싶어 한다는 점이었습니다. 보통 기계 학습 분야에서 말하는 '예측 모델'은 전자에 대한 모델입니다. 반면 후자는 경제학이나 사회학에서 주로 다루는데 '인과 추론 모델'이라고 합니다.
'예측 (prediction)' 과 '인과 추론 (causal inference)' 는 얼핏 비슷해 보이지만 매우 다른 기법입니다. 그리고 대개의 경우 예측보다 인과 추론이 훨씬 어렵습니다. 예를 들어, 옛날 사람들은 비가 왜 내리는지에 대한 인과 법칙을 알지 못했지만 밤에 달무리가 지는지, 제비가 땅에 낮게 나는지, 나이드신 어르신들이 허리나 무릎이 쑤시다고 하는지 등의 비가 오기 전에 많이 관찰되는 징후들을 보고 비를 예측할 수 있었습니다. 하지만 구름이 응결되고 비가 내리는 기상학적인 인과 법칙을 알게 된 것은 과학이 발달하고 나서의 일입니다.
이탈 예측 모델링 역시 마찬가지입니다. 우리는 실제 고객이 왜 이탈하는지 그 이유를 알지 못하더라도 이탈하기 전에 관측할 수 있는 현상들만 잘 포착하면 이탈 고객을 사전에 예측할 수 있습니다. 예를 들어, 게임에서 이탈하기로 마음 먹은 사람들은 대개 플레이 시간이 점점 줄어들거나 접속 주기가 불규칙해지고 본인이 보유한 아이템을 정리하는 등의 사전 징후를 보이는 경우가 많습니다. 일반적인 기계 학습 모델은 이런 사전 징후를 학습함으로써 이탈할 유저를 예측하게 됩니다. 하지만 이건 이탈의 원인이 아니라 이탈하기 전에 나타나는 현상일 뿐이죠. 예측 모델은 예측 변수와 응답 변수 사이에 상관성을 학습하는데 상관성이 꼭 인과성을 보장하는 것은 아니기 때문에 예측 모델이 이탈을 정확히 예측한다고 해서 인과 관계를 알 수는 없습니다. 이를 도식화하면 다음과 같습니다.
한편, 최근 많은 관심을 받고 있는 '설명 가능한 모델 (Explainable AI, XAI)'과 '인과 추론 모델' 은 다릅니다. 마찬가지로 모델의 분류 기준을 해석하는 것도 인과 추론과 다릅니다. 즉, 이탈 예측 모델의 판정 기준을 해석하는 것이 이탈 원인을 파악하는 것은 아닙니다. 작년에 '게임 유저 이탈 예측'을 주제로 '빅콘테스트 (http://www.bigcontest.or.kr/)' 라는 데이터 분석 경진 대회를 진행했는데 많은 참가팀이 이 둘을 혼동하는 경향이 있었습니다. 이를테면, Partial Dependence Plot (PDP) 등을 이용해서 본인들이 만든 예측 모델에서 어떤 변수들이 이탈율을 높이는지 파악한 후 이를 근거로 이탈 원인을 추정하였는데, PDP 등이 알려주는 것은 종속 변수인 '이탈' 과 독립 변수인 이탈 전 징후 사이의 상관관계이지 인과 관계는 아닙니다. 이를 근거로 이탈 원인을 추정하면 논리적인 비약이 발생합니다.
제가 알기론 보통 사회/경제학에서는 인과 추론을 위해 구체적인 모델의 형태는 분석가가 가설을 토대로 직접 만들고, 관찰된 데이터를 이용한 통계 검정이나 회귀 분석을 통해 자신의 가설을 검증합니다. 그런데 엄밀하게 환경이 통제되는 과학 실험에 비해 관측 데이터는 통제할 수 없는 많은 잡음과 불확실성이 존재합니다. 통계학이나 경제학에서는 오래전부터 이런 통제 불가능한 요소로 인한 오차를 최대한 극복하기 위해 다양한 기법들을 개발했습니다. 이를 테면 독립 변수 간의 상관성 문제를 해결하기 위한 '도구 변수 (Instrumental Variable, IV) 법'이 대표적인 예입니다. 하지만 많은 똑똑한 학자들의 노력에도 불구하고 적절한 모델을 구성하는 것은 매우 어렵습니다. 그래서 최근 경제학에서는 이런 어려움을 해결하기 위해 기계 학습 분야에서 사용하는 다양한 자동화 기법을 도입하려는 움직임이 있습니다. Susan Athey의 'The Impact of Machine Learning on Economics (https://www.nber.org/chapters/c14009.pdf)'는 계량 경제학의 인과 추론 모델링 기법과 기계 학습 기법이 서로 융합할 경우 어떤 시너지와 새로운 가능성이 펼쳐질지에 대해 '매우 잘' 정리한 논문입니다. 최근에 기계 학습 분야에서도 인과 추론에 대한 관심이 점차 깊어지고 있는데 이에 관심 있으신 분은 이 논문을 한번 읽어 보시기 바랍니다.
결국 데이터 분석을 할 때는 내가 지금 필요한 것이 '예측 모델'인지 아니면 '인과 추론 모델'인지에 대해 먼저 명확히 검토해야 합니다. 이 둘은 접근 방법도 다를 뿐더러 적용 방법이나 목표 역시 다릅니다. 이 글에서 계속 예로 드는 '이탈 분석'의 경우 예측 모델의 실행 부서는 대개 마케팅 부서가 될 것이고 이탈 예정 고객에 대한 프로모션 등을 통해 잔존 고객으로 전환하기 위한 목적으로 예측 모델을 활용하게 될 것입니다. 반면, 인과 추론 모델의 실행 부서는 게임 기획이나 개발 부서가 될 것이고 추론 결과는 게임 컨텐츠나 시스템을 개선하기 위한 목적으로 활용될 것입니다.
대개의 경우 예측보다 인과 추론이 더 어렵습니다. 따라서 가능하다면 예측 모델을 이용하는 방안을 먼저 검토하는 것이 좋습니다. 또한 A/B 테스트 등의 실험을 통해 예측 모델이 갖고 있는 한계를 실행 단계에서 극복하는 방법도 있습니다. 하지만 이런 방법이 항상 가능한 것은 아니기 때문에 목적이 인과 추론이라고 판단된다면 이에 맞는 방법을 사용해야겠습니다.
지금까지 내용을 정리하자면 다음과 같습니다.
1. 예측 모델링의 궁극적이 목표는 기대 이익을 최대화하는 것이다. 이를 위해선 예측 모델 적용에 의한 기대 이익과 비용을 고려하여 다음과 같은 조치가 필요하다.
1-1. 무조건 정확도를 높이기 보다는 높은 기대 이익이 예상되는 대상을 정확히 예측하기 위한 학습 데이터를 구축한다.
1-2. 예측 모델을 평가할 때 예측 정확도가 아니라 기대 이익을 계산할 수 있어야 한다.
1-3. 예측 모델 학습 시 가능하다면 오차를 이용하기 보다 기대 이익을 이용한 비용 함수를 정의한다.
2. concept drift 를 고려한 예측 모델링이 필요하다.
2-1. 모델링 하려는 데이터가 얼마나 concept drift 에 민감한지 먼저 파악해야 한다.
2-2. 예측 모델링 대상 및 라벨을 정할 때 concept drift 민감도를 고려해야 한다.
2-3. 학습 데이터 및 테스트 데이터 선정 시 시간에 따른 통계적 특성 변화를 고려해야 한다.
3. 모델링의 목표가 '예측'인지 '인과 추론'인지에 따라 다른 접근 방법이 필요하다.
3-1.예측은 상관 관계를 학습하는 것이다. 그런데 상관성이 있다고해서 인과관계가 성립하는 것은 아니다.
3-2. '모델의 해석'과 '인과 추론'은 다르다. 이 둘을 혼동하면 안된다.
3-3. 거의 모든 경우에서 '예측'보다 '인과 추론'이 더 어렵다. 따라서 가능하면 '예측'을 통해 할 수 있는 것들이 없는지 먼저 검토한다.
참고로 위 내용은 제가 성공한 경험을 토대로 정리한 것이 아니라 실패한 경험을 통해 깨달은 점을 정리한 것입니다. 때문에 위 내용이 정답이라고 확신할 수도 없을 뿐더러 위 고려 사항을 모두 만족해야 하는 것도 아닐 것입니다.
구글이 2015년에 발표한 'Hidden Technical Debt in Machin Learning Systems (https://papers.nips.cc/paper/5656-hidden-technical-debt-in-machine-learning-systems.pdf)' 을 보면 머신 러닝 시스템을 구축할 때 실제 머신 러닝 모듈 자체의 비중은 매우 낮다고 합니다. 이와 비슷하게 실전에서 예측 모델을 만들 때는 보통 생각하는 기계 학습 모델링 기법이나 절차 외에도 고려해야 할 많은 요소들이 있습니다. 이 글에서는 '이탈'이라는 분야로 한정했으나 다른 예측 모델을 만들 때도 한번쯤 검토해봐야 할 주제들이라 생각합니다.