이탈을 어떻게 정의할 것인가

구독 서비스라면 해지 시점이 명확하지만, 이커머스에는 해지라는 사건이 없습니다. 그래서 이탈은 정의로 만들어야 합니다. "마지막 구매로부터 N일이 지나고 그 사이 재구매가 없는 상태"가 흔한 정의인데, N을 몇으로 잡느냐에 따라 모델이 배우는 대상 자체가 달라집니다.

정의를 정하는 근거는 자사 구매 간격 분포입니다. 코호트 분석으로 재구매율의 하락이 가파른 구간을 찾고, 그 구간을 경계 후보로 삼습니다. 이때 리텐션을 정확히 N일째 재방문만 세는 방식으로 볼지 N일 이후 아무 날에나 재방문하면 세는 방식으로 볼지도 함께 정해야 합니다. 구매 주기가 불규칙한 이커머스에서는 후자가 실제 잔존을 더 잘 반영한다는 게 업계 통설이며, 두 방식을 섞어 쓰면 안 됩니다.

관측 기간과 예측 기간을 왜 나눠야 하나

학습 데이터를 만들 때 흔한 실수는 이탈 여부를 판정한 기간의 데이터를 그대로 입력 변수로 쓰는 것입니다. 이렇게 하면 미래 정보가 학습에 새어 들어가 검증 성능이 실제보다 훨씬 높게 나오고, 운영에 올리면 성능이 급락합니다.

올바른 구조는 두 창을 나누는 것입니다. 기준일 이전 일정 기간을 관측 기간으로 삼아 그 기간의 행동만 입력 변수로 만들고, 기준일 이후 일정 기간을 예측 기간으로 삼아 그 안에서 이탈이 발생했는지를 정답으로 붙입니다. 최근 구매 시기, 빈도, 금액 같은 RFM 축의 점수나 원시값을 예측 모델의 입력 피처로 쓰는 방식이 흔히 사용되는데, 이 값들도 관측 기간 안에서만 계산해야 합니다.

데이터에서 무엇을 먼저 다뤄야 하나

이탈 고객은 전체 고객 대비 소수인 경우가 많아 클래스 불균형 문제가 생깁니다. 실무와 연구에서는 합성 소수 샘플링 같은 오버샘플링 기법을 함께 적용해 예측 모델의 편향을 줄입니다. 이 처리를 건너뛰면 모델이 "모두 이탈하지 않는다"고 답해도 정확도가 높게 나오는 상황이 됩니다.

평가 지표도 그래서 여러 개를 함께 봅니다. 정확도뿐 아니라 정밀도, 재현율, F1, ROC-AUC로 종합 평가하는 것이 표준이며, 이탈 비중이 적은 불균형 데이터에서 정확도 하나만으로 모델을 판단하면 오해가 생기기 쉽습니다. 모델 선택 자체는 로지스틱 회귀, 랜덤포레스트, 그래디언트 부스팅 계열이 흔히 쓰이지만, 특정 논문의 정확도 수치는 해당 데이터셋 조건에 한정된 결과이므로 자사 데이터로 재검증해야 합니다.

임계값을 무엇으로 정하나

"이탈 확률 몇 퍼센트 이상을 대상으로 할 것인가"는 통계 문제처럼 보이지만 실제로는 비용 문제입니다. 임계값을 낮추면 대상이 넓어져 실제 이탈 예정자를 더 많이 잡지만, 이탈하지 않을 고객에게도 쿠폰이 나갑니다. 반대로 높이면 쿠폰은 아끼지만 놓치는 고객이 늘어납니다.

계산 방법은 두 값을 비교하는 것입니다. 한쪽은 고객 한 명을 놓쳤을 때의 손실로, 그 세그먼트의 잔여 생애가치에 가깝습니다. 다른 쪽은 불필요하게 나간 쿠폰 한 건의 비용입니다. 두 값의 비율에서 임계값의 대략적 위치가 나오고, 그다음은 실제로 몇 개 값을 돌려 보며 조정합니다. 특정 수치를 정답으로 제시하는 자료가 있더라도 자사 마진 구조와 무관한 값이므로 그대로 쓰지 않습니다.

운영에 올릴 때 무엇을 확인하나

모델 점수를 CRM 세그먼트로 내보내면 캠페인이 돌기 시작합니다. 여기서 확인해야 할 것은 모델의 정확도가 아니라 캠페인의 증분입니다. 모델이 이탈 예정자를 정확히 골랐더라도, 보낸 쿠폰이 그 이탈을 실제로 막지 못하면 예산만 나갑니다.

그래서 예측 대상 중 일부를 무작위로 떼어 캠페인을 보내지 않는 홀드아웃을 두고 두 군의 잔존율 차이를 봅니다. 운영 이후에는 성능 저하 감시도 필요합니다. 상품 구성이나 가격 정책이 바뀌면 학습 당시의 패턴이 달라지므로, 예측 점수 분포와 실제 이탈률을 주기적으로 대조해 어긋나기 시작하면 재학습 시점으로 판단합니다.