04. 이탈 예측 (Churn Prediction)
머신러닝40분
1. 이탈(Churn)이란?
고객이 서비스를 그만두는 것을 **이탈(Churn)**이라고 합니다. 신규 고객을 유치하는 비용은 기존 고객을 유지하는 비용보다 5~25배 더 비쌉니다. 따라서 이탈할 것 같은 고객을 미리 예측하고, 혜택을 주어 잡는 것이 중요합니다.
2. 데이터 준비 및 전처리
이탈 예측은 Classification(분류) 문제입니다. 이탈 여부(1: 이탈, 0: 유지)를 예측합니다.
❓ 문제 1: 범주형 변수 변환
Q. ‘Priority’와 ‘Channel’ 컬럼을 머신러닝 모델이 이해할 수 있도록 숫자로 변환하세요. (Label Encoding 등 활용)
Python (Scikit-Learn)
from sklearn.preprocessing import LabelEncoder
import pandas as pd
# 데이터 로드 (가상 데이터)
df = pd.DataFrame({
'user_id': [1, 2, 3, 4],
'priority': ['High', 'Low', 'Medium', 'High'],
'channel': ['Email', 'Chat', 'Email', 'Phone'],
'churned': [1, 0, 0, 1]
})
# Label Encoding
le = LabelEncoder()
df['priority_encoded'] = le.fit_transform(df['priority'])
# 결과 확인
print(df[['priority', 'priority_encoded']])실행 결과
priority priority_encoded 0 High 0 1 Low 1 2 Medium 2 3 High 0
3. 모델 학습 (Logistic Regression)
로지스틱 회귀는 이탈 확률(0~1)을 알려주기 때문에 마케팅에 활용하기 좋습니다.
❓ 문제 2: 모델 학습 및 중요 변수 확인
Q. 로지스틱 회귀 모델을 학습시키고, 어떤 변수가 이탈에 가장 큰 영향을 미치는지(Coefficient) 확인하세요.
Python (Scikit-Learn)
from sklearn.linear_model import LogisticRegression
# X(Feature)와 y(Target) 분리
X = df[['priority_encoded']] # 예시를 위해 1개 변수만 사용
y = df['churned']
# 모델 학습
model = LogisticRegression()
model.fit(X, y)
# 회귀 계수(Coefficient) 확인
# 양수(+)면 이탈 확률을 높이는 요인, 음수(-)면 낮추는 요입니다.
print(f"Priority Coefficient: {model.coef_[0][0]:.4f}")실행 결과
Priority Coefficient: -0.9156
4. 평가 (Evaluation)
단순 정확도(Accuracy)보다 **재현율(Recall)**이 중요할 수 있습니다. 실제 이탈할 고객을 놓치지 않고 찾아내는 것이 이탈 방지 마케팅의 핵심이기 때문입니다.
이론 참고: Model Evaluation Metrics
Last updated on