Skip to Content

04. 이탈 예측 (Churn Prediction)

머신러닝40분

1. 이탈(Churn)이란?

고객이 서비스를 그만두는 것을 **이탈(Churn)**이라고 합니다. 신규 고객을 유치하는 비용은 기존 고객을 유지하는 비용보다 5~25배 더 비쌉니다. 따라서 이탈할 것 같은 고객을 미리 예측하고, 혜택을 주어 잡는 것이 중요합니다.

2. 데이터 준비 및 전처리

이탈 예측은 Classification(분류) 문제입니다. 이탈 여부(1: 이탈, 0: 유지)를 예측합니다.

❓ 문제 1: 범주형 변수 변환

Q. ‘Priority’와 ‘Channel’ 컬럼을 머신러닝 모델이 이해할 수 있도록 숫자로 변환하세요. (Label Encoding 등 활용)

이론 참고: Classification & NLP Concepts

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) 확인하세요.

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

🤖AI 모의면접실전처럼 연습하기