1. 이탈률 점수 설계 개요
본 시스템에서는 통신 서비스 고객의 **타 통신사 이동 및 요금제 해지 가능성(churn risk)**을 예측하기 위해 Rule-based scoring 방식의 churn risk score를 설계하였습니다.
이탈 위험도는 크게 두 가지 축으로 계산하도록 설계하였습니다.
1️⃣ 배치 기반 Feature (상태 기반)
- 고객의 구조적 상태를 나타내는 변수입니다.
- 주 1회 batch 집계를 통해 계산하도록 설계하였습니다.
2️⃣ 실시간 Feature (행동 기반)
- 고객의 실제 행동 의도를 반영하는 변수입니다.
- 로그 이벤트 또는 상담 이벤트 발생 시 즉시 반영하도록 설계하였습니다.
이 두 점수를 결합하여 **최종 이탈 위험도 점수(final churn score)**를 계산하도록 하였습니다.
2. 이탈 위험도 등급
최종 점수는 0~100 범위로 정규화하였으며 다음과 같이 구분하였습니다.
| Risk Level | Score |
|---|---|
| HIGH | 80 ~ 100 |
| MEDIUM | 50 ~ 79 |
| LOW | 0 ~ 49 |
3. 가중치 설계 원칙
가중치는 다음 네 가지 원칙을 기반으로 설계하였습니다.
1️⃣ 상태 기반 feature < 행동 기반 feature
고객의 상태 정보보다 실제 행동 로그가 churn intent에 더 가까운 신호라고 판단하였습니다. 따라서 실시간 행동 feature의 가중치를 더 크게 설정하였습니다.
2️⃣ 행동 강도에 따른 단계적 signal 구조
고객 행동은 다음과 같은 순서로 churn 의도의 강도가 증가한다고 판단하였습니다.
요금제 비교 → 위약금 조회 → 해지 프로세스 진입
이에 따라 각 단계별로 점수를 점진적으로 증가시키는 구조를 설계하였습니다.
3️⃣ 상담 signal은 감정 + 키워드 결합
상담 데이터는 다음 두 요소를 결합할 때 churn signal로서 의미가 높다고 판단하였습니다.
- 상담 감정 (Sentiment)
- 해지 관련 비즈니스 키워드
두 신호가 동시에 발생할 경우 강한 churn signal로 판단하도록 설계하였습니다.
4️⃣ Batch score + Real-time score 구조
최종 점수는 다음 구조로 계산하도록 설계하였습니다.
final_score = min(100, base_score + realtime_score)
| Score | 의미 |
|---|---|
| base_score | 상태 기반 점수 |
| realtime_score | 행동 기반 가산 점수 |
100점을 초과하는 경우 **100점으로 제한(cap)**하도록 설계하였습니다.
4. Batch 기반 Feature 설계
Batch Feature는 고객 상태 기반 churn risk를 나타내는 변수로 정의하였습니다.
Batch score의 최대값은 75점으로 제한하였습니다.
이는 실시간 행동이 발생했을 때 HIGH 등급으로 상승할 수 있도록 점수 여유를 확보하기 위한 설계입니다.
base_score max ≈ 75
4.1 계약 기반 Feature
약정 종료까지 남은 기간
| 남은 기간 | 점수 |
|---|---|
| 0~2주 | +20 |
| 3~4주 | +16 |
| 5~8주 | +12 |
| 9~12주 | +8 |
| 13주 이상 | 0 |
약정 종료 시점은 telecom churn 연구에서 가장 강한 구조적 변수 중 하나로 알려져 있기 때문에 높은 가중치를 부여하였습니다.
가입 초기 여부
| 가입 기간 | 점수 |
|---|---|
| 0~4주 | +10 |
| 1~3개월 | +6 |
| 3개월 이상 | 0 |
가입 초기 구간은 초기 churn 발생률이 높은 구간으로 알려져 있어 해당 구간에 점수를 부여하였습니다.
4.2 요금제 변경 행동 (3개월 기준)
| 변경 횟수 | 점수 |
|---|---|
| 0 | 0 |
| 1 | +5 |
| 2 | +8 |
| 3 이상 | +15 |
요금제 변경은 **가격 민감도(price sensitivity)**를 나타내는 신호로 해석하였습니다.
4.3 가격 대비 사용량 Feature
다음과 같이 usage ratio를 정의하였습니다.
usage_ratio = 실제 사용량 / 제공 데이터량
| usage_ratio | 점수 |
|---|---|
| 0~10% | +15 |
| 10~30% | +12 |
| 30~50% | +8 |
| 50% 이상 | 0 |
사용량이 낮을수록 고객은 요금 대비 가치가 낮다고 인식할 가능성이 높다고 판단하였습니다.
4.4 상담 만족도 Feature
| 평균 점수 | 점수 |
|---|---|
| 1.0~1.9 | +15 |
| 2.0~2.9 | +10 |
| 3.0~3.9 | +5 |
| 4.0 이상 | 0 |
CS dissatisfaction은 churn의 대표적인 driver로 알려져 있어 해당 점수를 반영하였습니다.
4.5 Batch Score 최대값
약정 종료: 20
가입 초기: 10
요금제 변경: 15
사용량: 15
상담 만족도: 15
≈ base_score max = 75
5. Real-time Feature 설계
Real-time feature는 실제 churn intent signal을 반영하도록 설계하였습니다.
실시간 행동 feature는 고객의 실제 churn intent를 반영하는 signal이기 때문에 batch feature보다 높은 점수 범위를 허용하였습니다. 특히 위약금 조회, 해지 프로세스 진입과 같은 행동은 churn 의도와 매우 강하게 연결되는 행동이므로 단일 이벤트만으로도 HIGH risk 상태로 상승할 수 있도록 설계하였습니다.
realtime_score theoretical max ≈ 80
5.1 요금제 비교 이벤트
로그 이벤트
click_compare
로그 중복 방지를 위해 다음 정제 규칙을 적용하였습니다.
로그 정제 규칙
같은 세션에서
30초 내 반복 클릭 → 1회로 처리
점수
| 비교 세션 수 | 점수 |
|---|---|
| 1 | +8 |
| 2 | +12 |
| 3 이상 | +15 |
5.2 해지 위약금 조회
로그 이벤트
click_penalty
위약금 조회는 churn 의도와 매우 가까운 행동으로 판단하여 높은 가중치를 부여하였습니다.
| 조회 횟수 | 점수 |
|---|---|
| 1 | +25 |
| 2 이상 | +35 |
5.3 상담 이벤트
상담 이벤트는 감정 분석 + 키워드 분석을 결합하여 점수를 계산하도록 설계하였습니다.
| 상담 감정 | 키워드 | 점수 |
|---|---|---|
| 부정 +10 | high + 20 | +30 |
| 부정 + 10 | medium + 10 | +20 |
| 긍정 | high + 20 | +20 |
| 부정 + 10 | 없음 | +10 |
| 긍정 | medium + 10 | +10 |
| 없음 | 없음 | 0 |
5.4 해지 프로세스 진입
해지 프로세스 진입은 가장 강한 churn signal로 판단하였습니다.
점수보다는 Retention Trigger로 활용하도록 설계하였습니다.
해지 프로세스 진입 → +40
6. Retention Trigger 설계
다음 조건에서 retention action을 수행하도록 설계하였습니다.
final_score >= 80
AND
해지 프로세스 진입
AND
쿠폰 발급 이력 없음
실행 액션
Retention Model 실행
→ 쿠폰 발급
→ 유지 유도 모달 노출
예시 메시지
"고객님, 지금 유지하시면 추가 할인 혜택을 받으실 수 있습니다."
7. 최종 점수 계산 구조
최종 점수는 다음과 같이 계산하도록 설계하였습니다.
final_score = min(100, base_score + realtime_score)
예시
base_score = 45
realtime_score = 38
final_score = 83
→ HIGH risk
8. Strong churn signal
다음 세 가지는 가장 강한 churn signal로 정의하였습니다.
1️⃣ 위약금 조회 2️⃣ 해지 프로세스 진입 3️⃣ 상담 중 해지 키워드 + 부정 감정
이 세 신호는 churn intent와 직접적으로 연결되는 행동으로 판단하였습니다.
9. Feature Store 확장 전략
현재 시스템은 rule-based scoring 구조로 운영하도록 설계하였습니다. 그러나 향후 실제 churn label 데이터가 축적될 경우 machine learning 모델로 확장할 수 있도록 feature store를 구축하였습니다.
예시 feature
contract_remaining_weeks
tenure_months
usage_ratio
plan_change_count_3m
avg_support_rating
compare_click_count
penalty_click_count
negative_support_count
age_group
gender
family_group_num
persona_type
raw_rule_score
rule_tier
이 데이터는 향후 다음 모델 학습에 활용할 수 있습니다.
- Logistic Regression
- Gradient Boosting
- Random Forest
- XGBoost
즉 현재 구조는
Rule-based churn scoring
→ Training dataset 축적
→ ML churn prediction model
로 자연스럽게 확장될 수 있도록 설계하였습니다.
최종 정리
본 churn scoring 시스템은
- 상태 기반 batch feature
- 행동 기반 realtime feature
두 축을 결합하여 설명 가능한 churn risk scoring 모델을 구축하였습니다.
또한 모든 feature를 feature store에 저장하도록 설계하여, 향후 실제 churn 데이터가 축적될 경우 machine learning 기반 churn prediction 모델로 확장할 수 있도록 구조를 설계하였습니다.